有没有办法检查__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);
我需要的是检查是否idata
全为零,而不必访问每个单独的元素,如果它们是则退出循环......
根据哈罗德的评论,这是解决方案:
__m128i idata = _mm_setr_epi32(i,j,k,l);
do{
//some code
}while( !_mm_testz_si128(idata, idata) );
如果每个 DW 的所有低位idata
都为 0,这将退出循环......谢谢哈罗德!