| func.func @stride_slice() { | 
 |   %c15 = arith.constant 15 : i32 | 
 |   %c16 = arith.constant 16 : i32 | 
 |   %0 = tensor.empty() : tensor<12x15xi32> | 
 |   %1 = linalg.generic { | 
 |       indexing_maps = [affine_map<(d0, d1) -> (d0, d1)>], | 
 |       iterator_types = ["parallel", "parallel"]} | 
 |       outs(%0 : tensor<12x15xi32>) { | 
 |     ^bb0(%b0 : i32): | 
 |       %2 = linalg.index 0 : index | 
 |       %3 = linalg.index 1 : index | 
 |       %4 = arith.index_cast %2 : index to i32 | 
 |       %5 = arith.index_cast %3 : index to i32 | 
 |       %6 = arith.muli %c15, %4 : i32 | 
 |       %7 = arith.addi %6, %5 : i32 | 
 |       linalg.yield %7 : i32 | 
 |     } -> tensor<12x15xi32> | 
 |   %2 = tensor.empty() : tensor<14x16xi32> | 
 |   %3 = linalg.generic { | 
 |       indexing_maps = [affine_map<(d0, d1) -> (d0, d1)>], | 
 |       iterator_types = ["parallel", "parallel"]} | 
 |       outs(%2 : tensor<14x16xi32>) { | 
 |     ^bb0(%b0 : i32): | 
 |       %4 = linalg.index 0 : index | 
 |       %5 = linalg.index 1 : index | 
 |       %6 = arith.index_cast %4 : index to i32 | 
 |       %7 = arith.index_cast %5 : index to i32 | 
 |       %8 = arith.muli %c16, %6 : i32 | 
 |       %9 = arith.addi %8, %7 : i32 | 
 |       linalg.yield %9 : i32 | 
 |     } -> tensor<14x16xi32> | 
 |   %4 = tensor.extract_slice %1[2, 3] [3, 3] [2, 3] : tensor<12x15xi32> to tensor<3x3xi32> | 
 |   %5 = tensor.extract_slice %3[3, 2] [3, 3] [3, 2] : tensor<14x16xi32> to tensor<3x3xi32> | 
 |   %6 = tensor.empty() : tensor<3x3xi32> | 
 |   %7 = linalg.generic { | 
 |       indexing_maps = [affine_map<(d0, d1) -> (d0, d1)>, affine_map<(d0, d1) -> (d0, d1)>, | 
 |                        affine_map<(d0, d1) -> (d0, d1)>], | 
 |       iterator_types = ["parallel", "parallel"]} | 
 |       ins(%4, %5 : tensor<3x3xi32>, tensor<3x3xi32>) | 
 |       outs(%6 : tensor<3x3xi32>) { | 
 |     ^bb0(%b0 : i32, %b1 : i32, %b2: i32): | 
 |       %8 = arith.addi %b0, %b1 : i32 | 
 |       linalg.yield %8 : i32 | 
 |     } -> tensor<3x3xi32> | 
 |   %8 = arith.constant dense<42> : tensor<10x12xi32> | 
 |   %9 = tensor.insert_slice %7 into %8[1, 2] [3, 3] [2, 3] : tensor<3x3xi32> into tensor<10x12xi32> | 
 |   check.expect_eq_const(%9, dense<[ | 
 |     [42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42], | 
 |     [42, 42, 83, 42, 42, 88, 42, 42, 93, 42, 42, 42], | 
 |     [42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42], | 
 |     [42, 42, 161, 42, 42, 166, 42, 42, 171, 42, 42, 42], | 
 |     [42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42], | 
 |     [42, 42, 239, 42, 42, 244, 42, 42, 249, 42, 42, 42], | 
 |     [42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42], | 
 |     [42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42], | 
 |     [42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42], | 
 |     [42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42]]> : tensor<10x12xi32>) : tensor<10x12xi32> | 
 |   return | 
 | } | 
 |  | 
 | #map = affine_map<(d0) -> (d0)> | 
 | func.func @issue_8825() { | 
 |   %c0 = arith.constant 0 : index | 
 |   %c0_i64 = arith.constant 0 : i64 | 
 |   %c3_i64 = arith.constant 3 : i64 | 
 |   %c2_i64 = arith.constant 2 : i64 | 
 |   %arg0 = arith.constant dense<[0.0, 1.0, 2.0, 3.0]> : tensor<4xf32> | 
 |   %0 = tensor.dim %arg0, %c0 : tensor<4xf32> | 
 |   %1 = arith.index_cast %0 : index to i64 | 
 |   %2 = arith.addi %c2_i64, %1 : i64 | 
 |   %3 = arith.cmpi sge, %c2_i64, %c0_i64 : i64 | 
 |   %4 = arith.select %3, %c2_i64, %2 : i64 | 
 |   %5 = arith.cmpi slt, %4, %c0_i64 : i64 | 
 |   %6 = arith.select %5, %c0_i64, %4 : i64 | 
 |   %7 = arith.cmpi sgt, %6, %1 : i64 | 
 |   %8 = arith.select %7, %1, %6 : i64 | 
 |   %9 = arith.index_cast %8 : i64 to index | 
 |   %10 = arith.cmpi sge, %0, %9 : index | 
 |   %11 = arith.select %10, %0, %9 : index | 
 |   %12 = arith.subi %11, %9 : index | 
 |   %13 = tensor.extract_slice %arg0[%9] [%12] [1] : tensor<4xf32> to tensor<?xf32> | 
 |   %14 = tensor.empty(%12) : tensor<?xf32> | 
 |   %16 = linalg.generic {indexing_maps = [#map, #map], iterator_types = ["parallel"]} ins(%13 : tensor<?xf32>) outs(%14 : tensor<?xf32>) { | 
 |     ^bb0(%arg1: f32, %arg2: f32): | 
 |       %16 = arith.sitofp %c3_i64 : i64 to f32 | 
 |       %17 = arith.mulf %arg1, %16 : f32 | 
 |       linalg.yield %17 : f32 | 
 |     } -> tensor<?xf32> | 
 |   %17 = tensor.cast %16 : tensor<?xf32> to tensor<2xf32> | 
 |   check.expect_almost_eq_const(%17, dense<[6.0, 9.0]> : tensor<2xf32>) : tensor<2xf32> | 
 |   return | 
 | } |