brintos

brintos / llvm-project-archived public Read only

0
0
Text · 23.2 KiB · f5c5176 Raw
417 lines · cpp
1// expected-no-diagnostics2#ifndef HEADER3#define HEADER4 5///==========================================================================///6// RUN: %clang_cc1 -DCK22 -verify -fopenmp -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -triple powerpc64le-unknown-unknown -emit-llvm %s -o - | FileCheck -allow-deprecated-dag-overlap  %s --check-prefix CK22 --check-prefix CK22-647// RUN: %clang_cc1 -DCK22 -fopenmp -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -std=c++11 -triple powerpc64le-unknown-unknown -emit-pch -o %t %s8// 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 -allow-deprecated-dag-overlap  %s  --check-prefix CK22 --check-prefix CK22-649// RUN: %clang_cc1 -DCK22 -verify -fopenmp -fopenmp-targets=i386-pc-linux-gnu -x c++ -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck -allow-deprecated-dag-overlap  %s  --check-prefix CK22 --check-prefix CK22-3210// RUN: %clang_cc1 -DCK22 -fopenmp -fopenmp-targets=i386-pc-linux-gnu -x c++ -std=c++11 -triple i386-unknown-unknown -emit-pch -o %t %s11// 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 -allow-deprecated-dag-overlap  %s  --check-prefix CK22 --check-prefix CK22-3212 13// RUN: %clang_cc1 -DCK22 -verify -fopenmp -fopenmp-version=45 -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -triple powerpc64le-unknown-unknown -emit-llvm %s -o - | FileCheck -allow-deprecated-dag-overlap  %s --check-prefix CK22 --check-prefix CK22-6414// RUN: %clang_cc1 -DCK22 -fopenmp -fopenmp-version=45 -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -std=c++11 -triple powerpc64le-unknown-unknown -emit-pch -o %t %s15// RUN: %clang_cc1 -fopenmp -fopenmp-version=45 -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -triple powerpc64le-unknown-unknown -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck -allow-deprecated-dag-overlap  %s  --check-prefix CK22 --check-prefix CK22-6416// RUN: %clang_cc1 -DCK22 -verify -fopenmp -fopenmp-version=45 -fopenmp-targets=i386-pc-linux-gnu -x c++ -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck -allow-deprecated-dag-overlap  %s  --check-prefix CK22 --check-prefix CK22-3217// RUN: %clang_cc1 -DCK22 -fopenmp -fopenmp-version=45 -fopenmp-targets=i386-pc-linux-gnu -x c++ -std=c++11 -triple i386-unknown-unknown -emit-pch -o %t %s18// RUN: %clang_cc1 -fopenmp -fopenmp-version=45 -fopenmp-targets=i386-pc-linux-gnu -x c++ -triple i386-unknown-unknown -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck -allow-deprecated-dag-overlap  %s  --check-prefix CK22 --check-prefix CK22-3219 20// RUN: %clang_cc1 -DCK22 -verify -fopenmp -fopenmp-version=50 -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -triple powerpc64le-unknown-unknown -emit-llvm %s -o - | FileCheck -allow-deprecated-dag-overlap  %s --check-prefix CK22 --check-prefix CK22-6421// RUN: %clang_cc1 -DCK22 -fopenmp -fopenmp-version=50 -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -std=c++11 -triple powerpc64le-unknown-unknown -emit-pch -o %t %s22// RUN: %clang_cc1 -fopenmp -fopenmp-version=50 -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -triple powerpc64le-unknown-unknown -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck -allow-deprecated-dag-overlap  %s  --check-prefix CK22 --check-prefix CK22-6423// RUN: %clang_cc1 -DCK22 -verify -fopenmp -fopenmp-version=50 -fopenmp-targets=i386-pc-linux-gnu -x c++ -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck -allow-deprecated-dag-overlap  %s  --check-prefix CK22 --check-prefix CK22-3224// RUN: %clang_cc1 -DCK22 -fopenmp -fopenmp-version=50 -fopenmp-targets=i386-pc-linux-gnu -x c++ -std=c++11 -triple i386-unknown-unknown -emit-pch -o %t %s25// RUN: %clang_cc1 -fopenmp -fopenmp-version=50 -fopenmp-targets=i386-pc-linux-gnu -x c++ -triple i386-unknown-unknown -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck -allow-deprecated-dag-overlap  %s  --check-prefix CK22 --check-prefix CK22-3226 27// RUN: %clang_cc1 -DCK22 -verify -fopenmp-simd -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -triple powerpc64le-unknown-unknown -emit-llvm %s -o - | FileCheck -allow-deprecated-dag-overlap  --check-prefix SIMD-ONLY21 %s28// RUN: %clang_cc1 -DCK22 -fopenmp-simd -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ -std=c++11 -triple powerpc64le-unknown-unknown -emit-pch -o %t %s29// 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 -allow-deprecated-dag-overlap  --check-prefix SIMD-ONLY21 %s30// RUN: %clang_cc1 -DCK22 -verify -fopenmp-simd -fopenmp-targets=i386-pc-linux-gnu -x c++ -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck -allow-deprecated-dag-overlap  --check-prefix SIMD-ONLY21 %s31// RUN: %clang_cc1 -DCK22 -fopenmp-simd -fopenmp-targets=i386-pc-linux-gnu -x c++ -std=c++11 -triple i386-unknown-unknown -emit-pch -o %t %s32// 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 -allow-deprecated-dag-overlap  --check-prefix SIMD-ONLY21 %s33// SIMD-ONLY21-NOT: {{__kmpc|__tgt}}34#ifdef CK2235 36// CK22-DAG: [[ST:%.+]] = type { float }37// CK22-DAG: [[STT:%.+]] = type { i32 }38 39// CK22-LABEL: @.__omp_offloading_{{.*}}explicit_maps_globals{{.*}}_l{{[0-9]+}}.region_id = weak constant i8 040// CK22: [[SIZE00:@.+]] = private {{.*}}constant [1 x i64] [i64 4]41// CK22: [[MTYPE00:@.+]] = private {{.*}}constant [1 x i64] [i64 35]42 43// CK22-LABEL: @.__omp_offloading_{{.*}}explicit_maps_globals{{.*}}_l{{[0-9]+}}.region_id = weak constant i8 044// CK22: [[SIZE01:@.+]] = private {{.*}}constant [1 x i64] [i64 400]45// CK22: [[MTYPE01:@.+]] = private {{.*}}constant [1 x i64] [i64 35]46 47// CK22-LABEL: @.__omp_offloading_{{.*}}explicit_maps_globals{{.*}}_l{{[0-9]+}}.region_id = weak constant i8 048// CK22: [[SIZE02:@.+]] = private {{.*}}constant [1 x i64] [i64 {{8|4}}]49// CK22: [[MTYPE02:@.+]] = private {{.*}}constant [1 x i64] [i64 35]50 51// CK22-LABEL: @.__omp_offloading_{{.*}}explicit_maps_globals{{.*}}_l{{[0-9]+}}.region_id = weak constant i8 052// CK22: [[SIZE03:@.+]] = private {{.*}}constant [1 x i64] [i64 16]53// CK22: [[MTYPE03:@.+]] = private {{.*}}constant [1 x i64] [i64 35]54 55// CK22-LABEL: @.__omp_offloading_{{.*}}explicit_maps_globals{{.*}}_l{{[0-9]+}}.region_id = weak constant i8 056// CK22: [[SIZE04:@.+]] = private {{.*}}constant [1 x i64] [i64 20]57// CK22: [[MTYPE04:@.+]] = private {{.*}}constant [1 x i64] [i64 51]58 59// CK22-LABEL: @.__omp_offloading_{{.*}}explicit_maps_globals{{.*}}_l{{[0-9]+}}.region_id = weak constant i8 060// CK22: [[SIZE05:@.+]] = private {{.*}}constant [1 x i64] [i64 4]61// CK22: [[MTYPE05:@.+]] = private {{.*}}constant [1 x i64] [i64 35]62 63// CK22-LABEL: @.__omp_offloading_{{.*}}explicit_maps_globals{{.*}}_l{{[0-9]+}}.region_id = weak constant i8 064// CK22: [[SIZE06:@.+]] = private {{.*}}constant [1 x i64] [i64 400]65// CK22: [[MTYPE06:@.+]] = private {{.*}}constant [1 x i64] [i64 35]66 67// CK22-LABEL: @.__omp_offloading_{{.*}}explicit_maps_globals{{.*}}_l{{[0-9]+}}.region_id = weak constant i8 068// CK22: [[SIZE07:@.+]] = private {{.*}}constant [1 x i64] [i64 {{8|4}}]69// CK22: [[MTYPE07:@.+]] = private {{.*}}constant [1 x i64] [i64 35]70 71// CK22-LABEL: @.__omp_offloading_{{.*}}explicit_maps_globals{{.*}}_l{{[0-9]+}}.region_id = weak constant i8 072// CK22: [[SIZE08:@.+]] = private {{.*}}constant [1 x i64] [i64 16]73// CK22: [[MTYPE08:@.+]] = private {{.*}}constant [1 x i64] [i64 35]74 75// CK22-LABEL: @.__omp_offloading_{{.*}}explicit_maps_globals{{.*}}_l{{[0-9]+}}.region_id = weak constant i8 076// CK22: [[SIZE09:@.+]] = private {{.*}}constant [1 x i64] [i64 20]77// CK22: [[MTYPE09:@.+]] = private {{.*}}constant [1 x i64] [i64 51]78 79// CK22-LABEL: @.__omp_offloading_{{.*}}explicit_maps_globals{{.*}}_l{{[0-9]+}}.region_id = weak constant i8 080// CK22: [[SIZE10:@.+]] = private {{.*}}constant [1 x i64] [i64 4]81// CK22: [[MTYPE10:@.+]] = private {{.*}}constant [1 x i64] [i64 35]82 83// CK22-LABEL: @.__omp_offloading_{{.*}}explicit_maps_globals{{.*}}_l{{[0-9]+}}.region_id = weak constant i8 084// CK22: [[SIZE11:@.+]] = private {{.*}}constant [1 x i64] [i64 400]85// CK22: [[MTYPE11:@.+]] = private {{.*}}constant [1 x i64] [i64 35]86 87// CK22-LABEL: @.__omp_offloading_{{.*}}explicit_maps_globals{{.*}}_l{{[0-9]+}}.region_id = weak constant i8 088// CK22: [[SIZE12:@.+]] = private {{.*}}constant [1 x i64] [i64 {{8|4}}]89// CK22: [[MTYPE12:@.+]] = private {{.*}}constant [1 x i64] [i64 35]90 91// CK22-LABEL: @.__omp_offloading_{{.*}}explicit_maps_globals{{.*}}_l{{[0-9]+}}.region_id = weak constant i8 092// CK22: [[SIZE13:@.+]] = private {{.*}}constant [1 x i64] [i64 16]93// CK22: [[MTYPE13:@.+]] = private {{.*}}constant [1 x i64] [i64 35]94 95// CK22-LABEL: @.__omp_offloading_{{.*}}explicit_maps_globals{{.*}}_l{{[0-9]+}}.region_id = weak constant i8 096// CK22: [[SIZE14:@.+]] = private {{.*}}constant [1 x i64] [i64 20]97// CK22: [[MTYPE14:@.+]] = private {{.*}}constant [1 x i64] [i64 51]98 99int a;100int c[100];101int *d;102 103struct ST {104  float fa;105};106 107ST sa ;108ST sc[100];109ST *sd;110 111template<typename T>112struct STT {113  T fa;114};115 116STT<int> sta ;117STT<int> stc[100];118STT<int> *std;119 120// CK22-LABEL: explicit_maps_globals{{.*}}(121int explicit_maps_globals(void){122// Region 00123// CK22-DAG: call i32 @__tgt_target_kernel(ptr @{{.+}}, i64 -1, i32 -1, i32 0, ptr @.{{.+}}.region_id, ptr [[ARGS:%.+]])124// CK22-DAG: [[BPARG:%.+]] = getelementptr inbounds {{.+}}[[ARGS]], i32 0, i32 2125// CK22-DAG: store ptr [[BPGEP:%.+]], ptr [[BPARG]]126// CK22-DAG: [[PARG:%.+]] = getelementptr inbounds {{.+}}[[ARGS]], i32 0, i32 3127// CK22-DAG: store ptr [[PGEP:%.+]], ptr [[PARG]]128// CK22-DAG: [[BPGEP]] = getelementptr inbounds {{.+}}[[BP:%[^,]+]]129// CK22-DAG: [[PGEP]] = getelementptr inbounds {{.+}}[[P:%[^,]+]]130 131// CK22-DAG: [[BP0:%.+]] = getelementptr inbounds {{.+}}[[BP]], i{{.+}} 0, i{{.+}} 0132// CK22-DAG: [[P0:%.+]] = getelementptr inbounds {{.+}}[[P]], i{{.+}} 0, i{{.+}} 0133// CK22-DAG: store ptr @a, ptr [[BP0]]134// CK22-DAG: store ptr @a, ptr [[P0]]135 136// CK22: call void [[CALL00:@.+]](ptr {{[^,]+}})137#pragma omp target map(a)138  { a+=1; }139 140// Region 01141// CK22-DAG: call i32 @__tgt_target_kernel(ptr @{{.+}}, i64 -1, i32 -1, i32 0, ptr @.{{.+}}.region_id, ptr [[ARGS:%.+]])142// CK22-DAG: [[BPARG:%.+]] = getelementptr inbounds {{.+}}[[ARGS]], i32 0, i32 2143// CK22-DAG: store ptr [[BPGEP:%.+]], ptr [[BPARG]]144// CK22-DAG: [[PARG:%.+]] = getelementptr inbounds {{.+}}[[ARGS]], i32 0, i32 3145// CK22-DAG: store ptr [[PGEP:%.+]], ptr [[PARG]]146// CK22-DAG: [[BPGEP]] = getelementptr inbounds {{.+}}[[BP:%[^,]+]]147// CK22-DAG: [[PGEP]] = getelementptr inbounds {{.+}}[[P:%[^,]+]]148 149// CK22-DAG: [[BP0:%.+]] = getelementptr inbounds {{.+}}[[BP]], i{{.+}} 0, i{{.+}} 0150// CK22-DAG: [[P0:%.+]] = getelementptr inbounds {{.+}}[[P]], i{{.+}} 0, i{{.+}} 0151// CK22-DAG: store ptr @c, ptr [[BP0]]152// CK22-DAG: store ptr @c, ptr [[P0]]153 154// CK22: call void [[CALL01:@.+]](ptr {{[^,]+}})155#pragma omp target map(c)156  { c[3]+=1; }157 158// Region 02159// CK22-DAG: call i32 @__tgt_target_kernel(ptr @{{.+}}, i64 -1, i32 -1, i32 0, ptr @.{{.+}}.region_id, ptr [[ARGS:%.+]])160// CK22-DAG: [[BPARG:%.+]] = getelementptr inbounds {{.+}}[[ARGS]], i32 0, i32 2161// CK22-DAG: store ptr [[BPGEP:%.+]], ptr [[BPARG]]162// CK22-DAG: [[PARG:%.+]] = getelementptr inbounds {{.+}}[[ARGS]], i32 0, i32 3163// CK22-DAG: store ptr [[PGEP:%.+]], ptr [[PARG]]164// CK22-DAG: [[BPGEP]] = getelementptr inbounds {{.+}}[[BP:%[^,]+]]165// CK22-DAG: [[PGEP]] = getelementptr inbounds {{.+}}[[P:%[^,]+]]166 167// CK22-DAG: [[BP0:%.+]] = getelementptr inbounds {{.+}}[[BP]], i{{.+}} 0, i{{.+}} 0168// CK22-DAG: [[P0:%.+]] = getelementptr inbounds {{.+}}[[P]], i{{.+}} 0, i{{.+}} 0169// CK22-DAG: store ptr @d, ptr [[BP0]]170// CK22-DAG: store ptr @d, ptr [[P0]]171 172// CK22: call void [[CALL02:@.+]](ptr {{[^,]+}})173#pragma omp target map(d)174  { d[3]+=1; }175 176// Region 03177// CK22-DAG: call i32 @__tgt_target_kernel(ptr @{{.+}}, i64 -1, i32 -1, i32 0, ptr @.{{.+}}.region_id, ptr [[ARGS:%.+]])178// CK22-DAG: [[BPARG:%.+]] = getelementptr inbounds {{.+}}[[ARGS]], i32 0, i32 2179// CK22-DAG: store ptr [[BPGEP:%.+]], ptr [[BPARG]]180// CK22-DAG: [[PARG:%.+]] = getelementptr inbounds {{.+}}[[ARGS]], i32 0, i32 3181// CK22-DAG: store ptr [[PGEP:%.+]], ptr [[PARG]]182// CK22-DAG: [[BPGEP]] = getelementptr inbounds {{.+}}[[BP:%[^,]+]]183// CK22-DAG: [[PGEP]] = getelementptr inbounds {{.+}}[[P:%[^,]+]]184 185// CK22-DAG: [[BP0:%.+]] = getelementptr inbounds {{.+}}[[BP]], i{{.+}} 0, i{{.+}} 0186// CK22-DAG: [[P0:%.+]] = getelementptr inbounds {{.+}}[[P]], i{{.+}} 0, i{{.+}} 0187// CK22-DAG: store ptr @c, ptr [[BP0]]188// CK22-DAG: store ptr getelementptr inbounds nuw ([100 x i32], ptr @c, i{{.+}} 0, i{{.+}} 1), ptr [[P0]]189 190// CK22: call void [[CALL03:@.+]](ptr {{[^,]+}})191#pragma omp target map(c [1:4])192  { c[3]+=1; }193 194// Region 04195// CK22-DAG: call i32 @__tgt_target_kernel(ptr @{{.+}}, i64 -1, i32 -1, i32 0, ptr @.{{.+}}.region_id, ptr [[ARGS:%.+]])196// CK22-DAG: [[BPARG:%.+]] = getelementptr inbounds {{.+}}[[ARGS]], i32 0, i32 2197// CK22-DAG: store ptr [[BPGEP:%.+]], ptr [[BPARG]]198// CK22-DAG: [[PARG:%.+]] = getelementptr inbounds {{.+}}[[ARGS]], i32 0, i32 3199// CK22-DAG: store ptr [[PGEP:%.+]], ptr [[PARG]]200// CK22-DAG: [[BPGEP]] = getelementptr inbounds {{.+}}[[BP:%[^,]+]]201// CK22-DAG: [[PGEP]] = getelementptr inbounds {{.+}}[[P:%[^,]+]]202 203// CK22-DAG: [[BP0:%.+]] = getelementptr inbounds {{.+}}[[BP]], i{{.+}} 0, i{{.+}} 0204// CK22-DAG: [[P0:%.+]] = getelementptr inbounds {{.+}}[[P]], i{{.+}} 0, i{{.+}} 0205// CK22-DAG: store ptr @d, ptr [[BP0]]206// CK22-DAG: store ptr [[SEC0:%.+]], ptr [[P0]]207// CK22-DAG: [[SEC0]] = getelementptr {{.*}}ptr [[RVAR00:%.+]], i{{.+}} 2208// CK22-DAG: [[RVAR00]] = load ptr, ptr @d209 210// CK22: call void [[CALL04:@.+]](ptr {{[^,]+}})211#pragma omp target map(d [2:5])212  { d[3]+=1; }213 214// Region 05215// CK22-DAG: call i32 @__tgt_target_kernel(ptr @{{.+}}, i64 -1, i32 -1, i32 0, ptr @.{{.+}}.region_id, ptr [[ARGS:%.+]])216// CK22-DAG: [[BPARG:%.+]] = getelementptr inbounds {{.+}}[[ARGS]], i32 0, i32 2217// CK22-DAG: store ptr [[BPGEP:%.+]], ptr [[BPARG]]218// CK22-DAG: [[PARG:%.+]] = getelementptr inbounds {{.+}}[[ARGS]], i32 0, i32 3219// CK22-DAG: store ptr [[PGEP:%.+]], ptr [[PARG]]220// CK22-DAG: [[BPGEP]] = getelementptr inbounds {{.+}}[[BP:%[^,]+]]221// CK22-DAG: [[PGEP]] = getelementptr inbounds {{.+}}[[P:%[^,]+]]222 223// CK22-DAG: [[BP0:%.+]] = getelementptr inbounds {{.+}}[[BP]], i{{.+}} 0, i{{.+}} 0224// CK22-DAG: [[P0:%.+]] = getelementptr inbounds {{.+}}[[P]], i{{.+}} 0, i{{.+}} 0225// CK22-DAG: store ptr @sa, ptr [[BP0]]226// CK22-DAG: store ptr @sa, ptr [[P0]]227 228// CK22: call void [[CALL05:@.+]](ptr {{[^,]+}})229#pragma omp target map(sa)230  { sa.fa+=1; }231 232// Region 06233// CK22-DAG: call i32 @__tgt_target_kernel(ptr @{{.+}}, i64 -1, i32 -1, i32 0, ptr @.{{.+}}.region_id, ptr [[ARGS:%.+]])234// CK22-DAG: [[BPARG:%.+]] = getelementptr inbounds {{.+}}[[ARGS]], i32 0, i32 2235// CK22-DAG: store ptr [[BPGEP:%.+]], ptr [[BPARG]]236// CK22-DAG: [[PARG:%.+]] = getelementptr inbounds {{.+}}[[ARGS]], i32 0, i32 3237// CK22-DAG: store ptr [[PGEP:%.+]], ptr [[PARG]]238// CK22-DAG: [[BPGEP]] = getelementptr inbounds {{.+}}[[BP:%[^,]+]]239// CK22-DAG: [[PGEP]] = getelementptr inbounds {{.+}}[[P:%[^,]+]]240 241// CK22-DAG: [[BP0:%.+]] = getelementptr inbounds {{.+}}[[BP]], i{{.+}} 0, i{{.+}} 0242// CK22-DAG: [[P0:%.+]] = getelementptr inbounds {{.+}}[[P]], i{{.+}} 0, i{{.+}} 0243// CK22-DAG: store ptr @sc, ptr [[BP0]]244// CK22-DAG: store ptr @sc, ptr [[P0]]245 246// CK22: call void [[CALL06:@.+]](ptr {{[^,]+}})247#pragma omp target map(sc)248  { sc[3].fa+=1; }249 250// Region 07251// CK22-DAG: call i32 @__tgt_target_kernel(ptr @{{.+}}, i64 -1, i32 -1, i32 0, ptr @.{{.+}}.region_id, ptr [[ARGS:%.+]])252// CK22-DAG: [[BPARG:%.+]] = getelementptr inbounds {{.+}}[[ARGS]], i32 0, i32 2253// CK22-DAG: store ptr [[BPGEP:%.+]], ptr [[BPARG]]254// CK22-DAG: [[PARG:%.+]] = getelementptr inbounds {{.+}}[[ARGS]], i32 0, i32 3255// CK22-DAG: store ptr [[PGEP:%.+]], ptr [[PARG]]256// CK22-DAG: [[BPGEP]] = getelementptr inbounds {{.+}}[[BP:%[^,]+]]257// CK22-DAG: [[PGEP]] = getelementptr inbounds {{.+}}[[P:%[^,]+]]258 259// CK22-DAG: [[BP0:%.+]] = getelementptr inbounds {{.+}}[[BP]], i{{.+}} 0, i{{.+}} 0260// CK22-DAG: [[P0:%.+]] = getelementptr inbounds {{.+}}[[P]], i{{.+}} 0, i{{.+}} 0261// CK22-DAG: store ptr @sd, ptr [[BP0]]262// CK22-DAG: store ptr @sd, ptr [[P0]]263 264// CK22: call void [[CALL07:@.+]](ptr {{[^,]+}})265#pragma omp target map(sd)266  { sd[3].fa+=1; }267 268// Region 08269// CK22-DAG: call i32 @__tgt_target_kernel(ptr @{{.+}}, i64 -1, i32 -1, i32 0, ptr @.{{.+}}.region_id, ptr [[ARGS:%.+]])270// CK22-DAG: [[BPARG:%.+]] = getelementptr inbounds {{.+}}[[ARGS]], i32 0, i32 2271// CK22-DAG: store ptr [[BPGEP:%.+]], ptr [[BPARG]]272// CK22-DAG: [[PARG:%.+]] = getelementptr inbounds {{.+}}[[ARGS]], i32 0, i32 3273// CK22-DAG: store ptr [[PGEP:%.+]], ptr [[PARG]]274// CK22-DAG: [[BPGEP]] = getelementptr inbounds {{.+}}[[BP:%[^,]+]]275// CK22-DAG: [[PGEP]] = getelementptr inbounds {{.+}}[[P:%[^,]+]]276 277// CK22-DAG: [[BP0:%.+]] = getelementptr inbounds {{.+}}[[BP]], i{{.+}} 0, i{{.+}} 0278// CK22-DAG: [[P0:%.+]] = getelementptr inbounds {{.+}}[[P]], i{{.+}} 0, i{{.+}} 0279// CK22-DAG: store ptr @sc, ptr [[BP0]]280// CK22-DAG: store ptr getelementptr inbounds nuw ([100 x [[ST]]], ptr @sc, i{{.+}} 0, i{{.+}} 1), ptr [[P0]]281 282// CK22: call void [[CALL08:@.+]](ptr {{[^,]+}})283#pragma omp target map(sc [1:4])284  { sc[3].fa+=1; }285 286// Region 09287// CK22-DAG: call i32 @__tgt_target_kernel(ptr @{{.+}}, i64 -1, i32 -1, i32 0, ptr @.{{.+}}.region_id, ptr [[ARGS:%.+]])288// CK22-DAG: [[BPARG:%.+]] = getelementptr inbounds {{.+}}[[ARGS]], i32 0, i32 2289// CK22-DAG: store ptr [[BPGEP:%.+]], ptr [[BPARG]]290// CK22-DAG: [[PARG:%.+]] = getelementptr inbounds {{.+}}[[ARGS]], i32 0, i32 3291// CK22-DAG: store ptr [[PGEP:%.+]], ptr [[PARG]]292// CK22-DAG: [[BPGEP]] = getelementptr inbounds {{.+}}[[BP:%[^,]+]]293// CK22-DAG: [[PGEP]] = getelementptr inbounds {{.+}}[[P:%[^,]+]]294 295// CK22-DAG: [[BP0:%.+]] = getelementptr inbounds {{.+}}[[BP]], i{{.+}} 0, i{{.+}} 0296// CK22-DAG: [[P0:%.+]] = getelementptr inbounds {{.+}}[[P]], i{{.+}} 0, i{{.+}} 0297// CK22-DAG: store ptr @sd, ptr [[BP0]]298// CK22-DAG: store ptr [[SEC0:%.+]], ptr [[P0]]299// CK22-DAG: [[SEC0]] = getelementptr {{.*}}ptr [[RVAR00:%.+]], i{{.+}} 2300// CK22-DAG: [[RVAR00]] = load ptr, ptr @sd301 302// CK22: call void [[CALL09:@.+]](ptr {{[^,]+}})303#pragma omp target map(sd [2:5])304  { sd[3].fa+=1; }305 306// Region 10307// CK22-DAG: call i32 @__tgt_target_kernel(ptr @{{.+}}, i64 -1, i32 -1, i32 0, ptr @.{{.+}}.region_id, ptr [[ARGS:%.+]])308// CK22-DAG: [[BPARG:%.+]] = getelementptr inbounds {{.+}}[[ARGS]], i32 0, i32 2309// CK22-DAG: store ptr [[BPGEP:%.+]], ptr [[BPARG]]310// CK22-DAG: [[PARG:%.+]] = getelementptr inbounds {{.+}}[[ARGS]], i32 0, i32 3311// CK22-DAG: store ptr [[PGEP:%.+]], ptr [[PARG]]312// CK22-DAG: [[BPGEP]] = getelementptr inbounds {{.+}}[[BP:%[^,]+]]313// CK22-DAG: [[PGEP]] = getelementptr inbounds {{.+}}[[P:%[^,]+]]314 315// CK22-DAG: [[BP0:%.+]] = getelementptr inbounds {{.+}}[[BP]], i{{.+}} 0, i{{.+}} 0316// CK22-DAG: [[P0:%.+]] = getelementptr inbounds {{.+}}[[P]], i{{.+}} 0, i{{.+}} 0317// CK22-DAG: store ptr @sta, ptr [[BP0]]318// CK22-DAG: store ptr @sta, ptr [[P0]]319 320// CK22: call void [[CALL10:@.+]](ptr {{[^,]+}})321#pragma omp target map(sta)322  { sta.fa+=1; }323 324// Region 11325// CK22-DAG: call i32 @__tgt_target_kernel(ptr @{{.+}}, i64 -1, i32 -1, i32 0, ptr @.{{.+}}.region_id, ptr [[ARGS:%.+]])326// CK22-DAG: [[BPARG:%.+]] = getelementptr inbounds {{.+}}[[ARGS]], i32 0, i32 2327// CK22-DAG: store ptr [[BPGEP:%.+]], ptr [[BPARG]]328// CK22-DAG: [[PARG:%.+]] = getelementptr inbounds {{.+}}[[ARGS]], i32 0, i32 3329// CK22-DAG: store ptr [[PGEP:%.+]], ptr [[PARG]]330// CK22-DAG: [[BPGEP]] = getelementptr inbounds {{.+}}[[BP:%[^,]+]]331// CK22-DAG: [[PGEP]] = getelementptr inbounds {{.+}}[[P:%[^,]+]]332 333// CK22-DAG: [[BP0:%.+]] = getelementptr inbounds {{.+}}[[BP]], i{{.+}} 0, i{{.+}} 0334// CK22-DAG: [[P0:%.+]] = getelementptr inbounds {{.+}}[[P]], i{{.+}} 0, i{{.+}} 0335// CK22-DAG: store ptr @stc, ptr [[BP0]]336// CK22-DAG: store ptr @stc, ptr [[P0]]337 338// CK22: call void [[CALL11:@.+]](ptr {{[^,]+}})339#pragma omp target map(stc)340  { stc[3].fa+=1; }341 342// Region 12343// CK22-DAG: call i32 @__tgt_target_kernel(ptr @{{.+}}, i64 -1, i32 -1, i32 0, ptr @.{{.+}}.region_id, ptr [[ARGS:%.+]])344// CK22-DAG: [[BPARG:%.+]] = getelementptr inbounds {{.+}}[[ARGS]], i32 0, i32 2345// CK22-DAG: store ptr [[BPGEP:%.+]], ptr [[BPARG]]346// CK22-DAG: [[PARG:%.+]] = getelementptr inbounds {{.+}}[[ARGS]], i32 0, i32 3347// CK22-DAG: store ptr [[PGEP:%.+]], ptr [[PARG]]348// CK22-DAG: [[BPGEP]] = getelementptr inbounds {{.+}}[[BP:%[^,]+]]349// CK22-DAG: [[PGEP]] = getelementptr inbounds {{.+}}[[P:%[^,]+]]350 351// CK22-DAG: [[BP0:%.+]] = getelementptr inbounds {{.+}}[[BP]], i{{.+}} 0, i{{.+}} 0352// CK22-DAG: [[P0:%.+]] = getelementptr inbounds {{.+}}[[P]], i{{.+}} 0, i{{.+}} 0353// CK22-DAG: store ptr @std, ptr [[BP0]]354// CK22-DAG: store ptr @std, ptr [[P0]]355 356// CK22: call void [[CALL12:@.+]](ptr {{[^,]+}})357#pragma omp target map(std)358  { std[3].fa+=1; }359 360// Region 13361// CK22-DAG: call i32 @__tgt_target_kernel(ptr @{{.+}}, i64 -1, i32 -1, i32 0, ptr @.{{.+}}.region_id, ptr [[ARGS:%.+]])362// CK22-DAG: [[BPARG:%.+]] = getelementptr inbounds {{.+}}[[ARGS]], i32 0, i32 2363// CK22-DAG: store ptr [[BPGEP:%.+]], ptr [[BPARG]]364// CK22-DAG: [[PARG:%.+]] = getelementptr inbounds {{.+}}[[ARGS]], i32 0, i32 3365// CK22-DAG: store ptr [[PGEP:%.+]], ptr [[PARG]]366// CK22-DAG: [[BPGEP]] = getelementptr inbounds {{.+}}[[BP:%[^,]+]]367// CK22-DAG: [[PGEP]] = getelementptr inbounds {{.+}}[[P:%[^,]+]]368 369// CK22-DAG: [[BP0:%.+]] = getelementptr inbounds {{.+}}[[BP]], i{{.+}} 0, i{{.+}} 0370// CK22-DAG: [[P0:%.+]] = getelementptr inbounds {{.+}}[[P]], i{{.+}} 0, i{{.+}} 0371// CK22-DAG: store ptr @stc, ptr [[BP0]]372// CK22-DAG: store ptr getelementptr inbounds nuw ([100 x [[STT]]], ptr @stc, i{{.+}} 0, i{{.+}} 1),  ptr [[P0]]373 374// CK22: call void [[CALL13:@.+]](ptr {{[^,]+}})375#pragma omp target map(stc [1:4])376  { stc[3].fa+=1; }377 378// Region 14379// CK22-DAG: call i32 @__tgt_target_kernel(ptr @{{.+}}, i64 -1, i32 -1, i32 0, ptr @.{{.+}}.region_id, ptr [[ARGS:%.+]])380// CK22-DAG: [[BPARG:%.+]] = getelementptr inbounds {{.+}}[[ARGS]], i32 0, i32 2381// CK22-DAG: store ptr [[BPGEP:%.+]], ptr [[BPARG]]382// CK22-DAG: [[PARG:%.+]] = getelementptr inbounds {{.+}}[[ARGS]], i32 0, i32 3383// CK22-DAG: store ptr [[PGEP:%.+]], ptr [[PARG]]384// CK22-DAG: [[BPGEP]] = getelementptr inbounds {{.+}}[[BP:%[^,]+]]385// CK22-DAG: [[PGEP]] = getelementptr inbounds {{.+}}[[P:%[^,]+]]386 387// CK22-DAG: [[BP0:%.+]] = getelementptr inbounds {{.+}}[[BP]], i{{.+}} 0, i{{.+}} 0388// CK22-DAG: [[P0:%.+]] = getelementptr inbounds {{.+}}[[P]], i{{.+}} 0, i{{.+}} 0389// CK22-DAG: store ptr @std, ptr [[BP0]]390// CK22-DAG: store ptr [[SEC0:%.+]], ptr [[P0]]391// CK22-DAG: [[SEC0]] = getelementptr {{.*}}ptr [[RVAR00:%.+]], i{{.+}} 2392// CK22-DAG: [[RVAR00]] = load ptr, ptr @std393 394// CK22: call void [[CALL14:@.+]](ptr {{[^,]+}})395#pragma omp target map(std [2:5])396  { std[3].fa+=1; }397 398  return 0;399}400// CK22: define {{.+}}[[CALL00]]401// CK22: define {{.+}}[[CALL01]]402// CK22: define {{.+}}[[CALL02]]403// CK22: define {{.+}}[[CALL03]]404// CK22: define {{.+}}[[CALL04]]405// CK22: define {{.+}}[[CALL05]]406// CK22: define {{.+}}[[CALL06]]407// CK22: define {{.+}}[[CALL07]]408// CK22: define {{.+}}[[CALL08]]409// CK22: define {{.+}}[[CALL09]]410// CK22: define {{.+}}[[CALL10]]411// CK22: define {{.+}}[[CALL11]]412// CK22: define {{.+}}[[CALL12]]413// CK22: define {{.+}}[[CALL13]]414// CK22: define {{.+}}[[CALL14]]415#endif // CK22416#endif417