我错过了avx2中生成向量而不是掩码的比较指令。在avx512中完成相同事情的最有效方法是什么?它是_mm512_cmp_ps_mask后面的一个扩展吗?
发布于 2021-07-09 18:42:39
是的,我认为只需比较和vpmovm2d,尽管通常您可以在下一步使用合并掩蔽或零掩蔽(可能使用set1(-1)常量),而不是对向量做任何操作。例如,对于计数匹配,而不是使用向量0/-1比较结果的_mm_sub_epi32(),只需做一个合并屏蔽添加。
当然,对于256位向量,AVX2比较指令仍然可用.可能不值得将512位向量的一半解压缩,但有时完全使用AVX-512来避免512位向量(例如,在某些CPU上避免clock-speed penalties,以及避免端口1上的向量ALU关闭)。因此,您仍然可以利用AVX-512中有用的新指令,以及不需要与VEX编码的AVX 1/AVX 2专用指令一起使用的操作数的额外寄存器(x/ymm16 16..31)。
尽管如此,在某些情况下,为了使用512位向量,只需要将掩码转换回矢量可能是值得接受的。
https://stackoverflow.com/questions/68310432
复制相似问题