LWG 3035. std::allocator's constructors should be constexpr
[official-gcc.git] / gcc / testsuite / gcc.dg / vect / pr51581-4.c
blob632c96e7481339a6dfac92913a519ad5501d34c4
1 /* PR tree-optimization/51581 */
3 #include "tree-vect.h"
5 short int a[16], b[16];
6 unsigned short int c[16], d[16];
8 void
9 f1 (void)
11 a[0] = b[0] / 8;
12 a[1] = b[1] / 8;
13 a[2] = b[2] / 8;
14 a[3] = b[3] / 8;
15 a[4] = b[4] / 8;
16 a[5] = b[5] / 8;
17 a[6] = b[6] / 8;
18 a[7] = b[7] / 8;
19 a[8] = b[8] / 8;
20 a[9] = b[9] / 8;
21 a[10] = b[10] / 8;
22 a[11] = b[11] / 8;
23 a[12] = b[12] / 8;
24 a[13] = b[13] / 8;
25 a[14] = b[14] / 8;
26 a[15] = b[15] / 8;
29 void
30 f2 (void)
32 c[0] = d[0] / 3;
33 c[1] = d[1] / 3;
34 c[2] = d[2] / 3;
35 c[3] = d[3] / 3;
36 c[4] = d[4] / 3;
37 c[5] = d[5] / 3;
38 c[6] = d[6] / 3;
39 c[7] = d[7] / 3;
40 c[8] = d[8] / 3;
41 c[9] = d[9] / 3;
42 c[10] = d[10] / 3;
43 c[11] = d[11] / 3;
44 c[12] = d[12] / 3;
45 c[13] = d[13] / 3;
46 c[14] = d[14] / 3;
47 c[15] = d[15] / 3;
50 void
51 f3 (void)
53 a[0] = b[0] / 8;
54 a[1] = b[1] / 4;
55 a[2] = b[2] / 8;
56 a[3] = b[3] / 4;
57 a[4] = b[4] / 8;
58 a[5] = b[5] / 4;
59 a[6] = b[6] / 8;
60 a[7] = b[7] / 4;
61 a[8] = b[8] / 8;
62 a[9] = b[9] / 4;
63 a[10] = b[10] / 8;
64 a[11] = b[11] / 4;
65 a[12] = b[12] / 8;
66 a[13] = b[13] / 4;
67 a[14] = b[14] / 8;
68 a[15] = b[15] / 4;
71 void
72 f4 (void)
74 c[0] = d[0] / 3;
75 c[1] = d[1] / 5;
76 c[2] = d[2] / 3;
77 c[3] = d[3] / 5;
78 c[4] = d[4] / 3;
79 c[5] = d[5] / 5;
80 c[6] = d[6] / 3;
81 c[7] = d[7] / 5;
82 c[8] = d[8] / 3;
83 c[9] = d[9] / 5;
84 c[10] = d[10] / 3;
85 c[11] = d[11] / 5;
86 c[12] = d[12] / 3;
87 c[13] = d[13] / 5;
88 c[14] = d[14] / 3;
89 c[15] = d[15] / 5;
92 void
93 f5 (void)
95 a[0] = b[0] / 14;
96 a[1] = b[1] / 15;
97 a[2] = b[2] / 14;
98 a[3] = b[3] / 15;
99 a[4] = b[4] / 14;
100 a[5] = b[5] / 15;
101 a[6] = b[6] / 14;
102 a[7] = b[7] / 15;
103 a[8] = b[8] / 14;
104 a[9] = b[9] / 15;
105 a[10] = b[10] / 14;
106 a[11] = b[11] / 15;
107 a[12] = b[12] / 14;
108 a[13] = b[13] / 15;
109 a[14] = b[14] / 14;
110 a[15] = b[15] / 15;
113 void
114 f6 (void)
116 c[0] = d[0] / 6;
117 c[1] = d[1] / 5;
118 c[2] = d[2] / 6;
119 c[3] = d[3] / 5;
120 c[4] = d[4] / 6;
121 c[5] = d[5] / 5;
122 c[6] = d[6] / 13;
123 c[7] = d[7] / 5;
124 c[8] = d[8] / 6;
125 c[9] = d[9] / 5;
126 c[10] = d[10] / 6;
127 c[11] = d[11] / 5;
128 c[12] = d[12] / 6;
129 c[13] = d[13] / 5;
130 c[14] = d[14] / 13;
131 c[15] = d[15] / 5;
135 main ()
137 int i;
138 check_vect ();
139 asm ("");
140 for (i = 0; i < 16; i++)
142 asm ("");
143 b[i] = i - 8;
144 d[i] = i - 8;
146 f1 ();
147 f2 ();
148 for (i = 0; i < 16; i++)
149 if (a[i] != b[i] / 8 || c[i] != d[i] / 3)
150 abort ();
151 f3 ();
152 f4 ();
153 for (i = 0; i < 16; i+= 2)
154 if (a[i] != b[i] / 8 || a[i + 1] != b[i + 1] / 4
155 || c[i] != d[i] / 3 || c[i + 1] != d[i + 1] / 5)
156 abort ();
157 f5 ();
158 f6 ();
159 for (i = 0; i < 16; i+= 2)
160 if (a[i] != b[i] / 14 || a[i + 1] != b[i + 1] / 15
161 || c[i] != d[i] / ((i & 7) == 6 ? 13 : 6) || c[i + 1] != d[i + 1] / 5)
162 abort ();
163 return 0;