llvm-project/mlir/docs/Tools/mlir-rewrite.md
Jacques Pienaar 4c25a538d3
[mlir] Start rewrite tool (#77668)
Initial commit of a tool to help in textual rewrites of .mlir files.
This tool builds of of AsmParserState and is rather simple. Took some
inspiration from when I used clang's AST rewrites where I'd often treat
it as a "localizing" regex applicator in fallback cases, and started
with that as functionality. There though, one does have access to the
lower level info than here, but still a step up over sed over entire
file.

This aims to be helpful (e.g., rewrite syntax including best effort
inside comments) rather than bulletproof tool. It may even be better
suited under utils than tools. And most of the rewrites would be rather
short lived and might never make it upstream (while the helpers of those
rewrites may for future rewrites).

The layering at the moment is not ideal as it is reusing the
RewriteBuffer class from clang's rewrite engine. So only optionally
enabling where clang is also enable. There doesn't seem to be anything
clang specific there (the dep does pull in more dependencies than ideal,
but leaving both refactorings).

Additionally started it as a single file to prototype more easily,
planning to refactor later to include and libs for out of file usage.
2024-10-12 15:10:34 -07:00

1.0 KiB

mlir-rewrite

Tool to simplify rewriting .mlir files. There are a couple of build in rewrites discussed below along with usage.

Note: This is still in very early stage. Its so early its less a tool than a growing collection of useful functions: to use its best to do what's needed on a brance by just hacking it (dialects registered, rewrites etc) to say help ease a rename, upstream useful utility functions, point to ease others migrating, and then bin eventually. Once there are actually useful parts it should be refactored same as mlir-opt.

[TOC]

simple-rename

Rename per op given a substring to a target. The match and replace uses LLVM's regex sub for the match and replace while the op-name is matched via regular string comparison. E.g.,

mlir-rewrite input.mlir -o output.mlir --simple-rename \
   --simple-rename-op-name="test.concat" --simple-rename-match="axis" \
                                         --simple-rename-replace="bxis"

to replace axis substring in the text of the range corresponding to test.concat ops with bxis.