23

问题是关于如何clang打印关于哪些循环(或代码的其他部分)已被矢量化的信息。GCC有一个名为-ftree-vectorizer-verbose=6执行此操作的命令行开关(或-fopt-info-vec在较新版本的 GCC 中),但我找不到任何类似的clang. clang支持这个还是我唯一的选择是偷看反汇编?

4

2 回答 2

10

clang 具有以下选项来打印与矢量化相关的诊断:

-Rpass=loop-vectorize identifies loops that were successfully vectorized.

-Rpass-missed=loop-vectorize identifies loops that failed vectorization and indicates if vectorization was specified.

-Rpass-analysis=loop-vectorize identifies the statements that caused vectorization to fail.

来源: http: //llvm.org/docs/Vectorizers.html

于 2015-07-21T15:17:27.893 回答
1

查看 clang 源代码,Transforms/Vectorize 中有几个向量化通道:

  • BBV矢量化
  • 循环向量化
  • SLPV矢量化

最后三个似乎没有任何可以打印的参数。但是在 BBVectorize 内部,当 clang 构建调试时,有几个选项可以打印东西:

  • bb-vectorize-debug-instruction-examination - 启用调试时,输出有关指令检查过程的信息
  • bb-vectorize-debug-candidate-selection - 启用调试时,输出有关候选人选择过程的信息
  • bb-vectorize-debug-pair-selection - 启用调试时,输出有关对选择过程的信息
  • bb-vectorize-debug-cycle-check - 启用调试时,输出有关循环检查过程的信息
  • bb-vectorize-debug-print-after-every-pair -启用调试时,在每对融合后转储基本块

看起来就是这样。

于 2013-12-25T00:27:42.460 回答