[Mlir-commits] [mlir] [mlir][Vector] Fix mask unpacking in transfer op unrolling (PR #144889)
Nicolas Vasilache
llvmlistbot at llvm.org
Thu Jun 19 06:51:24 PDT 2025
================
@@ -84,3 +84,33 @@ func.func @transfer_read_mask(%A : memref<?x?x?xf32>, %mask : vector<2x3x4xi1>)
%vec = vector.transfer_read %A[%c0, %c0, %c0], %f0, %mask {in_bounds = [true, true, true]}: memref<?x?x?xf32>, vector<2x3x4xf32>
return %vec : vector<2x3x4xf32>
}
+
+// -----
+
+func.func @transfer_read_perm_mask(%A : memref<?x?x?x?xf32>, %mask : vector<3x2x4xi1>) -> (vector<2x3x4xf32>) {
+ %f0 = arith.constant 0.0: f32
+ %c0 = arith.constant 0: index
+
+ // CHECK: vector.extract %{{.*}}[0, 0] : vector<4xi1> from vector<3x2x4xi1>
----------------
nicolasvasilache wrote:
ok, I missed that the test was also doing that.
There should be a max-transfer-rank or similar parameter where one could stop the unrolling at 2-D transfer reads (e.g. for HW that support > 1-D loads) but it is likely not worth the trouble at this point.
https://github.com/llvm/llvm-project/pull/144889
More information about the Mlir-commits
mailing list