调用 always_inline '_mm_mullo_epi32' 时内联失败:目标特定选项不匹配 [英] inlining failed in call to always_inline ‘_mm_mullo_epi32’: target specific option mismatch

查看:18
本文介绍了调用 always_inline '_mm_mullo_epi32' 时内联失败:目标特定选项不匹配的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用使用 SIMD 内在函数的 cmake 编译 C 程序.当我尝试编译它时,出现两个错误

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: 错误:调用 always_inline '_mm_mullo_epi32' 时内联失败:目标特定选项错配_mm_mullo_epi32 (__m128i __X, __m128i __Y)

/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: 错误:调用 always_inline '_mm_shuffle_epi8' 时内联失败:目标特定选项错配_mm_shuffle_epi8 (__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)

这里已经解决了这个问题StackOverflow 通过设置

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")  

推荐答案

由于您正在编译 C 代码,而不是 C++,您需要:

Since you are compiling C code, not C++, you need:

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse4.1")

你可以去掉所有其他的 -march XXX-msseXXX 设置.

You can get rid of all the other -march XXX and -msseXXX settings.

如果您混合使用 C 和 C++,那么您还可以添加:

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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