3

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

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

谢谢你的帮助!

4

1 回答 1

7

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

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

AVX2 允许其他替代方法来执行此操作:VPMASKMOVDVPBLENDD(但尚未得到任何处理器的支持)。

于 2012-03-03T13:36:59.950 回答