@@ -1114,4 +1114,39 @@ extern "C" void acc_combined_data_clauses(int *arg1, int *arg2) {
1114
1114
// CHECK-NEXT: } loc
1115
1115
// 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"}
1116
1116
// 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"}
1117
1152
}
0 commit comments