初步说明:实际上,当我写完这个问题时,我看到这个答案正在解决我的情况。尽管如此,由于我已经花时间创建了指向必要文档的所有链接,因此无论如何发布它可能会很有用。此外,可能还有更好的答案。
问题是:
在我的处理结束时,我将有一个包含以下内容的__mm128i
:
r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 rA rB rC rD rE rF
我将不得不在内存中存储这样的uint32_t
:
r0 r4 r8 rC
或者,或者(这只取决于我如何执行先前计算的最后 2 步)
r3 r7 rB rF
如何使用高达 SSSE3 指令有效地做到这一点?
如此处所述,使用最多 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
.