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