1  /* { dg-do run { target aarch64_sve_hw } } */
       2  /* { dg-options "-O2 -ftree-vectorize -fno-inline" } */
       3  
       4  #include "unpack_signed_1.c"
       5  
       6  #define ARRAY_SIZE 33
       7  
       8  #define TEST_LOOP(TYPED, TYPES)					\
       9    {								\
      10      TYPED arrayd[ARRAY_SIZE];					\
      11      TYPES arrays[ARRAY_SIZE];					\
      12      for (int i = 0; i < ARRAY_SIZE; i++)			\
      13        {								\
      14  	arrays[i] = (i - 10) * 3;				\
      15  	asm volatile ("" ::: "memory");				\
      16        }								\
      17      unpack_##TYPED##_##TYPES (arrayd, arrays, 7, ARRAY_SIZE);	\
      18      for (int i = 0; i < ARRAY_SIZE; i++)			\
      19        if (arrayd[i] != (TYPED) (TYPES) (((i - 10) * 3) | 7))	\
      20  	__builtin_abort ();					\
      21    }
      22  
      23  int __attribute__ ((optimize (1)))
      24  main (void)
      25  {
      26    TEST_ALL (TEST_LOOP)
      27    return 0;
      28  }