(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
aarch64/
sve/
index_offset_1_run.c
       1  /* { dg-do run { target aarch64_sve_hw } } */
       2  /* { dg-options "-O2 -ftree-vectorize" } */
       3  /* { dg-options "-O2 -ftree-vectorize -msve-vector-bits=256" { target aarch64_sve256_hw } } */
       4  
       5  #include "index_offset_1.c"
       6  
       7  #define TEST_INDEX_OFFSET(SIGNED, TYPE, ITERTYPE)		\
       8  {								\
       9    SIGNED TYPE out[SIZE + 1];					\
      10    SIGNED TYPE in1[SIZE + 1];					\
      11    SIGNED TYPE in2[SIZE + 1];					\
      12    for (int i = 0; i < SIZE + 1; ++i)				\
      13      {								\
      14        in1[i] = (i * 4) ^ i;					\
      15        in2[i] = (i * 2) ^ i;					\
      16        asm volatile ("" ::: "memory");				\
      17      }								\
      18    out[SIZE] = 42;						\
      19    set_##SIGNED##_##TYPE##_##ITERTYPE (out, in1);		\
      20    if (0 != __builtin_memcmp (out, in1, SIZE * sizeof (TYPE)))	\
      21      __builtin_abort ();						\
      22    set_##SIGNED##_##TYPE##_##ITERTYPE##_var (out, in2, SIZE);	\
      23    if (0 != __builtin_memcmp (out, in2, SIZE * sizeof (TYPE)))	\
      24      __builtin_abort ();						\
      25    if (out[SIZE] != 42)						\
      26      __builtin_abort ();						\
      27  }
      28  
      29  int __attribute__ ((optimize (1)))
      30  main (void)
      31  {
      32    TEST_ALL (TEST_INDEX_OFFSET);
      33    return 0;
      34  }