还有就是对于在AVX512BW的指令,只需用一个不同的名称。 _mm512_movepi8_mask/
vpmovb2m k, zmm,可用于从字节到 qword 的每个元素大小。
(AVX512DQ 适用于 D 和 Q 版本,AVX512BW 适用于 B 和 W 版本)。
还有 mask->vector inverse movemask,vpmovm2b(同样适用于所有元素大小)。
当然AVX512还具有各种cmp和test成掩模指令,因此与set1_epi8(1<<n)矢量,你可以抓住任何比特位置与一个屏蔽寄存器vptestmb k2{k1}, zmm2, zmm3/m512; _mm512_test_epi8_mask. 请注意,与 不同vpmov2bm,它支持对目标进行零掩码以有效地与另一个k掩码免费进行AND运算,因此即使您只想要高位,也可能值得使用。
还有一个 NAND 版本vptestnmb。这些 D 和 Q 版本支持广播内存源操作数,但 B 和 W 版本不支持。
使用 8 个不同的掩码常量,您可以在展开的循环中提取不同的位,而无需花费任何移位指令。或者您可以从不同的元素中提取不同的位。
这些都是 AVX512BW,在 Skylake-AVX512 之后的 AVX512 CPU 上可用,但不是 Xeon Phi (KNL / KNM)。
| 归档时间: |
|
| 查看次数: |
165 次 |
| 最近记录: |