blob: e3ed2a2479c15cd9d782f17ab90a0dd54452512c [file] [log] [blame]
Kiran Chandramohan875074c2020-08-13 08:03:041// RUN: mlir-opt -convert-openmp-to-llvm %s -split-input-file | FileCheck %s
2
Kiran Chandramohan187d9f8c2021-09-12 10:13:143// CHECK-LABEL: llvm.func @master_block_arg
4func @master_block_arg() {
5 // CHECK: omp.master
6 omp.master {
7 // CHECK-NEXT: ^[[BB0:.*]](%[[ARG1:.*]]: i64, %[[ARG2:.*]]: i64):
8 ^bb0(%arg1: index, %arg2: index):
9 // CHECK-NEXT: "test.payload"(%[[ARG1]], %[[ARG2]]) : (i64, i64) -> ()
10 "test.payload"(%arg1, %arg2) : (index, index) -> ()
11 omp.terminator
12 }
13 return
14}
15
Kiran Chandramohan875074c2020-08-13 08:03:0416// CHECK-LABEL: llvm.func @branch_loop
17func @branch_loop() {
Mogballa54f4ea2021-10-12 23:14:5718 %start = arith.constant 0 : index
19 %end = arith.constant 0 : index
Kiran Chandramohan875074c2020-08-13 08:03:0420 // CHECK: omp.parallel
21 omp.parallel {
Alex Zinenko2230bf92021-01-06 15:19:0422 // CHECK-NEXT: llvm.br ^[[BB1:.*]](%{{[0-9]+}}, %{{[0-9]+}} : i64, i64
Kiran Chandramohan875074c2020-08-13 08:03:0423 br ^bb1(%start, %end : index, index)
Alex Zinenko2230bf92021-01-06 15:19:0424 // CHECK-NEXT: ^[[BB1]](%[[ARG1:[0-9]+]]: i64, %[[ARG2:[0-9]+]]: i64):{{.*}}
Kiran Chandramohan875074c2020-08-13 08:03:0425 ^bb1(%0: index, %1: index):
Alex Zinenko2230bf92021-01-06 15:19:0426 // CHECK-NEXT: %[[CMP:[0-9]+]] = llvm.icmp "slt" %[[ARG1]], %[[ARG2]] : i64
Mogballa54f4ea2021-10-12 23:14:5727 %2 = arith.cmpi slt, %0, %1 : index
Alex Zinenko2230bf92021-01-06 15:19:0428 // CHECK-NEXT: llvm.cond_br %[[CMP]], ^[[BB2:.*]](%{{[0-9]+}}, %{{[0-9]+}} : i64, i64), ^[[BB3:.*]]
Kiran Chandramohan875074c2020-08-13 08:03:0429 cond_br %2, ^bb2(%end, %end : index, index), ^bb3
Alex Zinenko2230bf92021-01-06 15:19:0430 // CHECK-NEXT: ^[[BB2]](%[[ARG3:[0-9]+]]: i64, %[[ARG4:[0-9]+]]: i64):
Kiran Chandramohan875074c2020-08-13 08:03:0431 ^bb2(%3: index, %4: index):
Alex Zinenko2230bf92021-01-06 15:19:0432 // CHECK-NEXT: llvm.br ^[[BB1]](%[[ARG3]], %[[ARG4]] : i64, i64)
Kiran Chandramohan875074c2020-08-13 08:03:0433 br ^bb1(%3, %4 : index, index)
34 // CHECK-NEXT: ^[[BB3]]:
35 ^bb3:
36 omp.flush
37 omp.barrier
38 omp.taskwait
39 omp.taskyield
40 omp.terminator
41 }
42 return
43}
Alex Zinenkof7d033f2020-11-23 19:45:3044
45// CHECK-LABEL: @wsloop
Alex Zinenko2230bf92021-01-06 15:19:0446// CHECK: (%[[ARG0:.*]]: i64, %[[ARG1:.*]]: i64, %[[ARG2:.*]]: i64, %[[ARG3:.*]]: i64, %[[ARG4:.*]]: i64, %[[ARG5:.*]]: i64)
Alex Zinenkof7d033f2020-11-23 19:45:3047func @wsloop(%arg0: index, %arg1: index, %arg2: index, %arg3: index, %arg4: index, %arg5: index) {
48 // CHECK: omp.parallel
49 omp.parallel {
David Trubyde155f42021-03-17 08:55:4250 // CHECK: omp.wsloop (%[[ARG6:.*]], %[[ARG7:.*]]) : i64 = (%[[ARG0]], %[[ARG1]]) to (%[[ARG2]], %[[ARG3]]) step (%[[ARG4]], %[[ARG5]]) {
Alex Zinenkof7d033f2020-11-23 19:45:3051 "omp.wsloop"(%arg0, %arg1, %arg2, %arg3, %arg4, %arg5) ( {
Alex Zinenkof7d033f2020-11-23 19:45:3052 ^bb0(%arg6: index, %arg7: index): // no predecessors
Alex Zinenko2230bf92021-01-06 15:19:0453 // CHECK: "test.payload"(%[[ARG6]], %[[ARG7]]) : (i64, i64) -> ()
Alex Zinenkof7d033f2020-11-23 19:45:3054 "test.payload"(%arg6, %arg7) : (index, index) -> ()
55 omp.yield
Alex Zinenkoc282d552021-07-08 08:59:0256 }) {operand_segment_sizes = dense<[2, 2, 2, 0, 0, 0, 0, 0, 0, 0]> : vector<10xi32>} : (index, index, index, index, index, index) -> ()
Alex Zinenkof7d033f2020-11-23 19:45:3057 omp.terminator
58 }
59 return
60}