diff options
-rw-r--r-- | mlir/include/mlir/Dialect/LLVMIR/LLVMTypes.td | 8 | ||||
-rw-r--r-- | mlir/include/mlir/Dialect/Ptr/IR/PtrDialect.td | 3 | ||||
-rw-r--r-- | mlir/include/mlir/Interfaces/DataLayoutInterfaces.td | 6 | ||||
-rw-r--r-- | mlir/test/lib/Dialect/Test/TestTypeDefs.td | 4 |
4 files changed, 14 insertions, 7 deletions
diff --git a/mlir/include/mlir/Dialect/LLVMIR/LLVMTypes.td b/mlir/include/mlir/Dialect/LLVMIR/LLVMTypes.td index 0b9e4b9..2ecbf8f 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 14d72c3..bc377dc 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 0d09b92..3e4733d 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 c048f8b..f1c3165 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); |