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