__m128i 변수의 모든 비트/바이트/단어 등이 0인지 확인하는 방법이 있습니까?
내 응용 프로그램에서 __m128i 변수에있는 모든 정수가 0인지 확인해야합니다. 나는 그것들을 추출하고 그것들을 각각 따로 비교해야합니까?
편집 : 모든 0에 대해 XMM 레지스터를 확인하십시오.
내가 지금 뭐하는 거지 것은 :
내가 필요로하는 IDATA 각 개별 요소에 액세스 할 필요없이 모두 0 인 경우 확인하고, 만약 그들이 루프를 종료하는 것입니다
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));
,536 : ... 해롤드의 의견을 바탕으로
이 해결책이다
idata에서 각 DW의 모든 하위 비트가 0이면 루프를 종료합니다 ... 감사합니다. hraold!
추출하지 않고 비교하려면 'PCMPEQD'를 사용할 수 없습니까? – dasblinkenlight
XMM 레지스터에는 플래그 레지스터가 연결되어 있습니까? 그렇다면이 비트들 중에는 0 플래그가 있어야합니다. –
'PTEST'는 SSE4를 사용할 수 있습니다. 그렇지 않으면 약간 더 많은 노력이 필요합니다. – harold