单文件扫描模式使用场景(x86 Intel intrinsics分析)
用户可以通过在命令./tiancheng之后,添加“--enable-intel-intrinsics”参数的方式,启用x86 Intel intrinsics分析功能,分析源码文件中的x86向量化指令,实现对x86向量化代码的改写。
火焰图扫描模式和函数扫描模式也支持启用x86 Intel intrinsics分析功能,此示例以扫描单个源码文件时启用x86 Intel intrinsics分析功能为例。
前提条件
以天秤源码优化工具安装路径“/home/tiancheng-x.x.x-Linux-Kunpeng”为例。
x86 Intel intrinsics分析使用示例
- 执行以下命令,启用x86 Intel intrinsics分析功能,对源码文件进行扫描。此处以扫描“/home/demo”下的input.cpp文件中所有源码,报告文件存放至“/home/demo”路径为例,请根据实际情况进行修改。
./tiancheng --enable-intel-intrinsics -i /home/demo/input.cpp -o /home/demo -r /path/to/code_project
- 执行上述命令会启用x86 Intel intrinsics分析功能,对“/home/demo”下的源码文件进行扫描,分析源码文件中的x86向量化指令,在“/home/demo”路径下生成向量化检查报告和JSON报告文件。最后指定项目根目录“/path/to/code_project”,可以避免头文件缺失。
- 向量化检查报告包含向量化检查信息和分析过程,当启用x86 Intel intrinsics分析功能时报告中才有函数向量化检查报告,不启用时报告中只有循环向量化检查报告。
- JSON报告文件为源码优化建议报告文件,其字段说明请参见表1。
返回的部分信息如下:
Successfully generated vectorization report: /home/demo/Vectorization_Source_20260527_094859_372_8895.html Successfully generated vectorization optimization result: /home/demo/Vectorization_Optimization_Result_20260527_094859_372_8895.json
- 打开生成的向量化检查报告,查看向量化检查信息。报告内容包括循环向量化检查报告、函数向量化检查报告和任务信息。
- 单击“循环向量化检查报告”展示循环检查结果,具体内容如下图所示。

表1 报告结果参数说明 参数
说明
循环向量化统计结果
总循环数量
源码文件中扫描出的循环总数。
可向量化数量
源码文件中扫描出的可以进行向量化的循环数量。
潜在向量化数量
需要进行特殊处理(如函数内联)才有可能向量化的循环数量。
不可向量化数量
源码文件中扫描出的不可向量化的循环数量。
循环检查结果类别
天秤源码优化工具检查出的循环类别,包括可向量化、潜在向量化和不可向量化三种类别。
分析循环行数
循环在源码文件中的代码行数。
循环变量
在循环中进行循环的变量。
源码文件存放路径
循环所在源码文件的存放路径。
在循环检查结果类别中可以筛选出不同类别的循环,默认全选,单击“重置”可以返回默认状态,单击筛选出的任一行可以展开具体的循环分析过程。
- 单击“分析循环行数”展开循环分析过程,包括可向量化、潜在向量化、不可向量化三种循环分析过程。
- 潜在向量化循环分析过程如下图所示。
- 不可向量化循环分析过程如下图所示。
循环分析过程参数说明请参见表2。
表2 循环分析过程参数说明 循环分析过程
参数
说明
可向量化分析
循环完整代码段
循环在源码文件中的代码段。
向量优化后代码段
天秤源码优化工具对循环进行向量化优化后的代码段。
潜在向量化分析
循环完整代码段
循环在源码文件中的代码段。
不可向量化分析
不可向量化原因
天秤源码优化工具将循环判断为不可向量化的原因。
循环完整代码段
循环在源码文件中的代码段。
公有参数
循环体分析(逐行)
天秤源码优化工具对循环进行检查分析的过程。
代码行
循环中循环体的代码行。
覆盖率
是否被天秤可向量化模式匹配覆盖。
代码行向量化状态
循环体单个代码行的向量化状态,包括可向量化、潜在向量化、不可向量化三种类别。
检查信息
天秤源码优化工具对代码行的检查分析结果。
说明:如果代码行向量化状态为可向量化,则不显示检查信息,如果代码行向量化状态为潜在向量化和不可向量化,则显示对应的原因或建议。
- 单击“函数向量化检查报告”展示函数检查结果,具体内容如下图所示。

表3 报告结果参数说明 参数
说明
函数向量化统计结果
总函数数量
源码文件中扫描出的函数总数。
可向量化数量
源码文件中扫描出的可以进行向量化的函数数量。
潜在向量化数量
存在可改写指令但是天秤源码优化工具暂不支持改写的函数数量。
暂不支持向量化数量
源码文件中扫描出的暂不支持向量化的函数数量。
函数检查结果类别
天秤源码优化工具检查出的函数类别,包括可向量化、潜在向量化和暂不支持向量化三种类别。
分析函数行数
函数在源码文件中的代码行数。
函数名称
天秤源码优化工具进行向量化检查的函数名。
源码文件存放路径
函数所在源码文件的存放路径。
在函数检查结果类别中可以筛选出不同类别的函数,默认选择“可向量化”和“潜在向量化”,单击“重置”可以返回默认状态,单击筛选出的任一行可以展开具体的函数分析过程。
- 单击“分析函数行数”展开函数分析过程,包括可向量化、潜在向量化、暂不支持向量化三种函数分析过程。
- 可向量化函数分析过程如下图所示。
- 潜在向量化函数分析过程如下图所示。
- 暂不支持向量化函数分析过程如下图所示。
函数分析过程参数说明请参见表4。
表4 函数分析过程参数说明 函数分析过程
参数
说明
可向量化分析
函数完整代码段
函数在源码文件中的代码段。
向量优化后代码段
天秤源码优化工具对函数进行向量化优化后的代码段。
检查信息
天秤源码优化工具对代码行中的x86指令和变量的检查分析结果。
潜在向量化分析
函数完整代码段
函数在源码文件中的代码段。
检查信息
天秤源码优化工具对代码行中的x86指令和变量的检查分析结果。
暂不支持向量化分析
不可向量化原因
天秤源码优化工具的改写模块暂未适配,暂不支持向量化改写。
函数完整代码段
函数在源码文件中的代码段。
向量优化后代码段
天秤源码优化工具对函数进行向量化优化后的代码段。
检查信息
天秤源码优化工具对代码行的检查分析结果。
说明:如果代码行向量化状态为可向量化,则不显示检查信息,如果代码行向量化状态为潜在向量化和不可向量化,则显示对应的原因或建议。
公有参数
函数体分析(逐行)
天秤源码优化工具对函数进行检查分析的过程。
代码行
函数中函数体的代码行。
覆盖率
是否被天秤可向量化模式匹配覆盖。
代码行向量化状态
函数体单个代码行的向量化状态,包括可向量化、潜在向量化、暂不支持向量化、仅含有x86类型变量和无关语句五种类别。
- 单击“任务信息”可查看当前检查报告的生成信息,如下图所示。

表5 任务信息说明 参数
说明
任务名称
天秤源码优化工具自动创建的检查任务名。
报告生成时间
天秤源码优化工具生成报告的时间。
源码文件存放路径
扫描的源码所在文件的路径。
火焰图路径
扫描的火焰图SVG文件的路径。
特定函数名
扫描的函数名。
文件所属项目
待分析源码文件所属项目的根目录。
Clang资源文件路径
Clang内置头文件(如stddef.h)所在的目录。
GCC工具链
GCC编译器安装的目录,作为代码分析时的工具链路径。
是否启用SVE
是否转换为SVE指令集。





