web-dev-qa-db-ja.com

always_inline‘_mm_mullo_epi32 ’の呼び出しでインライン化に失敗しました:ターゲット固有のオプションの不一致

SIMD組み込み関数を使用するcmakeを使用してCプログラムをコンパイルしようとしています。コンパイルしようとすると、2つのエラーが発生します

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

私はまったく同じ、そして他の多くのオプションを試します。しかし、私のプロジェクトはまだコンパイルに失敗します。

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")  
9
Lawan subba

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")
8
Paul R