假设我有一个128寄存器,其中包含一些浮点数[x1,x2,x3,x4],另一个包含[y1,y2,y3,y4]。 得到类似[x1,y1,x2,y2]的最佳方式,性能明智是什么?
我想我可以多次移动寄存器,使用临时工,然后将它们组合成多个步骤,但我想知道我是否缺少一些方便的指令可以让我的生活更轻松。我认为这是一件很常见的事情,所以我想知道这里最好的做法是什么。
谢谢!
答案 0 :(得分:3)
在这种特殊情况下,你可以用一条指令来完成:
z = _mm_unpacklo_epi32(x, y);
_mm_unpacklo_xxx
/ _mm_unpackhi_xxx
对各种数据重组操作非常有用。对于更一般的情况,还有_mm_shuffle_xxx
指令。