Есть ли способ проверить, равны ли 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... спасибо, храольд!