[Mlir-commits] [mlir] [mlir][tensor] Add more tensor.extract_slice canonicalization (PR #212974)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Thu Jul 30 02:49:43 PDT 2026
github-actions[bot] wrote:
<!--PREMERGE ADVISOR COMMENT: Windows-->
# :window: Windows x64 Test Results
* 3993 tests passed
* 444 tests skipped
* 5 tests failed
## Failed Tests
(click on a test name to see its output)
### MLIR
<details>
<summary>MLIR.Dialect/Linalg/tile-softmax.mlir</summary>
```
Exit Code: 1
Command Output (stdout):
--
# RUN: at line 1
c:\_work\llvm-project\llvm-project\build\bin\mlir-opt.exe C:\_work\llvm-project\llvm-project\mlir\test\Dialect\Linalg\tile-softmax.mlir -transform-interpreter -canonicalize --split-input-file | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\mlir\test\Dialect\Linalg\tile-softmax.mlir
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\mlir-opt.exe' 'C:\_work\llvm-project\llvm-project\mlir\test\Dialect\Linalg\tile-softmax.mlir' -transform-interpreter -canonicalize --split-input-file
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\mlir\test\Dialect\Linalg\tile-softmax.mlir:100:8: warning: tiling is not thread safe at axis #1
# | %1 = linalg.softmax
# | ^
# | C:\_work\llvm-project\llvm-project\mlir\test\Dialect\Linalg\tile-softmax.mlir:100:8: note: see current operation: %3 = linalg.softmax dimension(1) ins(%1 : tensor<16x64x256xf32>) outs(%2 : tensor<16x64x256xf32>) -> tensor<16x64x256xf32>
# `-----------------------------
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\mlir\test\Dialect\Linalg\tile-softmax.mlir'
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\mlir\test\Dialect\Linalg\tile-softmax.mlir:60:11: error: CHECK: expected string not found in input
# | // CHECK: %[[VAL_3:.*]] = tensor.empty() : tensor<16x64x256xf32>
# | ^
# | <stdin>:39:45: note: scanning from here
# | %0 = tensor.empty() : tensor<16x64x256xf32>
# | ^
# | <stdin>:39:45: note: pattern attempts to capture variables: "VAL_3"
# | %0 = tensor.empty() : tensor<16x64x256xf32>
# | ^
# | <stdin>:46:2: note: possible intended match here
# | %6 = tensor.empty() : tensor<2x4x256xf32>
# | ^
# |
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\mlir\test\Dialect\Linalg\tile-softmax.mlir
# |
# | -dump-input=help explains the following input dump.
# |
# | Input was:
# | <<<<<<
# | .
# | .
# | .
# | 34: #map1 = affine_map<(d0) -> (d0 * 4)>
# | 35: #map2 = affine_map<(d0, d1, d2) -> (d0, d1, d2)>
# | 36: module {
# | 37: func.func @softmax_tile_n_fuse(%arg0: tensor<16x64x256xf32>) -> tensor<16x64x256xf32> {
# | 38: %cst = arith.constant 1.000000e+00 : f32
# | 39: %0 = tensor.empty() : tensor<16x64x256xf32>
# | check:60'0 { search range start (exclusive)
# | check:60'1 error: no match found in search range
# | check:60'2 pattern attempts to capture variables: "VAL_3"
# | 40: %1 = scf.forall (%arg1, %arg2) in (8, 16) shared_outs(%arg3 = %0) -> (tensor<16x64x256xf32>) {
# | 41: %2 = affine.apply #map(%arg1)
# | 42: %3 = affine.apply #map1(%arg2)
# | 43: %4 = affine.apply #map(%arg1)
# | 44: %5 = affine.apply #map1(%arg2)
# | 45: %extracted_slice = tensor.extract_slice %arg0[%4, %5, 0] [2, 4, 256] [1, 1, 1] : tensor<16x64x256xf32> to tensor<2x4x256xf32>
# | 46: %6 = tensor.empty() : tensor<2x4x256xf32>
# | check:60'3 ? possible intended match
# | 47: %7 = linalg.generic {indexing_maps = [#map2, #map2], iterator_types = ["parallel", "parallel", "parallel"]} ins(%extracted_slice : tensor<2x4x256xf32>) outs(%6 : tensor<2x4x256xf32>) {
# | 48: ^bb0(%in: f32, %out: f32):
# | 49: %9 = arith.addf %out, %cst : f32
# | 50: linalg.yield %9 : f32
# | 51: } -> tensor<2x4x256xf32>
# | .
# | .
# | .
# | 69: }
# | 70:
# | 71: // -----
# | 72: #map = affine_map<(d0) -> (-d0 + 64, 3)>
# | 73: module {
# | 74: func.func @softmax_memref(%arg0: memref<16x64x256xf32>, %arg1: memref<16x64x256xf32>) {
# | check:60'4 } search range end (exclusive)
# | 75: %c0 = arith.constant 0 : index
# | 76: %c16 = arith.constant 16 : index
# | 77: %c64 = arith.constant 64 : index
# | 78: %c2 = arith.constant 2 : index
# | 79: %c3 = arith.constant 3 : index
# | .
# | .
# | .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1
--
```
</details>
<details>
<summary>MLIR.Dialect/SCF/canonicalize.mlir</summary>
```
Exit Code: 1
Command Output (stdout):
--
# RUN: at line 1
c:\_work\llvm-project\llvm-project\build\bin\mlir-opt.exe C:\_work\llvm-project\llvm-project\mlir\test\Dialect\SCF\canonicalize.mlir -pass-pipeline='builtin.module(func.func(canonicalize{test-convergence}))' -split-input-file | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\mlir\test\Dialect\SCF\canonicalize.mlir
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\mlir-opt.exe' 'C:\_work\llvm-project\llvm-project\mlir\test\Dialect\SCF\canonicalize.mlir' '-pass-pipeline=builtin.module(func.func(canonicalize{test-convergence}))' -split-input-file
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\mlir\test\Dialect\SCF\canonicalize.mlir'
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\mlir\test\Dialect\SCF\canonicalize.mlir:1954:16: error: CHECK-NEXT: expected string not found in input
# | // CHECK-NEXT: %[[SLICE:.*]] = tensor.extract_slice %[[OUT]]
# | ^
# | <stdin>:1082:19: note: scanning from here
# | %0 = tensor.empty() : tensor<8x8xf32>
# | ^
# | <stdin>:1082:19: note: with "OUT" equal to "0"
# | %0 = tensor.empty() : tensor<8x8xf32>
# | ^
# | <stdin>:1082:19: note: pattern attempts to capture variables: "SLICE"
# | %0 = tensor.empty() : tensor<8x8xf32>
# | ^
# | <stdin>:1085:10: note: possible intended match here
# | %inserted_slice = tensor.insert_slice %2 into %0[0, 0] [2, 3] [1, 1] : tensor<2x3xf32> into tensor<8x8xf32>
# | ^
# |
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\mlir\test\Dialect\SCF\canonicalize.mlir
# |
# | -dump-input=help explains the following input dump.
# |
# | Input was:
# | <<<<<<
# | .
# | .
# | .
# | 1077:
# | 1078: // -----
# | 1079: module {
# | 1080: func.func @inline_forall_loop(%arg0: tensor<8x8xf32>) -> tensor<8x8xf32> {
# | 1081: %cst = arith.constant 0.000000e+00 : f32
# | 1082: %0 = tensor.empty() : tensor<8x8xf32>
# | next:1954'0 { search range start (exclusive)
# | next:1954'1 error: no match found in search range
# | next:1954'2 with "OUT" equal to "0"
# | next:1954'3 pattern attempts to capture variables: "SLICE"
# | 1083: %1 = tensor.empty() : tensor<2x3xf32>
# | 1084: %2 = linalg.fill ins(%cst : f32) outs(%1 : tensor<2x3xf32>) -> tensor<2x3xf32>
# | 1085: %inserted_slice = tensor.insert_slice %2 into %0[0, 0] [2, 3] [1, 1] : tensor<2x3xf32> into tensor<8x8xf32>
# | next:1954'4 ? possible intended match
# | 1086: return %inserted_slice : tensor<8x8xf32>
# | 1087: }
# | 1088: }
# | 1089:
# | 1090: // -----
# | 1091: module {
# | 1092: func.func @do_not_inline_distributed_forall_loop(%arg0: tensor<8x8xf32>) -> tensor<8x8xf32> {
# | next:1954'5 } search range end (exclusive)
# | 1093: %cst = arith.constant 0.000000e+00 : f32
# | 1094: %0 = tensor.empty() : tensor<8x8xf32>
# | 1095: %1 = scf.forall (%arg1, %arg2) = (0, 4) to (1, 5) step (8, 8) shared_outs(%arg3 = %0) -> (tensor<8x8xf32>) {
# | 1096: %extracted_slice = tensor.extract_slice %arg3[0, 4] [2, 3] [1, 1] : tensor<8x8xf32> to tensor<2x3xf32>
# | 1097: %2 = linalg.fill ins(%cst : f32) outs(%extracted_slice : tensor<2x3xf32>) -> tensor<2x3xf32>
# | .
# | .
# | .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1
--
```
</details>
<details>
<summary>MLIR.Dialect/Tensor/transform-op-make-loop-independent.mlir</summary>
```
Exit Code: 1
Command Output (stdout):
--
# RUN: at line 1
c:\_work\llvm-project\llvm-project\build\bin\mlir-opt.exe C:\_work\llvm-project\llvm-project\mlir\test\Dialect\Tensor\transform-op-make-loop-independent.mlir -allow-unregistered-dialect -transform-interpreter -canonicalize -split-input-file -verify-diagnostics | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\mlir\test\Dialect\Tensor\transform-op-make-loop-independent.mlir
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\mlir-opt.exe' 'C:\_work\llvm-project\llvm-project\mlir\test\Dialect\Tensor\transform-op-make-loop-independent.mlir' -allow-unregistered-dialect -transform-interpreter -canonicalize -split-input-file -verify-diagnostics
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\mlir\test\Dialect\Tensor\transform-op-make-loop-independent.mlir'
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\mlir\test\Dialect\Tensor\transform-op-make-loop-independent.mlir:137:11: error: CHECK: expected string not found in input
# | // CHECK: #[[$map1:.*]] = affine_map<()[s0, s1] -> (s0 - s1)>
# | ^
# | <stdin>:92:42: note: scanning from here
# | #map = affine_map<(d0)[s0] -> (-d0 + s0)>
# | ^
# | <stdin>:92:42: note: pattern attempts to capture variables: "$map1"
# | #map = affine_map<(d0)[s0] -> (-d0 + s0)>
# | ^
# | <stdin>:94:4: note: possible intended match here
# | func.func @make_empty_loop_independent(%arg0: index, %arg1: index, %arg2: index) {
# | ^
# | C:\_work\llvm-project\llvm-project\mlir\test\Dialect\Tensor\transform-op-make-loop-independent.mlir:144:12: error: CHECK: expected string not found in input
# | // CHECK: %[[empty_sz:.*]] = affine.apply #[[$map1]]()[%[[ub]], %[[lb]]]
# | ^
# | <stdin>:96:38: note: scanning from here
# | %0 = affine.apply #map(%arg3)[%arg1]
# | ^
# | <stdin>:96:38: note: with "$map1" equal to "map1"
# | %0 = affine.apply #map(%arg3)[%arg1]
# | ^
# | <stdin>:96:38: note: with "ub" equal to "arg1"
# | %0 = affine.apply #map(%arg3)[%arg1]
# | ^
# | <stdin>:96:38: note: with "lb" equal to "arg0"
# | %0 = affine.apply #map(%arg3)[%arg1]
# | ^
# | <stdin>:96:38: note: pattern attempts to capture variables: "empty_sz"
# | %0 = affine.apply #map(%arg3)[%arg1]
# | ^
# | <stdin>:98:17: note: possible intended match here
# | "dummy.some_use"(%1) : (tensor<?xf32>) -> ()
# | ^
# |
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\mlir\test\Dialect\Tensor\transform-op-make-loop-independent.mlir
# |
# | -dump-input=help explains the following input dump.
# |
# | Input was:
# | <<<<<<
# | .
# | .
# | .
# | 87: }
# | 88: }
# | 89:
# | 90: // -----
# | 91: // -----
# | 92: #map = affine_map<(d0)[s0] -> (-d0 + s0)>
# | check:137'0 { search range start (exclusive)
# | check:137'1 error: no match found in search range
# | check:137'2 pattern attempts to capture variables: "$map1"
# | 93: module {
# | 94: func.func @make_empty_loop_independent(%arg0: index, %arg1: index, %arg2: index) {
# | check:137'3 ? possible intended match
# | check:137'4 } search range end (exclusive)
# | 95: scf.for %arg3 = %arg0 to %arg1 step %arg2 {
# | 96: %0 = affine.apply #map(%arg3)[%arg1]
# | check:144'0 { search range start (exclusive)
# | check:144'1 error: no match found in search range
# | check:144'2 with "$map1" equal to "map1"
# | check:144'3 with "ub" equal to "arg1"
# | check:144'4 with "lb" equal to "arg0"
# | check:144'5 pattern attempts to capture variables: "empty_sz"
# | 97: %1 = tensor.empty(%0) : tensor<?xf32>
# | 98: "dummy.some_use"(%1) : (tensor<?xf32>) -> ()
# | check:144'6 ? possible intended match
# | 99: }
# | 100: return
# | 101: }
# | 102: module attributes {transform.with_named_sequence} {
# | 103: transform.named_sequence @__transform_main(%arg0: !transform.any_op {transform.readonly}) {
# | 104: %0 = transform.structured.match ops{["tensor.empty"]} in %arg0 : (!transform.any_op) -> !transform.any_op
# | 105: %1 = transform.tensor.make_loop_independent %0 {num_loops = 1 : i64} : (!transform.any_op) -> !transform.any_op
# | 106: transform.yield
# | 107: }
# | 108: }
# | 109: }
# | 110:
# | check:144'7 } search range end (exclusive)
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1
--
```
</details>
<details>
<summary>MLIR.Interfaces/TilingInterface/tile-and-fuse-using-interface.mlir</summary>
```
Exit Code: 1
Command Output (stdout):
--
# RUN: at line 1
c:\_work\llvm-project\llvm-project\build\bin\mlir-opt.exe -transform-interpreter -cse -split-input-file C:\_work\llvm-project\llvm-project\mlir\test\Interfaces\TilingInterface\tile-and-fuse-using-interface.mlir | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\mlir\test\Interfaces\TilingInterface\tile-and-fuse-using-interface.mlir
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\mlir-opt.exe' -transform-interpreter -cse -split-input-file 'C:\_work\llvm-project\llvm-project\mlir\test\Interfaces\TilingInterface\tile-and-fuse-using-interface.mlir'
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\mlir\test\Interfaces\TilingInterface\tile-and-fuse-using-interface.mlir'
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\mlir\test\Interfaces\TilingInterface\tile-and-fuse-using-interface.mlir:727:11: error: CHECK: expected string not found in input
# | // CHECK: %[[TILE_3D:.+]] = tensor.extract_slice %[[EMPTY_3D]][0, 0, %[[IV]]] [4, 1, 32] [1, 1, 1]
# | ^
# | <stdin>:596:69: note: scanning from here
# | %2 = scf.for %arg1 = %c0 to %c96 step %c32 iter_args(%arg2 = %arg0) -> (tensor<4x96xf32>) {
# | ^
# | <stdin>:596:69: note: with "EMPTY_3D" equal to "0"
# | %2 = scf.for %arg1 = %c0 to %c96 step %c32 iter_args(%arg2 = %arg0) -> (tensor<4x96xf32>) {
# | ^
# | <stdin>:596:69: note: with "IV" equal to "arg1"
# | %2 = scf.for %arg1 = %c0 to %c96 step %c32 iter_args(%arg2 = %arg0) -> (tensor<4x96xf32>) {
# | ^
# | <stdin>:596:69: note: pattern attempts to capture variables: "TILE_3D"
# | %2 = scf.for %arg1 = %c0 to %c96 step %c32 iter_args(%arg2 = %arg0) -> (tensor<4x96xf32>) {
# | ^
# | <stdin>:599:7: note: possible intended match here
# | %extracted_slice = tensor.extract_slice %4[0, 0, 0] [4, 1, 32] [1, 1, 1] : tensor<4x1x32xf32> to tensor<4x32xf32>
# | ^
# |
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\mlir\test\Interfaces\TilingInterface\tile-and-fuse-using-interface.mlir
# |
# | -dump-input=help explains the following input dump.
# |
# | Input was:
# | <<<<<<
# | .
# | .
# | .
# | 591: %0 = tensor.empty() : tensor<4x1x96xf32>
# | 592: %1 = linalg.fill ins(%cst : f32) outs(%0 : tensor<4x1x96xf32>) -> tensor<4x1x96xf32>
# | 593: %c0 = arith.constant 0 : index
# | 594: %c96 = arith.constant 96 : index
# | 595: %c32 = arith.constant 32 : index
# | 596: %2 = scf.for %arg1 = %c0 to %c96 step %c32 iter_args(%arg2 = %arg0) -> (tensor<4x96xf32>) {
# | check:727'0 { search range start (exclusive)
# | check:727'1 error: no match found in search range
# | check:727'2 with "EMPTY_3D" equal to "0"
# | check:727'3 with "IV" equal to "arg1"
# | check:727'4 pattern attempts to capture variables: "TILE_3D"
# | 597: %3 = tensor.empty() : tensor<4x1x32xf32>
# | 598: %4 = linalg.fill ins(%cst : f32) outs(%3 : tensor<4x1x32xf32>) -> tensor<4x1x32xf32>
# | 599: %extracted_slice = tensor.extract_slice %4[0, 0, 0] [4, 1, 32] [1, 1, 1] : tensor<4x1x32xf32> to tensor<4x32xf32>
# | check:727'5 ? possible intended match
# | 600: %extracted_slice_0 = tensor.extract_slice %arg2[0, %arg1] [4, 32] [1, 1] : tensor<4x96xf32> to tensor<4x32xf32>
# | 601: %5 = linalg.generic {indexing_maps = [#map, #map], iterator_types = ["parallel", "parallel"]} ins(%extracted_slice : tensor<4x32xf32>) outs(%extracted_slice_0 : tensor<4x32xf32>) {
# | 602: ^bb0(%in: f32, %out: f32):
# | 603: %6 = arith.addf %in, %out : f32
# | 604: linalg.yield %6 : f32
# | .
# | .
# | .
# | 614: %transformed, %loops = transform.structured.fuse %0 tile_sizes [0, 32] {apply_cleanup} : (!transform.any_op) -> (!transform.any_op, !transform.op<"scf.for">)
# | 615: transform.yield
# | 616: }
# | 617: }
# | 618: }
# | 619:
# | check:727'6 } search range end (exclusive)
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1
--
```
</details>
<details>
<summary>MLIR.Interfaces/TilingInterface/tile-fuse-and-yield-using-scfforall.mlir</summary>
```
Exit Code: 1
Command Output (stdout):
--
# RUN: at line 1
c:\_work\llvm-project\llvm-project\build\bin\mlir-opt.exe -transform-interpreter -cse -canonicalize -split-input-file C:\_work\llvm-project\llvm-project\mlir\test\Interfaces\TilingInterface\tile-fuse-and-yield-using-scfforall.mlir | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\mlir\test\Interfaces\TilingInterface\tile-fuse-and-yield-using-scfforall.mlir
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\mlir-opt.exe' -transform-interpreter -cse -canonicalize -split-input-file 'C:\_work\llvm-project\llvm-project\mlir\test\Interfaces\TilingInterface\tile-fuse-and-yield-using-scfforall.mlir'
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\mlir\test\Interfaces\TilingInterface\tile-fuse-and-yield-using-scfforall.mlir'
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\mlir\test\Interfaces\TilingInterface\tile-fuse-and-yield-using-scfforall.mlir:108:15: error: CHECK-DAG: expected string not found in input
# | // CHECK-DAG: %[[OUTPUT_I8:.+]] = tensor.empty() : tensor<32x1024xi8>
# | ^
# | <stdin>:44:85: note: scanning from here
# | func.func @fuse_pack_consumer_into_multi_output_generic(%arg0: tensor<32x1024xf32>) -> (tensor<32x1024xf32>, tensor<2x512x16x2xi8>) {
# | ^
# | <stdin>:44:85: note: pattern attempts to capture variables: "OUTPUT_I8"
# | func.func @fuse_pack_consumer_into_multi_output_generic(%arg0: tensor<32x1024xf32>) -> (tensor<32x1024xf32>, tensor<2x512x16x2xi8>) {
# | ^
# | <stdin>:46:2: note: possible intended match here
# | %0 = tensor.empty() : tensor<32x1024xf32>
# | ^
# |
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\mlir\test\Interfaces\TilingInterface\tile-fuse-and-yield-using-scfforall.mlir
# |
# | -dump-input=help explains the following input dump.
# |
# | Input was:
# | <<<<<<
# | .
# | .
# | .
# | 39: // -----
# | 40: #map = affine_map<(d0) -> (d0 * 16)>
# | 41: #map1 = affine_map<(d0) -> (d0 * -16 + 32, 16)>
# | 42: #map2 = affine_map<(d0, d1) -> (d0, d1)>
# | 43: module {
# | 44: func.func @fuse_pack_consumer_into_multi_output_generic(%arg0: tensor<32x1024xf32>) -> (tensor<32x1024xf32>, tensor<2x512x16x2xi8>) {
# | dag:108'0 { search range start (exclusive)
# | dag:108'1 error: no match found in search range
# | dag:108'2 pattern attempts to capture variables: "OUTPUT_I8"
# | 45: %c0_i8 = arith.constant 0 : i8
# | 46: %0 = tensor.empty() : tensor<32x1024xf32>
# | dag:108'3 ? possible intended match
# | 47: %1 = tensor.empty() : tensor<2x512x16x2xi8>
# | 48: %2:2 = scf.forall (%arg1) in (2) shared_outs(%arg2 = %1, %arg3 = %0) -> (tensor<2x512x16x2xi8>, tensor<32x1024xf32>) {
# | 49: %3 = affine.apply #map(%arg1)
# | 50: %4 = affine.min #map1(%arg1)
# | 51: %extracted_slice = tensor.extract_slice %arg0[%3, 0] [%4, 1024] [1, 1] : tensor<32x1024xf32> to tensor<?x1024xf32>
# | .
# | .
# | .
# | 71: %transfomed, %loops = transform.test.fuse_and_yield %0 [1] use_forall true : (!transform.any_op) -> (!transform.any_op, !transform.any_op)
# | 72: transform.yield
# | 73: }
# | 74: }
# | 75: }
# | 76:
# | dag:108'4 } search range end (exclusive)
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1
--
```
</details>
If these failures are unrelated to your changes (for example tests are broken or flaky at HEAD), please open an issue at https://github.com/llvm/llvm-project/issues and add the `infrastructure` label.
https://github.com/llvm/llvm-project/pull/212974
More information about the Mlir-commits
mailing list