1 // expected-no-diagnostics 2 #ifndef HEADER 3 #define HEADER 4 ///==========================================================================/// 5 // RUN: %clang_cc1 -DCK1 -verify -fopenmp -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -triple powerpc64le-unknown-unknown -emit-llvm %s -o - | FileCheck %s --check-prefix CK1 --check-prefix CK1-64 6 // RUN: %clang_cc1 -DCK1 -fopenmp -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -std=c++11 -triple powerpc64le-unknown-unknown -emit-pch -o %t %s 7 // RUN: %clang_cc1 -fopenmp -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -triple powerpc64le-unknown-unknown -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck %s --check-prefix CK1 --check-prefix CK1-64 8 // RUN: %clang_cc1 -DCK1 -verify -fopenmp -fopenmp-targets=i386-pc-linux-gnu -x c++ -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck %s --check-prefix CK1 --check-prefix CK1-32 9 // RUN: %clang_cc1 -DCK1 -fopenmp -fopenmp-targets=i386-pc-linux-gnu -x c++ -std=c++11 -triple i386-unknown-unknown -emit-pch -o %t %s 10 // RUN: %clang_cc1 -fopenmp -fopenmp-targets=i386-pc-linux-gnu -x c++ -triple i386-unknown-unknown -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck %s --check-prefix CK1 --check-prefix CK1-32 11 12 // RUN: %clang_cc1 -DCK1 -verify -fopenmp-simd -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -triple powerpc64le-unknown-unknown -emit-llvm %s -o - | FileCheck --check-prefix SIMD-ONLY1 %s 13 // RUN: %clang_cc1 -DCK1 -fopenmp-simd -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -std=c++11 -triple powerpc64le-unknown-unknown -emit-pch -o %t %s 14 // RUN: %clang_cc1 -fopenmp-simd -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -triple powerpc64le-unknown-unknown -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck --check-prefix SIMD-ONLY1 %s 15 // RUN: %clang_cc1 -DCK1 -verify -fopenmp-simd -fopenmp-targets=i386-pc-linux-gnu -x c++ -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck --check-prefix SIMD-ONLY1 %s 16 // RUN: %clang_cc1 -DCK1 -fopenmp-simd -fopenmp-targets=i386-pc-linux-gnu -x c++ -std=c++11 -triple i386-unknown-unknown -emit-pch -o %t %s 17 // RUN: %clang_cc1 -fopenmp-simd -fopenmp-targets=i386-pc-linux-gnu -x c++ -triple i386-unknown-unknown -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck --check-prefix SIMD-ONLY1 %s 18 // SIMD-ONLY1-NOT: {{__kmpc|__tgt}} 19 #ifdef CK1 20 21 // CK1: [[MTYPE00:@.+]] = {{.*}}constant [1 x i64] [i64 67] 22 // CK1: [[MTYPE01:@.+]] = {{.*}}constant [1 x i64] [i64 288] 23 // CK1: [[MTYPE02:@.+]] = {{.*}}constant [1 x i64] [i64 288] 24 25 void add_one(float *b, int dm) 26 { 27 // CK1: [[BP:%.+]] = getelementptr inbounds [1 x i8*], [1 x i8*]* %{{.+}}, i32 0, i32 0 28 // CK1: [[CBP:%.+]] = bitcast i8** [[BP]] to float** 29 // CK1: store float* [[B_ADDR:%.+]], float** [[CBP]] 30 // CK1: call void @__tgt_target_data_begin{{.+}}[[MTYPE00]] 31 // CK1: [[VAL:%.+]] = load float*, float** [[CBP]], 32 // CK1-NOT: store float* [[VAL]], float** {{%.+}}, 33 // CK1: store float* [[VAL]], float** [[PVT:%.+]], 34 // CK1: [[TT:%.+]] = load float*, float** [[PVT]], 35 // CK1: call i32 @__tgt_target{{.+}}[[MTYPE01]] 36 // CK1: call i32 @__tgt_target{{.+}}[[MTYPE02]] 37 // CK1: call void @__tgt_target_data_end{{.+}}[[MTYPE00]] 38 #pragma omp target data map(tofrom:b[:1]) use_device_ptr(b) if(dm == 0) 39 { 40 #pragma omp target is_device_ptr(b) 41 { 42 b[0] += 1; 43 } 44 } 45 } 46 47 #endif 48 #endif 49