performance - 如何确定 gcc 支持哪些架构?

标签 performance gcc x86

GCC 支持 -march允许您指定目标架构的开关 - 允许它调整该平台的指令序列以及使用平台上可能可用但在“默认”或基础版本架构上不可用的指令。

例如,-march=skylake将告诉编译器以 Skylake CPU 为目标,包括使用 Skylake 上可用的指令集,例如 AVX2。

我怎么知道 -march 的值是什么? gcc本地版本支持?当传递无效参数时,较新版本有助于列出有效参数,但较旧版本不会。

最佳答案

对于 gcc7 及更高版本,gcc 将打印它支持的值作为错误消息的一部分。

$ gcc -E -march=help -xc /dev/null
# 1 "/dev/null"
cc1: error: bad value (‘help’) for ‘-march=’ switch
cc1: note: valid arguments to ‘-march=’ switch are: nocona core2 nehalem corei7 westmere sandybridge corei7-avx ivybridge core-avx-i haswell core-avx2 broadwell skylake skylake-avx512 bonnell atom silvermont slm knl x86-64 eden-x2 nano nano-1000 nano-2000 nano-3000 nano-x2 eden-x4 nano-x4 k8 k8-sse3 opteron opteron-sse3 athlon64 athlon64-sse3 athlon-fx amdfam10 barcelona bdver1 bdver2 bdver3 bdver4 znver1 btver1 btver2

我查了 on Godbolt , 和 x86 gcc6.x 及更早版本只是说 error: bad value (invalid) for -march= switch即使与 -v .

它也不适用于 clang5.0 或 ICC18。

这是特定于目标的:ARM gcc6.3 确实生成了一个受支持的列表 -march值,或 -mcpu= .

关于performance - 如何确定 gcc 支持哪些架构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47299458/

相关文章:

javascript - 有没有办法找到有关使用 chrome 开发工具释放的对象的任何信息

C 回调和非 Go 线程

javascript - HTML5/JS - 启动多个 webworker

jquery - Zepto.js 选择器性能与 jquery

c++ - 如何以编程方式询问编译器以在 C++ 中编译文件?

assembly - 有人可以解释一下这个直接组装的 x86 JMP 操作码吗?

assembly - 释放 x87 FPU 堆栈 (ia32)

c - 十六进制编辑器和 OllyDbg 中的字节

java - Long primitive 还是 AtomicLong 作为计数器?

c - 在 C 中,我应该如何在字符和另一个字符之间剪切文本文件?