Integrate LLVM to llvm/llvm-project@9c51ed38f1e2 (#24662)
Adapted compiler/src/iree/compiler/Codegen/Common/FoldTensorExtractOp.td
to specify invariant argument to memref.load, required due to:
f9f52bbcbc55 [mlir][memref] Add invariant attribute to memref.load
(#206197)
Re-generating the CAPI export files was required due to:
9889e626983f [mlir-c] Add IRMapping C API bindings (#206146)
Setting the module's targget triple in ROCM target due to:
00a6186128d3 AMDGPU: Prefer getting the triple from the module over the
TargetMachine (#206055)
Finding the LLVM commits and adapting the IREE code has been assistend
by Claude Code. The changes have been reviewed manually.
Signed-off-by: Stefan Schuermans <schuermans@roofline.ai>diff --git a/compiler/plugins/target/ROCM/ROCMTarget.cpp b/compiler/plugins/target/ROCM/ROCMTarget.cpp
index 55b077f..32e74b8 100644
--- a/compiler/plugins/target/ROCM/ROCMTarget.cpp
+++ b/compiler/plugins/target/ROCM/ROCMTarget.cpp
@@ -856,6 +856,11 @@
// on the MLIR module and propagated through MLIR->LLVM IR translation.
if (!useSPIRV) {
llvmModule->setDataLayout(targetMachine->createDataLayout());
+ // The AMDGPU AsmPrinter now reads the target triple from the module
+ // (not the TargetMachine) to decide whether to set up HSA metadata
+ // streaming; without this the module triple is empty and the printer
+ // null-derefs HSAMetadataStream. See llvm-project@00a6186128d3.
+ llvmModule->setTargetTriple(targetMachine->getTargetTriple());
// Let the backend know what code object version we're compiling for.
// This insulates us from changes to the default code object version
diff --git a/compiler/src/iree/compiler/API/api_exports.c b/compiler/src/iree/compiler/API/api_exports.c
index f672810..b56f439 100644
--- a/compiler/src/iree/compiler/API/api_exports.c
+++ b/compiler/src/iree/compiler/API/api_exports.c
@@ -548,6 +548,24 @@
extern void mlirGreedyRewriteDriverConfigSetRegionSimplificationLevel();
extern void mlirGreedyRewriteDriverConfigSetStrictness();
extern void mlirGreedyRewriteDriverConfigSetUseTopDownTraversal();
+extern void mlirIRMappingClear();
+extern void mlirIRMappingContainsBlock();
+extern void mlirIRMappingContainsOperation();
+extern void mlirIRMappingContainsValue();
+extern void mlirIRMappingCreate();
+extern void mlirIRMappingDestroy();
+extern void mlirIRMappingEraseBlock();
+extern void mlirIRMappingEraseOperation();
+extern void mlirIRMappingEraseValue();
+extern void mlirIRMappingLookupOrDefaultBlock();
+extern void mlirIRMappingLookupOrDefaultOperation();
+extern void mlirIRMappingLookupOrDefaultValue();
+extern void mlirIRMappingLookupOrNullBlock();
+extern void mlirIRMappingLookupOrNullOperation();
+extern void mlirIRMappingLookupOrNullValue();
+extern void mlirIRMappingMapBlock();
+extern void mlirIRMappingMapOperation();
+extern void mlirIRMappingMapValue();
extern void mlirIRRewriterCreate();
extern void mlirIRRewriterCreateFromOp();
extern void mlirIRRewriterDestroy();
@@ -813,6 +831,7 @@
extern void mlirOpaqueTypeGetName();
extern void mlirOpaqueTypeGetTypeID();
extern void mlirOperationClone();
+extern void mlirOperationCloneWithMapping();
extern void mlirOperationCreate();
extern void mlirOperationCreateParse();
extern void mlirOperationDestroy();
@@ -945,6 +964,7 @@
extern void mlirRewriterBaseClearInsertionPoint();
extern void mlirRewriterBaseClone();
extern void mlirRewriterBaseCloneRegionBefore();
+extern void mlirRewriterBaseCloneWithMapping();
extern void mlirRewriterBaseCloneWithoutRegions();
extern void mlirRewriterBaseCreateBlockBefore();
extern void mlirRewriterBaseEraseBlock();
@@ -1724,6 +1744,24 @@
x += (uintptr_t)&mlirGreedyRewriteDriverConfigSetRegionSimplificationLevel;
x += (uintptr_t)&mlirGreedyRewriteDriverConfigSetStrictness;
x += (uintptr_t)&mlirGreedyRewriteDriverConfigSetUseTopDownTraversal;
+ x += (uintptr_t)&mlirIRMappingClear;
+ x += (uintptr_t)&mlirIRMappingContainsBlock;
+ x += (uintptr_t)&mlirIRMappingContainsOperation;
+ x += (uintptr_t)&mlirIRMappingContainsValue;
+ x += (uintptr_t)&mlirIRMappingCreate;
+ x += (uintptr_t)&mlirIRMappingDestroy;
+ x += (uintptr_t)&mlirIRMappingEraseBlock;
+ x += (uintptr_t)&mlirIRMappingEraseOperation;
+ x += (uintptr_t)&mlirIRMappingEraseValue;
+ x += (uintptr_t)&mlirIRMappingLookupOrDefaultBlock;
+ x += (uintptr_t)&mlirIRMappingLookupOrDefaultOperation;
+ x += (uintptr_t)&mlirIRMappingLookupOrDefaultValue;
+ x += (uintptr_t)&mlirIRMappingLookupOrNullBlock;
+ x += (uintptr_t)&mlirIRMappingLookupOrNullOperation;
+ x += (uintptr_t)&mlirIRMappingLookupOrNullValue;
+ x += (uintptr_t)&mlirIRMappingMapBlock;
+ x += (uintptr_t)&mlirIRMappingMapOperation;
+ x += (uintptr_t)&mlirIRMappingMapValue;
x += (uintptr_t)&mlirIRRewriterCreate;
x += (uintptr_t)&mlirIRRewriterCreateFromOp;
x += (uintptr_t)&mlirIRRewriterDestroy;
@@ -1989,6 +2027,7 @@
x += (uintptr_t)&mlirOpaqueTypeGetName;
x += (uintptr_t)&mlirOpaqueTypeGetTypeID;
x += (uintptr_t)&mlirOperationClone;
+ x += (uintptr_t)&mlirOperationCloneWithMapping;
x += (uintptr_t)&mlirOperationCreate;
x += (uintptr_t)&mlirOperationCreateParse;
x += (uintptr_t)&mlirOperationDestroy;
@@ -2121,6 +2160,7 @@
x += (uintptr_t)&mlirRewriterBaseClearInsertionPoint;
x += (uintptr_t)&mlirRewriterBaseClone;
x += (uintptr_t)&mlirRewriterBaseCloneRegionBefore;
+ x += (uintptr_t)&mlirRewriterBaseCloneWithMapping;
x += (uintptr_t)&mlirRewriterBaseCloneWithoutRegions;
x += (uintptr_t)&mlirRewriterBaseCreateBlockBefore;
x += (uintptr_t)&mlirRewriterBaseEraseBlock;
diff --git a/compiler/src/iree/compiler/API/api_exports.def b/compiler/src/iree/compiler/API/api_exports.def
index d859549..ce8965f 100644
--- a/compiler/src/iree/compiler/API/api_exports.def
+++ b/compiler/src/iree/compiler/API/api_exports.def
@@ -538,6 +538,24 @@
mlirGreedyRewriteDriverConfigSetRegionSimplificationLevel
mlirGreedyRewriteDriverConfigSetStrictness
mlirGreedyRewriteDriverConfigSetUseTopDownTraversal
+ mlirIRMappingClear
+ mlirIRMappingContainsBlock
+ mlirIRMappingContainsOperation
+ mlirIRMappingContainsValue
+ mlirIRMappingCreate
+ mlirIRMappingDestroy
+ mlirIRMappingEraseBlock
+ mlirIRMappingEraseOperation
+ mlirIRMappingEraseValue
+ mlirIRMappingLookupOrDefaultBlock
+ mlirIRMappingLookupOrDefaultOperation
+ mlirIRMappingLookupOrDefaultValue
+ mlirIRMappingLookupOrNullBlock
+ mlirIRMappingLookupOrNullOperation
+ mlirIRMappingLookupOrNullValue
+ mlirIRMappingMapBlock
+ mlirIRMappingMapOperation
+ mlirIRMappingMapValue
mlirIRRewriterCreate
mlirIRRewriterCreateFromOp
mlirIRRewriterDestroy
@@ -803,6 +821,7 @@
mlirOpaqueTypeGetName
mlirOpaqueTypeGetTypeID
mlirOperationClone
+ mlirOperationCloneWithMapping
mlirOperationCreate
mlirOperationCreateParse
mlirOperationDestroy
@@ -935,6 +954,7 @@
mlirRewriterBaseClearInsertionPoint
mlirRewriterBaseClone
mlirRewriterBaseCloneRegionBefore
+ mlirRewriterBaseCloneWithMapping
mlirRewriterBaseCloneWithoutRegions
mlirRewriterBaseCreateBlockBefore
mlirRewriterBaseEraseBlock
diff --git a/compiler/src/iree/compiler/API/api_exports.ld b/compiler/src/iree/compiler/API/api_exports.ld
index 564618e..3ee4fc9 100644
--- a/compiler/src/iree/compiler/API/api_exports.ld
+++ b/compiler/src/iree/compiler/API/api_exports.ld
@@ -539,6 +539,24 @@
mlirGreedyRewriteDriverConfigSetRegionSimplificationLevel;
mlirGreedyRewriteDriverConfigSetStrictness;
mlirGreedyRewriteDriverConfigSetUseTopDownTraversal;
+ mlirIRMappingClear;
+ mlirIRMappingContainsBlock;
+ mlirIRMappingContainsOperation;
+ mlirIRMappingContainsValue;
+ mlirIRMappingCreate;
+ mlirIRMappingDestroy;
+ mlirIRMappingEraseBlock;
+ mlirIRMappingEraseOperation;
+ mlirIRMappingEraseValue;
+ mlirIRMappingLookupOrDefaultBlock;
+ mlirIRMappingLookupOrDefaultOperation;
+ mlirIRMappingLookupOrDefaultValue;
+ mlirIRMappingLookupOrNullBlock;
+ mlirIRMappingLookupOrNullOperation;
+ mlirIRMappingLookupOrNullValue;
+ mlirIRMappingMapBlock;
+ mlirIRMappingMapOperation;
+ mlirIRMappingMapValue;
mlirIRRewriterCreate;
mlirIRRewriterCreateFromOp;
mlirIRRewriterDestroy;
@@ -804,6 +822,7 @@
mlirOpaqueTypeGetName;
mlirOpaqueTypeGetTypeID;
mlirOperationClone;
+ mlirOperationCloneWithMapping;
mlirOperationCreate;
mlirOperationCreateParse;
mlirOperationDestroy;
@@ -936,6 +955,7 @@
mlirRewriterBaseClearInsertionPoint;
mlirRewriterBaseClone;
mlirRewriterBaseCloneRegionBefore;
+ mlirRewriterBaseCloneWithMapping;
mlirRewriterBaseCloneWithoutRegions;
mlirRewriterBaseCreateBlockBefore;
mlirRewriterBaseEraseBlock;
diff --git a/compiler/src/iree/compiler/API/api_exports.macos.lst b/compiler/src/iree/compiler/API/api_exports.macos.lst
index b03167c..d0ac36c 100644
--- a/compiler/src/iree/compiler/API/api_exports.macos.lst
+++ b/compiler/src/iree/compiler/API/api_exports.macos.lst
@@ -537,6 +537,24 @@
_mlirGreedyRewriteDriverConfigSetRegionSimplificationLevel
_mlirGreedyRewriteDriverConfigSetStrictness
_mlirGreedyRewriteDriverConfigSetUseTopDownTraversal
+_mlirIRMappingClear
+_mlirIRMappingContainsBlock
+_mlirIRMappingContainsOperation
+_mlirIRMappingContainsValue
+_mlirIRMappingCreate
+_mlirIRMappingDestroy
+_mlirIRMappingEraseBlock
+_mlirIRMappingEraseOperation
+_mlirIRMappingEraseValue
+_mlirIRMappingLookupOrDefaultBlock
+_mlirIRMappingLookupOrDefaultOperation
+_mlirIRMappingLookupOrDefaultValue
+_mlirIRMappingLookupOrNullBlock
+_mlirIRMappingLookupOrNullOperation
+_mlirIRMappingLookupOrNullValue
+_mlirIRMappingMapBlock
+_mlirIRMappingMapOperation
+_mlirIRMappingMapValue
_mlirIRRewriterCreate
_mlirIRRewriterCreateFromOp
_mlirIRRewriterDestroy
@@ -802,6 +820,7 @@
_mlirOpaqueTypeGetName
_mlirOpaqueTypeGetTypeID
_mlirOperationClone
+_mlirOperationCloneWithMapping
_mlirOperationCreate
_mlirOperationCreateParse
_mlirOperationDestroy
@@ -934,6 +953,7 @@
_mlirRewriterBaseClearInsertionPoint
_mlirRewriterBaseClone
_mlirRewriterBaseCloneRegionBefore
+_mlirRewriterBaseCloneWithMapping
_mlirRewriterBaseCloneWithoutRegions
_mlirRewriterBaseCreateBlockBefore
_mlirRewriterBaseEraseBlock
diff --git a/compiler/src/iree/compiler/Codegen/Common/FoldTensorExtractOp.td b/compiler/src/iree/compiler/Codegen/Common/FoldTensorExtractOp.td
index f7d2c88..4bf472c 100644
--- a/compiler/src/iree/compiler/Codegen/Common/FoldTensorExtractOp.td
+++ b/compiler/src/iree/compiler/Codegen/Common/FoldTensorExtractOp.td
@@ -17,6 +17,6 @@
def : Pat<(Tensor_ExtractOp(Bufferization_ToTensorOp $value, $restrict,
$writable),
$indices),
- (LoadOp $value, $indices, ConstBoolAttrFalse, (NativeCodeCall<"::mlir::Attribute()">))>;
+ (LoadOp $value, $indices, ConstBoolAttrFalse, (NativeCodeCall<"::mlir::Attribute()">), ConstBoolAttrFalse)>;
#endif // IREE_COMPILER_CODEGEN_COMMON_FOLDTENSOREXTRACTOP
diff --git a/third_party/llvm-project b/third_party/llvm-project
index 22da7f9..9c51ed3 160000
--- a/third_party/llvm-project
+++ b/third_party/llvm-project
@@ -1 +1 @@
-Subproject commit 22da7f92913937b0318e3d504b2d8e90faaf2597
+Subproject commit 9c51ed38f1e25a5a9c3c766ed1b2b8198021b5dd