1

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

4

1 回答 1

6

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

于 2012-07-02T17:35:57.353 回答