【发布时间】:2012-03-03 12:35:57
【问题描述】:
如何在最少的时钟周期内将 YMM 寄存器的最低 64 位设置为某个常数?我知道可以使用 SSE 指令以及 AVX 指令VBROADCASTSD 执行此操作的各种方法,但我不确定哪种方法会产生最佳结果。
编辑:设置64位部分后我仍然需要使用完整的YMM寄存器。
感谢您的帮助!
【问题讨论】:
-
取决于设置低64位后是使用完整的YMM寄存器还是只使用XMM部分。
-
抱歉有歧义 -- 设置低 64 位后需要使用完整的 YMM 寄存器。
-
这也取决于常数。有些常量值可以很容易地生成,有些则必须从内存中加载)
-
这绝对是真的。这么一个看似简单的问题,却需要大量的规范!我尝试加载的常量没有容易重现的模式(至少通过使用少量的按位、算术、广播或置换操作)。
标签: optimization assembly sse vectorization avx