不能使用AVX内在,因为我的函数编译时不支持' xsave'

时间:2017-07-22 02:52:41

标签: xcode macos avx

我想使用AVX内在,如: __m256 factor_min = _mm256_set1_ps(1.329227); 但是我得到了以下编译错误:

  

Always_inline function' _mm256_set1_ps'需要目标功能' xsave',但会被内联到功能' AveragePooling'编译时不支持' xsave'

我的环境是:MacOs + Intel Core i7 + xcode8.3 enter image description here 我已经看过其他关于' xsave'但仍然不知道如何解决这个编译错误的问题。我对汇编指令一无所知。有没有简单的方法来解决这个错误(也许只是改变xode设置?)?非常感谢。

我认为英特尔酷睿i7完全支持AVX。

2 个答案:

答案 0 :(得分:4)

我在2017款MacBook Pro上的Xcode 9.2上也有同样的编译问题 - 它最多支持AVX2。

我能够通过手动配置AVX向量扩展来编译它,而不是使用"平台默认"。

enter image description here

要确定您的CPU是否支持AVX,请在终端中检查以下命令的输出,看它是否显示AVX甚至是AVX2:

sysctl -a | grep machdep.cpu.features

答案 1 :(得分:0)

只是一个更新-我的两台Mac电脑都只显示了sysctl的AVX1.0,但是在XCode 10.3中,我可以搜索目标设置的向量,并在“启用其他向量扩展”下选择AVX 2,根据Intel的说明, Macs确实支持-并且有效。 :)

Update2:由于Clang中的一个怪癖,并非所有的AVX 2都已启用,因此要获得FMA支持,我必须进入Build Phases-> Compile Sources并添加标志-mfma。然后我得到了fma指令进行编译。请注意,似乎必须对每个源文件执行此过程。