Есть ли способ проверить, все ли биты/байты/слова и т.д. в переменной __m128i равны 0?
В моем приложении я должен проверить, являются ли все целые числа, упакованные в в переменной __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);
Мне нужно проверить, не является ли идентификатор нулями без доступа к каждому отдельному элементу, и выйти из цикла, если они...
Основываясь на комментарии Гарольда, это решение:
__m128i idata = _mm_setr_epi32(i,j,k,l);
do{
//some code
}while( !_mm_testz_si128(idata, idata) );
Это приведет к выходу из цикла, если все младшие бит каждого DW в idata равны 0... спасибо hraold!