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