SSE指令需要对齐数据

时间:2012-07-02 17:19:00

标签: x86 sse simd

数据必须是16字节对齐的,以便SSE指令可以处理它而不会出现分段错误吗?我尝试的编译器是带有选项-msse2的gcc。我想用_mm_cmpgt_epi32比较一个大的int数组。我发现它不能在数组的任何位置执行,除了下标为4的倍数的位置。

1 个答案:

答案 0 :(得分:6)

是的,当您向/从SSE寄存器加载和存储数据时,它需要16字节对齐,除非您使用加载/存储指令的未对齐版本,例如_mm_loadu_si128 / _mm_storeu_si128。然而,使用这些未对齐的加载/存储指令通常会有性能损失,因此通常会尝试始终确保正确的数据对齐,并且仅使用未对齐的加载/存储作为最后的手段。