将两个 64 位整数分别加载到 lower & upper xmm 中

Load two 64-bit integers into lower & upper xmm, respectively

将 RDX、R8 中的两个 long 移动到 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