[Mlir-commits] [mlir] [mlir][vector] Do not flatten or scalarize region-masked transfers (PR #231799)

llvmlistbot at llvm.org llvmlistbot at llvm.org
Thu Oct 15 01:04:38 PDT 2026


================
@@ -178,3 +178,26 @@ func.func @transfer_read_2d_extract_dynamic(%m: memref<?x?xf32>, %row_idx: index
   %elem = vector.extract %vec[%row_offset, %col_offset] : f32 from vector<10x5xf32>
   return %elem : f32
 }
+
+// -----
+
+// A region-masked transfer cannot be scalarized because the rewrite would
+// create multiple operations inside the vector.mask region.
+
+// CHECK-LABEL: func.func @region_masked_transfer_write
+//       CHECK:   vector.mask %{{.+}} { vector.transfer_write
+//       CHECK:   return
+
+// MULTIUSE-LABEL: func.func @region_masked_transfer_write
+//       MULTIUSE:   vector.mask %{{.+}} { vector.transfer_write
+//       MULTIUSE:   return
+func.func @region_masked_transfer_write(
----------------
Vaisman wrote:

`RewriteScalarExtractOfTransferRead` only matches extract directly from `vector.transfer_read`.
For a region-masked read, the extract source is `vector.mask`, so the pattern already does not match.
Only `RewriteScalarWrite` needs the explicit `isMasked()` check here. Added a test in 16756b1.

https://github.com/llvm/llvm-project/pull/231799


More information about the Mlir-commits mailing list