[Mlir-commits] [mlir] [mlir] Convert TensorType and BaseMemRefType to interfaces (PR #133053)
Matthias Springer
llvmlistbot at llvm.org
Wed Mar 26 02:21:33 PDT 2025
================
@@ -227,4 +227,64 @@ def ShapedTypeInterface : TypeInterface<"ShapedType"> {
}];
}
+//===----------------------------------------------------------------------===//
+// TensorTypeInterface
+//===----------------------------------------------------------------------===//
+
+def TensorTypeInterface : TypeInterface<"TensorType", [ShapedTypeInterface]> {
+ let cppNamespace = "::mlir";
+ let description = [{
+ This interface provides a shared interface type for ranked, unranked and any
+ user-specified tensor types.
+
+ This interface attaches the ShapedTypeInterface to act as a mixin to
+ provide many useful utility functions.
+ }];
+
+ let extraClassDeclaration = [{
+ /// Return true if the specified element type is ok in a tensor.
+ static bool isValidElementType(::mlir::Type type);
+ }];
+
+ let extraClassOf = [{
+ return $_type.hasTrait<::mlir::TensorType::Trait>();
+ }];
+}
+
+//===----------------------------------------------------------------------===//
+// BaseMemRefTypeInterface
+//===----------------------------------------------------------------------===//
+
+def BaseMemRefTypeInterface : TypeInterface<"BaseMemRefType", [ShapedTypeInterface]> {
+ let cppNamespace = "::mlir";
+ let description = [{
+ This interface provides a shared interface type for ranked, unranked and any
+ user-specified memref types.
+
+ This interface attaches the ShapedTypeInterface to act as a mixin to
+ provide many useful utility functions.
+ }];
+
+ let methods = [
+ InterfaceMethod<[{
+ Returns the memory space in which data referred to by this memref resides.
+ }],
+ "::mlir::Attribute", "getMemorySpace">,
+ InterfaceMethod<[{
+ [deprecated] Returns the memory space in old raw integer representation.
+ New `Attribute getMemorySpace()` method should be used instead.
+ }],
+ "unsigned", "getMemorySpaceAsInt">,
+ ];
+
+ let extraClassDeclaration = [{
+ /// Return true if the specified element type is ok in a memref.
+ static bool isValidElementType(::mlir::Type type);
+ }];
+
+ let extraClassOf = [{
----------------
matthias-springer wrote:
I'm not familiar with `extraClassOf`. What does it do?
https://github.com/llvm/llvm-project/pull/133053
More information about the Mlir-commits
mailing list