[llvm-branch-commits] [mlir] eb1aacd - [MLIR-LAIR] Custom printing for multi-dim affine index maps
Uday Bondhugula via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Fri Nov 5 03:30:25 PDT 2021
Author: Uday Bondhugula
Date: 2021-09-23T08:19:53+05:30
New Revision: eb1aacd495d84384e2d2e4e40c893aebfbd19837
URL: https://github.com/llvm/llvm-project/commit/eb1aacd495d84384e2d2e4e40c893aebfbd19837
DIFF: https://github.com/llvm/llvm-project/commit/eb1aacd495d84384e2d2e4e40c893aebfbd19837.diff
LOG: [MLIR-LAIR] Custom printing for multi-dim affine index maps
Custom printing for AffineMaps with named SSA values - to aid printing
NGDL accesses.
Added:
Modified:
mlir/include/mlir/IR/AffineMap.h
mlir/lib/IR/AsmPrinter.cpp
Removed:
################################################################################
diff --git a/mlir/include/mlir/IR/AffineMap.h b/mlir/include/mlir/IR/AffineMap.h
index f1f00acd8022..4ab75ad3ea64 100644
--- a/mlir/include/mlir/IR/AffineMap.h
+++ b/mlir/include/mlir/IR/AffineMap.h
@@ -534,6 +534,11 @@ inline raw_ostream &operator<<(raw_ostream &os, AffineMap map) {
map.print(os);
return os;
}
+
+/// Prints an affine map index in the form [expr_1][expr_2] with the supplied
+/// names used for the inputs.
+void printAffineMapAccess(AffineMap map, ArrayRef<std::string> names,
+ raw_ostream &os);
} // end namespace mlir
namespace llvm {
diff --git a/mlir/lib/IR/AsmPrinter.cpp b/mlir/lib/IR/AsmPrinter.cpp
index b6d072f9f60a..9c717eef111c 100644
--- a/mlir/lib/IR/AsmPrinter.cpp
+++ b/mlir/lib/IR/AsmPrinter.cpp
@@ -2241,6 +2241,18 @@ void ModulePrinter::printAffineConstraint(AffineExpr expr, bool isEq) {
isEq ? os << " == 0" : os << " >= 0";
}
+void mlir::printAffineMapAccess(AffineMap map, ArrayRef<std::string> names,
+ raw_ostream &os) {
+ assert(map.getNumInputs() == names.size() && "too few/many names");
+ ModulePrinter p(os);
+ auto printValueName = [&](unsigned pos, bool isSymbol) { os << names[pos]; };
+ for (auto expr : map.getResults()) {
+ os << '[';
+ p.printAffineExpr(expr, printValueName);
+ os << ']';
+ }
+}
+
void ModulePrinter::printAffineMap(AffineMap map) {
// Dimension identifiers.
os << '(';
More information about the llvm-branch-commits
mailing list