Integrate LLVM to llvm/llvm-project@d37fa5a838db (#24825)
Bumps the llvm-project submodule from llvm/llvm-project@6ea395e4fe4d to
llvm/llvm-project@d37fa5a838db. Clean fast-forward, no carry-over
reverts.
Adaptations needed:
- llvm/llvm-project@5835482e92cc moved the bufferization dialect's
`BufferizableOpInterface` implementations out of the op definitions into
external models that require explicit registration. Since IREE maintains
its own dialect registry, update its codegen bufferization registration
accordingly.
- llvm/llvm-project@bcbe2e2dbc6c added function-signature validation to
the TOSA validation pass, enabled by default. IREE supports dynamic
dimensions in function signatures, but the new checks reject them.
Disable this validation in IREE's TOSA input pipeline, matching
upstream's own `tosa-to-linalg` pipeline.
- Regenerated CAPI export files for the MLIR memory-effects C API
changes in llvm/llvm-project@d04e49d9abec.
Assisted-by: Claude Code
Signed-off-by: Pooja Hemashekar <hemashekar@roofline.ai>
diff --git a/compiler/plugins/input/TOSA/InputConversion/Passes.cpp b/compiler/plugins/input/TOSA/InputConversion/Passes.cpp
index ef0e07c..b9ecfa8 100644
--- a/compiler/plugins/input/TOSA/InputConversion/Passes.cpp
+++ b/compiler/plugins/input/TOSA/InputConversion/Passes.cpp
@@ -61,6 +61,10 @@
// data type validation.
tosaTargetOptions.level = tosa::Level::none;
tosa::TosaValidationOptions tosaValidationOptions;
+ // IREE supports dynamic dimensions in function signatures, which TOSA
+ // signature validation rejects for spec version <= 1.0. Disable this,
+ // matching upstream tosa-to-linalg pipeline.
+ tosaValidationOptions.validateFunctionSignature = false;
tosa::addTosaToLinalgPasses(passManager, TosaToLinalgOptions(),
tosaToLinalgNamedOptions, tosaValidationOptions,
tosaTargetOptions);
diff --git a/compiler/src/iree/compiler/API/api_exports.c b/compiler/src/iree/compiler/API/api_exports.c
index 77b5835..c92d46e 100644
--- a/compiler/src/iree/compiler/API/api_exports.c
+++ b/compiler/src/iree/compiler/API/api_exports.c
@@ -791,16 +791,25 @@
extern void mlirMemRefTypeGetName();
extern void mlirMemRefTypeGetStridesAndOffset();
extern void mlirMemRefTypeGetTypeID();
+extern void mlirMemoryEffectGetEffectID();
+extern void mlirMemoryEffectInstanceClone();
extern void mlirMemoryEffectInstanceCreate();
extern void mlirMemoryEffectInstanceCreateForBlockArgument();
extern void mlirMemoryEffectInstanceCreateForOpOperand();
extern void mlirMemoryEffectInstanceCreateForOpResult();
extern void mlirMemoryEffectInstanceCreateForSymbol();
extern void mlirMemoryEffectInstanceDestroy();
-extern void mlirMemoryEffectInstancesListAppend();
+extern void mlirMemoryEffectInstanceGetEffect();
+extern void mlirMemoryEffectInstanceGetEffectOnFullRegion();
+extern void mlirMemoryEffectInstanceGetParameters();
+extern void mlirMemoryEffectInstanceGetResource();
+extern void mlirMemoryEffectInstanceGetStage();
+extern void mlirMemoryEffectInstanceGetSymbolRef();
+extern void mlirMemoryEffectInstanceGetValue();
extern void mlirMemoryEffectsAllocateGet();
extern void mlirMemoryEffectsFreeGet();
extern void mlirMemoryEffectsOpInterfaceAttachFallbackModel();
+extern void mlirMemoryEffectsOpInterfaceGetEffects();
extern void mlirMemoryEffectsOpInterfaceTypeID();
extern void mlirMemoryEffectsReadGet();
extern void mlirMemoryEffectsWriteGet();
@@ -2020,16 +2029,25 @@
x += (uintptr_t)&mlirMemRefTypeGetName;
x += (uintptr_t)&mlirMemRefTypeGetStridesAndOffset;
x += (uintptr_t)&mlirMemRefTypeGetTypeID;
+ x += (uintptr_t)&mlirMemoryEffectGetEffectID;
+ x += (uintptr_t)&mlirMemoryEffectInstanceClone;
x += (uintptr_t)&mlirMemoryEffectInstanceCreate;
x += (uintptr_t)&mlirMemoryEffectInstanceCreateForBlockArgument;
x += (uintptr_t)&mlirMemoryEffectInstanceCreateForOpOperand;
x += (uintptr_t)&mlirMemoryEffectInstanceCreateForOpResult;
x += (uintptr_t)&mlirMemoryEffectInstanceCreateForSymbol;
x += (uintptr_t)&mlirMemoryEffectInstanceDestroy;
- x += (uintptr_t)&mlirMemoryEffectInstancesListAppend;
+ x += (uintptr_t)&mlirMemoryEffectInstanceGetEffect;
+ x += (uintptr_t)&mlirMemoryEffectInstanceGetEffectOnFullRegion;
+ x += (uintptr_t)&mlirMemoryEffectInstanceGetParameters;
+ x += (uintptr_t)&mlirMemoryEffectInstanceGetResource;
+ x += (uintptr_t)&mlirMemoryEffectInstanceGetStage;
+ x += (uintptr_t)&mlirMemoryEffectInstanceGetSymbolRef;
+ x += (uintptr_t)&mlirMemoryEffectInstanceGetValue;
x += (uintptr_t)&mlirMemoryEffectsAllocateGet;
x += (uintptr_t)&mlirMemoryEffectsFreeGet;
x += (uintptr_t)&mlirMemoryEffectsOpInterfaceAttachFallbackModel;
+ x += (uintptr_t)&mlirMemoryEffectsOpInterfaceGetEffects;
x += (uintptr_t)&mlirMemoryEffectsOpInterfaceTypeID;
x += (uintptr_t)&mlirMemoryEffectsReadGet;
x += (uintptr_t)&mlirMemoryEffectsWriteGet;
diff --git a/compiler/src/iree/compiler/API/api_exports.def b/compiler/src/iree/compiler/API/api_exports.def
index 3d07803..417cfcc 100644
--- a/compiler/src/iree/compiler/API/api_exports.def
+++ b/compiler/src/iree/compiler/API/api_exports.def
@@ -781,16 +781,25 @@
mlirMemRefTypeGetName
mlirMemRefTypeGetStridesAndOffset
mlirMemRefTypeGetTypeID
+ mlirMemoryEffectGetEffectID
+ mlirMemoryEffectInstanceClone
mlirMemoryEffectInstanceCreate
mlirMemoryEffectInstanceCreateForBlockArgument
mlirMemoryEffectInstanceCreateForOpOperand
mlirMemoryEffectInstanceCreateForOpResult
mlirMemoryEffectInstanceCreateForSymbol
mlirMemoryEffectInstanceDestroy
- mlirMemoryEffectInstancesListAppend
+ mlirMemoryEffectInstanceGetEffect
+ mlirMemoryEffectInstanceGetEffectOnFullRegion
+ mlirMemoryEffectInstanceGetParameters
+ mlirMemoryEffectInstanceGetResource
+ mlirMemoryEffectInstanceGetStage
+ mlirMemoryEffectInstanceGetSymbolRef
+ mlirMemoryEffectInstanceGetValue
mlirMemoryEffectsAllocateGet
mlirMemoryEffectsFreeGet
mlirMemoryEffectsOpInterfaceAttachFallbackModel
+ mlirMemoryEffectsOpInterfaceGetEffects
mlirMemoryEffectsOpInterfaceTypeID
mlirMemoryEffectsReadGet
mlirMemoryEffectsWriteGet
diff --git a/compiler/src/iree/compiler/API/api_exports.ld b/compiler/src/iree/compiler/API/api_exports.ld
index 4973993..86643c8 100644
--- a/compiler/src/iree/compiler/API/api_exports.ld
+++ b/compiler/src/iree/compiler/API/api_exports.ld
@@ -782,16 +782,25 @@
mlirMemRefTypeGetName;
mlirMemRefTypeGetStridesAndOffset;
mlirMemRefTypeGetTypeID;
+ mlirMemoryEffectGetEffectID;
+ mlirMemoryEffectInstanceClone;
mlirMemoryEffectInstanceCreate;
mlirMemoryEffectInstanceCreateForBlockArgument;
mlirMemoryEffectInstanceCreateForOpOperand;
mlirMemoryEffectInstanceCreateForOpResult;
mlirMemoryEffectInstanceCreateForSymbol;
mlirMemoryEffectInstanceDestroy;
- mlirMemoryEffectInstancesListAppend;
+ mlirMemoryEffectInstanceGetEffect;
+ mlirMemoryEffectInstanceGetEffectOnFullRegion;
+ mlirMemoryEffectInstanceGetParameters;
+ mlirMemoryEffectInstanceGetResource;
+ mlirMemoryEffectInstanceGetStage;
+ mlirMemoryEffectInstanceGetSymbolRef;
+ mlirMemoryEffectInstanceGetValue;
mlirMemoryEffectsAllocateGet;
mlirMemoryEffectsFreeGet;
mlirMemoryEffectsOpInterfaceAttachFallbackModel;
+ mlirMemoryEffectsOpInterfaceGetEffects;
mlirMemoryEffectsOpInterfaceTypeID;
mlirMemoryEffectsReadGet;
mlirMemoryEffectsWriteGet;
diff --git a/compiler/src/iree/compiler/API/api_exports.macos.lst b/compiler/src/iree/compiler/API/api_exports.macos.lst
index c7969ca..fc3d9f7 100644
--- a/compiler/src/iree/compiler/API/api_exports.macos.lst
+++ b/compiler/src/iree/compiler/API/api_exports.macos.lst
@@ -780,16 +780,25 @@
_mlirMemRefTypeGetName
_mlirMemRefTypeGetStridesAndOffset
_mlirMemRefTypeGetTypeID
+_mlirMemoryEffectGetEffectID
+_mlirMemoryEffectInstanceClone
_mlirMemoryEffectInstanceCreate
_mlirMemoryEffectInstanceCreateForBlockArgument
_mlirMemoryEffectInstanceCreateForOpOperand
_mlirMemoryEffectInstanceCreateForOpResult
_mlirMemoryEffectInstanceCreateForSymbol
_mlirMemoryEffectInstanceDestroy
-_mlirMemoryEffectInstancesListAppend
+_mlirMemoryEffectInstanceGetEffect
+_mlirMemoryEffectInstanceGetEffectOnFullRegion
+_mlirMemoryEffectInstanceGetParameters
+_mlirMemoryEffectInstanceGetResource
+_mlirMemoryEffectInstanceGetStage
+_mlirMemoryEffectInstanceGetSymbolRef
+_mlirMemoryEffectInstanceGetValue
_mlirMemoryEffectsAllocateGet
_mlirMemoryEffectsFreeGet
_mlirMemoryEffectsOpInterfaceAttachFallbackModel
+_mlirMemoryEffectsOpInterfaceGetEffects
_mlirMemoryEffectsOpInterfaceTypeID
_mlirMemoryEffectsReadGet
_mlirMemoryEffectsWriteGet
diff --git a/compiler/src/iree/compiler/Codegen/Common/CommonDialectRegistration.cpp b/compiler/src/iree/compiler/Codegen/Common/CommonDialectRegistration.cpp
index 69733a6..8bb62d3 100644
--- a/compiler/src/iree/compiler/Codegen/Common/CommonDialectRegistration.cpp
+++ b/compiler/src/iree/compiler/Codegen/Common/CommonDialectRegistration.cpp
@@ -23,6 +23,7 @@
#include "mlir/Dialect/ArmSME/IR/ArmSME.h"
#include "mlir/Dialect/Bufferization/IR/Bufferization.h"
#include "mlir/Dialect/Bufferization/TransformOps/BufferizationTransformOps.h"
+#include "mlir/Dialect/Bufferization/Transforms/BufferizableOpInterfaceImpl.h"
#include "mlir/Dialect/Bufferization/Transforms/FuncBufferizableOpInterfaceImpl.h"
#include "mlir/Dialect/Func/IR/FuncOps.h"
#include "mlir/Dialect/GPU/IR/GPUDialect.h"
@@ -89,6 +90,7 @@
arith::registerBufferizableOpInterfaceExternalModels(registry);
linalg::registerBufferizableOpInterfaceExternalModels(registry);
scf::registerBufferizableOpInterfaceExternalModels(registry);
+ bufferization::registerBufferizableOpInterfaceExternalModels(registry);
bufferization::func_ext::registerBufferizableOpInterfaceExternalModels(
registry);
tensor::registerBufferizableOpInterfaceExternalModels(registry);
diff --git a/compiler/src/iree/compiler/Codegen/Interfaces/BufferizationInterfaces.cpp b/compiler/src/iree/compiler/Codegen/Interfaces/BufferizationInterfaces.cpp
index fe0b8b6..23c0b5c 100644
--- a/compiler/src/iree/compiler/Codegen/Interfaces/BufferizationInterfaces.cpp
+++ b/compiler/src/iree/compiler/Codegen/Interfaces/BufferizationInterfaces.cpp
@@ -20,6 +20,7 @@
#include "mlir/Dialect/Arith/Transforms/BufferizableOpInterfaceImpl.h"
#include "mlir/Dialect/Bufferization/IR/BufferizableOpInterface.h"
#include "mlir/Dialect/Bufferization/IR/DstBufferizableOpInterfaceImpl.h"
+#include "mlir/Dialect/Bufferization/Transforms/BufferizableOpInterfaceImpl.h"
#include "mlir/Dialect/Bufferization/Transforms/FuncBufferizableOpInterfaceImpl.h"
#include "mlir/Dialect/Bufferization/Transforms/OneShotAnalysis.h"
#include "mlir/Dialect/Bufferization/Transforms/Transforms.h"
@@ -570,6 +571,7 @@
arith::registerBufferizableOpInterfaceExternalModels(registry);
linalg::registerBufferizableOpInterfaceExternalModels(registry);
scf::registerBufferizableOpInterfaceExternalModels(registry);
+ bufferization::registerBufferizableOpInterfaceExternalModels(registry);
bufferization::func_ext::registerBufferizableOpInterfaceExternalModels(
registry);
tensor::registerBufferizableOpInterfaceExternalModels(registry);
diff --git a/third_party/llvm-project b/third_party/llvm-project
index 6ea395e..d37fa5a 160000
--- a/third_party/llvm-project
+++ b/third_party/llvm-project
@@ -1 +1 @@
-Subproject commit 6ea395e4fe4db26920d57779ddae98eac6ba945d
+Subproject commit d37fa5a838db382c4138e9612616cb0ac4ef448a