-qarch (-mcpu)
适用的调用
| 选项 | xlc (编译 C) | xlC (编译 C++) | xlclang(编译 C) | xlclang++(编译 C++) |
|---|---|---|---|---|
| -qarch | ✓ | ✓ | ✓ | ✓ |
| -mcpu | ✓ | ✓ |
注: 此表中仅列出典型调用。 对于所有基本调用及其等效特殊调用,您可以参阅 编译器调用的完整列表 。
类别
等效编译指示
无。
用途
指定应为其生成代码(指令)的处理器体系结构。
语法
缺省值
- -qarch=pwr4 or -mcpu=pwr4
- -qarch=auto 或 -mcpu=native (当 -O4 或 -O5 生效时)
参数
- 自动
- 自动检测编译机器的特定体系结构。 它假定执行环境将与编译环境相同。 如果设置或隐式设置了 -O4 或 -O5 选项,那么隐式设置此选项。
本机- 自动检测编译机器的特定体系结构。 它假定执行环境将与编译环境相同。 如果设置或隐式设置了 -O4 或 -O5 选项,那么隐式设置此选项。
- ppc
- 建议不要使用此子选项。 即使它仍被接受,也会以静默方式升级到 -qarch=pwr4。
- ppc64
- 建议不要使用此子选项。 即使它仍被接受,也会以静默方式升级到 -qarch=pwr4。
- ppc64gr
- 建议不要使用此子选项。 即使它仍被接受,也会以静默方式升级到 -qarch=pwr4。
- ppc64grsq
- 建议不要使用此子选项。 即使它仍被接受,也会以静默方式升级到 -qarch=pwr4。
- ppc64v
- 生成具有向量处理器的通用 PowerPC® 芯片的指示信息,例如 PowerPC 970。 在 32 位或 64 位方式下有效。
- ppc970
- 生成特定于 PowerPC 970 体系结构的指示信息。
- ppcgr
- 建议不要使用此子选项。 即使它仍被接受,也会以静默方式升级到 -qarch=pwr4。
- pwr4
- 生成包含指令的目标代码,这些指令将在 POWER4、 POWER5、 POWER5+、 POWER6、 POWER7、 POWER7+、 POWER8、 POWER9 或 PowerPC 970 硬件平台上运行。
- pwr5
- 生成包含将在 POWER5, POWER5+, POWER6, POWER7, POWER7+, POWER8 或 POWER9 硬件平台上运行的指令的对象代码。
- pwr5x
- 生成包含将在 POWER5+, POWER6, POWER7, POWER7+, POWER8 或 POWER9 硬件平台上运行的指令的对象代码。
- pwr6
- 生成包含将在 POWER6 硬件平台 (以 POWER6 体系结构方式运行) 或 POWER7, POWER7+, POWER8 或 POWER9 硬件平台上运行的指令的对象代码。
如果您需要十进制浮点指令的支持,请务必在编译时指定此子选项。
- pwr6e
- 生成包含将在以 POWER6 增强方式运行的 POWER6 硬件平台上运行的指令的对象代码。
- pwr7
- 生成包含将在 POWER7, POWER7+, POWER8 或 POWER9 硬件平台上运行的指令的对象代码。
- pwr8
- 生成包含将在 POWER8 和 POWER9 硬件平台上运行的指令的对象代码。
- pwr9
- 生成包含将在 POWER9 硬件平台上运行的指令的对象代码。
使用量
所有 PowerPC 机器共享一组公共指令,但也可能包含给定处理器或处理器系列独有的其他指令。 使用 -qarch 选项将特定体系结构作为编译的目标将生成可能未在其他体系结构上运行但为所选体系结构提供最佳性能的代码。 如果您希望在特定体系结构上实现最大性能,并且不会在其他体系结构上使用该程序,请使用相应的体系结构选项。 如果要生成可以在多个体系结构上运行的代码,请指定支持一组体系结构的 -qarch 子选项。 表 2 显示了不同处理器体系结构支持的功能部件及其代表 -qarch 子选项:
| 体系结构 | 图形支持 | 平方根支持 | 64 位支持 | 向量处理支持 | 大页面支持 |
|---|---|---|---|---|---|
| pwr4 | 是 | 是 | 是 | 否 | 是 |
| pwr5 | 是 | 是 | 是 | 否 | 是 |
| pwr5x | 是 | 是 | 是 | 否 | 是 |
| ppc | 是 | 是 | 是 | 否 | 是 |
| ppc64 | 是 | 是 | 是 | 否 | 是 |
| ppc64gr | 是 | 是 | 是 | 否 | 是 |
| ppc64grsq | 是 | 是 | 是 | 否 | 是 |
| ppc64v | 是 | 是 | 是 | VMX | 是 |
| ppc970 | 是 | 是 | 是 | VMX | 是 |
| pwr6 | 是 | 是 | 是 | VMX | 是 |
| pwr6e | 是 | 是 | 是 | VMX | 是 |
| pwr7 | 是 | 是 | 是 | VMX 和 VSX | 是 |
| pwr8 | 是 | 是 | 是 | VMX 和 VSX | 是 |
| pwr9 | 是 | 是 | 是 | VMX 和 VSX | 是 |
注: 向量多媒体扩展 (VMX) 和向量标量扩展 (VSX) 是用于向量处理的处理器指令。
对于任何给定的 -qarch 设置,编译器缺省为特定的匹配 -qtune 设置,这可以提供其他性能改进。 或者,如果使用 group 参数指定 -qarch,则可以将 -qtune 指定为 auto 或在组中提供特定架构。 有关将 -qarch 和 -qtune 一起使用的详细信息,请参阅 -qtune (-mtune)。
对于给定的应用程序,请确保在编译其每个源文件时指定相同的 -qarch 设置。 虽然链接程序和装入程序可能会检测到使用不兼容的 -qarch 设置编译的对象文件,但您不应依赖该对象文件。
预定义的宏
请参阅 与体系结构设置相关的宏 ,以获取 -qarch 子选项预定义的宏的列表。
示例
要指定编译自
myprogram.c 的可执行程序 testing 将在具有 VSX 指令支持的计算机上运行,例如, power8,请输入:xlc -o testing myprogram.c -qarch=pwr8