在引入AVX的同时,英特尔将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
)。
提前感谢所有的答案。