对于GCC CFLAGS选项:-msse,-msse2,-mssse3,-msse4,-msse4.1,-msse4.2.它们是独家使用还是可以一起使用?
我的理解是,选择要设置的位置取决于程序将运行的目标拱,是否支持,这是正确的吗?
如果是这样,我怎么知道我的目标拱支持什么?在Linux中,我是cat/proc/cpuinfo,但是如果是mac还是Windows呢?
谢谢!
我正在尝试使用使用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)
这个问题已经在这里通过设置 解决了StackOverflow
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.1")
Run Code Online (Sandbox Code Playgroud)
我尝试了相同的和许多其他选项.但我的项目仍然无法编译.
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")
Run Code Online (Sandbox Code Playgroud)