[Mlir-commits] [mlir] [mlir][memref] Support folding memref.load from global splat constants (PR #176627)
Jakub Kuderski
llvmlistbot at llvm.org
Sun Jan 18 05:13:59 PST 2026
================
@@ -1705,6 +1705,26 @@ OpFoldResult LoadOp::fold(FoldAdaptor adaptor) {
/// load(memrefcast) -> load
if (succeeded(foldMemRefCast(*this)))
return getResult();
+
+ // Fold load from a global constant memref.
+ auto getGlobalOp = getMemref().getDefiningOp<memref::GetGlobalOp>();
+ if (!getGlobalOp)
+ return {};
+
+ // Get to the memref.global defining the symbol.
+ auto global = SymbolTable::lookupNearestSymbolFrom<memref::GlobalOp>(
+ getGlobalOp, getGlobalOp.getNameAttr());
+ if (!global)
+ return {};
+ // Check if the global memref is a constant.
+ auto cstAttr =
+ dyn_cast_or_null<DenseElementsAttr>(global.getConstantInitValue());
----------------
kuhar wrote:
You can directly check for SplatElementsAttr
https://github.com/llvm/llvm-project/pull/176627
More information about the Mlir-commits
mailing list