Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
数据必须是 16 字节对齐的,以便 SSE 指令可以在没有分段错误的情况下对其进行处理?我尝试的编译器是带有选项的 gcc -msse2。我想_mm_cmpgt_epi32用来比较一个大的 int 数组。我发现它不能在数组的任何位置执行,除了下标为4的倍数的位置。
-msse2
_mm_cmpgt_epi32
是的,当您向/从 SSE 寄存器加载和存储数据时,它需要 16 字节对齐,除非您使用加载/存储指令的未对齐版本,例如_mm_loadu_si128/ _mm_storeu_si128。然而,使用这些未对齐的加载/存储指令通常会降低性能,因此通常会尝试始终确保正确的数据对齐,并且仅将未对齐的加载/存储用作最后的手段。
_mm_loadu_si128
_mm_storeu_si128