[Mlir-commits] [mlir] Fixing peelFirstIteration. Was incorrectly replacing all ub inside peeled iteration region. (PR #163720)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Thu Oct 16 01:02:20 PDT 2025
================
@@ -35,7 +35,49 @@ func.func @fully_static_bounds() -> i32 {
}
return %r : i32
}
+// -----
+// CHECK-LABEL: func.func @static_two_terations_ub_used_in_loop(
+// CHECK-SAME: %[[IFM1:.*]]: memref<1xi32>) -> i32 {
+// CHECK: %[[C0_I32:.*]] = arith.constant 0 : i32
+// CHECK: %[[C0_IDX:.*]] = arith.constant 0 : index
+// CHECK: %[[C4_IDX:.*]] = arith.constant 4 : index
+// CHECK: %[[C7_IDX:.*]] = arith.constant 7 : index
+// CHECK: %[[FOR1:.*]] = scf.for %[[IV1:.*]] = %[[C0_IDX]] to %[[C4_IDX]] step %[[C4_IDX]] iter_args(%[[ARG1:.*]] = %[[C0_I32]]) -> (i32) {
+// CHECK: %[[AFFINE_MIN1:.*]] = affine.min #map(%[[C7_IDX]], %[[IV1]]){{\[}}%[[C4_IDX]]]
+// CHECK: %[[CAST1:.*]] = arith.index_cast %[[AFFINE_MIN1]] : index to i32
+// CHECK: %[[ADDI1:.*]] = arith.addi %[[ARG1]], %[[CAST1]] : i32
+// CHECK: %[[LOAD1:.*]] = memref.load %[[IFM1]]{{\[}}%[[C7_IDX]]] : memref<1xi32>
----------------
ddubov100 wrote:
Here we can see that the load stays of index C7_IDX.
In previous implementation it would be C4_IDX, which is wrong.
You can see in mlir/test/Dialect/SCF/for-loop-peeling.mlir:42 that it is C7_IDX as well.
https://github.com/llvm/llvm-project/pull/163720
More information about the Mlir-commits
mailing list