簡體   English   中英

__m128i變量是零嗎?

[英]Is an __m128i variable zero?

如何測試__m128i變量在SSE-2及更早版本的處理器上是否具有任何非零值?

在SSE2中,您可以:

__m128i zero = _mm_setzero_si128();
if(_mm_movemask_epi8(_mm_cmpeq_epi32(x,zero)) == 0xFFFF)
{
    //the code...
}

這將測試四個int與零然后為每個字節返回一個掩碼,因此每個對應的int位偏移將是0,4,8和12,但上面的測試將捕獲是否設置了任何位,然后如果你如果需要,可以直接保留可以使用更細粒度部件的面罩。

為了完整起見,使用SSE4可以使用_mm_testz_si128

const bool isAllZero = _mm_testz_si128(a,a);

注意,當所有位都為零時,這是真的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM