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

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

问题描述

我正在尝试使用使用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屋!

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