[Mlir-commits] [mlir] [mlir][SparseTensor][NFC] Migrate to OpAsmAttrInterface for ASM alias generation (PR #130483)
Hongren Zheng
llvmlistbot at llvm.org
Sun Mar 9 04:10:10 PDT 2025
https://github.com/ZenithalHourlyRate created https://github.com/llvm/llvm-project/pull/130483
After the introduction of `OpAsmAttrInterface`, it is favorable to migrate code using `OpAsmDialectInterface` for ASM alias generation, which lives in `Dialect.cpp`, to use `OpAsmAttrInterface`, which lives in `Attrs.td`. In this way, attribute behavior is placed near its tablegen definition and people won't need to go through other files to know what other (unexpected) hooks comes into play.
See #124721 for the interface itself and #128191, #130479 and #130481 for prior migrations.
>From 9ef857029cc4a3a2f1980a8b4095084c04f2c142 Mon Sep 17 00:00:00 2001
From: Zenithal <i at zenithal.me>
Date: Sun, 9 Mar 2025 11:07:59 +0000
Subject: [PATCH] [mlir][SparseTensor][NFC] Migrate to OpAsmAttrInterface for
ASM alias generation
---
.../SparseTensor/IR/SparseTensorAttrDefs.td | 12 +++++++++++-
.../SparseTensor/IR/SparseTensorDialect.cpp | 15 ---------------
2 files changed, 11 insertions(+), 16 deletions(-)
diff --git a/mlir/include/mlir/Dialect/SparseTensor/IR/SparseTensorAttrDefs.td b/mlir/include/mlir/Dialect/SparseTensor/IR/SparseTensorAttrDefs.td
index adcf6fac752fe..46fdff08466c1 100644
--- a/mlir/include/mlir/Dialect/SparseTensor/IR/SparseTensorAttrDefs.td
+++ b/mlir/include/mlir/Dialect/SparseTensor/IR/SparseTensorAttrDefs.td
@@ -11,6 +11,7 @@
include "mlir/IR/AttrTypeBase.td"
include "mlir/IR/EnumAttr.td"
+include "mlir/IR/OpAsmInterface.td"
include "mlir/Dialect/SparseTensor/IR/SparseTensorBase.td"
include "mlir/IR/TensorEncoding.td"
@@ -112,7 +113,7 @@ def SparseTensorDimSliceAttr : SparseTensor_Attr<"SparseTensorDimSlice", []> {
// Sparse tensor encoding attribute.
def SparseTensorEncodingAttr : SparseTensor_Attr<"SparseTensorEncoding",
- [ DeclareAttrInterfaceMethods<VerifiableTensorEncoding> ] > {
+ [ DeclareAttrInterfaceMethods<VerifiableTensorEncoding>, OpAsmAttrInterface ] > {
let mnemonic = "encoding";
let description = [{
@@ -543,6 +544,15 @@ def SparseTensorEncodingAttr : SparseTensor_Attr<"SparseTensorEncoding",
void printSymbols(AffineMap &map, AsmPrinter &printer) const;
void printDimensions(AffineMap &map, AsmPrinter &printer, ArrayRef<::mlir::sparse_tensor::SparseTensorDimSliceAttr> dimSlices) const;
void printLevels(AffineMap &map, AsmPrinter &printer, ArrayRef<::mlir::sparse_tensor::LevelType> lvlTypes) const;
+
+ //
+ // OpAsmAttrInterface methods.
+ //
+
+ ::mlir::OpAsmAliasResult getAlias(::llvm::raw_ostream &os) const {
+ os << "sparse";
+ return ::mlir::OpAsmAliasResult::OverridableAlias;
+ }
}];
let genVerifyDecl = 1;
diff --git a/mlir/lib/Dialect/SparseTensor/IR/SparseTensorDialect.cpp b/mlir/lib/Dialect/SparseTensor/IR/SparseTensorDialect.cpp
index 9854cfcc279b5..fcbef0c14739f 100644
--- a/mlir/lib/Dialect/SparseTensor/IR/SparseTensorDialect.cpp
+++ b/mlir/lib/Dialect/SparseTensor/IR/SparseTensorDialect.cpp
@@ -2778,22 +2778,7 @@ Operation *SparseTensorDialect::materializeConstant(OpBuilder &builder,
return nullptr;
}
-namespace {
-struct SparseTensorAsmDialectInterface : public OpAsmDialectInterface {
- using OpAsmDialectInterface::OpAsmDialectInterface;
-
- AliasResult getAlias(Attribute attr, raw_ostream &os) const override {
- if (isa<SparseTensorEncodingAttr>(attr)) {
- os << "sparse";
- return AliasResult::OverridableAlias;
- }
- return AliasResult::NoAlias;
- }
-};
-} // namespace
-
void SparseTensorDialect::initialize() {
- addInterface<SparseTensorAsmDialectInterface>();
addAttributes<
#define GET_ATTRDEF_LIST
#include "mlir/Dialect/SparseTensor/IR/SparseTensorAttrDefs.cpp.inc"
More information about the Mlir-commits
mailing list