如何反转__m128类型变量?

dor*_*mon 7 c c++ x86 sse simd

我知道这应该是一个谷歌搜索问题,但我找不到答案.

说我有一个__m128变量a,其内容是a[0],a[1],a[2],a[3].有没有一种单一的,可以扭转它是功能a[3],a[2],a[1],a[0]

Sam*_*Sam 14

使用_mm_shuffle_ps().该指令已在SSE中可用,并且可以通过组合来自两个输入向量中的每一个的两个任意32位元素,在单个向量中收集4个32位元素.

如何使用宏创建蒙版 _MM_SHUFFLE()

前两个掩码值指定在源组件fp0,在最后两个的那些fp1.

http://oi43.tinypic.com/24qn5lk.jpg

在向量中反转32位元素

/* Create a selector for use with the SHUFPS instruction.  */
#define _MM_SHUFFLE(fp3,fp2,fp1,fp0) \
 (((fp3) << 6) | ((fp2) << 4) | ((fp1) << 2) | (fp0))
Run Code Online (Sandbox Code Playgroud)

注意:掩码是立即值.它不能是动态的,因为它是生成的机器指令的一部分.