1

初步说明:实际上,当我写完这个问题时,我看到这个答案正在解决我的问题。尽管如此,由于我已经花时间创建了所有必要文档的链接,所以无论如何发布它可能会很有用。此外,可能会有更好的答案。

这是问题:

在我的处理结束时,我将有一个__mm128i包含:

r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 rA rB rC rD rE rF

我将不得不uint32_t像这样存储在内存中:

r0 r4 r8 rC

或者,或者(这仅取决于我如何执行先前计算的最后两个步骤)

r3 r7 rB rF

如何使用最多 SSSE3 指令有效地做到这一点?

4

1 回答 1

3

如此处所解释,最多使用 SSSE3 指令,您可以_mm_shuffle_epi8像这样重新排列您的寄存器:

r0 r4 r8 rC 00 00 00 00 00 00 00 00 00 00 00 00 

然后,你不能使用_mm_extract_epi32,因为它是 SSE4.1

您可以改用_mm_cvtsi128_si32.

于 2013-11-08T15:46:19.440 回答