annotate gcc/testsuite/gcc.dg/vect/slp-cond-4.c @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* { dg-require-effective-target vect_condition } */
kono
parents:
diff changeset
2
kono
parents:
diff changeset
3 #include "tree-vect.h"
kono
parents:
diff changeset
4
kono
parents:
diff changeset
5 #define N 128
kono
parents:
diff changeset
6
kono
parents:
diff changeset
7 /* Comparison in short, then/else and result in int. */
kono
parents:
diff changeset
8 static inline int
kono
parents:
diff changeset
9 foo (short x, short y, int a, int b)
kono
parents:
diff changeset
10 {
kono
parents:
diff changeset
11 if (x >= y)
kono
parents:
diff changeset
12 return a;
kono
parents:
diff changeset
13 else
kono
parents:
diff changeset
14 return b;
kono
parents:
diff changeset
15 }
kono
parents:
diff changeset
16
kono
parents:
diff changeset
17 __attribute__((noinline, noclone)) void
kono
parents:
diff changeset
18 bar (short * __restrict__ a, short * __restrict__ b,
kono
parents:
diff changeset
19 short * __restrict__ c, short * __restrict__ d,
kono
parents:
diff changeset
20 int * __restrict__ e, int w)
kono
parents:
diff changeset
21 {
kono
parents:
diff changeset
22 int i;
kono
parents:
diff changeset
23 int stride = 16;
kono
parents:
diff changeset
24
kono
parents:
diff changeset
25 for (i = 0; i < N/stride; i++, a += stride, b += stride, c += stride,
kono
parents:
diff changeset
26 d += stride, e += stride)
kono
parents:
diff changeset
27 {
kono
parents:
diff changeset
28 e[0] = foo (c[0], d[0], a[0], b[0]);
kono
parents:
diff changeset
29 e[1] = foo (c[1], d[1], a[1], b[1]);
kono
parents:
diff changeset
30 e[2] = foo (c[2], d[2], a[2], b[2]);
kono
parents:
diff changeset
31 e[3] = foo (c[3], d[3], a[3], b[3]);
kono
parents:
diff changeset
32 e[4] = foo (c[4], d[4], a[4], b[4]);
kono
parents:
diff changeset
33 e[5] = foo (c[5], d[5], a[5], b[5]);
kono
parents:
diff changeset
34 e[6] = foo (c[6], d[6], a[6], b[6]);
kono
parents:
diff changeset
35 e[7] = foo (c[7], d[7], a[7], b[7]);
kono
parents:
diff changeset
36 e[8] = foo (c[8], d[8], a[8], b[8]);
kono
parents:
diff changeset
37 e[9] = foo (c[9], d[9], a[9], b[9]);
kono
parents:
diff changeset
38 e[10] = foo (c[10], d[10], a[10], b[10]);
kono
parents:
diff changeset
39 e[11] = foo (c[11], d[11], a[11], b[11]);
kono
parents:
diff changeset
40 e[12] = foo (c[12], d[12], a[12], b[12]);
kono
parents:
diff changeset
41 e[13] = foo (c[13], d[13], a[13], b[13]);
kono
parents:
diff changeset
42 e[14] = foo (c[14], d[14], a[14], b[14]);
kono
parents:
diff changeset
43 e[15] = foo (c[15], d[15], a[15], b[15]);
kono
parents:
diff changeset
44 }
kono
parents:
diff changeset
45 }
kono
parents:
diff changeset
46
kono
parents:
diff changeset
47
kono
parents:
diff changeset
48 short a[N], b[N], c[N], d[N];
kono
parents:
diff changeset
49 int e[N];
kono
parents:
diff changeset
50
kono
parents:
diff changeset
51 int main ()
kono
parents:
diff changeset
52 {
kono
parents:
diff changeset
53 int i;
kono
parents:
diff changeset
54
kono
parents:
diff changeset
55 check_vect ();
kono
parents:
diff changeset
56
kono
parents:
diff changeset
57 for (i = 0; i < N; i++)
kono
parents:
diff changeset
58 {
kono
parents:
diff changeset
59 a[i] = i;
kono
parents:
diff changeset
60 b[i] = 5;
kono
parents:
diff changeset
61 e[i] = 0;
kono
parents:
diff changeset
62
kono
parents:
diff changeset
63 switch (i % 9)
kono
parents:
diff changeset
64 {
kono
parents:
diff changeset
65 case 0: asm (""); c[i] = - i - 1; d[i] = i + 1; break;
kono
parents:
diff changeset
66 case 1: c[i] = 0; d[i] = 0; break;
kono
parents:
diff changeset
67 case 2: c[i] = i + 1; d[i] = - i - 1; break;
kono
parents:
diff changeset
68 case 3: c[i] = i; d[i] = i + 7; break;
kono
parents:
diff changeset
69 case 4: c[i] = i; d[i] = i; break;
kono
parents:
diff changeset
70 case 5: c[i] = i + 16; d[i] = i + 3; break;
kono
parents:
diff changeset
71 case 6: c[i] = - i - 5; d[i] = - i; break;
kono
parents:
diff changeset
72 case 7: c[i] = - i; d[i] = - i; break;
kono
parents:
diff changeset
73 case 8: c[i] = - i; d[i] = - i - 7; break;
kono
parents:
diff changeset
74 }
kono
parents:
diff changeset
75 }
kono
parents:
diff changeset
76
kono
parents:
diff changeset
77 bar (a, b, c, d, e, 2);
kono
parents:
diff changeset
78 for (i = 0; i < N; i++)
kono
parents:
diff changeset
79 if (e[i] != ((i % 3) == 0 ? 5 : i))
kono
parents:
diff changeset
80 abort ();
kono
parents:
diff changeset
81
kono
parents:
diff changeset
82 return 0;
kono
parents:
diff changeset
83 }
kono
parents:
diff changeset
84
kono
parents:
diff changeset
85 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" } } */