SSE 指令需要对齐数据



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

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

最新更新