Nec*_*lis 12
在SSE2中,您可以:
__m128i zero = _mm_setzero_si128();
if(_mm_movemask_epi8(_mm_cmpeq_epi32(x,zero)) == 0xFFFF)
{
//the code...
}
Run Code Online (Sandbox Code Playgroud)
这将测试四个int与零然后为每个字节返回一个掩码,因此每个对应的位偏移量int
将为0,4,8 和12,但上述测试将捕获是否设置了任何位,然后如果保留如果需要,你可以直接使用更细粒度的部件.
为了完整起见,SSE4 可以使用_mm_testz_si128。
const bool isAllZero = _mm_testz_si128(a,a);
Run Code Online (Sandbox Code Playgroud)
请注意,当所有位都为零时,这是正确的。