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 } } */
5 #include "index_offset_1.c"
7 #define TEST_INDEX_OFFSET(SIGNED, TYPE, ITERTYPE) \
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) \
14 in1[i] = (i * 4) ^ i; \
15 in2[i] = (i * 2) ^ i; \
16 asm volatile ("" ::: "memory"); \
19 set_##SIGNED##_##TYPE##_##ITERTYPE (out, in1); \
20 if (0 != __builtin_memcmp (out, in1, SIZE * sizeof (TYPE))) \
22 set_##SIGNED##_##TYPE##_##ITERTYPE##_var (out, in2, SIZE); \
23 if (0 != __builtin_memcmp (out, in2, SIZE * sizeof (TYPE))) \
25 if (out[SIZE] != 42) \
29 int __attribute__ ((optimize (1)))
32 TEST_ALL (TEST_INDEX_OFFSET
);