---
title: 单文件扫描模式使用场景（x86 Intel intrinsics分析）
description: "用户可以通过在命令./tiancheng之后，添加“--enable-intel-intrinsics”参数的方式，启用x86 Intel intrinsics分析功能，分析源码文件中的x86向量化指令，实现对x86向量化代码的改写。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdevps/development/affinityanalyzer/KunpengDevKitCli_0262.html
sourcePath: /source/zh/kunpengdevps/development/affinityanalyzer/KunpengDevKitCli_0262.html
indexId: effcac85dc74dc1a2b4354f870c20613bae10800e8c734f03ab03f78eda702ca79
---
# 单文件扫描模式使用场景（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分析使用示例

1. 执行以下命令，启用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
```


2. 打开生成的向量化检查报告，查看向量化检查信息。报告内容包括循环向量化检查报告、函数向量化检查报告和任务信息。
3. 单击“循环向量化检查报告”展示循环检查结果，具体内容如下图所示。
**表1 报告结果参数说明**

| 参数 | 说明 |
| --- | --- |
| 循环向量化统计结果 | 循环向量化统计结果 |
| 总循环数量 | 源码文件中扫描出的循环总数。 |
| 可向量化数量 | 源码文件中扫描出的可以进行向量化的循环数量。 |
| 潜在向量化数量 | 需要进行特殊处理（如函数内联）才有可能向量化的循环数量。 |
| 不可向量化数量 | 源码文件中扫描出的不可向量化的循环数量。 |
| 循环检查结果类别 | 天秤源码优化工具检查出的循环类别，包括可向量化、潜在向量化和不可向量化三种类别。 |
| 分析循环行数 | 循环在源码文件中的代码行数。 |
| 循环变量 | 在循环中进行循环的变量。 |
| 源码文件存放路径 | 循环所在源码文件的存放路径。 |


  在循环检查结果类别中可以筛选出不同类别的循环，默认全选，单击“重置”可以返回默认状态，单击筛选出的任一行可以展开具体的循环分析过程。

4. 单击“分析循环行数”展开循环分析过程，包括可向量化、潜在向量化、不可向量化三种循环分析过程。

  - 可向量化循环分析过程如下图所示。

  - 潜在向量化循环分析过程如下图所示。
  - 不可向量化循环分析过程如下图所示。
    循环分析过程参数说明请参见表2。


**表2 循环分析过程参数说明**

| 循环分析过程 | 参数 | 说明 |
| --- | --- | --- |
| 可向量化分析 | 循环完整代码段 | 循环在源码文件中的代码段。 |
| 可向量化分析 | 向量优化后代码段 | 天秤源码优化工具对循环进行向量化优化后的代码段。 |
| 潜在向量化分析 | 循环完整代码段 | 循环在源码文件中的代码段。 |
| 不可向量化分析 | 不可向量化原因 | 天秤源码优化工具将循环判断为不可向量化的原因。 |
| 不可向量化分析 | 循环完整代码段 | 循环在源码文件中的代码段。 |
| 公有参数 | 循环体分析（逐行） | 天秤源码优化工具对循环进行检查分析的过程。 |
| 公有参数 | 代码行 | 循环中循环体的代码行。 |
| 公有参数 | 覆盖率 | 是否被天秤可向量化模式匹配覆盖。 |
| 公有参数 | 代码行向量化状态 | 循环体单个代码行的向量化状态，包括可向量化、潜在向量化、不可向量化三种类别。 |
| 公有参数 | 检查信息 | 天秤源码优化工具对代码行的检查分析结果。 说明： 如果代码行向量化状态为可向量化，则不显示检查信息，如果代码行向量化状态为潜在向量化和不可向量化，则显示对应的原因或建议。 |


5. 单击“函数向量化检查报告”展示函数检查结果，具体内容如下图所示。
**表3 报告结果参数说明**

| 参数 | 说明 |
| --- | --- |
| 函数向量化统计结果 | 函数向量化统计结果 |
| 总函数数量 | 源码文件中扫描出的函数总数。 |
| 可向量化数量 | 源码文件中扫描出的可以进行向量化的函数数量。 |
| 潜在向量化数量 | 存在可改写指令但是天秤源码优化工具暂不支持改写的函数数量。 |
| 暂不支持向量化数量 | 源码文件中扫描出的暂不支持向量化的函数数量。 |
| 函数检查结果类别 | 天秤源码优化工具检查出的函数类别，包括可向量化、潜在向量化和暂不支持向量化三种类别。 |
| 分析函数行数 | 函数在源码文件中的代码行数。 |
| 函数名称 | 天秤源码优化工具进行向量化检查的函数名。 |
| 源码文件存放路径 | 函数所在源码文件的存放路径。 |


  在函数检查结果类别中可以筛选出不同类别的函数，默认选择“可向量化”和“潜在向量化”，单击“重置”可以返回默认状态，单击筛选出的任一行可以展开具体的函数分析过程。

6. 单击“分析函数行数”展开函数分析过程，包括可向量化、潜在向量化、暂不支持向量化三种函数分析过程。

  - 可向量化函数分析过程如下图所示。
  - 潜在向量化函数分析过程如下图所示。
  - 暂不支持向量化函数分析过程如下图所示。
    函数分析过程参数说明请参见表4。

**表4 函数分析过程参数说明**

| 函数分析过程 | 参数 | 说明 |
| --- | --- | --- |
| 可向量化分析 | 函数完整代码段 | 函数在源码文件中的代码段。 |
| 可向量化分析 | 向量优化后代码段 | 天秤源码优化工具对函数进行向量化优化后的代码段。 |
| 可向量化分析 | 检查信息 | 天秤源码优化工具对代码行中的x86指令和变量的检查分析结果。 |
| 潜在向量化分析 | 函数完整代码段 | 函数在源码文件中的代码段。 |
| 潜在向量化分析 | 检查信息 | 天秤源码优化工具对代码行中的x86指令和变量的检查分析结果。 |
| 暂不支持向量化分析 | 不可向量化原因 | 天秤源码优化工具的改写模块暂未适配，暂不支持向量化改写。 |
| 暂不支持向量化分析 | 函数完整代码段 | 函数在源码文件中的代码段。 |
| 暂不支持向量化分析 | 向量优化后代码段 | 天秤源码优化工具对函数进行向量化优化后的代码段。 |
| 暂不支持向量化分析 | 检查信息 | 天秤源码优化工具对代码行的检查分析结果。 说明： 如果代码行向量化状态为可向量化，则不显示检查信息，如果代码行向量化状态为潜在向量化和不可向量化，则显示对应的原因或建议。 |
| 公有参数 | 函数体分析（逐行） | 天秤源码优化工具对函数进行检查分析的过程。 |
| 公有参数 | 代码行 | 函数中函数体的代码行。 |
| 公有参数 | 覆盖率 | 是否被天秤可向量化模式匹配覆盖。 |
| 公有参数 | 代码行向量化状态 | 函数体单个代码行的向量化状态，包括可向量化、潜在向量化、暂不支持向量化、仅含有x86类型变量和无关语句五种类别。 |


7. 单击“任务信息”可查看当前检查报告的生成信息，如下图所示。
**表5 任务信息说明**

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