How do I test if a __m128i
variable has any nonzero value on SSE-2-and-earlier processors?
How do I test if a __m128i
variable has any nonzero value on SSE-2-and-earlier processors?
In SSE2 you can do:
__m128i zero = _mm_setzero_si128();
if(_mm_movemask_epi8(_mm_cmpeq_epi32(x,zero)) == 0xFFFF)
{
//the code...
}
this will test four int's vs zero then return a mask for each byte, so your bit-offsets of each corresponding int
would be at 0, 4, 8 & 12, but the above test will catch if any bit is set, then if you preserve the mask you can work with the finer grained parts directly if need be.