1  /* { dg-do run { target { aarch64_sve_hw } } } */
       2  /* { dg-options "-O3 -fno-inline" } */
       3  
       4  #include "vec_bool_cmp_1.c"
       5  
       6  #define N 103
       7  
       8  #define TEST_VEC_BOOL(NAME, OP, VARTYPE, INDUCTYPE)		\
       9  {								\
      10    INDUCTYPE i;							\
      11    VARTYPE src[N];						\
      12    VARTYPE dst[N];						\
      13    for (i = 0; i < N; i++)					\
      14      {								\
      15        src[i] = i;						\
      16        dst[i] = i * 2;						\
      17        asm volatile ("" ::: "memory");				\
      18      }								\
      19    vec_bool_##NAME##_##VARTYPE##_##INDUCTYPE (dst, src, 13,	\
      20  					     97, 0xFF);		\
      21    for (i = 0; i < 13; i++)					\
      22      if (dst[i] != (VARTYPE) (0 OP 1 ? i : i * 2))		\
      23        __builtin_abort ();					\
      24    for (i = 13; i < 97; i++)					\
      25      if (dst[i] != (VARTYPE) (1 OP (i != 0x3D) ? i : i * 2))	\
      26        __builtin_abort ();					\
      27    for (i = 97; i < N; i++)					\
      28      if (dst[i] != (i * 2))					\
      29        __builtin_abort ();					\
      30  }
      31  
      32  int __attribute__ ((optimize (1)))
      33  main ()
      34  {
      35    TEST_ALL (TEST_VEC_BOOL)
      36    return 0;
      37  }