打扰一下,请告诉我为什么或为什么在设置值的_mm_set_epi32函数中-设置是否以相反的顺序进行?
__m128i _mm_set_epi32(int e3,int e2,int e1,int e0)
使用提供的值将压缩的 32 位整数设置为 dst。
Operation:
dst[31:0] := e0
dst[63:32] := e1
dst[95:64] := e2
dst[127:96] := e3
也就是说,从描述中可以看出,如果我这样做:
__m128i my_m128i = _mm_set_epi32 (0, 1, 2, 3);
值将被输入到向量中,好像不是从左到右,就像通常在初始化时所做的那样,例如,一个数组,反之亦然。
为什么会有这样的“混乱”?
位的编号来自末尾,也就是说,如果我们将位序列表示为一个数组,那么这种情况下的零索引将是 127。
事实证明,e3 写入 127 到 96 的高位,e0 写入 31 到 0 的低位。
也就是说,这个顺序是由于它在其中将存储值\u200b\u200b。