已开启
[Huawei][AscendNPU IR] fix PDLL regbase lit gating for A3/A5 builds #27
gguo创建于 7月15日
[Huawei][AscendNPU IR] fix PDLL regbase lit gating for A3/A5 builds #27
已开启
合并受阻
atomgit-bot
7月15日 评论:
7月15日 评论:
变更摘要
此 PR 主要修复 AscendNPU IR 在 A3/A5 构建中 PDLL 相关 lit 测试被错误门控的问题。核心思路是:扩展 TableGenParseFile 接口使其支持传入预定义宏,在 PDLL 解析器中针对 A5 构建将 BSPUB_DAVINCI_BISHENGIR_A5 宏传递给 TableGen 解析器,同时恢复之前被注释掉的 PDLL 测试文件内容,并在 lit 配置中通过 regbase 特性正确控制测试启停。
主要改动
TableGenParseFile接口扩展:llvm/include/llvm/TableGen/Parser.h中的TableGenParseFile函数新增std::optional<ArrayRef<std::string>> Macros可选参数,允许调用者向 TableGen 解析器注入预定义宏;llvm/lib/TableGen/Parser.cpp中对应实现将宏传递给TGParser构造函数。- PDLL 解析器条件编译支持:
mlir/lib/Tools/PDLL/Parser/Parser.cpp的parseTdInclude方法中,通过#ifdef BSPUB_DAVINCI_BISHENGIR_A5条件编译,在 A5 构建下将{"BSPUB_DAVINCI_BISHENGIR_A5"}宏数组传入TableGenParseFile。 - 恢复 PDLL 测试文件:
mlir/test/lib/Tools/PDLL/TestPDLL.pdll和mlir/test/lib/Transforms/TestDialectConversion.pdll中之前被注释掉的#include指令及 Pattern 定义全部取消注释,恢复正常测试内容。 - lit 配置中注册
regbase特性:mlir/test/lit.site.cfg.py.in新增config.bspub_davinci_bishengir_a5配置项,mlir/test/lit.cfg.py新增条件逻辑,当该配置为真时添加regbase可用特性,使依赖REQUIRES: regbase的测试得以执行。 - 清理测试文件中的 TODO 注释:
mlir/test/Transforms/test-dialect-conversion-pdll.mlir和mlir/test/mlir-pdll/Integration/test-pdll.mlir移除了关于迁移后启用测试的TODO注释。


atomgit-bot
7月15日 评论:
7月15日 评论:
代码审查
经过对所有 8 个变更文件的逐项审查,我没有发现此 diff 引入的明确正确性、安全或可靠性问题。以下是各文件的审查结论:
审查确认(按文件逐一确认)
| 文件 | 审查结果 |
|---|---|
llvm/include/llvm/TableGen/Parser.h |
✅ 无问题 — 添加 ArrayRef include 和 Macros 默认参数,保持向后兼容 |
llvm/lib/TableGen/Parser.cpp |
✅ 无问题 — 将 Macros 参数正确传递给 TGParser 构造函数 |
mlir/lib/Tools/PDLL/Parser/Parser.cpp |
✅ 无问题 — #ifdef 条件编译创建 ArrayRef 指向 static const std::string,生命周期安全;#else 分支创建空的 ArrayRef;逻辑正确 |
mlir/test/CMakeLists.txt |
✅ 无问题 — 将 LLVM_BSPUB_DAVINCI_BISHENGIR_A5 加入 llvm_canonicalize_cmake_booleans,与其他布尔变量一致 |
mlir/test/lib/Tools/PDLL/TestPDLL.pdll |
✅ 无问题 — 取消注释的 Pattern 使用标准 ops (test.simple, test.success, CastOpInterface),不依赖 A5 特定定义 |
mlir/test/lib/Transforms/TestDialectConversion.pdll |
✅ 无问题 — 取消注释的 Pattern 使用标准 PDLL 内置函数 (convertTypes, convertValues) 和标准 ops (test.cast, test.return) |
mlir/test/lit.cfg.py |
✅ 无问题 — 当 bspub_davinci_bishengir_a5 为真时添加 regbase 特性标记,与 lit 测试的 REQUIRES: regbase 对应 |
mlir/test/lit.site.cfg.py.in |
✅ 无问题 — 模板替换 @LLVM_BSPUB_DAVINCI_BISHENGIR_A5@ 经过 CMake canonicalize 处理后值为 0/1,Python 条件判断正确 |
关键检查点
- API 兼容性:
TableGenParseFile新增参数ArrayRef<std::string> Macros = {},默认值为空ArrayRef(调用默认构造函数),两个已有调用点(ParserEntryPointTest.cpp、TableGenServer.cpp)无需修改即可编译通过。 - ArrayRef 生命周期:PDLL parser 中的
static const std::string tdMacro保证其生存期覆盖整个程序,ArrayRef不会悬垂。 - TableGen 宏名映射:C 预处理器宏
BSPUB_DAVINCI_BISHENGIR_A5→ TableGenDefinedMacros集合中的同名条目,语义一致,StringMap内部会复制字符串。 - Lit 特性门控:
.pdll中的 Pattern 虽然无条件编译,但对应的 lit 测试(test-pdll.mlir、test-dialect-conversion-pdll.mlir)由REQUIRES: regbase门控,仅 A5 构建运行。
总结
- P0–P2 问题数:0
- P3 问题数:0
- 整体风险评估:低风险。变更结构清晰、范围受限,API 改动向后兼容,CMake 配置和 lit 特性门控逻辑正确。
⚠️ 已识别出整体风险,但无法提取行内评论,请参考整体评估。


