克隆扩展 XMM 寄存器的 SSE 指令

Posted

技术标签:

【中文标题】克隆扩展 XMM 寄存器的 SSE 指令【英文标题】:SSE Instruction To Clone-Expand XMM Register 【发布时间】:2011-03-15 02:07:31 【问题描述】:

是否有任何 SSE 指令(最高 4.2 版)自动用另一个 XMM 寄存器的四个字的值填充四个 XMM 寄存器?

示例:对字 ABCD 运行指令将填充四个 XMM 寄存器:AAAABBBBCCCCDDDD

【问题讨论】:

【参考方案1】:

我不相信只有一个操作,但是四个pshufd 操作(每个目的地一个)可以完成这项工作;参见http://lists.apple.com/archives/perfoptimization-dev/2007/Feb/msg00002.html(第一个代码示例,在movd 指令之后)。 pshufd 有类似的变体来复制寄存器的其他部分。对于寄存器的四个部分,我相信指令中使用的常量是 0、85、170 和 255。

【讨论】:

以上是关于克隆扩展 XMM 寄存器的 SSE 指令的主要内容,如果未能解决你的问题,请参考以下文章

c/c++ 代码中使用sse指令集加速

xmm 寄存器 sse x64 里面的值

X86 操作码将 xmm 寄存器移动到通用寄存器

xmm 指令 - 内存源操作数的分段错误

什么是 SSE 相当于 fstp?

内在函数和寄存器(SSE)