1
+ > ! Made - up directives to test OpenACC support
2
+ #^ source .fortran .free comment .line .fortran
3
+ # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source .fortran .free comment .line .fortran
4
+ > program main
5
+ #^^^^^^^ source .fortran .free meta .program .fortran keyword .control .program .fortran
6
+ # ^ source .fortran .free meta .program .fortran
7
+ # ^^^^ source .fortran .free meta .program .fortran entity .name .program .fortran
8
+ > implicit none
9
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
10
+ # ^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran meta .statement .implicit .fortran keyword .other .implicit .fortran
11
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran meta .statement .implicit .fortran
12
+ # ^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran meta .statement .implicit .fortran keyword .other .none .fortran
13
+ >
14
+ > ! The highlighting should continue on the second line
15
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
16
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
17
+ # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
18
+ > ! $acc data copy (A ) copyin (B (:)) copyout (C (1 :N )) present (D ) &
19
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
20
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
21
+ # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
22
+ > ! $acc & no_create (E ) deviceptr (F )
23
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
24
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
25
+ # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
26
+ >
27
+ > ! $acc parallel loop private (foo ) firstprivate (bar ) tile (32 ,32 )
28
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
29
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
30
+ # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
31
+ >
32
+ > ! $acc parallel
33
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
34
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
35
+ # ^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
36
+ > ! $acc loop collapse (2 )
37
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
38
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
39
+ # ^^^^^^^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
40
+ > ! $acc end parallel
41
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
42
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
43
+ # ^^^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
44
+ >
45
+ > ! $acc end data
46
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
47
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
48
+ # ^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
49
+ >
50
+ > ! $acc kernels default (present )
51
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
52
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
53
+ # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
54
+ > ! $acc loop independent
55
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
56
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
57
+ # ^^^^^^^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
58
+ > ! $acc loop reduction (+ :sum )
59
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
60
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
61
+ # ^^^^^^^^^^^^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
62
+ > ! $acc loop reduction (max :the_max )
63
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
64
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
65
+ # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
66
+ > ! $acc loop gang worker vector
67
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
68
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
69
+ # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
70
+ > ! $acc loop gang (128 ) worker (4 ) vector (128 )
71
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
72
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
73
+ # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
74
+ > ! $acc loop seq
75
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
76
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
77
+ # ^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
78
+ > ! $acc end kernels
79
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
80
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
81
+ # ^^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
82
+ >
83
+ > ! $acc parallel loop num_gangs (1 ) num_workers (1 ) vector_length (1 ) default (none )
84
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
85
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
86
+ # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
87
+ >
88
+ > ! $acc enter data create (A (1 :N )) attach (B )
89
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
90
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
91
+ # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
92
+ >
93
+ > ! $acc update device (A ) async
94
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
95
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
96
+ # ^^^^^^^^^^^^^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
97
+ > ! $acc update host (A (1 :N )) async (1 )
98
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
99
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
100
+ # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
101
+ > ! $acc update self (A (:)) async (2 ) wait (1 )
102
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
103
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
104
+ # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
105
+ > ! $acc wait (1 )
106
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
107
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
108
+ # ^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
109
+ > ! $acc wait
110
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
111
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
112
+ # ^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
113
+ >
114
+ > ! $acc exit data delete (A ) detach (B ) finalize
115
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
116
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
117
+ # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
118
+ >
119
+ > ! $acc serial self (.TRUE .) if (.FALSE .)
120
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
121
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
122
+ # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
123
+ >
124
+ > ! $acc host_data use_device (A )
125
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
126
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
127
+ # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
128
+ > ! $acc end host_data
129
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
130
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
131
+ # ^^^^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
132
+ >
133
+ > ! $acc declare device_resident (A )
134
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
135
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
136
+ # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
137
+ >
138
+ > ! $acc init device_type (foo ) device_num (bar )
139
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
140
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
141
+ # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
142
+ > ! $acc shutdown device_type (foo ) device_num (bar )
143
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
144
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
145
+ # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
146
+ > ! $acc set default_async (1 )
147
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
148
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
149
+ # ^^^^^^^^^^^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
150
+ >
151
+ > ! $acc cache (A (:))
152
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
153
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
154
+ # ^^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
155
+ >
156
+ > ! Test all four forms of atomic
157
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
158
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
159
+ # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
160
+ > ! $acc atomic capture
161
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
162
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
163
+ # ^^^^^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
164
+ > ! $acc end atomic
165
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
166
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
167
+ # ^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
168
+ > ! $acc atomic update
169
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
170
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
171
+ # ^^^^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
172
+ > ! $acc end atomic
173
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
174
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
175
+ # ^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
176
+ > ! $acc atomic read
177
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
178
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
179
+ # ^^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
180
+ > ! $acc end atomic
181
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
182
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
183
+ # ^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
184
+ > ! $acc atomic write
185
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
186
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
187
+ # ^^^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
188
+ > ! $acc end atomic
189
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
190
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
191
+ # ^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
192
+ >
193
+ > ! The " do" should not highlight , if it does it ' s coming from OpenMP
194
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
195
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
196
+ # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
197
+ > ! $acc parallel do
198
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
199
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
200
+ # ^^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
201
+ > ! The " do" here still should , since it is OpenMP
202
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
203
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
204
+ # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
205
+ > ! $omp parallel do
206
+ #^^ source .fortran .free meta .program .fortran meta .block .specification .fortran
207
+ # ^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
208
+ # ^^^^^^^^^^^^^^^^ source .fortran .free meta .program .fortran meta .block .specification .fortran comment .line .fortran
209
+ >
210
+ > end program main
211
+ #^^^^^^^^^^^ source .fortran .free meta .program .fortran keyword .control .endprogram .fortran
212
+ # ^ source .fortran .free meta .program .fortran
213
+ # ^^^^ source .fortran .free meta .program .fortran entity .name .program .fortran
0 commit comments