fortran/trans-openmp.cc: Use the correct member in gfc_omp_namelist [PR118745]
[official-gcc.git] / gcc / testsuite / gcc.dg / vect / bb-slp-pr81635-1.c
blobdcba9a02d23be93a5860050aad4fdee2d5686706
1 /* { dg-do compile } */
2 /* { dg-additional-options "-fno-tree-loop-vectorize" } */
3 /* { dg-require-effective-target vect_double } */
4 /* { dg-require-effective-target lp64 } */
6 void
7 f1 (double *p, double *q)
9 p = (double *) __builtin_assume_aligned (p, sizeof (double) * 2);
10 q = (double *) __builtin_assume_aligned (q, sizeof (double) * 2);
11 for (unsigned int i = 0; i < 1000; i += 4)
13 double a = q[i] + p[i];
14 double b = q[i + 1] + p[i + 1];
15 q[i] = a;
16 q[i + 1] = b;
20 void
21 f2 (double *p, double *q)
23 p = (double *) __builtin_assume_aligned (p, sizeof (double) * 2);
24 q = (double *) __builtin_assume_aligned (q, sizeof (double) * 2);
25 for (unsigned int i = 2; i < ~0U - 4; i += 4)
27 double a = q[i] + p[i];
28 double b = q[i + 1] + p[i + 1];
29 q[i] = a;
30 q[i + 1] = b;
34 void
35 f3 (double *p, double *q)
37 p = (double *) __builtin_assume_aligned (p, sizeof (double) * 2);
38 q = (double *) __builtin_assume_aligned (q, sizeof (double) * 2);
39 for (unsigned int i = 0; i < ~0U - 3; i += 4)
41 double a = q[i + 2] + p[i + 2];
42 double b = q[i + 3] + p[i + 3];
43 q[i + 2] = a;
44 q[i + 3] = b;
48 void
49 f4 (double *p, double *q)
51 p = (double *) __builtin_assume_aligned (p, sizeof (double) * 2);
52 q = (double *) __builtin_assume_aligned (q, sizeof (double) * 2);
53 for (unsigned int i = 0; i < 500; i += 6)
54 for (unsigned int j = 0; j < 500; j += 4)
56 double a = q[j] + p[i];
57 double b = q[j + 1] + p[i + 1];
58 q[i] = a;
59 q[i + 1] = b;
63 void
64 f5 (double *p, double *q)
66 p = (double *) __builtin_assume_aligned (p, sizeof (double) * 2);
67 q = (double *) __builtin_assume_aligned (q, sizeof (double) * 2);
68 for (unsigned int i = 2; i < 1000; i += 4)
70 double a = q[i - 2] + p[i - 2];
71 double b = q[i - 1] + p[i - 1];
72 q[i - 2] = a;
73 q[i - 1] = b;
77 double p[1000];
78 double q[1000];
80 void
81 f6 (int n)
83 for (unsigned int i = 0; i < n; i += 4)
85 double a = q[i] + p[i];
86 double b = q[i + 1] + p[i + 1];
87 q[i] = a;
88 q[i + 1] = b;
92 /* { dg-final { scan-tree-dump-times "optimized: basic block" 6 "slp1" } } */