-qsimd
适用的调用
| 选项 | xlc (编译 C) | xlC (编译 C++) | xlclang(编译 C) | xlclang++(编译 C++) |
|---|---|---|---|---|
| -qsimd | ✓ | ✓ | ✓ | ✓ |
注: 此表中仅列出典型调用。 对于所有基本调用及其等效特殊调用,您可以参阅 编译器调用的完整列表 。
类别
等效编译指示
| xlc/xlC 和其他遗留的调用命令 | xlclang/xlclang + + 调用命令 |
|---|---|
| #pragma nosimd | 无 |
用途
控制编译器是否可以自动利用支持向量指令的处理器的向量指令。
与算法密集型任务(例如多媒体应用程序)配合使用时,这些指令可以提供更高的性能。
语法
缺省值
无论是否指定了 -qsimd,当以下两个条件都满足时,隐含 -qsimd=auto;否则,隐含 -qsimd=noauto。
- 优化级别为 -O3 或更高。
- -qarch 设置为 pwr7 或更高。
使用量
-qsimd=auto 选项对支持向量指令的处理器启用自动生成向量指令的功能。 当 -qsimd=auto 生效时,编译器会将循环中对数组的连续元素执行某些的操作转换为向量指令。 这些指令一次计算多个结果,这比按顺序计算每个结果更快。 这些选项对于具有重要图像处理需求的应用程序很有用。
-qsimd=noauto 选项禁止将循环数组操作转换为向量指令。 要实现更精细的控制,请使用 -qstrict=ieeefp, -qstrict=operationprecision和 -qstrict=vectorprecision。 有关详细信息,请参阅 -qstrict。
-qsimd=auto 选项控制自动模拟,该操作以前由不推荐的 -qhot=simd 选项执行。 如果您指定 -qhot=simd,那么编译器会忽略它,并且不发出任何警告消息。
指定不推荐的 -qenablevmx 选项与指定 -qsimd=auto 的效果相同。 编译器不会对此发出任何警告。
备注信息:
- 指定不带任何子选项的 -qsimd 与 -qsimd=auto 等效。
- 指定 -qsimd=auto 并不保证将发生自动模拟。
- 使用向量指令一次计算多个结果时,可能会延迟甚至错过某些体系结构上的浮点异常检测。 如果检测异常很重要,请不要使用 -qsimd=auto。
规则
如果在 IPA 编译步骤中启用 IPA 并指定 -qsimd=auto ,但在 IPA 链接步骤中指定 -qsimd=noauto ,那么编译器将在 IPA 链接步骤中自动设置 -qsimd=auto 。 它还为 -qarch 设置相应的值,以与编译时指定的体系结构匹配。 同样,如果在 IPA 编译步骤中启用 IPA 并指定 -qsimd=noauto ,但在 IPA 链接步骤中指定 -qsimd=auto ,那么编译器将在编译步骤中自动设置 -qsimd=auto 。
预定义的宏
无。
示例
下列任何命令组合都可以启用自动简单化:
- xlc -O3 -qsimd
- xlc -O2 -qhot=level=0 -qsimd=auto
以下命令组合未启用 自动简单化 ,因为既未指定 -O3 也未指定 -qhot:
- xlc -O2 -qsimd=auto
在下面的示例中, #pragma nosimd 用于在特定的 for 循环中禁用 -qsimd=auto :...
#pragma nosimd
for (i=1; i<1000; i++) {
/* program code */
}

