如何生成KSHIFTRW(右移掩码寄存器)

时间:2017-11-17 10:08:21

标签: c++ intrinsics avx512

我有一个__mmask64掩码寄存器,我需要将其切换成4个__mmask16掩码寄存器。

我(错误地)假设以下代码行已经完成了这个技巧:

__mmask16 mask_16 = static_cast<__mmask16>(mask_64 >> 16);

但我得到(英特尔c ++编译器18.0):

kmovq       r14,k1  
shr         r15,10h
kmovw       k2,r15d

由于Intel Intrinsics Guide没有像_mm512_kshift(k,imm8)这样的东西,例如_mm512_kand的定义只是:

#define _mm512_kand(k1, k2) ((__mmask16) ((k1) & (k2)))

我认为换班会给我一个KSHIFTRW

问题:如何使用C ++生成KSHIFTRW。

修改:我刚刚找到了一个相关问题并给出了足够的答案:Missing AVX-512 intrinsics for masks?

0 个答案:

没有答案