[Mlir-commits] [mlir] 4357a66 - [mlir][DLTI] Make `getPreferredAlignment` default to `getABIAlignment` (#128754)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Tue Feb 25 11:32:40 PST 2025
Author: Jeff Niu
Date: 2025-02-25T11:32:36-08:00
New Revision: 4357a6603f2c21f343d500778f71494e865262ac
URL: https://github.com/llvm/llvm-project/commit/4357a6603f2c21f343d500778f71494e865262ac
DIFF: https://github.com/llvm/llvm-project/commit/4357a6603f2c21f343d500778f71494e865262ac.diff
LOG: [mlir][DLTI] Make `getPreferredAlignment` default to `getABIAlignment` (#128754)
Many types don't have a preferred alignment, but often specifying an ABI
alignment is required to implement APIs on top of data layouts. Default
the preferred alignment to `getABIAlignment` to simplify things.
Added:
Modified:
mlir/include/mlir/Dialect/LLVMIR/LLVMTypes.td
mlir/include/mlir/Dialect/Ptr/IR/PtrDialect.td
mlir/include/mlir/Interfaces/DataLayoutInterfaces.td
mlir/test/lib/Dialect/Test/TestTypeDefs.td
Removed:
################################################################################
diff --git a/mlir/include/mlir/Dialect/LLVMIR/LLVMTypes.td b/mlir/include/mlir/Dialect/LLVMIR/LLVMTypes.td
index 0b9e4b9c55738..2ecbf8f50c50c 100644
--- a/mlir/include/mlir/Dialect/LLVMIR/LLVMTypes.td
+++ b/mlir/include/mlir/Dialect/LLVMIR/LLVMTypes.td
@@ -25,7 +25,8 @@ class LLVMType<string typeName, string typeMnemonic, list<Trait> traits = []>
//===----------------------------------------------------------------------===//
def LLVMArrayType : LLVMType<"LLVMArray", "array", [
- DeclareTypeInterfaceMethods<DataLayoutTypeInterface, ["getTypeSize"]>,
+ DeclareTypeInterfaceMethods<DataLayoutTypeInterface,
+ ["getTypeSize", "getPreferredAlignment"]>,
DeclareTypeInterfaceMethods<DestructurableTypeInterface>]> {
let summary = "LLVM array type";
let description = [{
@@ -124,7 +125,7 @@ def LLVMFunctionType : LLVMType<"LLVMFunction", "func"> {
def LLVMStructType : LLVMType<"LLVMStruct", "struct", [
MutableType,
DeclareTypeInterfaceMethods<DataLayoutTypeInterface,
- ["areCompatible", "verifyEntries"]>,
+ ["areCompatible", "verifyEntries", "getPreferredAlignment"]>,
DeclareTypeInterfaceMethods<DestructurableTypeInterface,
["getSubelementIndexMap", "getTypeAtIndex"]>
]> {
@@ -257,7 +258,8 @@ def LLVMStructType : LLVMType<"LLVMStruct", "struct", [
def LLVMPointerType : LLVMType<"LLVMPointer", "ptr", [
DeclareTypeInterfaceMethods<DataLayoutTypeInterface, [
- "getIndexBitwidth", "areCompatible", "verifyEntries"]>]> {
+ "getIndexBitwidth", "areCompatible", "verifyEntries",
+ "getPreferredAlignment"]>]> {
let summary = "LLVM pointer type";
let description = [{
The `!llvm.ptr` type is an LLVM pointer type. This type typically represents
diff --git a/mlir/include/mlir/Dialect/Ptr/IR/PtrDialect.td b/mlir/include/mlir/Dialect/Ptr/IR/PtrDialect.td
index 14d72c3001d91..bc377dcc72e48 100644
--- a/mlir/include/mlir/Dialect/Ptr/IR/PtrDialect.td
+++ b/mlir/include/mlir/Dialect/Ptr/IR/PtrDialect.td
@@ -38,7 +38,8 @@ class Ptr_Type<string name, string typeMnemonic, list<Trait> traits = []>
def Ptr_PtrType : Ptr_Type<"Ptr", "ptr", [
MemRefElementTypeInterface,
DeclareTypeInterfaceMethods<DataLayoutTypeInterface, [
- "areCompatible", "getIndexBitwidth", "verifyEntries"]>
+ "areCompatible", "getIndexBitwidth", "verifyEntries",
+ "getPreferredAlignment"]>
]> {
let summary = "pointer type";
let description = [{
diff --git a/mlir/include/mlir/Interfaces/DataLayoutInterfaces.td b/mlir/include/mlir/Interfaces/DataLayoutInterfaces.td
index 0d09b92928fe3..3e4733d252015 100644
--- a/mlir/include/mlir/Interfaces/DataLayoutInterfaces.td
+++ b/mlir/include/mlir/Interfaces/DataLayoutInterfaces.td
@@ -598,7 +598,11 @@ def DataLayoutTypeInterface : TypeInterface<"DataLayoutTypeInterface"> {
/*retTy=*/"uint64_t",
/*methodName=*/"getPreferredAlignment",
/*args=*/(ins "const ::mlir::DataLayout &":$dataLayout,
- "::mlir::DataLayoutEntryListRef":$params)
+ "::mlir::DataLayoutEntryListRef":$params),
+ /*methodBody=*/"",
+ /*defaultImplementation=*/[{
+ return $_type.getABIAlignment(dataLayout, params);
+ }]
>,
InterfaceMethod<
/*description=*/"Returns the bitwidth that should be used when "
diff --git a/mlir/test/lib/Dialect/Test/TestTypeDefs.td b/mlir/test/lib/Dialect/Test/TestTypeDefs.td
index c048f8b654ec2..f1c31658c13ac 100644
--- a/mlir/test/lib/Dialect/Test/TestTypeDefs.td
+++ b/mlir/test/lib/Dialect/Test/TestTypeDefs.td
@@ -148,8 +148,8 @@ def TestType : Test_Type<"Test", [
}
def TestTypeWithLayoutType : Test_Type<"TestTypeWithLayout", [
- DeclareTypeInterfaceMethods<DataLayoutTypeInterface, ["getIndexBitwidth",
- "areCompatible"]>
+ DeclareTypeInterfaceMethods<DataLayoutTypeInterface,
+ ["getIndexBitwidth", "areCompatible", "getPreferredAlignment"]>
]> {
let mnemonic = "test_type_with_layout";
let parameters = (ins "unsigned":$key);
More information about the Mlir-commits
mailing list