@@ -134,4 +134,46 @@ extern "C" void acc_combined(int N) {
134134 // CHECK: acc.terminator
135135 // CHECK-NEXT: } loc
136136
137+ #pragma acc parallel loop collapse(1) device_type(radeon)
138+ for (unsigned I = 0 ; I < N; ++I)
139+ for (unsigned J = 0 ; J < N; ++J)
140+ for (unsigned K = 0 ; K < N; ++K);
141+ // CHECK: acc.parallel combined(loop) {
142+ // CHECK: acc.loop combined(parallel) {
143+ // CHECK: acc.yield
144+ // CHECK-NEXT: } attributes {collapse = [1], collapseDeviceType = [#acc.device_type<none>]}
145+ // CHECK: acc.yield
146+ // CHECK-NEXT: } loc
147+
148+ #pragma acc serial loop collapse(1) device_type(radeon) collapse (2)
149+ for (unsigned I = 0 ; I < N; ++I)
150+ for (unsigned J = 0 ; J < N; ++J)
151+ for (unsigned K = 0 ; K < N; ++K);
152+ // CHECK: acc.serial combined(loop) {
153+ // CHECK: acc.loop combined(serial) {
154+ // CHECK: acc.yield
155+ // CHECK-NEXT: } attributes {collapse = [1, 2], collapseDeviceType = [#acc.device_type<none>, #acc.device_type<radeon>]}
156+ // CHECK: acc.yield
157+ // CHECK-NEXT: } loc
158+
159+ #pragma acc kernels loop collapse(1) device_type(radeon, nvidia) collapse (2)
160+ for (unsigned I = 0 ; I < N; ++I)
161+ for (unsigned J = 0 ; J < N; ++J)
162+ for (unsigned K = 0 ; K < N; ++K);
163+ // CHECK: acc.kernels combined(loop) {
164+ // CHECK: acc.loop combined(kernels) {
165+ // CHECK: acc.yield
166+ // CHECK-NEXT: } attributes {collapse = [1, 2, 2], collapseDeviceType = [#acc.device_type<none>, #acc.device_type<radeon>, #acc.device_type<nvidia>]}
167+ // CHECK: acc.terminator
168+ // CHECK-NEXT: } loc
169+ #pragma acc parallel loop collapse(1) device_type(radeon, nvidia) collapse(2) device_type(host) collapse(3)
170+ for (unsigned I = 0 ; I < N; ++I)
171+ for (unsigned J = 0 ; J < N; ++J)
172+ for (unsigned K = 0 ; K < N; ++K);
173+ // CHECK: acc.parallel combined(loop) {
174+ // CHECK: acc.loop combined(parallel) {
175+ // CHECK: acc.yield
176+ // CHECK-NEXT: } attributes {collapse = [1, 2, 2, 3], collapseDeviceType = [#acc.device_type<none>, #acc.device_type<radeon>, #acc.device_type<nvidia>, #acc.device_type<host>]}
177+ // CHECK: acc.yield
178+ // CHECK-NEXT: } loc
137179}
0 commit comments