0

有没有什么优雅的方法可以加载 16 个 8 位数据并将它们连接到 4 个 unsigned int ?

如下:

通过 _mm_load_si128() 将以下数组(16 Epi8)加载到 __m128i

0x00、0x11、0x22、0x33、0x44、0x55、0x66、0x77、0x88、0x99、0xaa、0xbb、0xcc、0xdd、0xee、0xff

然后进行一些操作,使寄存器(__m128i)变为 4 Epi32,

0x33221100, 0x77665544, 0xbbaa8899, 0xffeeddcc

谢谢!

4

2 回答 2

1

是的:什么都不做。加载后,寄存器已经处于您想要的状态。(假设这0xbbaa8899是一个错字,并且您实际上是说0xbbaa9988,无论如何)。

于 2012-02-22T18:07:27.613 回答
0

只需创建 4 个 int 指针并将 m128 存储在这些指针所针对的顺序内存中。

或者有一个 int[4] 数组并将你的 m128 存储到数组所在的内存中,然后 array[0..3] 是你的 4 个整数。

或者,如果您已经拥有 16 字节数组,只需将内存转换为索引 0、4、8、12 处的整数。

于 2012-02-23T13:30:27.730 回答