用途:指导在 Hermes 编译器中新增一条 IR 指令(Inst/Instruction),适用于用户要求添加、创建或定义新 IR 指令的场景。
主要能力:给出需要改动的文件清单,包括 doc/IR.md、include/hermes/IR/Instrs.def、Instrs.h、IRBuilder.h、lib/IR/IRBuilder.cpp、IRVerifier.cpp、TypeInference.cpp,以及 HBC、SH、Mins 的代码生成文件与测试目录;若指令需要降级,还涉及 Lowering.h、Lowering.cpp 及 HBC/SH 的降级流水线注册。
使用方式:按步骤操作。先在 doc/IR.md 添加文档表格条目(这是唯一放文档注释的地方);在 Instrs.def 添加 DEF_VALUE 或 TERMINATOR 注册;在 Instrs.h 按给定模式定义类,不写文档注释;在 IRBuilder.h/cpp 添加创建方法;在 IRVerifier.cpp 添加 visit 校验;在 TypeInference.cpp 添加 infer 方法;在 ISel.cpp、SH.cpp、Mins.cpp 添加代码生成桩或实现;必要时实现降级 pass 并注册到流水线;最后在 test/IRGen、test/Optimizer 或 test/BCGen 下添加或更新 lit 测试。
关键约定:Instrs.h 中不写文档注释;新指令在各文件中应放在相关指令附近;名称在所有文件中保持一致;ValueKind 由 DEF_VALUE 自动生成。
限制:资料未提供具体版本、依赖或运行环境要求;Mins 代码生成除非被要求否则保持桩实现。