Kiran Chandramohan | 875074c | 2020-08-13 08:03:04 | [diff] [blame] | 1 | // RUN: mlir-opt -convert-openmp-to-llvm %s -split-input-file | FileCheck %s |
| 2 | |
Kiran Chandramohan | 187d9f8c | 2021-09-12 10:13:14 | [diff] [blame] | 3 | // CHECK-LABEL: llvm.func @master_block_arg |
| 4 | func @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 Chandramohan | 875074c | 2020-08-13 08:03:04 | [diff] [blame] | 16 | // CHECK-LABEL: llvm.func @branch_loop |
| 17 | func @branch_loop() { |
Mogball | a54f4ea | 2021-10-12 23:14:57 | [diff] [blame^] | 18 | %start = arith.constant 0 : index |
| 19 | %end = arith.constant 0 : index |
Kiran Chandramohan | 875074c | 2020-08-13 08:03:04 | [diff] [blame] | 20 | // CHECK: omp.parallel |
| 21 | omp.parallel { |
Alex Zinenko | 2230bf9 | 2021-01-06 15:19:04 | [diff] [blame] | 22 | // CHECK-NEXT: llvm.br ^[[BB1:.*]](%{{[0-9]+}}, %{{[0-9]+}} : i64, i64 |
Kiran Chandramohan | 875074c | 2020-08-13 08:03:04 | [diff] [blame] | 23 | br ^bb1(%start, %end : index, index) |
Alex Zinenko | 2230bf9 | 2021-01-06 15:19:04 | [diff] [blame] | 24 | // CHECK-NEXT: ^[[BB1]](%[[ARG1:[0-9]+]]: i64, %[[ARG2:[0-9]+]]: i64):{{.*}} |
Kiran Chandramohan | 875074c | 2020-08-13 08:03:04 | [diff] [blame] | 25 | ^bb1(%0: index, %1: index): |
Alex Zinenko | 2230bf9 | 2021-01-06 15:19:04 | [diff] [blame] | 26 | // CHECK-NEXT: %[[CMP:[0-9]+]] = llvm.icmp "slt" %[[ARG1]], %[[ARG2]] : i64 |
Mogball | a54f4ea | 2021-10-12 23:14:57 | [diff] [blame^] | 27 | %2 = arith.cmpi slt, %0, %1 : index |
Alex Zinenko | 2230bf9 | 2021-01-06 15:19:04 | [diff] [blame] | 28 | // CHECK-NEXT: llvm.cond_br %[[CMP]], ^[[BB2:.*]](%{{[0-9]+}}, %{{[0-9]+}} : i64, i64), ^[[BB3:.*]] |
Kiran Chandramohan | 875074c | 2020-08-13 08:03:04 | [diff] [blame] | 29 | cond_br %2, ^bb2(%end, %end : index, index), ^bb3 |
Alex Zinenko | 2230bf9 | 2021-01-06 15:19:04 | [diff] [blame] | 30 | // CHECK-NEXT: ^[[BB2]](%[[ARG3:[0-9]+]]: i64, %[[ARG4:[0-9]+]]: i64): |
Kiran Chandramohan | 875074c | 2020-08-13 08:03:04 | [diff] [blame] | 31 | ^bb2(%3: index, %4: index): |
Alex Zinenko | 2230bf9 | 2021-01-06 15:19:04 | [diff] [blame] | 32 | // CHECK-NEXT: llvm.br ^[[BB1]](%[[ARG3]], %[[ARG4]] : i64, i64) |
Kiran Chandramohan | 875074c | 2020-08-13 08:03:04 | [diff] [blame] | 33 | 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 Zinenko | f7d033f | 2020-11-23 19:45:30 | [diff] [blame] | 44 | |
| 45 | // CHECK-LABEL: @wsloop |
Alex Zinenko | 2230bf9 | 2021-01-06 15:19:04 | [diff] [blame] | 46 | // CHECK: (%[[ARG0:.*]]: i64, %[[ARG1:.*]]: i64, %[[ARG2:.*]]: i64, %[[ARG3:.*]]: i64, %[[ARG4:.*]]: i64, %[[ARG5:.*]]: i64) |
Alex Zinenko | f7d033f | 2020-11-23 19:45:30 | [diff] [blame] | 47 | func @wsloop(%arg0: index, %arg1: index, %arg2: index, %arg3: index, %arg4: index, %arg5: index) { |
| 48 | // CHECK: omp.parallel |
| 49 | omp.parallel { |
David Truby | de155f4 | 2021-03-17 08:55:42 | [diff] [blame] | 50 | // CHECK: omp.wsloop (%[[ARG6:.*]], %[[ARG7:.*]]) : i64 = (%[[ARG0]], %[[ARG1]]) to (%[[ARG2]], %[[ARG3]]) step (%[[ARG4]], %[[ARG5]]) { |
Alex Zinenko | f7d033f | 2020-11-23 19:45:30 | [diff] [blame] | 51 | "omp.wsloop"(%arg0, %arg1, %arg2, %arg3, %arg4, %arg5) ( { |
Alex Zinenko | f7d033f | 2020-11-23 19:45:30 | [diff] [blame] | 52 | ^bb0(%arg6: index, %arg7: index): // no predecessors |
Alex Zinenko | 2230bf9 | 2021-01-06 15:19:04 | [diff] [blame] | 53 | // CHECK: "test.payload"(%[[ARG6]], %[[ARG7]]) : (i64, i64) -> () |
Alex Zinenko | f7d033f | 2020-11-23 19:45:30 | [diff] [blame] | 54 | "test.payload"(%arg6, %arg7) : (index, index) -> () |
| 55 | omp.yield |
Alex Zinenko | c282d55 | 2021-07-08 08:59:02 | [diff] [blame] | 56 | }) {operand_segment_sizes = dense<[2, 2, 2, 0, 0, 0, 0, 0, 0, 0]> : vector<10xi32>} : (index, index, index, index, index, index) -> () |
Alex Zinenko | f7d033f | 2020-11-23 19:45:30 | [diff] [blame] | 57 | omp.terminator |
| 58 | } |
| 59 | return |
| 60 | } |