mlir-query

AI keywords
Created
Sep 13, 2024 05:48 AM
MLIR

介绍


// 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, 不带就是moduleOp
    • allow-unregistered-dialect: Allow operation with no registered dialects
  • 打开文件,并使用Parser加载
  • 根据是否传入command进行以下操作:
    • 传入: 调用Query库处理command
    • 未传入:进行交互式command处理

Tools/mlir-query

mlir-query.cpp
mlir-query.cpp
llvm
notion image
这个文件主要进行一些注册工作,包括
  • Dialect注册
  • command注册
官方已有的command如下:
command
功能
hasOpAttrName
匹配带有给定属性的算子
hasOpName
匹配给定名字的算子
isConstantOp
匹配常量算子
isNegInfFloat
负无穷

IR/Matchers

定义一些matcher方法
Matchers.h
llvm