SIMD (AVX) сравнить

Как называется встроенная функция gcc для сравнения __m256 и __m256i (набор инструкций AVX)?


person Cartesius00    schedule 17.02.2012    source источник


Ответы (1)


Как указано в документации Intel AVX

_mm256_cmp_ps, _mm256_cmp_pd 

и т.д

Обратите внимание, что вместо нескольких инструкций сравнения вы должны передать перечисление, указывающее, что сравнение выполнено. Например:

res = _mm256_cmp_ps(a,b, _CMP_LT_OQ); // AVX res = a < b
person Joel Falcou    schedule 17.02.2012
comment
Спасибо, а как насчет сравнения __m256i типа? Эти две функции обрабатывают только __m256 и __m256d? - person Cartesius00; 18.02.2012
comment
IIRC, его нет, вы должны использовать _mm256_extractf128_si256 для извлечения целых чисел в число с плавающей запятой, а затем использовать другие - person Joel Falcou; 18.02.2012
comment
Итак, нет быстрого способа сравнить два int [] (массивы целых чисел длиной 8), используя __mm256? Я имею в виду использование классического сценария load, cmp.... - person Cartesius00; 18.02.2012
comment
@James, AVX никогда полностью не поддерживал операции с __m256i. Это будет в AVX2. - person Mysticial; 18.02.2012
comment
Кроме того, обработка символов в векторном контексте часто бывает тусклой, поскольку динамический диапазон значений ограничен 8 битами. 16-битный вектор начинает быть интересным, как и 32-битный. - person Joel Falcou; 18.02.2012