1 ! This test checks lowering of OpenACC routine directive.
3 ! RUN: bbc -fopenacc -emit-fir %s -o - | FileCheck %s
4 ! RUN: bbc -fopenacc -emit-hlfir %s -o - | FileCheck %s
6 ! CHECK: acc.routine @acc_routine_9 func(@_QPacc_routine10) seq
7 ! CHECK: acc.routine @acc_routine_8 func(@_QPacc_routine9) bind("_QPacc_routine9a")
8 ! CHECK: acc.routine @acc_routine_7 func(@_QPacc_routine8) bind("routine8_")
9 ! CHECK: acc.routine @acc_routine_6 func(@_QPacc_routine7) gang(dim = 1 : i32)
10 ! CHECK: acc.routine @acc_routine_5 func(@_QPacc_routine6) nohost
11 ! CHECK: acc.routine @acc_routine_4 func(@_QPacc_routine5) worker
12 ! CHECK: acc.routine @acc_routine_3 func(@_QPacc_routine4) vector
13 ! CHECK: acc.routine @acc_routine_2 func(@_QPacc_routine3) gang
14 ! CHECK: acc.routine @acc_routine_1 func(@_QPacc_routine2) seq
15 ! CHECK: acc.routine @acc_routine_0 func(@_QPacc_routine1)
17 subroutine acc_routine1()
21 ! CHECK-LABEL: func.func @_QPacc_routine1() attributes {acc.routine_info = #acc.routine_info<[@acc_routine_0]>}
23 subroutine acc_routine2()
27 ! CHECK-LABEL: func.func @_QPacc_routine2() attributes {acc.routine_info = #acc.routine_info<[@acc_routine_1]>}
29 subroutine acc_routine3()
33 ! CHECK-LABEL: func.func @_QPacc_routine3() attributes {acc.routine_info = #acc.routine_info<[@acc_routine_2]>}
35 subroutine acc_routine4()
39 ! CHECK-LABEL: func.func @_QPacc_routine4() attributes {acc.routine_info = #acc.routine_info<[@acc_routine_3]>}
41 subroutine acc_routine5()
45 ! CHECK-LABEL: func.func @_QPacc_routine5() attributes {acc.routine_info = #acc.routine_info<[@acc_routine_4]>}
47 subroutine acc_routine6()
51 ! CHECK-LABEL: func.func @_QPacc_routine6() attributes {acc.routine_info = #acc.routine_info<[@acc_routine_5]>}
53 subroutine acc_routine7()
54 !$acc routine gang(dim:1)
57 ! CHECK-LABEL: func.func @_QPacc_routine7() attributes {acc.routine_info = #acc.routine_info<[@acc_routine_6]>}
59 subroutine acc_routine8()
60 !$acc routine bind("routine8_")
63 ! CHECK-LABEL: func.func @_QPacc_routine8() attributes {acc.routine_info = #acc.routine_info<[@acc_routine_7]>}
65 subroutine acc_routine9a()
68 subroutine acc_routine9()
69 !$acc routine bind(acc_routine9a)
72 ! CHECK-LABEL: func.func @_QPacc_routine9() attributes {acc.routine_info = #acc.routine_info<[@acc_routine_8]>}
74 function acc_routine10()
75 !$acc routine(acc_routine10) seq
78 ! CHECK-LABEL: func.func @_QPacc_routine10() -> f32 attributes {acc.routine_info = #acc.routine_info<[@acc_routine_9]>}