(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
aarch64/
sve/
nlogical_1_run.c
       1  /* { dg-do run { target { aarch64_sve_hw } } } */
       2  /* { dg-options "-O3" } */
       3  
       4  #include "nlogical_1.c"
       5  
       6  #define N 128
       7  
       8  #define TEST_VNLOGICAL(TYPE)				\
       9    {							\
      10      TYPE dst[N], src[N];				\
      11      for (int i = 0; i < N; ++i)				\
      12        {							\
      13  	dst[i] = i ^ 42;				\
      14  	asm volatile ("" ::: "memory");			\
      15        }							\
      16      vnlogical_not_##TYPE (dst, N);			\
      17      for (int i = 0; i < N; ++i)				\
      18        if (dst[i] != (TYPE) ~(i ^ 42))			\
      19  	__builtin_abort ();				\
      20      for (int i = 0; i < N; ++i)				\
      21        {							\
      22  	dst[i] = i ^ 42;				\
      23  	src[i] = i % 5;					\
      24  	asm volatile ("" ::: "memory");			\
      25        }							\
      26      vnlogical_bic_##TYPE (dst, src, N);			\
      27      for (int i = 0; i < N; ++i)				\
      28        if (dst[i] != (TYPE) ((i ^ 42) & ~(i % 5)))	\
      29  	__builtin_abort ();				\
      30    }
      31  
      32  int __attribute__ ((optimize (1)))
      33  main (void)
      34  {
      35    TEST_ALL (TEST_VNLOGICAL)
      36    return 0;
      37  }