xref: /llvm-project/clang/test/AST/ast-print-openacc-data-construct.cpp (revision bfc2dbe02e00f0023c0a2d58b53cdbd1f4139f02)
1010d0115Serichkeane // RUN: %clang_cc1 -fopenacc -Wno-openacc-deprecated-clause-alias -Wno-source-uses-openacc -ast-print %s -o - | FileCheck %s
2010d0115Serichkeane 
3010d0115Serichkeane void foo() {
4010d0115Serichkeane   int Var;
5010d0115Serichkeane   // TODO OpenACC: These are only legal if they have one of a list of clauses on
6010d0115Serichkeane   // them, so the 'check' lines should start to include those once we implement
7010d0115Serichkeane   // them.  For now, they don't emit those because they are 'not implemented'.
8010d0115Serichkeane 
950488088Serichkeane // CHECK: #pragma acc data default(none)
10010d0115Serichkeane #pragma acc data default(none)
11010d0115Serichkeane   ;
128eec301fSerichkeane 
13*bfc2dbe0Serichkeane // CHECK: #pragma acc data default(none) device_type(int)
14*bfc2dbe0Serichkeane #pragma acc data default(none) device_type(int)
158eec301fSerichkeane   ;
168eec301fSerichkeane 
17b2b1eec2Serichkeane // CHECK: #pragma acc enter data copyin(Var)
18010d0115Serichkeane #pragma acc enter data copyin(Var)
19010d0115Serichkeane   ;
201da0730bSerichkeane // CHECK: #pragma acc exit data copyout(Var)
21010d0115Serichkeane #pragma acc exit data copyout(Var)
22010d0115Serichkeane   ;
23fbb14dd9Serichkeane // CHECK: #pragma acc host_data use_device(Var)
24010d0115Serichkeane #pragma acc host_data use_device(Var)
25010d0115Serichkeane   ;
266cfad635Serichkeane 
276cfad635Serichkeane   int i;
28afcb7d4aSerichkeane   int *iPtr;
296cfad635Serichkeane   int array[5];
306cfad635Serichkeane 
3150488088Serichkeane // CHECK: #pragma acc data default(none) if(i == array[1])
326cfad635Serichkeane #pragma acc data default(none) if(i == array[1])
336cfad635Serichkeane   ;
34b2b1eec2Serichkeane // CHECK: #pragma acc enter data copyin(Var) if(i == array[1])
356cfad635Serichkeane #pragma acc enter data copyin(Var) if(i == array[1])
366cfad635Serichkeane   ;
371da0730bSerichkeane // CHECK: #pragma acc exit data copyout(Var) if(i == array[1])
386cfad635Serichkeane #pragma acc exit data copyout(Var) if(i == array[1])
396cfad635Serichkeane   ;
40fbb14dd9Serichkeane // CHECK: #pragma acc host_data use_device(Var) if(i == array[1])
416cfad635Serichkeane #pragma acc host_data use_device(Var) if(i == array[1])
426cfad635Serichkeane   ;
43f0f8434aSerichkeane 
4450488088Serichkeane // CHECK: #pragma acc data default(none) async(i)
45f0f8434aSerichkeane #pragma acc data default(none) async(i)
46f0f8434aSerichkeane   ;
47b2b1eec2Serichkeane // CHECK: #pragma acc enter data copyin(i) async(i)
48f0f8434aSerichkeane #pragma acc enter data copyin(i) async(i)
491da0730bSerichkeane // CHECK: #pragma acc exit data copyout(i) async
50f0f8434aSerichkeane #pragma acc exit data copyout(i) async
51afcb7d4aSerichkeane 
5250488088Serichkeane // CHECK: #pragma acc data default(none) wait
53afcb7d4aSerichkeane #pragma acc data default(none) wait()
54afcb7d4aSerichkeane   ;
55afcb7d4aSerichkeane 
56b2b1eec2Serichkeane // CHECK: #pragma acc enter data copyin(Var) wait()
57afcb7d4aSerichkeane #pragma acc enter data copyin(Var) wait()
58afcb7d4aSerichkeane 
591da0730bSerichkeane // CHECK: #pragma acc exit data copyout(Var) wait(*iPtr, i)
60afcb7d4aSerichkeane #pragma acc exit data copyout(Var) wait(*iPtr, i)
61afcb7d4aSerichkeane 
6250488088Serichkeane // CHECK: #pragma acc data default(none) wait(queues: *iPtr, i)
63afcb7d4aSerichkeane #pragma acc data default(none) wait(queues:*iPtr, i)
64afcb7d4aSerichkeane   ;
65afcb7d4aSerichkeane 
66b2b1eec2Serichkeane // CHECK: #pragma acc enter data copyin(Var) wait(devnum: i : *iPtr, i)
67afcb7d4aSerichkeane #pragma acc enter data copyin(Var) wait(devnum:i:*iPtr, i)
68afcb7d4aSerichkeane 
691da0730bSerichkeane // CHECK: #pragma acc exit data copyout(Var) wait(devnum: i : queues: *iPtr, i)
70afcb7d4aSerichkeane #pragma acc exit data copyout(Var) wait(devnum:i:queues:*iPtr, i)
7150488088Serichkeane 
7250488088Serichkeane // CHECK: #pragma acc data default(none)
7350488088Serichkeane #pragma acc data default(none)
7450488088Serichkeane   ;
7550488088Serichkeane 
7650488088Serichkeane // CHECK: #pragma acc data default(present)
7750488088Serichkeane #pragma acc data default(present)
7850488088Serichkeane   ;
79b2b1eec2Serichkeane 
80b2b1eec2Serichkeane // CHECK: #pragma acc data default(none) no_create(i, array[1], array, array[1:2])
81b2b1eec2Serichkeane #pragma acc data default(none) no_create(i, array[1], array, array[1:2])
82b2b1eec2Serichkeane   ;
83b2b1eec2Serichkeane 
84331f3cc9Serichkeane // CHECK: #pragma acc data default(none) no_create(i, array[1], array, array[1:2]) present(i, array[1], array, array[1:2])
85b2b1eec2Serichkeane #pragma acc data default(none) no_create(i, array[1], array, array[1:2]) present(i, array[1], array, array[1:2])
86b2b1eec2Serichkeane   ;
87331f3cc9Serichkeane // CHECK: #pragma acc data present(i, array[1], array, array[1:2])
88331f3cc9Serichkeane #pragma acc data present(i, array[1], array, array[1:2])
89331f3cc9Serichkeane   ;
90b2b1eec2Serichkeane 
91b2b1eec2Serichkeane // 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(i, array[1], array, array[1:2])
92b2b1eec2Serichkeane #pragma acc data default(none) copy(i, array[1], array, array[1:2]) pcopy(i, array[1], array, array[1:2]) present_or_copy(i, array[1], array, array[1:2])
93b2b1eec2Serichkeane   ;
94b2b1eec2Serichkeane 
95b2b1eec2Serichkeane // 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])
96b2b1eec2Serichkeane #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])
97b2b1eec2Serichkeane 
981da0730bSerichkeane // 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])
99b2b1eec2Serichkeane #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])
100b2b1eec2Serichkeane 
101b2b1eec2Serichkeane // 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])
102b2b1eec2Serichkeane #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])
103754499c1Serichkeane 
104754499c1Serichkeane   float *arrayPtr[5];
105754499c1Serichkeane 
106754499c1Serichkeane // CHECK: #pragma acc data default(none) deviceptr(iPtr, arrayPtr[0])
107754499c1Serichkeane #pragma acc data default(none) deviceptr(iPtr, arrayPtr[0])
1086d69d184Serichkeane 
1096d69d184Serichkeane // CHECK: #pragma acc data default(none) attach(iPtr, arrayPtr[0])
1106d69d184Serichkeane #pragma acc data default(none) attach(iPtr, arrayPtr[0])
111754499c1Serichkeane   ;
112003eb5e8Serichkeane 
113003eb5e8Serichkeane // CHECK: #pragma acc exit data copyout(i) finalize
114003eb5e8Serichkeane #pragma acc exit data copyout(i) finalize
1152244d2e7Serichkeane 
116fbb14dd9Serichkeane // CHECK: #pragma acc host_data use_device(i) if_present
1172244d2e7Serichkeane #pragma acc host_data use_device(i) if_present
1182244d2e7Serichkeane   ;
1193351b3bfSerichkeane // CHECK: #pragma acc exit data copyout(i) detach(iPtr, arrayPtr[0])
1203351b3bfSerichkeane #pragma acc exit data copyout(i) detach(iPtr, arrayPtr[0])
1213351b3bfSerichkeane 
1221ab81f8eSerichkeane // CHECK: #pragma acc exit data copyout(i) delete(i, array[1], array, array[1:2])
1231ab81f8eSerichkeane #pragma acc exit data copyout(i) delete(i, array[1], array, array[1:2])
1241ab81f8eSerichkeane   ;
1251ab81f8eSerichkeane 
1261ab81f8eSerichkeane // CHECK: #pragma acc exit data copyout(i) delete(i, array[1], array, array[1:2])
1271ab81f8eSerichkeane #pragma acc exit data copyout(i) delete(i, array[1], array, array[1:2])
128fbb14dd9Serichkeane 
129fbb14dd9Serichkeane // CHECK: #pragma acc host_data use_device(i)
130fbb14dd9Serichkeane #pragma acc host_data use_device(i)
131fbb14dd9Serichkeane   ;
132010d0115Serichkeane }
133