有效地将YMM的最低64位设置为常量

时间:2012-03-03 12:35:57

标签: optimization assembly sse vectorization avx

如何在最少的时钟周期内将YMM寄存器的最低64位设置为某个常量?我知道使用SSE指令以及AVX指令VBROADCASTSD可以做各种各样的方法,但我不确定哪种方法会产生最佳结果。

编辑:设置64位部分后,我仍然需要使用完整的YMM寄存器。

感谢您的帮助!

1 个答案:

答案 0 :(得分:7)

如果您只需要设置最低64位而其他YMM位无关紧要,请使用VMOVQ

如果需要保留YMM寄存器中的其他位,最有效的方法是使用VBLENDPD。或者,您可以使用VANDPD清除最低64位,然后使用VORPD加载常量。

AVX2允许其他选择:VPMASKMOVDVPBLENDD(但任何处理器都不支持)。