| ! Test various aspects of clauses specifying compatible levels of parallelism |
| ! with the OpenACC routine directive. The C/C++ counterpart is |
| ! '../../c-c++-common/goacc/routine-level-of-parallelism-2.c'. |
| |
| ! { dg-additional-options "-Wopenacc-parallelism" } for testing/documenting |
| ! aspects of that functionality. |
| |
| subroutine g_1 |
| !$acc routine gang |
| ! { dg-warning "region is gang partitioned but does not contain gang partitioned code" "" { target *-*-* } .-2 } |
| ! { dg-warning "region is worker partitioned but does not contain worker partitioned code" "" { target *-*-* } .-3 } |
| ! { dg-warning "region is vector partitioned but does not contain vector partitioned code" "" { target *-*-* } .-4 } |
| end subroutine g_1 |
| |
| subroutine s_1_2a |
| !$acc routine |
| end subroutine s_1_2a |
| |
| subroutine s_1_2b |
| !$acc routine seq |
| end subroutine s_1_2b |
| |
| subroutine s_1_2c |
| !$acc routine (s_1_2c) |
| end subroutine s_1_2c |
| |
| subroutine s_1_2d |
| !$acc routine (s_1_2d) seq |
| end subroutine s_1_2d |
| |
| module s_2 |
| contains |
| subroutine s_2_1a |
| !$acc routine |
| end subroutine s_2_1a |
| |
| subroutine s_2_1b |
| !$acc routine seq |
| end subroutine s_2_1b |
| |
| subroutine s_2_1c |
| !$acc routine (s_2_1c) |
| end subroutine s_2_1c |
| |
| subroutine s_2_1d |
| !$acc routine (s_2_1d) seq |
| end subroutine s_2_1d |
| end module s_2 |
| |
| subroutine test |
| external g_1, w_1, v_1 |
| external s_1_1, s_1_2 |
| |
| interface |
| function s_3_1a (a) |
| integer a |
| !$acc routine |
| end function s_3_1a |
| end interface |
| |
| interface |
| function s_3_1b (a) |
| integer a |
| !$acc routine seq |
| end function s_3_1b |
| end interface |
| |
| !$acc routine(g_1) gang |
| |
| !$acc routine(w_1) worker |
| |
| !$acc routine(v_1) worker |
| |
| ! Also test the implicit seq clause. |
| |
| !$acc routine (s_1_1) seq |
| |
| end subroutine test |