76 lines · cpp
1// RUN: %clang_cc1 -verify -fopenmp -x c++ -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu -emit-llvm %s -o - | FileCheck %s --check-prefix HOST2// RUN: %clang_cc1 -verify -fopenmp -x c++ -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu -emit-llvm-bc %s -o %t-ppc-host.bc3// RUN: %clang_cc1 -verify -fopenmp -x c++ -triple powerpc64le-unknown-unknown -emit-llvm %s -fopenmp-is-target-device -fopenmp-host-ir-file-path %t-ppc-host.bc -o - | FileCheck %s --check-prefix DEVICE4 5// RUN: %clang_cc1 -verify -fopenmp -x c++ -triple i386-pc-linux-gnu -fopenmp-targets=i386-pc-linux-gnu -emit-llvm %s -o - | FileCheck %s --check-prefix HOST6// RUN: %clang_cc1 -verify -fopenmp -x c++ -triple i386-pc-linux-gnu -fopenmp-targets=i386-pc-linux-gnu -emit-llvm-bc %s -o %t-i386-host.bc7// RUN: %clang_cc1 -verify -fopenmp -x c++ -triple i386-pc-linux-gnu -emit-llvm %s -fopenmp-is-target-device -fopenmp-host-ir-file-path %t-i386-host.bc -o - | FileCheck %s --check-prefix DEVICE8 9// RUN: %clang_cc1 -verify -fopenmp -x c++ -triple x86_64-unknown-linux-gnu -fopenmp-targets=x86_64-unknown-linux-gnu -emit-llvm %s -o - | FileCheck %s --check-prefix HOST10// RUN: %clang_cc1 -verify -fopenmp -x c++ -triple x86_64-unknown-linux-gnu -fopenmp-targets=x86_64-unknown-linux-gnu -emit-llvm-bc %s -o %t-x86_64-host.bc11// RUN: %clang_cc1 -verify -fopenmp -x c++ -triple x86_64-unknown-linux-gnu -emit-llvm %s -fopenmp-is-target-device -fopenmp-host-ir-file-path %t-x86_64-host.bc -o - | FileCheck %s --check-prefix DEVICE12 13// expected-no-diagnostics14 15#pragma omp declare target16#pragma omp begin declare variant match(device = {kind(nohost)})17int G1;18static int G2;19#pragma omp end declare variant20#pragma omp end declare target21 22#pragma omp begin declare target device_type(nohost)23int G3;24static int G4;25#pragma omp end declare target26 27#pragma omp declare target28int G5;29static int G6;30#pragma omp end declare target31 32#pragma omp declare target to(G5, G6) device_type(nohost)33 34#pragma omp begin declare target device_type(host)35int G7;36static int G8;37#pragma omp end declare target38 39#pragma omp declare target40int G9;41static int G10;42#pragma omp end declare target43 44int G11;45static int G12;46#pragma omp declare target to(G9, G10, G11, G12) device_type(host)47 48// TODO: The code below should probably work but it is not 100% clear.49#if 050#pragma omp declare target51#pragma omp begin declare variant match(device = {kind(host)})52int GX;53static int GY;54#pragma omp end declare variant55#pragma omp end declare target56#endif57 58// TODO: It is odd, probably wrong, that we don't mangle all variables.59 60// DEVICE-DAG: @G1 = {{.*}}global i32 0, align 461// DEVICE-DAG: @_ZL2G2 = internal {{.*}}global i32 0, align 462// DEVICE-DAG: @G3 = {{.*}}global i32 0, align 463// DEVICE-DAG: @_ZL2G4 = internal {{.*}}global i32 0, align 464// DEVICE-DAG: @G5 = {{.*}}global i32 0, align 465// DEVICE-DAG: @_ZL2G6 = internal {{.*}}global i32 0, align 466// DEVICE-NOT: ref67// DEVICE-NOT: llvm.used68// DEVICE-NOT: omp_offload69 70// HOST-DAG: @G7 = global i32 0, align 471// HOST-DAG: @_ZL2G8 = internal global i32 0, align 472// HOST-DAG: @G9 = global i32 0, align 473// HOST-DAG: @_ZL3G10 = internal global i32 0, align 474// HOST-DAG: @G11 = global i32 0, align 475// HOST-DAG: @_ZL3G12 = internal global i32 0, align 476