我希望在__mmask16和__m128i之间进行转换。但是,正如发布在https://stackoverflow.com/a/32247779/6889542
/* convert 16 bit mask to __m128i control byte mask */
_mm_maskz_broadcastb_epi8((__mmask16)mask,_mm_set1_epi32(~0))
_mm_maskz_broadcastb_epi8和任何类似的东西在 KNL 上尚不可用。KNL (Xeon Phi 7210)上缺少AVX512BW真的让我很头疼。
问题的根源是我希望利用
_mm_maskmoveu_si128 (__m128i a, __m128i mask, char* mem_addr)
使用时
__mmask16 len2mask[] = { 0x0000, 0x0001, 0x0003, 0x0007,
0x000F, 0x001F, 0x003F, 0x007F,
0x00FF, 0x01FF, 0x03FF, 0x07FF,
0x0FFF, 0x1FFF, 0x3FFF, 0x7FFF,
0xFFFF };