内联调用always_inline __mm_mullo_epi32失败:目标特定选项不匹配 [英] inlining failed in call to always_inline ‘_mm_mullo_epi32’: target specific option mismatch
问题描述
我正在尝试使用使用SIMD内部函数的cmake编译C程序。当我尝试编译它时,出现两个错误
/ usr / lib / gcc / x86_64-linux-gnu / 5 / include / smmintrin.h :326:1:错误:内联调用always_inline'_mm_mullo_epi32'失败:目标特定选项不匹配
_mm_mullo_epi32(__ m128i __X,__ m128i __Y)
/ usr / lib / gcc / x86_64-linux-gnu / 5 / include / tmmintrin.h :136:1:错误:内联调用always_inline'_mm_shuffle_epi8'失败:目标特定选项不匹配
_mm_shuffle_epi8(__m128i __X,__m128i __Y)
此问题已在此处解决
<$ p $来内联失败的调用总是inline-m128i-mm-cvtepu8-epi32-m128i-t> StackOverflow p> set(CMAKE_CXX_FLAGS $ {CMAKE_CXX_FLAGS} -msse4.1)
我尝试了相同的方法以及许多其他选择。但是我的项目仍然无法编译。
set(CMAKE_CXX_FLAGS $ {CMAKE_CXX_FLAGS} -msse4.1)
set(CMAKE_CXX_FLAGS $ {CMAKE_CXX_FLAGS} -sse4_1)
set(CMAKE_CXX_FLAGS $ {CMAKE_CXX_FLAGS} -march = nehalem)
set(CMAKE_CXX_FLAGS $ {CMAKE_CXX_FLAGS} -msse4.1 -msse4.2)
set( CMAKE_CXX_FLAGS $ {CMAKE_CXX_FLAGS} -march = native)
set(CMAKE_CXX_FLAGS $ {CMAKE_CXX_FLAGS} -ssse3)
由于您是在编译C代码而不是C ++,因此需要:
set(CMAKE_C_FLAGS $ {CMAKE_C_FLAGS} -msse4.1)
您可以获得删除所有其他 -march XXX
和 -msseXXX
设置。
如果同时使用C和C ++,则还可以添加:
set(CMAKE_CXX_FLAGS $ {CMAKE_CXX_FLAGS} -msse4.1)
I am trying to compile a C program using cmake which uses SIMD intrinsics. When I try to compile it, I get two errors
/usr/lib/gcc/x86_64-linux-gnu/5/include/smmintrin.h:326:1: error: inlining failed in call to always_inline ‘_mm_mullo_epi32’: target specific option mismatch _mm_mullo_epi32 (__m128i __X, __m128i __Y)
/usr/lib/gcc/x86_64-linux-gnu/5/include/tmmintrin.h:136:1: error: inlining failed in call to always_inline ‘_mm_shuffle_epi8’: target specific option mismatch _mm_shuffle_epi8 (__m128i __X, __m128i __Y)
This issue has already been solved here StackOverflow by setting
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.1")
I try the very same and many other options. But my project still fails to compile.
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.1")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -sse4_1")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=nehalem")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.1 -msse4.2")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ssse3")
Since you are compiling C code, not C++, you need:
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse4.1")
You can get rid of all the other -march XXX
and -msseXXX
settings.
If you're using a mix of C and C++ then you could also add:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.1")
这篇关于内联调用always_inline __mm_mullo_epi32失败:目标特定选项不匹配的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!