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