Как я это знал:
Код: Выделить всё
#if __has_builtin(__builtin_ia32_packssdw256)
[[gnu::target("avx2")]]
__m256i my256_add_epi32(__m256i a, __256i b)
{
return _mm256_add_epi32(a, b, c);
}
#endif
Проверка версий Clang затруднена, поскольку у него есть два набора номеров версий: LLVM и Apple.
В моем примере с AVX2 это не проблема, поскольку каждая версия компилятора, с которой мы работаем, поддерживает AVX2. Реальный пример, с которым я столкнулся, — это обнаружение внутренней поддержки SHA-512 для ARM64, которая намного новее. Вышеупомянутый AVX2 предназначен для демонстрации проблемы.
Подробнее здесь: https://stackoverflow.com/questions/795 ... nstruction
Мобильная версия