我有一个已计算的4个浮点数的128位向量,我想改变这个向量的顺序如下:
Vector A before reordering
+---+---+---+---+
| a | b | c | d |
+---+---+---+---+
Vector A after reordering
+---+---+---+---+
| b | a | c | d |
+---+---+---+---+
正如我所说,矢量已经通过早期的计算计算出来,所以无法使用_mm_set_ps()
......任何人都知道如何做到这一点?
答案 0 :(得分:6)
您正在寻找SHUFPS
instruction(随机播放的单精度浮标)
相应的内在因素是_mm_shuffle_ps
:
__m128 _mm_shuffle_ps(__m128 a, __m128 b, unsigned int imm8);
第三个参数,一个8位立即数,是排列。这表示您希望如何对值进行洗牌。要以可读方式创建此内容,您需要使用_MM_SHUFFLE
宏。以下是有关_MM_SHUFFLE
工作原理的有用图形说明,摘自some old Microsoft documentation: