在使用至多SSSE3的内在函数之后,如何在16字节寄存器中存储4个字节

时间:2013-11-08 15:46:19

标签: c++ sse intrinsics

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

以下是问题:

在我处理结束时,我将有__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指令?

1 个答案:

答案 0 :(得分:3)

正如here所述,使用最多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