1330d8983SJohannes Doerfert // clang-format off 2330d8983SJohannes Doerfert // RUN: %libomptarget-compile-generic 3330d8983SJohannes Doerfert // RUN: env LIBOMPTARGET_INFO=16 \ 4330d8983SJohannes Doerfert // RUN: %libomptarget-run-generic 2>&1 | %fcheck-generic --check-prefix=DEFAULT 5*3c8efd79SJohannes Doerfert // RUN: %libomptarget-compile-generic -g 6*3c8efd79SJohannes Doerfert // RUN: env LIBOMPTARGET_INFO=16 \ 7*3c8efd79SJohannes Doerfert // RUN: %libomptarget-run-generic 2>&1 | %fcheck-generic --check-prefix=DEFAULT 8330d8983SJohannes Doerfert 988234488SEthan Luis McDonough // REQUIRES: amdgpu 10330d8983SJohannes Doerfert 11330d8983SJohannes Doerfert __attribute__((optnone)) int optnone() { return 1; } 12330d8983SJohannes Doerfert 13330d8983SJohannes Doerfert int main() { 14330d8983SJohannes Doerfert int N = optnone() * 4098 * 32; 15330d8983SJohannes Doerfert 16330d8983SJohannes Doerfert // DEFAULT: [[NT:(128|256)]] (MaxFlatWorkGroupSize: [[NT]] 17330d8983SJohannes Doerfert #pragma omp target teams distribute parallel for simd 18330d8983SJohannes Doerfert for (int i = 0; i < N; ++i) { 19330d8983SJohannes Doerfert optnone(); 20330d8983SJohannes Doerfert } 21330d8983SJohannes Doerfert // DEFAULT: [[NT:(128|256)]] (MaxFlatWorkGroupSize: [[NT]] 22330d8983SJohannes Doerfert #pragma omp target teams distribute parallel for simd 23330d8983SJohannes Doerfert for (int i = 0; i < N; ++i) { 24330d8983SJohannes Doerfert optnone(); 25330d8983SJohannes Doerfert } 26330d8983SJohannes Doerfert // DEFAULT: [[NT:(128|256)]] (MaxFlatWorkGroupSize: [[NT]] 27330d8983SJohannes Doerfert #pragma omp target teams distribute parallel for simd 28330d8983SJohannes Doerfert for (int i = 0; i < N; ++i) { 29330d8983SJohannes Doerfert optnone(); 30330d8983SJohannes Doerfert } 31330d8983SJohannes Doerfert // DEFAULT: [[NT:(128|256)]] (MaxFlatWorkGroupSize: [[NT]] 32330d8983SJohannes Doerfert #pragma omp target 33330d8983SJohannes Doerfert #pragma omp teams distribute parallel for 34330d8983SJohannes Doerfert for (int i = 0; i < N; ++i) { 35330d8983SJohannes Doerfert optnone(); 36330d8983SJohannes Doerfert } 37330d8983SJohannes Doerfert // DEFAULT: 42 (MaxFlatWorkGroupSize: 1024 38330d8983SJohannes Doerfert #pragma omp target thread_limit(optnone() * 42) 39330d8983SJohannes Doerfert #pragma omp teams distribute parallel for 40330d8983SJohannes Doerfert for (int i = 0; i < N; ++i) { 41330d8983SJohannes Doerfert optnone(); 42330d8983SJohannes Doerfert } 43330d8983SJohannes Doerfert // DEFAULT: 42 (MaxFlatWorkGroupSize: 42 44330d8983SJohannes Doerfert #pragma omp target thread_limit(optnone() * 42) ompx_attribute(__attribute__((amdgpu_flat_work_group_size(42, 42)))) 45330d8983SJohannes Doerfert #pragma omp teams distribute parallel for 46330d8983SJohannes Doerfert for (int i = 0; i < N; ++i) { 47330d8983SJohannes Doerfert optnone(); 48330d8983SJohannes Doerfert } 49330d8983SJohannes Doerfert // DEFAULT: 42 (MaxFlatWorkGroupSize: 42 50330d8983SJohannes Doerfert #pragma omp target ompx_attribute(__attribute__((amdgpu_flat_work_group_size(42, 42)))) 51330d8983SJohannes Doerfert #pragma omp teams distribute parallel for 52330d8983SJohannes Doerfert for (int i = 0; i < N; ++i) { 53330d8983SJohannes Doerfert optnone(); 54330d8983SJohannes Doerfert } 55330d8983SJohannes Doerfert // DEFAULT: MaxFlatWorkGroupSize: 1024 56330d8983SJohannes Doerfert #pragma omp target 57330d8983SJohannes Doerfert #pragma omp teams distribute parallel for num_threads(optnone() * 42) 58330d8983SJohannes Doerfert for (int i = 0; i < N; ++i) { 59330d8983SJohannes Doerfert optnone(); 60330d8983SJohannes Doerfert } 61330d8983SJohannes Doerfert // DEFAULT: MaxFlatWorkGroupSize: 1024 62330d8983SJohannes Doerfert #pragma omp target teams distribute parallel for thread_limit(optnone() * 42) 63330d8983SJohannes Doerfert for (int i = 0; i < N; ++i) { 64330d8983SJohannes Doerfert optnone(); 65330d8983SJohannes Doerfert } 66330d8983SJohannes Doerfert // DEFAULT: MaxFlatWorkGroupSize: 1024 67330d8983SJohannes Doerfert #pragma omp target teams distribute parallel for num_threads(optnone() * 42) 68330d8983SJohannes Doerfert for (int i = 0; i < N; ++i) { 69330d8983SJohannes Doerfert optnone(); 70330d8983SJohannes Doerfert } 71330d8983SJohannes Doerfert // DEFAULT: 9 (MaxFlatWorkGroupSize: 9 72330d8983SJohannes Doerfert #pragma omp target 73330d8983SJohannes Doerfert #pragma omp teams distribute parallel for num_threads(9) 74330d8983SJohannes Doerfert for (int i = 0; i < N; ++i) { 75330d8983SJohannes Doerfert optnone(); 76330d8983SJohannes Doerfert } 77330d8983SJohannes Doerfert // DEFAULT: 4 (MaxFlatWorkGroupSize: 4 78330d8983SJohannes Doerfert #pragma omp target thread_limit(4) 79330d8983SJohannes Doerfert #pragma omp teams distribute parallel for 80330d8983SJohannes Doerfert for (int i = 0; i < N; ++i) { 81330d8983SJohannes Doerfert optnone(); 82330d8983SJohannes Doerfert } 83330d8983SJohannes Doerfert // DEFAULT: 4 (MaxFlatWorkGroupSize: 4 84330d8983SJohannes Doerfert #pragma omp target 85330d8983SJohannes Doerfert #pragma omp teams distribute parallel for thread_limit(4) 86330d8983SJohannes Doerfert for (int i = 0; i < N; ++i) { 87330d8983SJohannes Doerfert optnone(); 88330d8983SJohannes Doerfert } 89330d8983SJohannes Doerfert // DEFAULT: 9 (MaxFlatWorkGroupSize: 9 90330d8983SJohannes Doerfert #pragma omp target teams distribute parallel for num_threads(9) 91330d8983SJohannes Doerfert for (int i = 0; i < N; ++i) { 92330d8983SJohannes Doerfert optnone(); 93330d8983SJohannes Doerfert } 94330d8983SJohannes Doerfert // DEFAULT: 4 (MaxFlatWorkGroupSize: 4 95330d8983SJohannes Doerfert #pragma omp target teams distribute parallel for simd thread_limit(4) 96330d8983SJohannes Doerfert for (int i = 0; i < N; ++i) { 97330d8983SJohannes Doerfert optnone(); 98330d8983SJohannes Doerfert } 99330d8983SJohannes Doerfert } 100330d8983SJohannes Doerfert 101