[Mlir-commits] [mlir] [mlir][linalg] Fix incorrect hoisting of transfers with mismatched masks (PR #232246)
Adam Siemieniuk
llvmlistbot at llvm.org
Thu Oct 22 02:27:02 PDT 2026
================
@@ -1747,3 +1747,209 @@ module attributes {transform.with_named_sequence} {
transform.yield
}
}
+
+// -----
+
+// Only the read is masked, so hoisting is not safe. The second element must
+// be read as zero on every iteration, leaving 1 in memory after the loop.
+
+// CHECK-LABEL: func.func @masked_read_unmasked_write()
+// CHECK: %[[MASK:.*]] = arith.constant dense<[true, false]>
+// CHECK: scf.for {{.*}} {
+// CHECK-NEXT: %[[READ:.*]] = vector.transfer_read {{.*}}, %[[MASK]]
+// CHECK-NEXT: %[[NEXT:.*]] = arith.addi %[[READ]],
+// CHECK-NEXT: vector.transfer_write %[[NEXT]],
+// CHECK-NEXT: }{{$}}
+// CHECK: memref.load
+func.func @masked_read_unmasked_write() -> i32 {
----------------
adam-smnk wrote:
nit: Could you add `@negative` prefix to failing test cases?
https://github.com/llvm/llvm-project/pull/232246
More information about the Mlir-commits
mailing list