Set num_threads to 50 on 32-bit hppa in two libgomp loop tests
[official-gcc.git] / libgomp / testsuite / libgomp.c-c++-common / simd-1.c
blobcce234d817183aca88aa4de95f3fca87017f9bd3
1 // { dg-do run }
2 // { dg-additional-options "-msse2" { target sse2_runtime } }
3 // { dg-additional-options "-mavx" { target avx_runtime } }
5 #define N 1024
6 int a[N], b[N];
8 int
9 f1 (void)
11 int i;
12 #pragma omp simd private (i)
13 for (i = 0; i < N; i++)
14 a[i] = b[i] * 2;
15 #pragma omp simd lastprivate (i)
16 for (i = 0; i < N; i++)
17 a[i] += b[i] * 2;
18 return i;
21 int
22 f2 (void)
24 int i, j;
25 #pragma omp simd private (i), collapse (2), lastprivate (j)
26 for (i = 0; i < 32; i++)
27 for (j = 0; j < 32; ++j)
28 a[i * 32 + j] += b[i * 32 + j] * 2;
29 return j;
32 int
33 f3 (void)
35 static int i;
36 #pragma omp for simd private (i)
37 for (i = 0; i < N; ++i)
38 a[i] = b[i] * 2;
39 #pragma omp for simd lastprivate (i)
40 for (i = 0; i < N; ++i)
41 a[i] += b[i] * 2;
42 return i;
45 int
46 f4 (void)
48 static int i, j;
49 #pragma omp for simd private (i)collapse (2)lastprivate (j)
50 for (i = 0; i < 32; ++i)
51 for (j = 0; j < 32; j++)
52 a[i * 32 + j] += b[i * 32 + j] * 2;
53 return j;
56 int
57 main ()
59 int i;
60 for (i = 0; i < N; ++i)
61 a[i] = b[i] = i;
62 if (f1 () != 1024 || f2 () != 32)
63 __builtin_abort ();
64 #pragma omp parallel num_threads(4)
65 if (f3 () != 1024 || f4 () != 32)
66 __builtin_abort ();
67 for (i = 0; i < N; ++i)
68 if (a[i] != 6 * i || b[i] != i)
69 __builtin_abort ();
70 return 0;