Aidar
https://ideone.com/LVL2zx
Aidar
как это объяснить?
Anatoly
Aidar
а лол
Aidar
забыл про это
Ignat
в каком смысле норма?
Ignat
я разрешаю
vladislav
от задачи зависит
Ignat
но вообще в общем случае не гарантируется, что оно вообще есть
Ignat
This declaration is conditionally-supported and implementation defined, meaning that it may not be present and, even when provided by the implementation, it does not have a fixed meaning.
Stanislav
не нужно, есть интринсики
Berkus
есть интринсики и отдельные файлы на асме, инлайн непортабельно и очень портит оптимизации (весь ассмеблер должен быть volatile чтобы не сломаться)
Ignat
можно подумать, интринсики — портабельно
Berkus
вообще-то день
Berkus
можно подумать, интринсики — портабельно
более портабельно да, ты же умеешь дефайнами препроцессора пользоваться?
Berkus
можно подумать, интринсики — портабельно
но самое плохое что инлайновый ассемблер ломает оптимизации и не работает во всех компиляторах
Ioann_
Ты просто недооцениваешь мастеров асмы - там ребята в уме проксорить дворды могут на изи. Но я конечно, не о себе говорю. Там ребятам не надо же стандарты языка ++ штудировать, чтобы на грабли не встать.
Ioann_
А что продолжать, дураки там одни - ясно же. FASM, MASM - давно вымерли, и уже занесены в the red book.
kitsu
Во-первых как это относится к моему вопросу
kitsu
а во-вторых подобные трюки описаны во всех прекрасах в книжках по асму
kitsu
Оптимизировать - здорово конечно, но асм этим не ограничивается, к примеру нужно что-то platform-specific получать. Например недокументированные фичи ms win
Kirill
Ты просто недооцениваешь мастеров асмы - там ребята в уме проксорить дворды могут на изи. Но я конечно, не о себе говорю. Там ребятам не надо же стандарты языка ++ штудировать, чтобы на грабли не встать.
как правило люди не от хорошей жизни так делают. Обычно среднестатистический асмоспец просто не может в плюсы и продолжает опираться на аксиомы 90х годов о "асм быстрее"
Ioann_
Да речь не только про оптимизации. Виталий пишет что код на асме ужасен и все надо переделывать после. Но это верно только если из всей команды, никто на асме и не пишет.
Vsevolod
код на асме ужасен в любом случае
Kirill
у меня на позопрошлой работе писали на асме местами под ембеддед
Kirill
и... виталий прав)
Vsevolod
потому что всякий loop unrollment руками - это ужасно, уже не говоря о том, что вместо няшных переменных приходится держать в голове, где какой регистр уже используется
Nikita
Есть один адекватный юзкейс асмописи — появление нового instruction set, который ещё не освоили компиляторы
Kirill
есть юзкейс - ты пишешь компилятор. там да, нужно. в остальном чем более абстрактно описывается поведение, тем больше свободы компилятору, а он умнее человека уже лет как нцать
Vsevolod
ну и интриниски, по сути, заменяют нужду в ассемблере
Vsevolod
еще бы attribute target поддерживалось долбанным шлангом...
Vsevolod
а gcc даже умеет рантайм диспатчинг и ifunc для c++
Vsevolod
грамотно и красиво или быстро?
Vsevolod
это в случае ассемблера противоречит друг другу
Nikita
Кто как привык. Но на асме можно писать грамотно и красиво.
Если результат один, но код стал менее поддерживаемым — оно того не стоит
Ioann_
Но не нужно
Так я с этим не факт что спорю. Я же пишу, Виталий и Всеволод пишут, что код на асме - ужасен. Но я так не считаю, о том то и речь.
Ioann_
То есть понятно, что когда в команде никто asm не знает, писать на нем не надо. И даже если знают - тоже, не факт что надо. Просто не верно говорить что код на asm ужасен, особенно, если кресты это оная библия для многих.
Vsevolod
а то есть у меня быстрый код - вот такой: https://github.com/vstakhov/rspamd/blob/master/src/libcryptobox/curve25519/avx.S
Vsevolod
он вжух вообще
Vsevolod
но без бутылки его даже читать больно
KosBeg
он вжух вообще
MMX и XMM, это ужасно! так ещё и AT&T синтаксис
Vsevolod
mmx?
Vsevolod
там avx инструкции в большинстве своем
KosBeg
особо не смотрел, но выглядит страшно
Vsevolod
ну там все циклы развернуты, например
Alexander "SonnySlave"
Alexander "SonnySlave"
я же сомневаюсь, что прям всё это руками написано (я надеюсь на это)
Vsevolod
для вжух
Vsevolod
это китаец Бернштейна писал, а я портировал с qhasm
Alexander "SonnySlave"
ну я понимаю 😊 а почему именно на асме решили писать?
Vsevolod
Бернштейн так любит :)
Alexander "SonnySlave"
ааа, ну разве что
Vsevolod
по сравнению с сишной реализацией рядом (donna-c64) вышло 7k rps с ядра вместо 6k rps :)
Vsevolod
но сишная реализация не использует avx...
Alexander "SonnySlave"
а почему не использует? компилятор говно?
Alexander "SonnySlave"
или компилят с неправильными флагами?
Vsevolod
потому что я собираю пакеты для всех
Vsevolod
и либо рантайм диспатчинг руками, либо максимум sse2 для x86_64
Vsevolod
потому что у меня есть пользователи с p4, например
Alexander "SonnySlave"
и либо рантайм диспатчинг руками, либо максимум sse2 для x86_64
Ты же знаешь, как это делать по-другому, правда ведь?
Alexander "SonnySlave"
делать предсборки под разные архитектуры и всё
Vsevolod
ну да, тоже можно, только это не работает
Vsevolod
например, avx может светиться в cpuid, а при запуске падать
Vsevolod
rdrand - те же яйца
Vsevolod
сочетаний архитектур очень много
Alexander "SonnySlave"
не совсем понимаю, как ты тогда выбираешь, кому какой кусок АСМ отдавать
Vsevolod
хотя мысля делать отдельные сборки для avx/avx2 была, да
Vsevolod
https://github.com/vstakhov/rspamd/blob/master/src/libcryptobox/cryptobox.c#L136 - да вот так
Vsevolod
с setjmp и прочими кишками
Alexander "SonnySlave"
надеюсь, что я этого никогда не встречу в своей жизни 😊
Berkus
Нук, а есть пример?
любой пример с инлайн асмом