Rebase.
[official-gcc.git] / libgomp / testsuite / libgomp.c / simd-14.c
blob50e8d5e90117c108c33bb9f01ea967438814fcf7
1 /* { dg-do run } */
2 /* { dg-options "-O2" } */
3 /* { dg-additional-options "-msse2" { target sse2_runtime } } */
4 /* { dg-additional-options "-mavx" { target avx_runtime } } */
6 int
7 main ()
9 int i, j, b, c = 0;
10 i = 4; j = 4; b = 7;
11 #pragma omp simd linear(b:2) reduction(+:c)
12 for (i = 0; i < 64; i++)
14 c = c + (b != 7 + 2 * i);
15 b = b + 2;
17 if (c || i != 64 || b != 7 + 64 * 2)
18 __builtin_abort ();
19 i = 4; j = 4; b = 7;
20 #pragma omp simd linear(b:3) reduction(+:c)
21 for (i = 0; i < 64; i += 4)
23 c = c + (b != 7 + i / 4 * 3);
24 b = b + 3;
26 if (c || i != 64 || b != 7 + 16 * 3)
27 __builtin_abort ();
28 i = 4; j = 4; b = 7;
29 #pragma omp simd linear(i) linear(b:2) reduction(+:c)
30 for (i = 0; i < 64; i++)
32 c = c + (b != 7 + 2 * i);
33 b = b + 2;
35 if (c || i != 64 || b != 7 + 64 * 2)
36 __builtin_abort ();
37 i = 4; j = 4; b = 7;
38 #pragma omp simd linear(i:4) linear(b:3) reduction(+:c)
39 for (i = 0; i < 64; i += 4)
41 c = c + (b != 7 + i / 4 * 3);
42 b = b + 3;
44 if (c || i != 64 || b != 7 + 16 * 3)
45 __builtin_abort ();
46 i = 4; j = 4; b = 7;
47 #pragma omp simd collapse (2) linear(b:2) reduction(+:c)
48 for (i = 0; i < 8; i++)
49 for (j = 0; j < 8; j++)
51 c = c + (b != 7 + 2 * j + 2 * 8 * i);
52 b = b + 2;
54 if (c || i != 8 || j != 8 || b != 7 + 64 * 2)
55 __builtin_abort ();
56 i = 4; j = 4; b = 7;
57 #pragma omp simd collapse (2) lastprivate (i, j) linear(b:2) reduction(+:c)
58 for (i = 0; i < 8; i++)
59 for (j = 0; j < 8; j++)
61 c = c + (b != 7 + 2 * j + 2 * 8 * i);
62 b = b + 2;
64 if (c || i != 8 || j != 8 || b != 7 + 64 * 2)
65 __builtin_abort ();
66 i = 4; j = 4; b = 7;
67 #pragma omp parallel for simd schedule (static, 4) linear(b:2) reduction(+:c)
68 for (i = 0; i < 64; i++)
70 c = c + (b != 7 + 2 * i);
71 b = b + 2;
73 if (c || i != 64 || b != 7 + 64 * 2)
74 __builtin_abort ();
75 i = 4; j = 4; b = 7;
76 #pragma omp parallel for simd schedule (static, 4) linear(b:3) reduction(+:c)
77 for (i = 0; i < 64; i += 4)
79 c = c + (b != 7 + i / 4 * 3);
80 b = b + 3;
82 if (c || i != 64 || b != 7 + 16 * 3)
83 __builtin_abort ();
84 i = 4; j = 4; b = 7;
85 #pragma omp parallel for simd schedule (static, 4) linear(i) linear(b:2) reduction(+:c)
86 for (i = 0; i < 64; i++)
88 c = c + (b != 7 + 2 * i);
89 b = b + 2;
91 if (c || i != 64 || b != 7 + 64 * 2)
92 __builtin_abort ();
93 i = 4; j = 4; b = 7;
94 #pragma omp parallel for simd schedule (static, 4) linear(i:4) linear(b:3) reduction(+:c)
95 for (i = 0; i < 64; i += 4)
97 c = c + (b != 7 + i / 4 * 3);
98 b = b + 3;
100 if (c || i != 64 || b != 7 + 16 * 3)
101 __builtin_abort ();
102 i = 4; j = 4; b = 7;
103 #pragma omp parallel for simd lastprivate (i, j) collapse (2) schedule (static, 4) linear(b:2) reduction(+:c)
104 for (i = 0; i < 8; i++)
105 for (j = 0; j < 8; j++)
107 c = c + (b != 7 + 2 * j + 2 * 8 * i);
108 b = b + 2;
110 if (c || i != 8 || j != 8 || b != 7 + 64 * 2)
111 __builtin_abort ();
112 i = 4; j = 4; b = 7;
113 #pragma omp parallel for simd collapse (2) schedule (static, 4) linear(b:2) reduction(+:c)
114 for (i = 0; i < 8; i++)
115 for (j = 0; j < 8; j++)
117 c = c + (b != 7 + 2 * j + 2 * 8 * i);
118 b = b + 2;
120 if (c || i != 8 || j != 8 || b != 7 + 64 * 2)
121 __builtin_abort ();
122 return 0;