Add support for conditional reductions using SVE CLASTB
[official-gcc.git] / gcc / testsuite / gcc.target / aarch64 / sve / index_offset_1_run.c
blob00114acfe49e1181dead7e519bf23bd2c4e30882
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) \
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 (); \
29 int __attribute__ ((optimize (1)))
30 main (void)
32 TEST_ALL (TEST_INDEX_OFFSET);
33 return 0;