将两个64位整数分别加载到下部和上部xmm

Iam*_*mIC 3 assembly sse cpu-registers

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

MOVQ仅设置较低,0设置为较高.

我只限于SSSE3.

har*_*old 5

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

movq xmm1, r8
pslldq xmm1, 8
movq xmm0, rdx
por xmm0, xmm1
Run Code Online (Sandbox Code Playgroud)

还有很多其他方法,但我现在想不出更快的事情.

也许这个,如果它没有旁路延迟:

movq xmm1, r8
movq xmm0, rdx
shufpd xmm0, xmm1, 0
Run Code Online (Sandbox Code Playgroud)

有了SSE4.1,你当然可以

movq xmm0, rdx
pinsrq xmm0, r8, 1
Run Code Online (Sandbox Code Playgroud)