xref: /llvm-project/flang/test/Examples/omp-atomic.f90 (revision 0a95abb7dcf3ae4d4c5bb7ecc739c217d20b7fc3)
15c52753dSAndrzej Warzynski! REQUIRES: plugins, examples, shell
238c42d42SStuart Ellis
338c42d42SStuart Ellis! RUN: %flang_fc1 -load %llvmshlibdir/flangOmpReport.so -plugin flang-omp-report -fopenmp %s -o - | FileCheck %s
438c42d42SStuart Ellis
538c42d42SStuart Ellis! Check OpenMP 2.13.6 atomic Construct
638c42d42SStuart Ellis
738c42d42SStuart Ellis  a = 1.0
838c42d42SStuart Ellis  !$omp parallel num_threads(4) shared(a)
938c42d42SStuart Ellis  !$omp atomic seq_cst, read
1038c42d42SStuart Ellis  b = a
1138c42d42SStuart Ellis
1238c42d42SStuart Ellis  !$omp atomic seq_cst write
1338c42d42SStuart Ellis  a = b
1438c42d42SStuart Ellis  !$omp end atomic
1538c42d42SStuart Ellis
1638c42d42SStuart Ellis  !$omp atomic capture seq_cst
1738c42d42SStuart Ellis  b = a
1838c42d42SStuart Ellis  a = a + 1
1938c42d42SStuart Ellis  !$omp end atomic
2038c42d42SStuart Ellis
2138c42d42SStuart Ellis  !$omp atomic
2238c42d42SStuart Ellis  a = a + 1
2338c42d42SStuart Ellis  !$omp end parallel
2438c42d42SStuart Ellisend
2538c42d42SStuart Ellis
2638c42d42SStuart Ellis! CHECK:---
2738c42d42SStuart Ellis! CHECK-NEXT:- file:            '{{[^"]*}}omp-atomic.f90'
28*0a95abb7SJosh Mottley! CHECK-NEXT:  line:            9
2938c42d42SStuart Ellis! CHECK-NEXT:  construct:       atomic-read
3038c42d42SStuart Ellis! CHECK-NEXT:  clauses:
3138c42d42SStuart Ellis! CHECK-NEXT:    - clause:      seq_cst
3238c42d42SStuart Ellis! CHECK-NEXT:      details:     ''
3338c42d42SStuart Ellis! CHECK-NEXT:- file:            '{{[^"]*}}omp-atomic.f90'
34*0a95abb7SJosh Mottley! CHECK-NEXT:  line:            12
3538c42d42SStuart Ellis! CHECK-NEXT:  construct:       atomic-write
3638c42d42SStuart Ellis! CHECK-NEXT:  clauses:
3738c42d42SStuart Ellis! CHECK-NEXT:    - clause:      seq_cst
3838c42d42SStuart Ellis! CHECK-NEXT:      details:     ''
3938c42d42SStuart Ellis! CHECK-NEXT:- file:            '{{[^"]*}}omp-atomic.f90'
40*0a95abb7SJosh Mottley! CHECK-NEXT:  line:            16
4138c42d42SStuart Ellis! CHECK-NEXT:  construct:       atomic-capture
4238c42d42SStuart Ellis! CHECK-NEXT:  clauses:
4338c42d42SStuart Ellis! CHECK-NEXT:    - clause:      seq_cst
4438c42d42SStuart Ellis! CHECK-NEXT:      details:     ''
4538c42d42SStuart Ellis! CHECK-NEXT:- file:            '{{[^"]*}}omp-atomic.f90'
46*0a95abb7SJosh Mottley! CHECK-NEXT:  line:            21
4738c42d42SStuart Ellis! CHECK-NEXT:  construct:       atomic-atomic
4838c42d42SStuart Ellis! CHECK-NEXT:  clauses:         []
4938c42d42SStuart Ellis! CHECK-NEXT:- file:            '{{[^"]*}}omp-atomic.f90'
50*0a95abb7SJosh Mottley! CHECK-NEXT:  line:            8
5138c42d42SStuart Ellis! CHECK-NEXT:  construct:       parallel
5238c42d42SStuart Ellis! CHECK-NEXT:  clauses:
5338c42d42SStuart Ellis! CHECK-NEXT:    - clause:      num_threads
5438c42d42SStuart Ellis! CHECK-NEXT:      details:     '4'
5538c42d42SStuart Ellis! CHECK-NEXT:    - clause:      shared
5638c42d42SStuart Ellis! CHECK-NEXT:      details:     a
5738c42d42SStuart Ellis! CHECK-NEXT:...
58