xref: /llvm-project/flang/test/Examples/omp-declarative-directive.f90 (revision e73ec1a74af3a390af5a77dea64022019a2a5686)
1! REQUIRES: plugins, examples, shell
2
3! RUN: %flang_fc1 -load %llvmshlibdir/flangOmpReport.so -plugin flang-omp-report -fopenmp %s -o - | FileCheck %s
4
5! Check OpenMP declarative directives
6
7! 2.8.2 declare-simd
8
9subroutine declare_simd_1(a, b)
10  real(8), intent(inout), allocatable :: a, b
11  !$omp declare simd(declare_simd_1) aligned(a)
12  a = 3.14 + b
13end subroutine declare_simd_1
14
15! 2.10.6 declare-target
16! 2.15.2 threadprivate
17
18module m2
19contains
20  subroutine foo
21    !$omp declare target
22    integer, parameter :: N=10000, M=1024
23    integer :: i
24    real :: Q(N, N), R(N,M), S(M,M)
25  end subroutine foo
26end module m2
27
28end
29
30! CHECK:---
31! CHECK-NEXT:- file:            '{{[^"]*}}omp-declarative-directive.f90'
32! CHECK-NEXT:  line:            11
33! CHECK-NEXT:  construct:       declare simd
34! CHECK-NEXT:  clauses:
35! CHECK-NEXT:    - clause:      aligned
36! CHECK-NEXT:      details:     a
37! CHECK-NEXT:- file:            '{{[^"]*}}omp-declarative-directive.f90'
38! CHECK-NEXT:  line:            21
39! CHECK-NEXT:  construct:       declare target
40! CHECK-NEXT:  clauses:         []
41! CHECK-NEXT:...
42