1// RUN: mlir-opt -convert-scf-to-openmp %s | FileCheck %s 2 3// CHECK-LABEL: @parallel 4func @parallel(%arg0: index, %arg1: index, %arg2: index, 5 %arg3: index, %arg4: index, %arg5: index) { 6 // CHECK: omp.parallel { 7 // CHECK: "omp.wsloop"({{.*}}) ( { 8 scf.parallel (%i, %j) = (%arg0, %arg1) to (%arg2, %arg3) step (%arg4, %arg5) { 9 // CHECK: test.payload 10 "test.payload"(%i, %j) : (index, index) -> () 11 // CHECK: omp.yield 12 // CHECK: } 13 } 14 // CHECK: omp.terminator 15 // CHECK: } 16 return 17} 18 19// CHECK-LABEL: @nested_loops 20func @nested_loops(%arg0: index, %arg1: index, %arg2: index, 21 %arg3: index, %arg4: index, %arg5: index) { 22 // CHECK: omp.parallel { 23 // CHECK: "omp.wsloop"({{.*}}) ( { 24 // CHECK-NOT: omp.parallel 25 scf.parallel (%i) = (%arg0) to (%arg2) step (%arg4) { 26 // CHECK: "omp.wsloop"({{.*}}) ( { 27 scf.parallel (%j) = (%arg1) to (%arg3) step (%arg5) { 28 // CHECK: test.payload 29 "test.payload"(%i, %j) : (index, index) -> () 30 // CHECK: omp.yield 31 // CHECK: } 32 } 33 // CHECK: omp.yield 34 // CHECK: } 35 } 36 // CHECK: omp.terminator 37 // CHECK: } 38 return 39} 40 41func @adjacent_loops(%arg0: index, %arg1: index, %arg2: index, 42 %arg3: index, %arg4: index, %arg5: index) { 43 // CHECK: omp.parallel { 44 // CHECK: "omp.wsloop"({{.*}}) ( { 45 scf.parallel (%i) = (%arg0) to (%arg2) step (%arg4) { 46 // CHECK: test.payload1 47 "test.payload1"(%i) : (index) -> () 48 // CHECK: omp.yield 49 // CHECK: } 50 } 51 // CHECK: omp.terminator 52 // CHECK: } 53 54 // CHECK: omp.parallel { 55 // CHECK: "omp.wsloop"({{.*}}) ( { 56 scf.parallel (%j) = (%arg1) to (%arg3) step (%arg5) { 57 // CHECK: test.payload2 58 "test.payload2"(%j) : (index) -> () 59 // CHECK: omp.yield 60 // CHECK: } 61 } 62 // CHECK: omp.terminator 63 // CHECK: } 64 return 65} 66