在用QtCreator编译SSE优化指令的时候,出现了如下错误,
inlining failed in call to always_inline '__m128i _mm_packus_epi32(__m128i, __m128i)': target specific option mismatch
_mm_packus_epi32 (__m128i __X, __m128i __Y)
^
该错误的原因是编译的时候没有指定对应的SSE选项。
解决办法:在文档中找到出错指令对应的SSE指令集,Intel官方指令集向导,然后添加到QT工程设置中,如上述出错的指令packusdw是在
sse4.1中,所以在QT设置中添加:
QMAKE_CXXFLAGS += "-msse4.1"
类似的还有,
QMAKE_CXXFLAGS += "-msse2"
QMAKE_CXXFLAGS += "-mssse3"
……
如果是自己写makefile,设置办法类似,也是添加-msse2,-msse4.1等选项。