1 /* { dg-do compile } */
2 /* { dg-additional-options "-O3" } */
3 /* { dg-final { check-function-bodies "**" "" "" } } */
4
5 #include <arm_neon.h>
6
7 typedef int v4si __attribute__ ((vector_size (16)));
8
9 /*
10 **bar:
11 ** ...
12 ** addv s0, v0.4s
13 ** fmov w0, s0
14 ** lsr w1, w0, 16
15 ** add w0, w1, w0, uxth
16 ** ret
17 */
18 int bar (v4si x)
19 {
20 unsigned int sum = vaddvq_s32 (x);
21 return (((uint16_t)(sum & 0xffff)) + ((uint32_t)sum >> 16));
22 }