Неоптимизированный макро-путь связан с тем, что некоторые инструкции требуют немедленного постоянного аргумента, который в противном случае было бы проблематичным получить при -O0 (необходимо встроить функцию, а затем распространить значение).

инство компиляторов C ++ поддерживают инструкции SIMD (SSE / AVX) с такими интрижками, как

_mm_cmpeq_epi32

Моя проблема в том, что эта функция не помечена какconstexprхотя "семантически" нет причин, чтобы эта функция неconstexpr так как это чистая функция.

Есть ли способ, которым я мог бы написать свою собственную версию (например)_mm_cmpeq_epi32 этоconstexpr?

Очевидно, я хотел бы, чтобы функция во время выполнения использовала правильный asm, я знаю, что могу переопределить любую функцию SIMD с медленной функцией, котораяconstexpr.

Если вам интересно, почему я забочусь оconstexpr SIMD функций. Non constexprness является заразным, что означает, что любые мои функции, которые используют эти функции SIMD, не могут бытьconstexpr.

Ответы на вопрос(1)

Ваш ответ на вопрос