1// RUN: mlir-opt %s -pass-pipeline='func(parallel-loop-collapsing{collapsed-indices-0=0,1}, canonicalize)' | FileCheck %s
2
3// CHECK-LABEL:   func @collapse_to_single() {
4func @collapse_to_single() {
5  // CHECK:           [[VAL_0:%.*]] = constant 7 : index
6  // CHECK:           [[VAL_1:%.*]] = constant 4 : index
7  // CHECK:           [[VAL_2:%.*]] = constant 18 : index
8  // CHECK:           [[VAL_3:%.*]] = constant 3 : index
9  // CHECK:           [[VAL_4:%.*]] = constant 6 : index
10  // CHECK:           [[VAL_5:%.*]] = constant 0 : index
11  // CHECK:           [[VAL_6:%.*]] = constant 1 : index
12  %c0 = constant 3 : index
13  %c1 = constant 7 : index
14  %c2 = constant 11 : index
15  %c3 = constant 29 : index
16  %c4 = constant 3 : index
17  %c5 = constant 4 : index
18  // CHECK:           loop.parallel ([[VAL_7:%.*]]) = ([[VAL_5]]) to ([[VAL_2]]) step ([[VAL_6]]) {
19  loop.parallel (%i0, %i1) = (%c0, %c1) to (%c2, %c3) step (%c4, %c5) {
20    // CHECK:             [[VAL_8:%.*]] = remi_signed [[VAL_7]], [[VAL_3]] : index
21    // CHECK:             [[VAL_9:%.*]] = divi_signed [[VAL_7]], [[VAL_4]] : index
22    // CHECK:             [[VAL_10:%.*]] = muli [[VAL_9]], [[VAL_1]] : index
23    // CHECK:             [[VAL_11:%.*]] = addi [[VAL_10]], [[VAL_0]] : index
24    // CHECK:             [[VAL_12:%.*]] = muli [[VAL_8]], [[VAL_3]] : index
25    // CHECK:             [[VAL_13:%.*]] = addi [[VAL_12]], [[VAL_3]] : index
26    // CHECK:             [[VAL_14:%.*]] = "magic.op"([[VAL_13]], [[VAL_11]]) : (index, index) -> index
27    %result = "magic.op"(%i0, %i1): (index, index) -> index
28  }
29  return
30}
31// CHECK:             loop.yield
32// CHECK:           }
33// CHECK:           return
34// CHECK:         }
35
36
37