Проверить регистр XMM на наличие всех нулей

Есть ли способ проверить, равны ли 0 все биты/байты/слова и т. д. в переменной __m128i?
В моем приложении я должен проверить, все ли целые числа, упакованные в переменную __m128i, равны нулям. Придется ли мне извлекать их и сравнивать каждый по отдельности?

Изменить:


Сейчас я делаю следующее:
int next = 0;
do{
    //some code

    next = idata.m128i_i32[0] + idata.m128i_i32[1] + idata.m128i_i32[2] + idata.m128i_i32[3];
}while(next > 0);

Мне нужно проверить, являются ли idata нулевыми, не обращаясь к каждому отдельному элементу, и выйти из цикла, если они...

Основываясь на комментарии Гарольда, это решение.:


__m128i idata = _mm_setr_epi32(i,j,k,l);
do{
    //some code
}while( !_mm_testz_si128(idata, idata) );

Это приведет к выходу из цикла, если все младшие биты каждого DW в idata равны 0... спасибо, храольд!

10
задан Daniel Gruszczyk 16 April 2012 в 17:54
поделиться