有没有更快的方法将两个x86 32位寄存器存储在一个128位xmm寄存器中?
movd xmm0, edx
movd xmm1, eax
pshufd xmm0, xmm0, $1
por xmm0, xmm1
因此,如果EAX为0x12345678,而EDX为0x87654321,则xmm0中的结果必须为0x8765432112345678。
谢谢
最佳答案
使用SSE 4.1,您可以使用movd xmm0, eax
/pinsrd xmm0, edx, 1
并按照2条说明进行操作。
对于较旧的CPU,您可以使用2 x movd
,然后使用punpckldq
总共3条指令:
movd xmm0, edx
movd xmm1, eax
punpckldq xmm0, xmm1
关于assembly - 将两个x86 32位寄存器存储到128位xmm寄存器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2231694/