brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.1 KiB · 98c7850 Raw
129 lines · cpp
1// RUN: %clang_cc1 -fopenacc -Wno-openacc-deprecated-clause-alias -Wno-source-uses-openacc -ast-print %s -o - | FileCheck %s2 3void foo() {4  int Var;5// CHECK: #pragma acc data default(none)6#pragma acc data default(none)7  ;8 9// CHECK: #pragma acc data default(none) device_type(radeon)10#pragma acc data default(none) device_type(radeon)11  ;12 13// CHECK: #pragma acc enter data copyin(Var)14#pragma acc enter data copyin(Var)15  ;16// CHECK: #pragma acc exit data copyout(always, zero: Var)17#pragma acc exit data copyout(zero, always: Var)18  ;19// CHECK: #pragma acc host_data use_device(Var)20#pragma acc host_data use_device(Var)21  ;22 23  int i;24  int *iPtr;25  int array[5];26 27// CHECK: #pragma acc data default(none) if(i == array[1])28#pragma acc data default(none) if(i == array[1])29  ;30// CHECK: #pragma acc enter data copyin(Var) if(i == array[1])31#pragma acc enter data copyin(Var) if(i == array[1])32  ;33// CHECK: #pragma acc exit data copyout(Var) if(i == array[1])34#pragma acc exit data copyout(Var) if(i == array[1])35  ;36// CHECK: #pragma acc host_data use_device(Var) if(i == array[1])37#pragma acc host_data use_device(Var) if(i == array[1])38  ;39 40// CHECK: #pragma acc data default(none) async(i)41#pragma acc data default(none) async(i)42  ;43// CHECK: #pragma acc enter data copyin(always: i) async(i)44#pragma acc enter data copyin(always: i) async(i)45// CHECK: #pragma acc exit data copyout(i) async46#pragma acc exit data copyout(i) async47 48// CHECK: #pragma acc data default(none) wait49#pragma acc data default(none) wait50  ;51 52// CHECK: #pragma acc enter data copyin(Var) wait53#pragma acc enter data copyin(Var) wait54 55// CHECK: #pragma acc exit data copyout(always, zero: Var) wait(*iPtr, i)56#pragma acc exit data copyout(always, zero: Var) wait(*iPtr, i)57 58// CHECK: #pragma acc data default(none) wait(queues: *iPtr, i)59#pragma acc data default(none) wait(queues:*iPtr, i)60  ;61 62// CHECK: #pragma acc enter data copyin(Var) wait(devnum: i : *iPtr, i)63#pragma acc enter data copyin(Var) wait(devnum:i:*iPtr, i)64 65// CHECK: #pragma acc exit data copyout(Var) wait(devnum: i : queues: *iPtr, i)66#pragma acc exit data copyout(Var) wait(devnum:i:queues:*iPtr, i)67 68// CHECK: #pragma acc data default(none)69#pragma acc data default(none)70  ;71 72// CHECK: #pragma acc data default(present)73#pragma acc data default(present)74  ;75 76// CHECK: #pragma acc data default(none) no_create(i, array[1], array, array[1:2])77#pragma acc data default(none) no_create(i, array[1], array, array[1:2])78  ;79 80// CHECK: #pragma acc data default(none) no_create(i, array[1], array, array[1:2]) present(i, array[1], array, array[1:2])81#pragma acc data default(none) no_create(i, array[1], array, array[1:2]) present(i, array[1], array, array[1:2])82  ;83// CHECK: #pragma acc data present(i, array[1], array, array[1:2])84#pragma acc data present(i, array[1], array, array[1:2])85  ;86 87// CHECK: #pragma acc data default(none) copy(i, array[1], array, array[1:2]) pcopy(i, array[1], array, array[1:2]) present_or_copy(alwaysin, alwaysout: i, array[1], array, array[1:2])88#pragma acc data default(none) copy(i, array[1], array, array[1:2]) pcopy(i, array[1], array, array[1:2]) present_or_copy(alwaysin, alwaysout: i, array[1], array, array[1:2])89  ;90 91// CHECK: #pragma acc enter data copyin(i, array[1], array, array[1:2]) pcopyin(readonly: i, array[1], array, array[1:2]) present_or_copyin(i, array[1], array, array[1:2])92#pragma acc enter data copyin(i, array[1], array, array[1:2]) pcopyin(readonly:i, array[1], array, array[1:2]) present_or_copyin(i, array[1], array, array[1:2])93 94// CHECK: #pragma acc exit data copyout(i, array[1], array, array[1:2]) pcopyout(zero: i, array[1], array, array[1:2]) present_or_copyout(i, array[1], array, array[1:2])95#pragma acc exit data copyout(i, array[1], array, array[1:2]) pcopyout(zero: i, array[1], array, array[1:2]) present_or_copyout(i, array[1], array, array[1:2])96 97// CHECK: #pragma acc enter data create(i, array[1], array, array[1:2]) pcreate(zero: i, array[1], array, array[1:2]) present_or_create(i, array[1], array, array[1:2])98#pragma acc enter data create(i, array[1], array, array[1:2]) pcreate(zero: i, array[1], array, array[1:2]) present_or_create(i, array[1], array, array[1:2])99 100  float *arrayPtr[5];101 102// CHECK: #pragma acc data default(none) deviceptr(iPtr, arrayPtr[0])103#pragma acc data default(none) deviceptr(iPtr, arrayPtr[0])104 105// CHECK: #pragma acc data default(none) attach(iPtr, arrayPtr[0])106#pragma acc data default(none) attach(iPtr, arrayPtr[0])107  ;108 109// CHECK: #pragma acc exit data copyout(i) finalize110#pragma acc exit data copyout(i) finalize111 112// CHECK: #pragma acc host_data use_device(i) if_present113#pragma acc host_data use_device(i) if_present114  ;115// CHECK: #pragma acc exit data copyout(i) detach(iPtr, arrayPtr[0])116#pragma acc exit data copyout(i) detach(iPtr, arrayPtr[0])117 118// CHECK: #pragma acc exit data copyout(i) delete(i, array[1], array, array[1:2])119#pragma acc exit data copyout(i) delete(i, array[1], array, array[1:2])120  ;121 122// CHECK: #pragma acc exit data copyout(i) delete(i, array[1], array, array[1:2])123#pragma acc exit data copyout(i) delete(i, array[1], array, array[1:2])124 125// CHECK: #pragma acc host_data use_device(i)126#pragma acc host_data use_device(i)127  ;128}129