7月15日 添加了label:ascend-cla/yes
ascend-robot
7月15日 评论:
7月15日 评论:
ascend-robot
7月15日 评论:
7月15日 评论:
Thanks for your pull-request.
The full list of commands accepted by me can be found at here。
You can get sig-info at here
PR Approval Progress
⚠️ This PR does not yet meet the following requirements:lgtm (requires ≥ 2 person(s) per module)、approve (requires ≥ 1 person(s) per module)
Module Approval Details
| module | lgtm status | approve status |
|---|---|---|
| repo-Ascend/llvm-project | ❌ (0/2)(You can also ask: tanshengshun, 周浩, wangtao489, Zz_zl, shijingchang) | ❌ (0/1)(You can also ask: hocky, Zz_zl, cxtjjcz, tarvlad, rusyaev-roman) |
💡 Tip:
- Committer can comment
/approveor/lgtm- Commenting
/approveimplies both code review (lgtm) and intent to merge (approve)
CLA Signature Pass
gguo9, thanks for your pull request. All authors of the commits have signed the CLA. 👍


7月15日 修改了pull request 的描述
7月15日 修改了pull request 的描述
摘要
PR #24 的后续修复:在 A5 构建下注册
regbaselit feature,使带REQUIRES: regbase的两个 PDLL 集成测试在 A3 上跳过、在 A5 上执行。向 mlir-pdll 的 TableGen include 传入BSPUB_DAVINCI_BISHENGIR_A5宏,并恢复相关 PDLL pattern。PDLL UT 验证结果(llvm
18251f68)在 npuir-a3 本地构建目录下用
llvm-lit验证(build= A3,build-a5flags= A5)。目标用例(
REQUIRES: regbase)mlir-pdll/Integration/test-pdll.mlirTransforms/test-dialect-conversion-pdll.mlirmlir-pdll/套件(21 个)Integration/test-pdll.mlir)mlir-pdll-lsp-server/套件(17 个)A5 lsp-server 失败项:
compilation_database.test、document-links.test、hover.test、inlay-hints.test、signature-help.test。复现命令
# 目标用例 cd build-a5flags/tools/mlir/test && llvm-lit -v \ mlir-pdll/Integration/test-pdll.mlir Transforms/test-dialect-conversion-pdll.mlir cd build/tools/mlir/test && llvm-lit -v \ mlir-pdll/Integration/test-pdll.mlir Transforms/test-dialect-conversion-pdll.mlir # PDLL parser/codegen 全量套件 llvm-lit -v mlir-pdll/ # PDLL LSP server 套件 llvm-lit -v mlir-pdll-lsp-server/