xref: /llvm-project/flang/test/Semantics/OpenACC/acc-module.f90 (revision c8ad8024435df43a0811edb51be6ee517c44d332)
1! RUN: %python %S/../test_modfile.py %s %flang_fc1 -fopenacc
2
3module acc_mod
4  real :: data_create(100)
5  !$acc declare create(data_create)
6
7  real :: data_copyin(10)
8  !$acc declare copyin(data_copyin)
9
10  real :: data_copyinro(10)
11  !$acc declare copyin(readonly: data_copyinro)
12
13  real :: data_device_resident(20)
14  !$acc declare device_resident(data_device_resident)
15
16  integer :: data_link(50)
17  !$acc declare link(data_link)
18
19  !$acc routine(sub10) seq
20
21contains
22  subroutine sub1()
23    !$acc routine
24  end subroutine
25
26  subroutine sub2()
27    !$acc routine seq
28  end subroutine
29
30  subroutine sub3()
31    !$acc routine gang
32  end subroutine
33
34  subroutine sub4()
35    !$acc routine vector
36  end subroutine
37
38  subroutine sub5()
39    !$acc routine worker
40  end subroutine
41
42  subroutine sub6()
43    !$acc routine gang(dim:2)
44  end subroutine
45
46  subroutine sub7()
47    !$acc routine bind("sub7_")
48  end subroutine
49
50  subroutine sub8()
51    !$acc routine bind(sub7)
52  end subroutine
53
54  subroutine sub9()
55    !$acc routine vector
56    !$acc routine seq bind(sub7)
57    !$acc routine gang bind(sub8)
58  end subroutine
59
60  subroutine sub10()
61  end subroutine
62
63  subroutine sub11()
64    !$acc routine device_type(nvidia) gang device_type(*) seq
65  end subroutine
66
67  subroutine sub12()
68    !$acc routine device_type(host) bind(sub7) device_type(multicore) bind(sub8)
69  end subroutine
70end module
71
72!Expect: acc_mod.mod
73! module acc_mod
74! real(4)::data_create(1_8:100_8)
75! !$acc declare create(data_create)
76! real(4)::data_copyin(1_8:10_8)
77! !$acc declare copyin(data_copyin)
78! real(4)::data_copyinro(1_8:10_8)
79! !$acc declare copyin(readonly: data_copyinro)
80! real(4)::data_device_resident(1_8:20_8)
81! !$acc declare device_resident(data_device_resident)
82! integer(4)::data_link(1_8:50_8)
83! !$acc declare link(data_link)
84! contains
85! subroutine sub1()
86! !$acc routine
87! end
88! subroutine sub2()
89! !$acc routine seq
90! end
91! subroutine sub3()
92! !$acc routine gang
93! end
94! subroutine sub4()
95! !$acc routine vector
96! end
97! subroutine sub5()
98! !$acc routine worker
99! end
100! subroutine sub6()
101! !$acc routine gang(dim:2)
102! end
103! subroutine sub7()
104! !$acc routine bind("sub7_")
105! end
106! subroutine sub8()
107! !$acc routine bind(sub7)
108! end
109! subroutine sub9()
110! !$acc routine vector
111! !$acc routine seq bind(sub7)
112! !$acc routine gang bind(sub8)
113! end
114! subroutine sub10()
115! !$acc routine seq
116! end
117! subroutinesub11()
118! !$acc routine device_type(nvidia) gang device_type(*) seq
119! end
120! subroutinesub12()
121! !$acc routine device_type(host) bind(sub7) device_type(multicore) bind(sub8)
122! end
123! end
124