Clang,在源代码端检测 -mavx 编译器参数
Posted
技术标签:
【中文标题】Clang,在源代码端检测 -mavx 编译器参数【英文标题】:Clang, detecting -mavx compiler argument on the source code side 【发布时间】:2014-02-09 15:07:50 【问题描述】:当我使用 GCC 并设置命令行参数 -mavx 时,编译器会自动在源代码中定义__AVX__
。
这样我可以检测项目是否使用 AVX 指令构建,如果不是回退到另一个代码路径。
有没有办法用 Clang 做同样的事情?
谢谢, 克里斯托夫
【问题讨论】:
【参考方案1】:正确的测试是在__AVX__
上,它与clang 和gcc 一样好用。它甚至可以与 Visual Studio 一起使用...
【讨论】:
【参考方案2】:llvm/tools/lib/Basic/Targets.cpp中的源码:
switch (SSELevel)
....
case AVX:
Builder.defineMacro("__AVX__");
...
【讨论】:
【参考方案3】:在 Visual C++ 中,定义是 _AVX_
而不是 __AVX__
。
我实际上是在检查__AVX__
,但我没有成功。我的项目生成器 (CMake) 可能会遇到问题,无法正确设置标志以使用 AVX。
编辑:更正它是两个下划线,不是一个,我的错误!
所以是的,__AVX__
正在为 VC、GCC 和 Clang 工作。 \o/
谢谢! 克里斯托夫
【讨论】:
以上是关于Clang,在源代码端检测 -mavx 编译器参数的主要内容,如果未能解决你的问题,请参考以下文章