SIMD (AVX) сравнение

Какво е името на вътрешния елемент на gcc за сравняване на __m256 и __m256i (AVX набор от инструкции)?


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


Отговори (1)


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

_mm256_cmp_ps, _mm256_cmp_pd 

и т.н

Обърнете внимание, че вместо да имате множество инструкции за сравнение, трябва да подадете enum, указващо извършеното сравнение. например:

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, за да извлечете цели числа в float, след което да използвате останалите - person Joel Falcou; 18.02.2012
comment
Така че няма бърз начин как да сравните две int [] (масиви от int с дължина 8) с помощта на __mm256? Имам предвид използването на класическия сценарий load, cmp.... - person Cartesius00; 18.02.2012
comment
@James, AVX никога не е поддържал напълно операции на __m256i. Това ще дойде в AVX2. - person Mysticial; 18.02.2012
comment
В допълнение към това, handlign char във векторен контекст често е слаб, така или иначе, тъй като динамиката на диапазона на стойността е ограничена до 8 бита. 16-битовият вектор започва да бъде интересен, както и 32-битовият. - person Joel Falcou; 18.02.2012