@@ -1114,4 +1114,39 @@ extern "C" void acc_combined_data_clauses(int *arg1, int *arg2) {
11141114 // CHECK-NEXT: } loc
11151115 // CHECK-NEXT: acc.delete accPtr(%[[NOCREATE2]] : !cir.ptr<!cir.ptr<!s32i>>) async([#acc.device_type<host>]) {dataClause = #acc<data_clause acc_no_create>, name = "arg2"}
11161116 // CHECK-NEXT: acc.delete accPtr(%[[NOCREATE1]] : !cir.ptr<!cir.ptr<!s32i>>) async([#acc.device_type<host>]) {dataClause = #acc<data_clause acc_no_create>, name = "arg1"}
1117+
1118+ #pragma acc parallel loop present(arg1)
1119+ for (unsigned I = 0 ; I < 5 ; ++I);
1120+ // CHECK-NEXT: %[[NOCREATE1:.*]] = acc.present varPtr(%[[ARG1]] : !cir.ptr<!cir.ptr<!s32i>>) -> !cir.ptr<!cir.ptr<!s32i>> {name = "arg1"}
1121+ // CHECK-NEXT: acc.parallel combined(loop) dataOperands(%[[NOCREATE1]] : !cir.ptr<!cir.ptr<!s32i>>) {
1122+ // CHECK-NEXT: acc.loop combined(parallel) {
1123+ // CHECK: acc.yield
1124+ // CHECK-NEXT: } loc
1125+ // CHECK-NEXT: acc.yield
1126+ // CHECK-NEXT: } loc
1127+ // CHECK-NEXT: acc.delete accPtr(%[[NOCREATE1]] : !cir.ptr<!cir.ptr<!s32i>>) {dataClause = #acc<data_clause acc_present>, name = "arg1"}
1128+
1129+ #pragma acc serial loop present(arg2)
1130+ for (unsigned I = 0 ; I < 5 ; ++I);
1131+ // CHECK-NEXT: %[[NOCREATE2:.*]] = acc.present varPtr(%[[ARG2]] : !cir.ptr<!cir.ptr<!s32i>>) -> !cir.ptr<!cir.ptr<!s32i>> {name = "arg2"}
1132+ // CHECK-NEXT: acc.serial combined(loop) dataOperands(%[[NOCREATE2]] : !cir.ptr<!cir.ptr<!s32i>>) {
1133+ // CHECK-NEXT: acc.loop combined(serial) {
1134+ // CHECK: acc.yield
1135+ // CHECK-NEXT: } loc
1136+ // CHECK-NEXT: acc.yield
1137+ // CHECK-NEXT: } loc
1138+ // CHECK-NEXT: acc.delete accPtr(%[[NOCREATE2]] : !cir.ptr<!cir.ptr<!s32i>>) {dataClause = #acc<data_clause acc_present>, name = "arg2"}
1139+
1140+ #pragma acc kernels loop present(arg1, arg2) device_type(host) async
1141+ for (unsigned I = 0 ; I < 5 ; ++I);
1142+ // CHECK-NEXT: %[[NOCREATE1:.*]] = acc.present varPtr(%[[ARG1]] : !cir.ptr<!cir.ptr<!s32i>>) async([#acc.device_type<host>]) -> !cir.ptr<!cir.ptr<!s32i>> {name = "arg1"}
1143+ // CHECK-NEXT: %[[NOCREATE2:.*]] = acc.present varPtr(%[[ARG2]] : !cir.ptr<!cir.ptr<!s32i>>) async([#acc.device_type<host>]) -> !cir.ptr<!cir.ptr<!s32i>> {name = "arg2"}
1144+ // CHECK-NEXT: acc.kernels combined(loop) dataOperands(%[[NOCREATE1]], %[[NOCREATE2]] : !cir.ptr<!cir.ptr<!s32i>>, !cir.ptr<!cir.ptr<!s32i>>) async([#acc.device_type<host>]) {
1145+ // CHECK-NEXT: acc.loop combined(kernels) {
1146+ // CHECK: acc.yield
1147+ // CHECK-NEXT: } loc
1148+ // CHECK-NEXT: acc.terminator
1149+ // CHECK-NEXT: } loc
1150+ // CHECK-NEXT: acc.delete accPtr(%[[NOCREATE2]] : !cir.ptr<!cir.ptr<!s32i>>) async([#acc.device_type<host>]) {dataClause = #acc<data_clause acc_present>, name = "arg2"}
1151+ // CHECK-NEXT: acc.delete accPtr(%[[NOCREATE1]] : !cir.ptr<!cir.ptr<!s32i>>) async([#acc.device_type<host>]) {dataClause = #acc<data_clause acc_present>, name = "arg1"}
11171152}
0 commit comments