xref: /llvm-project/flang/test/Semantics/OpenMP/nontemporal.f90 (revision 00ab44ee66dbcf0d32819dbc6e4eefd1b7c48dfa)
1! RUN: %python %S/../test_errors.py %s  %flang -fopenmp -fopenmp-version=50
2! REQUIRES: shell
3! Check OpenMP clause validity for NONTEMPORAL clause
4
5program omp_simd
6  integer i
7  integer, allocatable :: a(:)
8
9  allocate(a(10))
10
11  !$omp simd nontemporal(a)
12  do i = 1, 10
13    a(i) = i
14  end do
15  !$omp end simd
16
17  !$omp parallel do simd nontemporal(a)
18  do i = 1, 10
19    a(i) = i
20  end do
21  !$omp end parallel do simd
22
23  !$omp parallel do simd nontemporal(a)
24  do i = 1, 10
25    a(i) = i
26  end do
27  !$omp end parallel do simd
28
29  !ERROR: NONTEMPORAL clause is not allowed on the DO SIMD directive
30  !$omp do simd nontemporal(a)
31  do i = 1, 10
32    a(i) = i
33  end do
34  !$omp end do simd
35
36  !$omp taskloop simd nontemporal(a)
37  do i = 1, 10
38    a(i) = i
39  end do
40  !$omp end taskloop simd
41
42  !$omp teams
43  !$omp distribute parallel do simd nontemporal(a)
44  do i = 1, 10
45    a(i) = i
46  end do
47  !$omp end distribute parallel do simd
48  !$omp end teams
49
50  !$omp teams
51  !$omp distribute simd nontemporal(a)
52  do i = 1, 10
53    a(i) = i
54  end do
55  !$omp end distribute simd
56  !$omp end teams
57
58  !$omp target parallel do simd nontemporal(a)
59  do i = 1, 10
60    a(i) = i
61  end do
62  !$omp end target parallel do simd
63
64  !$omp target simd nontemporal(a)
65  do i = 1, 10
66    a(i) = i
67  end do
68  !$omp end target simd
69
70  !$omp teams distribute simd nontemporal(a)
71  do i = 1, 10
72    a(i) = i
73  end do
74  !$omp end teams distribute simd
75
76  !$omp teams distribute parallel do simd nontemporal(a)
77  do i = 1, 10
78    a(i) = i
79  end do
80  !$omp end teams distribute parallel do simd
81
82  !$omp target teams distribute parallel do simd nontemporal(a)
83  do i = 1, 10
84    a(i) = i
85  end do
86  !$omp end target teams distribute parallel do simd
87
88  !$omp target teams distribute simd nontemporal(a)
89  do i = 1, 10
90    a(i) = i
91  end do
92  !$omp end target teams distribute simd
93
94
95end program omp_simd
96