/* { dg-do compile } */
/* { dg-additional-options "-O3 -std=c99" } */
/* { dg-final { check-function-bodies "**" "" "" } } */

#include <stdint.h>

#pragma GCC target "+nosve"

/*
**test:
**	...
**	addv	s0, v0.4s
**	fmov	w0, s0
**	and	w1, w0, 65535
**	add	w0, w1, w0, lsr 16
**	lsr	w0, w0, 1
**	ret
*/
int test (uint8_t *p, uint32_t t[1][1], int n) {

  int sum = 0;
  uint32_t a0;
  for (int i = 0; i < 4; i++, p++)
    t[i][0] = p[0];

  for (int i = 0; i < 4; i++) {
    {
      int t0 = t[0][i] + t[0][i];
      a0 = t0;
    };
    sum += a0;
  }
  return (((uint16_t)sum) + ((uint32_t)sum >> 16)) >> 1;
}
