brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.1 KiB · 706ad44 Raw
69 lines · plain
1// RUN: mlir-translate -mlir-to-llvmir %s | FileCheck %s2 3module attributes {omp.is_target_device = false, omp.target_triples = ["amdgcn-amd-amdhsa"]} {4  llvm.func @target_if_variable(%x : i1) {5    omp.target if(%x) {6      omp.terminator7    }8    llvm.return9  }10 11  // CHECK-LABEL: define void @target_if_variable(12  // CHECK-SAME: i1 %[[IF_COND:.*]])13  // CHECK: br i1 %[[IF_COND]], label %[[THEN_LABEL:.*]], label %[[ELSE_LABEL:.*]]14 15  // CHECK: [[THEN_LABEL]]:16  // CHECK-NOT: {{^.*}}:17  // CHECK: %[[RC:.*]] = call i32 @__tgt_target_kernel18  // CHECK-NEXT: %[[OFFLOAD_SUCCESS:.*]] = icmp ne i32 %[[RC]], 019  // CHECK-NEXT: br i1 %[[OFFLOAD_SUCCESS]], label %[[OFFLOAD_FAIL_LABEL:.*]], label %[[OFFLOAD_CONT_LABEL:.*]]20 21  // CHECK: [[OFFLOAD_FAIL_LABEL]]:22  // CHECK-NEXT: call void @[[FALLBACK_FN:__omp_offloading_.*_.*_target_if_variable_l.*]]()23  // CHECK-NEXT: br label %[[OFFLOAD_CONT_LABEL]]24 25  // CHECK: [[OFFLOAD_CONT_LABEL]]:26  // CHECK-NEXT: br label %[[END_LABEL:.*]]27 28  // CHECK: [[ELSE_LABEL]]:29  // CHECK-NEXT: call void @[[FALLBACK_FN]]()30  // CHECK-NEXT: br label %[[END_LABEL]]31 32  llvm.func @target_if_true() {33    %0 = llvm.mlir.constant(true) : i134    omp.target if(%0) {35      omp.terminator36    }37    llvm.return38  }39 40  // CHECK-LABEL: define void @target_if_true()41  // CHECK-NOT: {{^.*}}:42  // CHECK: br label %[[ENTRY:.*]]43 44  // CHECK: [[ENTRY]]:45  // CHECK-NOT: {{^.*}}:46  // CHECK: %[[RC:.*]] = call i32 @__tgt_target_kernel47  // CHECK-NEXT: %[[OFFLOAD_SUCCESS:.*]] = icmp ne i32 %[[RC]], 048  // CHECK-NEXT: br i1 %[[OFFLOAD_SUCCESS]], label %[[OFFLOAD_FAIL_LABEL:.*]], label %[[OFFLOAD_CONT_LABEL:.*]]49 50  // CHECK: [[OFFLOAD_FAIL_LABEL]]:51  // CHECK-NEXT: call void @[[FALLBACK_FN:.*]]()52  // CHECK-NEXT: br label %[[OFFLOAD_CONT_LABEL]]53 54  llvm.func @target_if_false() {55    %0 = llvm.mlir.constant(false) : i156    omp.target if(%0) {57      omp.terminator58    }59    llvm.return60  }61 62  // CHECK-LABEL: define void @target_if_false()63  // CHECK-NEXT: br label %[[ENTRY:.*]]64 65  // CHECK: [[ENTRY]]:66  // CHECK-NEXT: call void @__omp_offloading_{{.*}}_{{.*}}_target_if_false_l{{.*}}()67}68 69