在用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等選項。