3
将RDX,R8中的两个长整数移动到XMM0中,其中RDX移动到较低的64位而R8移动到较高的64位时,最简单的方法是什么?分别将两个64位整数分别加载到较低和较高的xmm中
MOVQ将只设置较低和0的上限。
我只限于SSSE3。
将RDX,R8中的两个长整数移动到XMM0中,其中RDX移动到较低的64位而R8移动到较高的64位时,最简单的方法是什么?分别将两个64位整数分别加载到较低和较高的xmm中
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指令(即使编译器信息报告所述的限制)。完美的作品,谢谢。 – IamIC 2015-02-07 09:13:44
也许解包可能比换班更快。但我想这取决于你受限制的端口。 – Mysticial 2015-02-09 00:47:43