Clang,在源代码端检测-mavx编译器参数

时间:2014-02-09 15:07:51

标签: c++ clang avx

当我使用GCC并设置命令行参数-mavx时,编译器将在源代码中自动定义__AVX__

这样我可以检测项目是否使用AVX指令构建,如果不是回到另一个代码路径。

有没有办法和Clang做同样的事情?

谢谢, 克里斯托夫

3 个答案:

答案 0 :(得分:6)

正确的测试在__AVX__,它与clang和gcc一样好用。它甚至适用于Visual Studio ......

答案 1 :(得分:2)

llvm / tools / lib / Basic / Targets.cpp中的源代码:

switch (SSELevel) {
....
  case AVX:
    Builder.defineMacro("__AVX__");
...

答案 2 :(得分:0)

使用Visual C ++,定义为_AVX_而不是__AVX__

我实际上正在检查__AVX__,但我没有成功。我可能遇到项目生成器(CMake)的问题,无法正确设置标志以使用AVX。

编辑:纠正它是两个下划线,而不是一个,我的错误! 所以是__AVX__正在为VC,GCC和Clang工作。 \ O /

谢谢! 克里斯托夫