Intel SSE指令,目前很多机器都支持,Pentium 4机器支持到SSSE3,双核机器现在支持到了4.1和4.2,在使用gcc编译器 进行编译时,X86机器需要添加-msse或者是-msse4,根据具体的机器CPU决定。在使用时发现了一个问题:
指令:_mm_set_epi32 (对应为SSE2指令)
当采用-msse4编译 _mm_set_epi32, 虽然这条指令是sse2指令,但是采用高版本编译后,会把这条指令编译成SSE4对应的指令,导致的问题就是:
如果目标机器只支持SSE指令到SSSE3,采用-msse4编译后,程序运行就有可能会报ILLegal Instruction异常,导致程序退出。
因此在使用时需要注意。在编译时决定,尽量不把用高版本SSE编译的程序放到低版本CPU上运行。
具体编译设置,可以参考官方gcc manual