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