SSE2, SSE3 и так далее нет в Эльбрусе. И архитектурно-зависимый оптимизированный код заработает даже без них? Я так понял, там в коде #ifdef WITH_SSE и #endif значит, что код будет выполнен только если в процессоре есть набор инструкций SSE.
WITH_SSE возводится на этапе cmake (добавляется опция -DWITH_SSE при компиляции). Далее, мы заходим в эти блоки WITH_SSE, уже проверяемся через HasCPUIDFlag, а есть ли у нас нужный SSE (SSE4_1/SSSE3/SSE2). Если есть, используем Intel Intrinsics (всякие _mm_set1_epi16, которые mcst-lcc крос компилирует в свои представления). Если нет, то используем обычный С++ код.
А, примерно понял. То есть на этапе компиляции вот эти все инструкции из наборов SSE, SSE2, SSE3 и так далее преобразуются в родные инструкции Эльбруса. Интересно, есть ли какая-то документация по компилятору lcc и использованию для него в коде таких вот инструкций SSE.
если только посмотреть в /opt/mcst/doc
Сейчас нужна помощь с включением по умолчанию использования Intel Intrinsics на е2к.
Обсуждают сегодня