xref: /llvm-project/mlir/test/Transforms/invalid-parallel-loop-collapsing.mlir (revision 10056c821a56a19cef732129e4e0c5883ae1ee49)
1// First test various sets of invalid arguments
2// RUN: not mlir-opt -allow-unregistered-dialect %s -pass-pipeline='builtin.module(func.func(test-scf-parallel-loop-collapsing))' 2>&1 | FileCheck %s --check-prefix=CL0
3// CL0: No collapsed-indices were specified. This pass is only for testing and does not automatically collapse all parallel loops or similar
4
5// RUN: not mlir-opt -allow-unregistered-dialect %s -pass-pipeline='builtin.module(func.func(test-scf-parallel-loop-collapsing{collapsed-indices-1=1}))' 2>&1 | FileCheck %s --check-prefix=CL1
6// CL1: collapsed-indices-1 specified but not collapsed-indices-0
7
8// RUN: not mlir-opt -allow-unregistered-dialect %s -pass-pipeline='builtin.module(func.func(test-scf-parallel-loop-collapsing{collapsed-indices-0=1  collapsed-indices-2=2}))' 2>&1 | FileCheck %s --check-prefix=CL2
9// CL2: collapsed-indices-2 specified but not collapsed-indices-1
10
11// RUN: not mlir-opt -allow-unregistered-dialect %s -pass-pipeline='builtin.module(func.func(test-scf-parallel-loop-collapsing{collapsed-indices-0=1  collapsed-indices-1=2}))' 2>&1 | FileCheck %s --check-prefix=NON-ZERO
12// NON-ZERO: collapsed-indices arguments must include all values [0,N).
13
14// RUN: not mlir-opt -allow-unregistered-dialect %s -pass-pipeline='builtin.module(func.func(test-scf-parallel-loop-collapsing{collapsed-indices-0=0  collapsed-indices-1=2}))' 2>&1 | FileCheck %s --check-prefix=NON-CONTIGUOUS
15// NON-CONTIGUOUS: collapsed-indices arguments must include all values [0,N).
16
17
18// Then test for invalid combinations of argument+input-ir
19// RUN: mlir-opt -allow-unregistered-dialect %s -pass-pipeline='builtin.module(func.func(test-scf-parallel-loop-collapsing{collapsed-indices-0=0,1}))' -verify-diagnostics
20func.func @too_few_iters(%arg0: index, %arg1: index, %arg2: index) {
21  // expected-error @+1 {{op has 1 iter args while this limited functionality testing pass was configured only for loops with exactly 2 iter args.}}
22  scf.parallel (%arg3) = (%arg0) to (%arg1) step (%arg2) {
23    scf.reduce
24  }
25  return
26}
27
28func.func @too_many_iters(%arg0: index, %arg1: index, %arg2: index) {
29  // expected-error @+1 {{op has 3 iter args while this limited functionality testing pass was configured only for loops with exactly 2 iter args.}}
30  scf.parallel (%arg3, %arg4, %arg5) = (%arg0, %arg0, %arg0) to (%arg1, %arg1, %arg1) step (%arg2, %arg2, %arg2) {
31    scf.reduce
32  }
33  return
34}
35