| ! Check for invalid (and some valid) cases of multiple OpenACC 'routine' |
| ! directives. |
| |
| SUBROUTINE s_1 |
| !$ACC ROUTINE VECTOR WORKER ! { dg-error "Multiple loop axes specified for routine" } |
| !$ACC ROUTINE(s_1) |
| !$ACC ROUTINE GANG ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE(s_1) SEQ |
| !$ACC ROUTINE |
| !$ACC ROUTINE(s_1) WORKER ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE GANG VECTOR ! { dg-error "Multiple loop axes specified for routine" } |
| !$ACC ROUTINE VECTOR NOHOST WORKER ! { dg-error "Multiple loop axes specified for routine" } |
| !$ACC ROUTINE(s_1) NOHOST ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE NOHOST GANG ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE(s_1) SEQ NOHOST ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE NOHOST ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE(s_1) NOHOST WORKER ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE GANG NOHOST VECTOR ! { dg-error "Multiple loop axes specified for routine" } |
| END SUBROUTINE s_1 |
| |
| SUBROUTINE s_1_nh |
| !$ACC ROUTINE NOHOST VECTOR WORKER ! { dg-error "Multiple loop axes specified for routine" } |
| !$ACC ROUTINE(s_1_nh) NOHOST |
| !$ACC ROUTINE NOHOST GANG ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE(s_1_nh) NOHOST SEQ |
| !$ACC ROUTINE NOHOST |
| !$ACC ROUTINE(s_1_nh) WORKER NOHOST ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE GANG NOHOST VECTOR ! { dg-error "Multiple loop axes specified for routine" } |
| !$ACC ROUTINE VECTOR WORKER ! { dg-error "Multiple loop axes specified for routine" } |
| !$ACC ROUTINE(s_1_nh) ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE GANG ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE(s_1_nh) SEQ ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE(s_1_nh) WORKER ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE GANG VECTOR ! { dg-error "Multiple loop axes specified for routine" } |
| END SUBROUTINE s_1_nh |
| |
| SUBROUTINE s_2 |
| !$ACC ROUTINE(s_2) VECTOR WORKER ! { dg-error "Multiple loop axes specified for routine" } |
| !$ACC ROUTINE |
| !$ACC ROUTINE(s_2) GANG ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE SEQ |
| !$ACC ROUTINE(s_2) |
| !$ACC ROUTINE WORKER ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE(s_2) GANG VECTOR ! { dg-error "Multiple loop axes specified for routine" } |
| !$ACC ROUTINE(s_2) VECTOR NOHOST WORKER ! { dg-error "Multiple loop axes specified for routine" } |
| !$ACC ROUTINE NOHOST ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE(s_2) GANG NOHOST ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE SEQ NOHOST ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE(s_2) NOHOST ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE NOHOST WORKER ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE(s_2) NOHOST GANG VECTOR ! { dg-error "Multiple loop axes specified for routine" } |
| END SUBROUTINE s_2 |
| |
| SUBROUTINE s_2_nh |
| !$ACC ROUTINE(s_2_nh) NOHOST VECTOR WORKER ! { dg-error "Multiple loop axes specified for routine" } |
| !$ACC ROUTINE NOHOST |
| !$ACC ROUTINE(s_2_nh) GANG NOHOST ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE SEQ NOHOST |
| !$ACC ROUTINE(s_2_nh) NOHOST |
| !$ACC ROUTINE NOHOST WORKER ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE(s_2_nh) NOHOST GANG VECTOR ! { dg-error "Multiple loop axes specified for routine" } |
| !$ACC ROUTINE(s_2_nh) VECTOR WORKER ! { dg-error "Multiple loop axes specified for routine" } |
| !$ACC ROUTINE ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE(s_2_nh) GANG ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE SEQ ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE(s_2_nh) ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE WORKER ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE(s_2_nh) GANG VECTOR ! { dg-error "Multiple loop axes specified for routine" } |
| END SUBROUTINE s_2_nh |
| |
| SUBROUTINE v_1 |
| !$ACC ROUTINE VECTOR WORKER ! { dg-error "Multiple loop axes specified for routine" } |
| !$ACC ROUTINE VECTOR |
| !$ACC ROUTINE GANG ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE SEQ ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE(v_1) VECTOR |
| !$ACC ROUTINE WORKER ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE GANG VECTOR ! { dg-error "Multiple loop axes specified for routine" } |
| !$ACC ROUTINE NOHOST VECTOR WORKER ! { dg-error "Multiple loop axes specified for routine" } |
| !$ACC ROUTINE NOHOST VECTOR ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE GANG NOHOST ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE NOHOST SEQ ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE NOHOST ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE(v_1) VECTOR NOHOST ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE WORKER NOHOST ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE GANG VECTOR NOHOST ! { dg-error "Multiple loop axes specified for routine" } |
| END SUBROUTINE v_1 |
| |
| SUBROUTINE v_1_nh |
| !$ACC ROUTINE VECTOR WORKER NOHOST ! { dg-error "Multiple loop axes specified for routine" } |
| !$ACC ROUTINE VECTOR NOHOST |
| !$ACC ROUTINE GANG NOHOST ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE NOHOST SEQ ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE NOHOST ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE(v_1_nh) VECTOR NOHOST |
| !$ACC ROUTINE WORKER NOHOST ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE GANG NOHOST VECTOR ! { dg-error "Multiple loop axes specified for routine" } |
| !$ACC ROUTINE VECTOR WORKER ! { dg-error "Multiple loop axes specified for routine" } |
| !$ACC ROUTINE VECTOR ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE GANG ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE SEQ ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE(v_1_nh) VECTOR ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE WORKER ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE GANG VECTOR ! { dg-error "Multiple loop axes specified for routine" } |
| END SUBROUTINE v_1_nh |
| |
| SUBROUTINE v_2 |
| !$ACC ROUTINE(v_2) VECTOR |
| !$ACC ROUTINE(v_2) VECTOR WORKER ! { dg-error "Multiple loop axes specified for routine" } |
| !$ACC ROUTINE(v_2) ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE VECTOR |
| !$ACC ROUTINE(v_2) GANG VECTOR ! { dg-error "Multiple loop axes specified for routine" } |
| !$ACC ROUTINE(v_2) VECTOR NOHOST ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE(v_2) VECTOR NOHOST WORKER ! { dg-error "Multiple loop axes specified for routine" } |
| !$ACC ROUTINE(v_2) NOHOST ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE VECTOR NOHOST ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE(v_2) NOHOST GANG VECTOR ! { dg-error "Multiple loop axes specified for routine" } |
| END SUBROUTINE v_2 |
| |
| SUBROUTINE v_2_nh |
| !$ACC ROUTINE(v_2_nh) VECTOR NOHOST |
| !$ACC ROUTINE(v_2_nh) VECTOR WORKER NOHOST ! { dg-error "Multiple loop axes specified for routine" } |
| !$ACC ROUTINE(v_2_nh) NOHOST ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE VECTOR NOHOST |
| !$ACC ROUTINE(v_2_nh) GANG NOHOST VECTOR ! { dg-error "Multiple loop axes specified for routine" } |
| !$ACC ROUTINE(v_2_nh) VECTOR ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE(v_2_nh) VECTOR WORKER ! { dg-error "Multiple loop axes specified for routine" } |
| !$ACC ROUTINE(v_2_nh) ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE VECTOR ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE(v_2_nh) GANG VECTOR ! { dg-error "Multiple loop axes specified for routine" } |
| END SUBROUTINE v_2_nh |
| |
| SUBROUTINE sub_1 |
| IMPLICIT NONE |
| EXTERNAL :: g_1 |
| !$ACC ROUTINE (g_1) GANG |
| !$ACC ROUTINE (g_1) GANG WORKER ! { dg-error "Multiple loop axes specified for routine" } |
| !$ACC ROUTINE (g_1) VECTOR ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE (g_1) SEQ ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE (g_1) ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE (g_1) GANG |
| !$ACC ROUTINE (g_1) ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE (g_1) NOHOST GANG ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE (g_1) GANG WORKER NOHOST ! { dg-error "Multiple loop axes specified for routine" } |
| !$ACC ROUTINE (g_1) NOHOST VECTOR ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE (g_1) NOHOST SEQ ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE (g_1) NOHOST ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE (g_1) GANG NOHOST ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE (g_1) NOHOST ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| EXTERNAL :: g_1_nh |
| !$ACC ROUTINE (g_1_nh) NOHOST GANG |
| !$ACC ROUTINE (g_1_nh) GANG NOHOST WORKER ! { dg-error "Multiple loop axes specified for routine" } |
| !$ACC ROUTINE (g_1_nh) NOHOST VECTOR ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE (g_1_nh) SEQ NOHOST ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE (g_1_nh) NOHOST ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE (g_1_nh) GANG NOHOST |
| !$ACC ROUTINE (g_1_nh) NOHOST ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE (g_1_nh) GANG ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE (g_1_nh) GANG WORKER ! { dg-error "Multiple loop axes specified for routine" } |
| !$ACC ROUTINE (g_1_nh) VECTOR ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE (g_1_nh) SEQ ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE (g_1_nh) ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE (g_1_nh) GANG ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE (g_1_nh) ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| |
| CALL s_1 |
| CALL s_1_nh |
| CALL s_2 |
| CALL s_2_nh |
| CALL v_1 |
| CALL v_1_nh |
| CALL v_2 |
| CALL v_2_nh |
| CALL g_1 |
| CALL g_1_nh |
| CALL ABORT |
| END SUBROUTINE sub_1 |
| |
| MODULE m_w_1 |
| IMPLICIT NONE |
| EXTERNAL :: w_1 |
| !$ACC ROUTINE (w_1) WORKER |
| !$ACC ROUTINE (w_1) WORKER SEQ ! { dg-error "Multiple loop axes specified for routine" } |
| !$ACC ROUTINE (w_1) ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE (w_1) WORKER |
| !$ACC ROUTINE (w_1) SEQ ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE (w_1) ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE (w_1) VECTOR ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE (w_1) WORKER NOHOST ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE (w_1) WORKER NOHOST SEQ ! { dg-error "Multiple loop axes specified for routine" } |
| !$ACC ROUTINE (w_1) NOHOST ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE (w_1) NOHOST WORKER ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE (w_1) SEQ NOHOST ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE (w_1) NOHOST ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE (w_1) VECTOR NOHOST ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| EXTERNAL :: w_1_nh |
| !$ACC ROUTINE (w_1_nh) WORKER NOHOST |
| !$ACC ROUTINE (w_1_nh) WORKER NOHOST SEQ ! { dg-error "Multiple loop axes specified for routine" } |
| !$ACC ROUTINE (w_1_nh) NOHOST ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE (w_1_nh) NOHOST WORKER |
| !$ACC ROUTINE (w_1_nh) NOHOST SEQ ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE (w_1_nh) NOHOST ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE (w_1_nh) VECTOR NOHOST ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE (w_1_nh) WORKER ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE (w_1_nh) WORKER SEQ ! { dg-error "Multiple loop axes specified for routine" } |
| !$ACC ROUTINE (w_1_nh) ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE (w_1_nh) WORKER ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE (w_1_nh) SEQ ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE (w_1_nh) ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| !$ACC ROUTINE (w_1_nh) VECTOR ! { dg-error "\\!\\\$ACC ROUTINE already applied" } |
| |
| CONTAINS |
| SUBROUTINE sub_2 |
| CALL s_1 |
| CALL s_1_nh |
| CALL s_2 |
| CALL s_2_nh |
| CALL v_1 |
| CALL v_1_nh |
| CALL v_2 |
| CALL v_2_nh |
| CALL w_1 |
| CALL w_1_nh |
| CALL ABORT |
| END SUBROUTINE sub_2 |
| END MODULE m_w_1 |