[Mlir-commits] [mlir] [AMDGPU] Do load unconditionally when converting from masked load (PR #162372)

Nirvedh Meshram llvmlistbot at llvm.org
Tue Oct 7 14:04:58 PDT 2025


https://github.com/nirvedhmeshram created https://github.com/llvm/llvm-project/pull/162372

None

>From 2aaa15eb5cd33c99c85873cac9027cc244e88240 Mon Sep 17 00:00:00 2001
From: Nirvedh Meshram <nirvedh at gmail.com>
Date: Tue, 7 Oct 2025 14:01:41 -0700
Subject: [PATCH] [AMDGPU] Do load unconditionally when converting from masked
 load

Signed-off-by: Nirvedh Meshram <nirvedh at gmail.com>
---
 mlir/lib/Dialect/AMDGPU/Transforms/MaskedloadToLoad.cpp | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/mlir/lib/Dialect/AMDGPU/Transforms/MaskedloadToLoad.cpp b/mlir/lib/Dialect/AMDGPU/Transforms/MaskedloadToLoad.cpp
index f15c63c166e0a..e1024eeefd4bd 100644
--- a/mlir/lib/Dialect/AMDGPU/Transforms/MaskedloadToLoad.cpp
+++ b/mlir/lib/Dialect/AMDGPU/Transforms/MaskedloadToLoad.cpp
@@ -88,13 +88,13 @@ struct MaskedLoadLowering final : OpRewritePattern<vector::MaskedLoadOp> {
     if (failed(baseInBufferAddrSpace(rewriter, maskedOp))) {
       return failure();
     }
+    Value load = createVectorLoadForMaskedLoad(rewriter, maskedOp.getLoc(),
+                                               maskedOp, /*passthru=*/true);
 
     // Check if this is either a full inbounds load or an empty, oob load. If
     // so, take the fast path and don't generate an if condition, because we
     // know doing the oob load is always safe.
     if (succeeded(matchFullMask(rewriter, maskedOp.getMask()))) {
-      Value load = createVectorLoadForMaskedLoad(rewriter, maskedOp.getLoc(),
-                                                 maskedOp, /*passthru=*/true);
       rewriter.replaceOp(maskedOp, load);
       return success();
     }
@@ -156,9 +156,7 @@ struct MaskedLoadLowering final : OpRewritePattern<vector::MaskedLoadOp> {
     };
 
     auto elseBuilder = [&](OpBuilder &builder, Location loc) {
-      Value res = createVectorLoadForMaskedLoad(builder, loc, maskedOp,
-                                                /*passthru=*/true);
-      scf::YieldOp::create(rewriter, loc, res);
+      scf::YieldOp::create(rewriter, loc, load);
     };
 
     auto ifOp =



More information about the Mlir-commits mailing list