在Mavericks上编译AVX2程序

时间:2013-12-24 10:50:39

标签: c++ c gcc avx avx2

我尝试使用gcc版本4.9.0 20131201在Mac OS 10.9上编译虚拟AVX2程序

//dummy program
#include <immintrin.h> // AVX2
#include <stdio.h>
int main(int argc, char* argv[]) {
   __m256i reg =  _mm256_set1_epi8(1);
   __m256i result = _mm256_max_epu8(reg,reg);
   printf("%d",((int *)&result)[0]);
}

我用这个命令编译

  

gcc -mavx -O0 test.C

我收到此错误

In function 'int main(int, char**)':
avx2intrin.h:373:1: 
error: inlining failed in call to always_inline 
'__m256i _mm256_max_epu8(__m256i, __m256i)': target specific option mismatch
 _mm256_max_epu8 (__m256i __A, __m256i __B)

_mm256_max_epu8使用 always_inline 属性。这是问题吗?

如果我用O3编译,我也会遇到问题。

我做错了什么?

2 个答案:

答案 0 :(得分:9)

要使用AVX2编译目标,请使用-mavx2

答案 1 :(得分:0)

我可以用

编译程序
  

g ++ -mavx2 -Wa,-q test.C

在此thread中讨论了为什么-Wa,q也需要