如何使用gcc检测AVX2支持

如何使用gcc检测AVX2支持,gcc,g++,avx,instruction-set,avx2,Gcc,G++,Avx,Instruction Set,Avx2,我需要在我的代码中检测AVX2支持,并做出相应的决定 我知道有两种方法-\uuuuu内置cpu\u支持(“avx2”)和(如果已定义)(\uuuu avx2\uuuu)。现在的问题是一个返回true,另一个返回false。 测试代码如下所示- int main(){ if(__builtin_cpu_supports("avx2")){ std::cout<< "Builtin methods supports" <

我需要在我的代码中检测AVX2支持,并做出相应的决定
我知道有两种方法-
\uuuuu内置cpu\u支持(“avx2”)
(如果已定义)(\uuuu avx2\uuuu)
。现在的问题是一个返回true,另一个返回false。 测试代码如下所示-

int main(){
    if(__builtin_cpu_supports("avx2")){
        std::cout<< "Builtin methods supports" << std::endl;
    }
    
    
#if defined(__AVX2__)
    std::cout<<"Builtin symbol present"<<std::endl;
#endif
return 0;
}
Builtin methods supports
我正在运行i7-9750h。我的处理器支持AVX2指令集


正确的识别方法是什么。我在9.3.1中的GCC版本,我想你搞错了。您可以使用宏在编译时检查是否已将
gcc
配置为使用AVX2支持进行编译。内置程序可以在运行时检查它当前运行的CPU是否支持AVX2扩展。

噢,这很有意义,非常感谢。@AtharvaDubey:“配置的gcc…”特别是指
gcc-march=native
gcc-march=skylake
-mavx2
(但不要只做后者,它省去了
-mfma
-mbmi2
,特别是省去了要修复的调优选项)