没有直接的方法可以做到这一点,但显然你可以简单地将lsb转换为msb,然后将其解压缩:
_mm_movemask_pi8(_mm_slli_si64(x, 7))
Run Code Online (Sandbox Code Playgroud)
这些天使用MMX很奇怪,应该避免使用.
这是一个SSE2版本,仍然只读取8个字节:
int lsb_mask8(uint8_t* bits) {
__m128i x = _mm_loadl_epi64((__m128i*)bits);
return _mm_movemask_epi8(_mm_slli_epi64(x, 7));
}
Run Code Online (Sandbox Code Playgroud)
使用SSE2代替MMX可以避免使用 EMMS