@@ -1011,3 +1011,41 @@ extern "C" void acc_combined(int N, int cond) {
1011
1011
// CHECK-NEXT: acc.terminator
1012
1012
// CHECK-NEXT: } loc
1013
1013
}
1014
+ extern " C" void acc_combined_deviceptr (int *arg1, int *arg2) {
1015
+ // CHECK: cir.func @acc_combined_deviceptr(%[[ARG1_PARAM:.*]]: !cir.ptr<!s32i>{{.*}}, %[[ARG2_PARAM:.*]]: !cir.ptr<!s32i>{{.*}}) {
1016
+ // CHECK-NEXT: %[[ARG1:.*]] = cir.alloca !cir.ptr<!s32i>, !cir.ptr<!cir.ptr<!s32i>>, ["arg1", init]
1017
+ // CHECK-NEXT: %[[ARG2:.*]] = cir.alloca !cir.ptr<!s32i>, !cir.ptr<!cir.ptr<!s32i>>, ["arg2", init]
1018
+ // CHECK-NEXT: cir.store %[[ARG1_PARAM]], %[[ARG1]] : !cir.ptr<!s32i>, !cir.ptr<!cir.ptr<!s32i>>
1019
+ // CHECK-NEXT: cir.store %[[ARG2_PARAM]], %[[ARG2]] : !cir.ptr<!s32i>, !cir.ptr<!cir.ptr<!s32i>>
1020
+
1021
+ #pragma acc parallel loop deviceptr(arg1)
1022
+ for (unsigned I = 0 ; I < 5 ; ++I);
1023
+ // CHECK-NEXT: %[[DEVPTR1:.*]] = acc.deviceptr varPtr(%[[ARG1]] : !cir.ptr<!cir.ptr<!s32i>>) -> !cir.ptr<!cir.ptr<!s32i>> {name = "arg1"}
1024
+ // CHECK-NEXT: acc.parallel combined(loop) dataOperands(%[[DEVPTR1]] : !cir.ptr<!cir.ptr<!s32i>>) {
1025
+ // CHECK-NEXT: acc.loop combined(parallel) {
1026
+ // CHECK: acc.yield
1027
+ // CHECK-NEXT: } loc
1028
+ // CHECK-NEXT: acc.yield
1029
+ // CHECK-NEXT: } loc
1030
+
1031
+ #pragma acc serial loop deviceptr(arg2)
1032
+ for (unsigned I = 0 ; I < 5 ; ++I);
1033
+ // CHECK-NEXT: %[[DEVPTR2:.*]] = acc.deviceptr varPtr(%[[ARG2]] : !cir.ptr<!cir.ptr<!s32i>>) -> !cir.ptr<!cir.ptr<!s32i>> {name = "arg2"}
1034
+ // CHECK-NEXT: acc.serial combined(loop) dataOperands(%[[DEVPTR2]] : !cir.ptr<!cir.ptr<!s32i>>) {
1035
+ // CHECK-NEXT: acc.loop combined(serial) {
1036
+ // CHECK: acc.yield
1037
+ // CHECK-NEXT: } loc
1038
+ // CHECK-NEXT: acc.yield
1039
+ // CHECK-NEXT: } loc
1040
+
1041
+ #pragma acc kernels loop deviceptr(arg1, arg2)
1042
+ for (unsigned I = 0 ; I < 5 ; ++I);
1043
+ // CHECK-NEXT: %[[DEVPTR1:.*]] = acc.deviceptr varPtr(%[[ARG1]] : !cir.ptr<!cir.ptr<!s32i>>) -> !cir.ptr<!cir.ptr<!s32i>> {name = "arg1"}
1044
+ // CHECK-NEXT: %[[DEVPTR2:.*]] = acc.deviceptr varPtr(%[[ARG2]] : !cir.ptr<!cir.ptr<!s32i>>) -> !cir.ptr<!cir.ptr<!s32i>> {name = "arg2"}
1045
+ // CHECK-NEXT: acc.kernels combined(loop) dataOperands(%[[DEVPTR1]], %[[DEVPTR2]] : !cir.ptr<!cir.ptr<!s32i>>, !cir.ptr<!cir.ptr<!s32i>>) {
1046
+ // CHECK-NEXT: acc.loop combined(kernels) {
1047
+ // CHECK: acc.yield
1048
+ // CHECK-NEXT: } loc
1049
+ // CHECK-NEXT: acc.terminator
1050
+ // CHECK-NEXT: } loc
1051
+ }
0 commit comments