随着 AVX 的推出,Intel 将 VEX 编码方案引入了 Intel 64 和 IA-32 架构。这种编码方案主要用于 AVX 指令。我想知道混合 VEX 编码指令和现在称为“旧 SSE”指令是否可以。
我问这个问题的主要原因是代码大小。考虑这两个指令:
shufps xmm0, xmm0, 0
vshufps xmm0, xmm0, xmm0, 0
我通常使用第一个将标量值“广播”到 XMM 寄存器中的所有位置。现在,指令集说这两者(在这种情况下)之间的唯一区别是 VEX 编码的指令清除了 YMM 寄存器的较高(>=128)位。假设我不需要那个,在这种情况下使用 VEX 编码的版本有什么好处?第一条指令占用 4 个字节 ( 0FC6C000
),第二条指令占用 5 个字节 ( C5F8C6C000
)。
提前感谢所有答案。