数据必须是16字节对齐的,以便SSE指令可以处理它而不会出现分段错误吗?我试过的编译器是带有选项的gcc -msse2.我想_mm_cmpgt_epi32用来比较一个大的int数组.我发现它不能在数组的任何位置执行,除了下标为4的倍数的位置.
是的,当您向/从SSE寄存器加载和存储数据时,它需要16字节对齐,除非您使用加载/存储指令的未对齐版本,例如_mm_loadu_si128/ _mm_storeu_si128.然而,使用这些未对齐的加载/存储指令通常会有性能损失,因此通常会尝试始终确保正确的数据对齐,并且仅使用未对齐的加载/存储作为最后的手段.