]> gcc.gnu.org Git - gcc.git/blob - libgomp/testsuite/libgomp.c/examples-4/e.50.2.c
55d667aa77591994f1d05517cd1c44a49e180373
[gcc.git] / libgomp / testsuite / libgomp.c / examples-4 / e.50.2.c
1 /* { dg-do run } */
2
3 #include <stdlib.h>
4
5 #define N 100000
6
7 void init (char *a1, char *a2)
8 {
9 char s = -1;
10 int i;
11 for (i = 0; i < N; i++)
12 {
13 a1[i] = s;
14 a2[i] = i;
15 s = -s;
16 }
17 }
18
19 void check (char *a, char *b)
20 {
21 int i;
22 for (i = 0; i < N; i++)
23 if (a[i] != b[i])
24 abort ();
25 }
26
27 void vec_mult_ref (char *p)
28 {
29 int i;
30 char v1[N], v2[N];
31
32 init (v1, v2);
33
34 for (i = 0; i < N; i++)
35 p[i] = v1[i] * v2[i];
36 }
37
38 void vec_mult (char *p)
39 {
40 int i;
41 char v1[N], v2[N];
42
43 init (v1, v2);
44
45 #pragma omp target map(from: p[0:N])
46 #pragma omp parallel for
47 for (i = 0; i < N; i++)
48 p[i] = v1[i] * v2[i];
49 }
50
51 int main ()
52 {
53 char p1[N], p2[N];
54 char v1[N], v2[N];
55
56 init (v1, v2);
57
58 vec_mult_ref (p1);
59 vec_mult (p2);
60
61 check (p1, p2);
62
63 return 0;
64 }
This page took 0.035771 seconds and 4 git commands to generate.