diff options
Diffstat (limited to 'meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99351.patch')
-rw-r--r-- | meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99351.patch | 548 |
1 files changed, 548 insertions, 0 deletions
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99351.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99351.patch new file mode 100644 index 0000000000..aa3b3eb85f --- /dev/null +++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99351.patch | |||
@@ -0,0 +1,548 @@ | |||
1 | 2010-07-26 Julian Brown <julian@codesourcery.com> | ||
2 | |||
3 | Merge from Sourcery G++ 4.4: | ||
4 | |||
5 | Jie Zhang <jie@codesourcery.com> | ||
6 | Issue #7122 | ||
7 | |||
8 | gcc/ | ||
9 | * config/arm/arm.c (arm_rtx_costs_1): Adjust cost for | ||
10 | CONST_VECTOR. | ||
11 | (arm_size_rtx_costs): Likewise. | ||
12 | (thumb2_size_rtx_costs): Likewise. | ||
13 | (neon_valid_immediate): Add a case for double 0.0. | ||
14 | |||
15 | gcc/testsuite/ | ||
16 | * gcc.target/arm/neon-vdup-1.c: New test case. | ||
17 | * gcc.target/arm/neon-vdup-2.c: New test case. | ||
18 | * gcc.target/arm/neon-vdup-3.c: New test case. | ||
19 | * gcc.target/arm/neon-vdup-4.c: New test case. | ||
20 | * gcc.target/arm/neon-vdup-5.c: New test case. | ||
21 | * gcc.target/arm/neon-vdup-6.c: New test case. | ||
22 | * gcc.target/arm/neon-vdup-7.c: New test case. | ||
23 | * gcc.target/arm/neon-vdup-8.c: New test case. | ||
24 | * gcc.target/arm/neon-vdup-9.c: New test case. | ||
25 | * gcc.target/arm/neon-vdup-10.c: New test case. | ||
26 | * gcc.target/arm/neon-vdup-11.c: New test case. | ||
27 | * gcc.target/arm/neon-vdup-12.c: New test case. | ||
28 | * gcc.target/arm/neon-vdup-13.c: New test case. | ||
29 | * gcc.target/arm/neon-vdup-14.c: New test case. | ||
30 | * gcc.target/arm/neon-vdup-15.c: New test case. | ||
31 | * gcc.target/arm/neon-vdup-16.c: New test case. | ||
32 | * gcc.target/arm/neon-vdup-17.c: New test case. | ||
33 | * gcc.target/arm/neon-vdup-18.c: New test case. | ||
34 | * gcc.target/arm/neon-vdup-19.c: New test case. | ||
35 | |||
36 | |||
37 | === modified file 'gcc/config/arm/arm.c' | ||
38 | --- old/gcc/config/arm/arm.c 2010-08-13 10:55:28 +0000 | ||
39 | +++ new/gcc/config/arm/arm.c 2010-08-13 11:02:47 +0000 | ||
40 | @@ -7061,6 +7061,17 @@ | ||
41 | *total = COSTS_N_INSNS (4); | ||
42 | return true; | ||
43 | |||
44 | + case CONST_VECTOR: | ||
45 | + if (TARGET_NEON | ||
46 | + && TARGET_HARD_FLOAT | ||
47 | + && outer == SET | ||
48 | + && (VALID_NEON_DREG_MODE (mode) || VALID_NEON_QREG_MODE (mode)) | ||
49 | + && neon_immediate_valid_for_move (x, mode, NULL, NULL)) | ||
50 | + *total = COSTS_N_INSNS (1); | ||
51 | + else | ||
52 | + *total = COSTS_N_INSNS (4); | ||
53 | + return true; | ||
54 | + | ||
55 | default: | ||
56 | *total = COSTS_N_INSNS (4); | ||
57 | return false; | ||
58 | @@ -7301,6 +7312,17 @@ | ||
59 | *total = COSTS_N_INSNS (4); | ||
60 | return true; | ||
61 | |||
62 | + case CONST_VECTOR: | ||
63 | + if (TARGET_NEON | ||
64 | + && TARGET_HARD_FLOAT | ||
65 | + && outer_code == SET | ||
66 | + && (VALID_NEON_DREG_MODE (mode) || VALID_NEON_QREG_MODE (mode)) | ||
67 | + && neon_immediate_valid_for_move (x, mode, NULL, NULL)) | ||
68 | + *total = COSTS_N_INSNS (1); | ||
69 | + else | ||
70 | + *total = COSTS_N_INSNS (4); | ||
71 | + return true; | ||
72 | + | ||
73 | case HIGH: | ||
74 | case LO_SUM: | ||
75 | /* We prefer constant pool entries to MOVW/MOVT pairs, so bump the | ||
76 | @@ -7647,6 +7669,17 @@ | ||
77 | *total = COSTS_WIDE_INSNS (4); | ||
78 | return true; | ||
79 | |||
80 | + case CONST_VECTOR: | ||
81 | + if (TARGET_NEON | ||
82 | + && TARGET_HARD_FLOAT | ||
83 | + && outer_code == SET | ||
84 | + && (VALID_NEON_DREG_MODE (mode) || VALID_NEON_QREG_MODE (mode)) | ||
85 | + && neon_immediate_valid_for_move (x, mode, NULL, NULL)) | ||
86 | + *total = COSTS_WIDE_INSNS (1); | ||
87 | + else | ||
88 | + *total = COSTS_WIDE_INSNS (4); | ||
89 | + return true; | ||
90 | + | ||
91 | case HIGH: | ||
92 | case LO_SUM: | ||
93 | /* We prefer constant pool entries to MOVW/MOVT pairs, so bump the | ||
94 | @@ -8315,11 +8348,14 @@ | ||
95 | vmov i64 17 aaaaaaaa bbbbbbbb cccccccc dddddddd | ||
96 | eeeeeeee ffffffff gggggggg hhhhhhhh | ||
97 | vmov f32 18 aBbbbbbc defgh000 00000000 00000000 | ||
98 | + vmov f32 19 00000000 00000000 00000000 00000000 | ||
99 | |||
100 | For case 18, B = !b. Representable values are exactly those accepted by | ||
101 | vfp3_const_double_index, but are output as floating-point numbers rather | ||
102 | than indices. | ||
103 | |||
104 | + For case 19, we will change it to vmov.i32 when assembling. | ||
105 | + | ||
106 | Variants 0-5 (inclusive) may also be used as immediates for the second | ||
107 | operand of VORR/VBIC instructions. | ||
108 | |||
109 | @@ -8362,7 +8398,7 @@ | ||
110 | rtx el0 = CONST_VECTOR_ELT (op, 0); | ||
111 | REAL_VALUE_TYPE r0; | ||
112 | |||
113 | - if (!vfp3_const_double_rtx (el0)) | ||
114 | + if (!vfp3_const_double_rtx (el0) && el0 != CONST0_RTX (GET_MODE (el0))) | ||
115 | return -1; | ||
116 | |||
117 | REAL_VALUE_FROM_CONST_DOUBLE (r0, el0); | ||
118 | @@ -8384,7 +8420,10 @@ | ||
119 | if (elementwidth) | ||
120 | *elementwidth = 0; | ||
121 | |||
122 | - return 18; | ||
123 | + if (el0 == CONST0_RTX (GET_MODE (el0))) | ||
124 | + return 19; | ||
125 | + else | ||
126 | + return 18; | ||
127 | } | ||
128 | |||
129 | /* Splat vector constant out into a byte vector. */ | ||
130 | |||
131 | === added file 'gcc/testsuite/gcc.target/arm/neon-vdup-1.c' | ||
132 | --- old/gcc/testsuite/gcc.target/arm/neon-vdup-1.c 1970-01-01 00:00:00 +0000 | ||
133 | +++ new/gcc/testsuite/gcc.target/arm/neon-vdup-1.c 2010-08-13 11:02:47 +0000 | ||
134 | @@ -0,0 +1,17 @@ | ||
135 | +/* Test the optimization of `vdupq_n_f32' ARM Neon intrinsic. */ | ||
136 | + | ||
137 | +/* { dg-do compile } */ | ||
138 | +/* { dg-require-effective-target arm_neon_ok } */ | ||
139 | +/* { dg-options "-O2" } */ | ||
140 | +/* { dg-add-options arm_neon } */ | ||
141 | + | ||
142 | +#include <arm_neon.h> | ||
143 | + | ||
144 | +float32x4_t out_float32x4_t; | ||
145 | +void test_vdupq_nf32 (void) | ||
146 | +{ | ||
147 | + out_float32x4_t = vdupq_n_f32 (0.0); | ||
148 | +} | ||
149 | + | ||
150 | +/* { dg-final { scan-assembler "vmov\.f32\[ \]+\[qQ\]\[0-9\]+, #0\.0\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ | ||
151 | +/* { dg-final { cleanup-saved-temps } } */ | ||
152 | |||
153 | === added file 'gcc/testsuite/gcc.target/arm/neon-vdup-10.c' | ||
154 | --- old/gcc/testsuite/gcc.target/arm/neon-vdup-10.c 1970-01-01 00:00:00 +0000 | ||
155 | +++ new/gcc/testsuite/gcc.target/arm/neon-vdup-10.c 2010-08-13 11:02:47 +0000 | ||
156 | @@ -0,0 +1,17 @@ | ||
157 | +/* Test the optimization of `vdupq_n_u32' ARM Neon intrinsic. */ | ||
158 | + | ||
159 | +/* { dg-do compile } */ | ||
160 | +/* { dg-require-effective-target arm_neon_ok } */ | ||
161 | +/* { dg-options "-O2" } */ | ||
162 | +/* { dg-add-options arm_neon } */ | ||
163 | + | ||
164 | +#include <arm_neon.h> | ||
165 | + | ||
166 | +uint32x4_t out_uint32x4_t; | ||
167 | +void test_vdupq_nu32 (void) | ||
168 | +{ | ||
169 | + out_uint32x4_t = vdupq_n_u32 (~0x12000000); | ||
170 | +} | ||
171 | + | ||
172 | +/* { dg-final { scan-assembler "vmov\.i32\[ \]+\[qQ\]\[0-9\]+, #3992977407\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ | ||
173 | +/* { dg-final { cleanup-saved-temps } } */ | ||
174 | |||
175 | === added file 'gcc/testsuite/gcc.target/arm/neon-vdup-11.c' | ||
176 | --- old/gcc/testsuite/gcc.target/arm/neon-vdup-11.c 1970-01-01 00:00:00 +0000 | ||
177 | +++ new/gcc/testsuite/gcc.target/arm/neon-vdup-11.c 2010-08-13 11:02:47 +0000 | ||
178 | @@ -0,0 +1,17 @@ | ||
179 | +/* Test the optimization of `vdupq_n_u16' ARM Neon intrinsic. */ | ||
180 | + | ||
181 | +/* { dg-do compile } */ | ||
182 | +/* { dg-require-effective-target arm_neon_ok } */ | ||
183 | +/* { dg-options "-O2" } */ | ||
184 | +/* { dg-add-options arm_neon } */ | ||
185 | + | ||
186 | +#include <arm_neon.h> | ||
187 | + | ||
188 | +uint16x8_t out_uint16x8_t; | ||
189 | +void test_vdupq_nu16 (void) | ||
190 | +{ | ||
191 | + out_uint16x8_t = vdupq_n_u16 (0x12); | ||
192 | +} | ||
193 | + | ||
194 | +/* { dg-final { scan-assembler "vmov\.i16\[ \]+\[qQ\]\[0-9\]+, #18\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ | ||
195 | +/* { dg-final { cleanup-saved-temps } } */ | ||
196 | |||
197 | === added file 'gcc/testsuite/gcc.target/arm/neon-vdup-12.c' | ||
198 | --- old/gcc/testsuite/gcc.target/arm/neon-vdup-12.c 1970-01-01 00:00:00 +0000 | ||
199 | +++ new/gcc/testsuite/gcc.target/arm/neon-vdup-12.c 2010-08-13 11:02:47 +0000 | ||
200 | @@ -0,0 +1,17 @@ | ||
201 | +/* Test the optimization of `vdupq_n_u16' ARM Neon intrinsic. */ | ||
202 | + | ||
203 | +/* { dg-do compile } */ | ||
204 | +/* { dg-require-effective-target arm_neon_ok } */ | ||
205 | +/* { dg-options "-O2" } */ | ||
206 | +/* { dg-add-options arm_neon } */ | ||
207 | + | ||
208 | +#include <arm_neon.h> | ||
209 | + | ||
210 | +uint16x8_t out_uint16x8_t; | ||
211 | +void test_vdupq_nu16 (void) | ||
212 | +{ | ||
213 | + out_uint16x8_t = vdupq_n_u16 (0x1200); | ||
214 | +} | ||
215 | + | ||
216 | +/* { dg-final { scan-assembler "vmov\.i16\[ \]+\[qQ\]\[0-9\]+, #4608\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ | ||
217 | +/* { dg-final { cleanup-saved-temps } } */ | ||
218 | |||
219 | === added file 'gcc/testsuite/gcc.target/arm/neon-vdup-13.c' | ||
220 | --- old/gcc/testsuite/gcc.target/arm/neon-vdup-13.c 1970-01-01 00:00:00 +0000 | ||
221 | +++ new/gcc/testsuite/gcc.target/arm/neon-vdup-13.c 2010-08-13 11:02:47 +0000 | ||
222 | @@ -0,0 +1,17 @@ | ||
223 | +/* Test the optimization of `vdupq_n_u16' ARM Neon intrinsic. */ | ||
224 | + | ||
225 | +/* { dg-do compile } */ | ||
226 | +/* { dg-require-effective-target arm_neon_ok } */ | ||
227 | +/* { dg-options "-O2" } */ | ||
228 | +/* { dg-add-options arm_neon } */ | ||
229 | + | ||
230 | +#include <arm_neon.h> | ||
231 | + | ||
232 | +uint16x8_t out_uint16x8_t; | ||
233 | +void test_vdupq_nu16 (void) | ||
234 | +{ | ||
235 | + out_uint16x8_t = vdupq_n_u16 (~0x12); | ||
236 | +} | ||
237 | + | ||
238 | +/* { dg-final { scan-assembler "vmov\.i16\[ \]+\[qQ\]\[0-9\]+, #65517\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ | ||
239 | +/* { dg-final { cleanup-saved-temps } } */ | ||
240 | |||
241 | === added file 'gcc/testsuite/gcc.target/arm/neon-vdup-14.c' | ||
242 | --- old/gcc/testsuite/gcc.target/arm/neon-vdup-14.c 1970-01-01 00:00:00 +0000 | ||
243 | +++ new/gcc/testsuite/gcc.target/arm/neon-vdup-14.c 2010-08-13 11:02:47 +0000 | ||
244 | @@ -0,0 +1,17 @@ | ||
245 | +/* Test the optimization of `vdupq_n_u16' ARM Neon intrinsic. */ | ||
246 | + | ||
247 | +/* { dg-do compile } */ | ||
248 | +/* { dg-require-effective-target arm_neon_ok } */ | ||
249 | +/* { dg-options "-O2" } */ | ||
250 | +/* { dg-add-options arm_neon } */ | ||
251 | + | ||
252 | +#include <arm_neon.h> | ||
253 | + | ||
254 | +uint16x8_t out_uint16x8_t; | ||
255 | +void test_vdupq_nu16 (void) | ||
256 | +{ | ||
257 | + out_uint16x8_t = vdupq_n_u16 (~0x1200); | ||
258 | +} | ||
259 | + | ||
260 | +/* { dg-final { scan-assembler "vmov\.i16\[ \]+\[qQ\]\[0-9\]+, #60927\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ | ||
261 | +/* { dg-final { cleanup-saved-temps } } */ | ||
262 | |||
263 | === added file 'gcc/testsuite/gcc.target/arm/neon-vdup-15.c' | ||
264 | --- old/gcc/testsuite/gcc.target/arm/neon-vdup-15.c 1970-01-01 00:00:00 +0000 | ||
265 | +++ new/gcc/testsuite/gcc.target/arm/neon-vdup-15.c 2010-08-13 11:02:47 +0000 | ||
266 | @@ -0,0 +1,17 @@ | ||
267 | +/* Test the optimization of `vdupq_n_u8' ARM Neon intrinsic. */ | ||
268 | + | ||
269 | +/* { dg-do compile } */ | ||
270 | +/* { dg-require-effective-target arm_neon_ok } */ | ||
271 | +/* { dg-options "-O2" } */ | ||
272 | +/* { dg-add-options arm_neon } */ | ||
273 | + | ||
274 | +#include <arm_neon.h> | ||
275 | + | ||
276 | +uint8x16_t out_uint8x16_t; | ||
277 | +void test_vdupq_nu8 (void) | ||
278 | +{ | ||
279 | + out_uint8x16_t = vdupq_n_u8 (0x12); | ||
280 | +} | ||
281 | + | ||
282 | +/* { dg-final { scan-assembler "vmov\.i8\[ \]+\[qQ\]\[0-9\]+, #18\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ | ||
283 | +/* { dg-final { cleanup-saved-temps } } */ | ||
284 | |||
285 | === added file 'gcc/testsuite/gcc.target/arm/neon-vdup-16.c' | ||
286 | --- old/gcc/testsuite/gcc.target/arm/neon-vdup-16.c 1970-01-01 00:00:00 +0000 | ||
287 | +++ new/gcc/testsuite/gcc.target/arm/neon-vdup-16.c 2010-08-13 11:02:47 +0000 | ||
288 | @@ -0,0 +1,17 @@ | ||
289 | +/* Test the optimization of `vdupq_n_u32' ARM Neon intrinsic. */ | ||
290 | + | ||
291 | +/* { dg-do compile } */ | ||
292 | +/* { dg-require-effective-target arm_neon_ok } */ | ||
293 | +/* { dg-options "-O2" } */ | ||
294 | +/* { dg-add-options arm_neon } */ | ||
295 | + | ||
296 | +#include <arm_neon.h> | ||
297 | + | ||
298 | +uint32x4_t out_uint32x4_t; | ||
299 | +void test_vdupq_nu32 (void) | ||
300 | +{ | ||
301 | + out_uint32x4_t = vdupq_n_u32 (0x12ff); | ||
302 | +} | ||
303 | + | ||
304 | +/* { dg-final { scan-assembler "vmov\.i32\[ \]+\[qQ\]\[0-9\]+, #4863\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ | ||
305 | +/* { dg-final { cleanup-saved-temps } } */ | ||
306 | |||
307 | === added file 'gcc/testsuite/gcc.target/arm/neon-vdup-17.c' | ||
308 | --- old/gcc/testsuite/gcc.target/arm/neon-vdup-17.c 1970-01-01 00:00:00 +0000 | ||
309 | +++ new/gcc/testsuite/gcc.target/arm/neon-vdup-17.c 2010-08-13 11:02:47 +0000 | ||
310 | @@ -0,0 +1,17 @@ | ||
311 | +/* Test the optimization of `vdupq_n_u32' ARM Neon intrinsic. */ | ||
312 | + | ||
313 | +/* { dg-do compile } */ | ||
314 | +/* { dg-require-effective-target arm_neon_ok } */ | ||
315 | +/* { dg-options "-O2" } */ | ||
316 | +/* { dg-add-options arm_neon } */ | ||
317 | + | ||
318 | +#include <arm_neon.h> | ||
319 | + | ||
320 | +uint32x4_t out_uint32x4_t; | ||
321 | +void test_vdupq_nu32 (void) | ||
322 | +{ | ||
323 | + out_uint32x4_t = vdupq_n_u32 (0x12ffff); | ||
324 | +} | ||
325 | + | ||
326 | +/* { dg-final { scan-assembler "vmov\.i32\[ \]+\[qQ\]\[0-9\]+, #1245183\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ | ||
327 | +/* { dg-final { cleanup-saved-temps } } */ | ||
328 | |||
329 | === added file 'gcc/testsuite/gcc.target/arm/neon-vdup-18.c' | ||
330 | --- old/gcc/testsuite/gcc.target/arm/neon-vdup-18.c 1970-01-01 00:00:00 +0000 | ||
331 | +++ new/gcc/testsuite/gcc.target/arm/neon-vdup-18.c 2010-08-13 11:02:47 +0000 | ||
332 | @@ -0,0 +1,17 @@ | ||
333 | +/* Test the optimization of `vdupq_n_u32' ARM Neon intrinsic. */ | ||
334 | + | ||
335 | +/* { dg-do compile } */ | ||
336 | +/* { dg-require-effective-target arm_neon_ok } */ | ||
337 | +/* { dg-options "-O2" } */ | ||
338 | +/* { dg-add-options arm_neon } */ | ||
339 | + | ||
340 | +#include <arm_neon.h> | ||
341 | + | ||
342 | +uint32x4_t out_uint32x4_t; | ||
343 | +void test_vdupq_nu32 (void) | ||
344 | +{ | ||
345 | + out_uint32x4_t = vdupq_n_u32 (~0x12ff); | ||
346 | +} | ||
347 | + | ||
348 | +/* { dg-final { scan-assembler "vmov\.i32\[ \]+\[qQ\]\[0-9\]+, #4294962432\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ | ||
349 | +/* { dg-final { cleanup-saved-temps } } */ | ||
350 | |||
351 | === added file 'gcc/testsuite/gcc.target/arm/neon-vdup-19.c' | ||
352 | --- old/gcc/testsuite/gcc.target/arm/neon-vdup-19.c 1970-01-01 00:00:00 +0000 | ||
353 | +++ new/gcc/testsuite/gcc.target/arm/neon-vdup-19.c 2010-08-13 11:02:47 +0000 | ||
354 | @@ -0,0 +1,17 @@ | ||
355 | +/* Test the optimization of `vdupq_n_u32' ARM Neon intrinsic. */ | ||
356 | + | ||
357 | +/* { dg-do compile } */ | ||
358 | +/* { dg-require-effective-target arm_neon_ok } */ | ||
359 | +/* { dg-options "-O2" } */ | ||
360 | +/* { dg-add-options arm_neon } */ | ||
361 | + | ||
362 | +#include <arm_neon.h> | ||
363 | + | ||
364 | +uint32x4_t out_uint32x4_t; | ||
365 | +void test_vdupq_nu32 (void) | ||
366 | +{ | ||
367 | + out_uint32x4_t = vdupq_n_u32 (~0x12ffff); | ||
368 | +} | ||
369 | + | ||
370 | +/* { dg-final { scan-assembler "vmov\.i32\[ \]+\[qQ\]\[0-9\]+, #4293722112\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ | ||
371 | +/* { dg-final { cleanup-saved-temps } } */ | ||
372 | |||
373 | === added file 'gcc/testsuite/gcc.target/arm/neon-vdup-2.c' | ||
374 | --- old/gcc/testsuite/gcc.target/arm/neon-vdup-2.c 1970-01-01 00:00:00 +0000 | ||
375 | +++ new/gcc/testsuite/gcc.target/arm/neon-vdup-2.c 2010-08-13 11:02:47 +0000 | ||
376 | @@ -0,0 +1,17 @@ | ||
377 | +/* Test the optimization of `vdupq_n_f32' ARM Neon intrinsic. */ | ||
378 | + | ||
379 | +/* { dg-do compile } */ | ||
380 | +/* { dg-require-effective-target arm_neon_ok } */ | ||
381 | +/* { dg-options "-O2" } */ | ||
382 | +/* { dg-add-options arm_neon } */ | ||
383 | + | ||
384 | +#include <arm_neon.h> | ||
385 | + | ||
386 | +float32x4_t out_float32x4_t; | ||
387 | +void test_vdupq_nf32 (void) | ||
388 | +{ | ||
389 | + out_float32x4_t = vdupq_n_f32 (0.125); | ||
390 | +} | ||
391 | + | ||
392 | +/* { dg-final { scan-assembler "vmov\.f32\[ \]+\[qQ\]\[0-9\]+, #1\.25e-1\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ | ||
393 | +/* { dg-final { cleanup-saved-temps } } */ | ||
394 | |||
395 | === added file 'gcc/testsuite/gcc.target/arm/neon-vdup-3.c' | ||
396 | --- old/gcc/testsuite/gcc.target/arm/neon-vdup-3.c 1970-01-01 00:00:00 +0000 | ||
397 | +++ new/gcc/testsuite/gcc.target/arm/neon-vdup-3.c 2010-08-13 11:02:47 +0000 | ||
398 | @@ -0,0 +1,17 @@ | ||
399 | +/* Test the optimization of `vdupq_n_u32' ARM Neon intrinsic. */ | ||
400 | + | ||
401 | +/* { dg-do compile } */ | ||
402 | +/* { dg-require-effective-target arm_neon_ok } */ | ||
403 | +/* { dg-options "-O2" } */ | ||
404 | +/* { dg-add-options arm_neon } */ | ||
405 | + | ||
406 | +#include <arm_neon.h> | ||
407 | + | ||
408 | +uint32x4_t out_uint32x4_t; | ||
409 | +void test_vdupq_nu32 (void) | ||
410 | +{ | ||
411 | + out_uint32x4_t = vdupq_n_u32 (0x12); | ||
412 | +} | ||
413 | + | ||
414 | +/* { dg-final { scan-assembler "vmov\.i32\[ \]+\[qQ\]\[0-9\]+, #18\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ | ||
415 | +/* { dg-final { cleanup-saved-temps } } */ | ||
416 | |||
417 | === added file 'gcc/testsuite/gcc.target/arm/neon-vdup-4.c' | ||
418 | --- old/gcc/testsuite/gcc.target/arm/neon-vdup-4.c 1970-01-01 00:00:00 +0000 | ||
419 | +++ new/gcc/testsuite/gcc.target/arm/neon-vdup-4.c 2010-08-13 11:02:47 +0000 | ||
420 | @@ -0,0 +1,17 @@ | ||
421 | +/* Test the optimization of `vdupq_n_u32' ARM Neon intrinsic. */ | ||
422 | + | ||
423 | +/* { dg-do compile } */ | ||
424 | +/* { dg-require-effective-target arm_neon_ok } */ | ||
425 | +/* { dg-options "-O2" } */ | ||
426 | +/* { dg-add-options arm_neon } */ | ||
427 | + | ||
428 | +#include <arm_neon.h> | ||
429 | + | ||
430 | +uint32x4_t out_uint32x4_t; | ||
431 | +void test_vdupq_nu32 (void) | ||
432 | +{ | ||
433 | + out_uint32x4_t = vdupq_n_u32 (0x1200); | ||
434 | +} | ||
435 | + | ||
436 | +/* { dg-final { scan-assembler "vmov\.i32\[ \]+\[qQ\]\[0-9\]+, #4608\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ | ||
437 | +/* { dg-final { cleanup-saved-temps } } */ | ||
438 | |||
439 | === added file 'gcc/testsuite/gcc.target/arm/neon-vdup-5.c' | ||
440 | --- old/gcc/testsuite/gcc.target/arm/neon-vdup-5.c 1970-01-01 00:00:00 +0000 | ||
441 | +++ new/gcc/testsuite/gcc.target/arm/neon-vdup-5.c 2010-08-13 11:02:47 +0000 | ||
442 | @@ -0,0 +1,17 @@ | ||
443 | +/* Test the optimization of `vdupq_n_u32' ARM Neon intrinsic. */ | ||
444 | + | ||
445 | +/* { dg-do compile } */ | ||
446 | +/* { dg-require-effective-target arm_neon_ok } */ | ||
447 | +/* { dg-options "-O2" } */ | ||
448 | +/* { dg-add-options arm_neon } */ | ||
449 | + | ||
450 | +#include <arm_neon.h> | ||
451 | + | ||
452 | +uint32x4_t out_uint32x4_t; | ||
453 | +void test_vdupq_nu32 (void) | ||
454 | +{ | ||
455 | + out_uint32x4_t = vdupq_n_u32 (0x120000); | ||
456 | +} | ||
457 | + | ||
458 | +/* { dg-final { scan-assembler "vmov\.i32\[ \]+\[qQ\]\[0-9\]+, #1179648\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ | ||
459 | +/* { dg-final { cleanup-saved-temps } } */ | ||
460 | |||
461 | === added file 'gcc/testsuite/gcc.target/arm/neon-vdup-6.c' | ||
462 | --- old/gcc/testsuite/gcc.target/arm/neon-vdup-6.c 1970-01-01 00:00:00 +0000 | ||
463 | +++ new/gcc/testsuite/gcc.target/arm/neon-vdup-6.c 2010-08-13 11:02:47 +0000 | ||
464 | @@ -0,0 +1,17 @@ | ||
465 | +/* Test the optimization of `vdupq_n_u32' ARM Neon intrinsic. */ | ||
466 | + | ||
467 | +/* { dg-do compile } */ | ||
468 | +/* { dg-require-effective-target arm_neon_ok } */ | ||
469 | +/* { dg-options "-O2" } */ | ||
470 | +/* { dg-add-options arm_neon } */ | ||
471 | + | ||
472 | +#include <arm_neon.h> | ||
473 | + | ||
474 | +uint32x4_t out_uint32x4_t; | ||
475 | +void test_vdupq_nu32 (void) | ||
476 | +{ | ||
477 | + out_uint32x4_t = vdupq_n_u32 (0x12000000); | ||
478 | +} | ||
479 | + | ||
480 | +/* { dg-final { scan-assembler "vmov\.i32\[ \]+\[qQ\]\[0-9\]+, #301989888\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ | ||
481 | +/* { dg-final { cleanup-saved-temps } } */ | ||
482 | |||
483 | === added file 'gcc/testsuite/gcc.target/arm/neon-vdup-7.c' | ||
484 | --- old/gcc/testsuite/gcc.target/arm/neon-vdup-7.c 1970-01-01 00:00:00 +0000 | ||
485 | +++ new/gcc/testsuite/gcc.target/arm/neon-vdup-7.c 2010-08-13 11:02:47 +0000 | ||
486 | @@ -0,0 +1,17 @@ | ||
487 | +/* Test the optimization of `vdupq_n_u32' ARM Neon intrinsic. */ | ||
488 | + | ||
489 | +/* { dg-do compile } */ | ||
490 | +/* { dg-require-effective-target arm_neon_ok } */ | ||
491 | +/* { dg-options "-O2" } */ | ||
492 | +/* { dg-add-options arm_neon } */ | ||
493 | + | ||
494 | +#include <arm_neon.h> | ||
495 | + | ||
496 | +uint32x4_t out_uint32x4_t; | ||
497 | +void test_vdupq_nu32 (void) | ||
498 | +{ | ||
499 | + out_uint32x4_t = vdupq_n_u32 (~0x12); | ||
500 | +} | ||
501 | + | ||
502 | +/* { dg-final { scan-assembler "vmov\.i32\[ \]+\[qQ\]\[0-9\]+, #4294967277\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ | ||
503 | +/* { dg-final { cleanup-saved-temps } } */ | ||
504 | |||
505 | === added file 'gcc/testsuite/gcc.target/arm/neon-vdup-8.c' | ||
506 | --- old/gcc/testsuite/gcc.target/arm/neon-vdup-8.c 1970-01-01 00:00:00 +0000 | ||
507 | +++ new/gcc/testsuite/gcc.target/arm/neon-vdup-8.c 2010-08-13 11:02:47 +0000 | ||
508 | @@ -0,0 +1,17 @@ | ||
509 | +/* Test the optimization of `vdupq_n_u32' ARM Neon intrinsic. */ | ||
510 | + | ||
511 | +/* { dg-do compile } */ | ||
512 | +/* { dg-require-effective-target arm_neon_ok } */ | ||
513 | +/* { dg-options "-O2" } */ | ||
514 | +/* { dg-add-options arm_neon } */ | ||
515 | + | ||
516 | +#include <arm_neon.h> | ||
517 | + | ||
518 | +uint32x4_t out_uint32x4_t; | ||
519 | +void test_vdupq_nu32 (void) | ||
520 | +{ | ||
521 | + out_uint32x4_t = vdupq_n_u32 (~0x1200); | ||
522 | +} | ||
523 | + | ||
524 | +/* { dg-final { scan-assembler "vmov\.i32\[ \]+\[qQ\]\[0-9\]+, #4294962687\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ | ||
525 | +/* { dg-final { cleanup-saved-temps } } */ | ||
526 | |||
527 | === added file 'gcc/testsuite/gcc.target/arm/neon-vdup-9.c' | ||
528 | --- old/gcc/testsuite/gcc.target/arm/neon-vdup-9.c 1970-01-01 00:00:00 +0000 | ||
529 | +++ new/gcc/testsuite/gcc.target/arm/neon-vdup-9.c 2010-08-13 11:02:47 +0000 | ||
530 | @@ -0,0 +1,17 @@ | ||
531 | +/* Test the optimization of `vdupq_n_u32' ARM Neon intrinsic. */ | ||
532 | + | ||
533 | +/* { dg-do compile } */ | ||
534 | +/* { dg-require-effective-target arm_neon_ok } */ | ||
535 | +/* { dg-options "-O2" } */ | ||
536 | +/* { dg-add-options arm_neon } */ | ||
537 | + | ||
538 | +#include <arm_neon.h> | ||
539 | + | ||
540 | +uint32x4_t out_uint32x4_t; | ||
541 | +void test_vdupq_nu32 (void) | ||
542 | +{ | ||
543 | + out_uint32x4_t = vdupq_n_u32 (~0x120000); | ||
544 | +} | ||
545 | + | ||
546 | +/* { dg-final { scan-assembler "vmov\.i32\[ \]+\[qQ\]\[0-9\]+, #4293787647\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ | ||
547 | +/* { dg-final { cleanup-saved-temps } } */ | ||
548 | |||