1module m
2implicit none
3integer i, v
4real f
5contains
6
7subroutine foo ()
8  !$omp atomic release, hint (0), update
9  i = i + 1
10  !$omp atomic hint(0)seq_cst
11  i = i + 1
12  !$omp atomic relaxed,update,hint (0)
13  i = i + 1
14  !$omp atomic release
15  i = i + 1
16  !$omp atomic relaxed
17  i = i + 1
18  !$omp atomic acq_rel capture
19  i = i + 1; v = i
20  !$omp atomic capture,acq_rel , hint (1)
21  i = i + 1; v = i
22  !$omp atomic hint(0),acquire capture
23  i = i + 1; v = i
24  !$omp atomic read acquire
25  v = i
26  !$omp atomic acq_rel read
27  v = i
28  !$omp atomic release,write
29  i = v
30  !$omp atomic write,acq_rel
31  i = v
32  !$omp atomic hint(1),update,release
33  f = f + 2.0
34  !$omp atomic update ,acquire
35  i = i + 1
36  !$omp atomic acq_rel update
37  i = i + 1
38  !$omp atomic acq_rel,hint(0)
39  i = i + 1
40end
41end module
42