[Mlir-commits] [mlir] a5b1093 - [MLIR] Add ReturnLike trait to memref.atomic_yield (#144932)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Fri Jun 20 04:55:06 PDT 2025
Author: Mehdi Amini
Date: 2025-06-20T13:55:03+02:00
New Revision: a5b1093f782729014604f3208550de7400c518ac
URL: https://github.com/llvm/llvm-project/commit/a5b1093f782729014604f3208550de7400c518ac
DIFF: https://github.com/llvm/llvm-project/commit/a5b1093f782729014604f3208550de7400c518ac.diff
LOG: [MLIR] Add ReturnLike trait to memref.atomic_yield (#144932)
Without this, the yield isn't considered as the region terminator and
the dataflow framework does not consider it live.
Added:
Modified:
mlir/include/mlir/Dialect/MemRef/IR/MemRefOps.td
mlir/test/Transforms/remove-dead-values.mlir
Removed:
################################################################################
diff --git a/mlir/include/mlir/Dialect/MemRef/IR/MemRefOps.td b/mlir/include/mlir/Dialect/MemRef/IR/MemRefOps.td
index 481b14cdb4622..b0fb5b0785142 100644
--- a/mlir/include/mlir/Dialect/MemRef/IR/MemRefOps.td
+++ b/mlir/include/mlir/Dialect/MemRef/IR/MemRefOps.td
@@ -1078,8 +1078,7 @@ def GenericAtomicRMWOp : MemRef_Op<"generic_atomic_rmw", [
def AtomicYieldOp : MemRef_Op<"atomic_yield", [
HasParent<"GenericAtomicRMWOp">,
- Pure,
- Terminator
+ Pure, Terminator, ReturnLike
]> {
let summary = "yield operation for GenericAtomicRMWOp";
let description = [{
diff --git a/mlir/test/Transforms/remove-dead-values.mlir b/mlir/test/Transforms/remove-dead-values.mlir
index 8c2a1cf7546f3..e55a9160f5b34 100644
--- a/mlir/test/Transforms/remove-dead-values.mlir
+++ b/mlir/test/Transforms/remove-dead-values.mlir
@@ -510,3 +510,18 @@ module {
// CHECK: %[[yield:.*]] = arith.addf %{{.*}}, %{{.*}} : f32
// CHECK: linalg.yield %[[yield]] : f32
// CHECK-NOT: arith.subf
+
+// -----
+
+// CHECK-LABEL: func.func @test_atomic_yield
+func.func @test_atomic_yield(%I: memref<10xf32>, %idx : index) {
+ // CHECK: memref.generic_atomic_rmw
+ %x = memref.generic_atomic_rmw %I[%idx] : memref<10xf32> {
+ ^bb0(%current_value : f32):
+ // CHECK: arith.constant
+ %c1 = arith.constant 1.0 : f32
+ // CHECK: memref.atomic_yield
+ memref.atomic_yield %c1 : f32
+ }
+ func.return
+}
More information about the Mlir-commits
mailing list