我正在使用_mm_cmpgt_epi64
内在函数来实现 128 位加法,然后是 256 位加法。看着这个内在的东西的结果让我感到困惑。
我不明白为什么计算的掩码是这样的。
const __m128i mask = _mm_cmpgt_epi64(bflip, sumflip);
这是我的调试器中的输出:
(lldb) p/x bflip
(__m128i) $1 = (0x00000001, 0x80000000, 0x00000000, 0x80000000)
(lldb) p/x sumflip
(__m128i) $2 = (0x00000000, 0x80000000, 0xffffffff, 0x7fffffff)
(lldb) p/x mask
(__m128i) $3 = (0xffffffff, 0xffffffff, 0x00000000, 0x00000000)
对于第一个 64 位通道 ( 63:0
) 我没问题。但是为什么第二条车道 ( 127:64
) 也没有满呢?
在我看来0x8000000000000000
> 0x7fffffffffffffff
。