介绍
// This file implements the general framework of the MLIR query tool. It // parses the command line arguments, parses the MLIR file and outputs the query // results.
官方代码文档里面是这样说的,这个工具用于对mlir文件进行一些查询工作
使用方法
代码分析
相关代码的目录结构如下:
mlir ├── include │ └── MLIR/IR │ ├── Matchers.h │ └── common.py │ └── MLIR/Query │ ├── Matcher | ├── MaterFinder.h | ├── Marshallers.h.h | ├── MatchersInternal.h | └── ... │ ├── Query.h │ └── QuerySession.h ├── lib │ └── Query │ ├── Mather │ └── ... │ └── Tools/mlir-query │ └── MlirQueryMain.cpp ├── Tools │ └── mlir-query │ ├── CMakeLists.cpp │ └── mlir-query.cpp ├── test │ └── mlir-query │ ├── function-extraction.mlir │ └── simple-test.mlir
lib/Tools/mlir-query
└── Tools/mlir-query │ └── MlirQueryMain.cpp
MlirQueryMain.cpp
MlirQueryMain.cpp
llvm
- 注册参数
-h
: help
mlir-query -h
-c
: 指定需要跑的命令mlir-query a.mlir -c "m hasOpName(\"arith.addf\").extract(\"testmul\")"
inputFile
:位置参数,传入的mlir文件no-implicit-module
: Disable implicit addition of a top-level module op during parsing, 处理的文件带不带外层的Module,如果加了这个参数那么导出来的文件最外层是funcOp, 不带就是moduleOpallow-unregistered-dialect
: Allow operation with no registered dialects- 打开文件,并使用Parser加载
- 根据是否传入command进行以下操作:
- 传入: 调用Query库处理command
- 未传入:进行交互式command处理
Tools/mlir-query
mlir-query.cpp
mlir-query.cpp
llvm
这个文件主要进行一些注册工作,包括
- Dialect注册
- command注册
官方已有的command如下:
command | 功能 |
hasOpAttrName | 匹配带有给定属性的算子 |
hasOpName | 匹配给定名字的算子 |
isConstantOp | 匹配常量算子 |
isNegInfFloat | 负无穷 |
… | … |
IR/Matchers
定义一些matcher方法
Matchers.h
llvm