Assembly 将两个64位整数加载到lower&;中;分别为上xmm

Assembly 将两个64位整数加载到lower&;中;分别为上xmm,assembly,sse,cpu-registers,Assembly,Sse,Cpu Registers,将RDX中的两个long(例如R8)移动到XMM0(其中RDX移动到低位64位,R8移动到高位64位)的最简单方法是什么 MOVQ将只设置下限,0设置上限 我仅限于SSSE3。仅限于SSSE3意味着没有pinsrq,但您可以这样做: movq xmm1, r8 pslldq xmm1, 8 movq xmm0, rdx por xmm0, xmm1 还有很多其他的方法,但我现在想不出更快的方法 如果没有旁路延迟,可能是这样的: movq xmm1, r8 movq xmm0, rdx shuf

将RDX中的两个long(例如R8)移动到XMM0(其中RDX移动到低位64位,R8移动到高位64位)的最简单方法是什么

MOVQ将只设置下限,0设置上限


我仅限于SSSE3。

仅限于SSSE3意味着没有
pinsrq
,但您可以这样做:

movq xmm1, r8
pslldq xmm1, 8
movq xmm0, rdx
por xmm0, xmm1
还有很多其他的方法,但我现在想不出更快的方法

如果没有旁路延迟,可能是这样的:

movq xmm1, r8
movq xmm0, rdx
shufpd xmm0, xmm1, 0
使用SSE4.1,您当然可以

movq xmm0, rdx
pinsrq xmm0, r8, 1

事实证明我可以使用4.1指令(即使编译器信息报告了规定的限制)。很好用,谢谢。也许开箱比换班快。但我想这取决于你受哪个港口的限制。