blob: 00114acfe49e1181dead7e519bf23bd2c4e30882 [file] [log] [blame]
/* { dg-do run { target aarch64_sve_hw } } */
/* { dg-options "-O2 -ftree-vectorize" } */
/* { dg-options "-O2 -ftree-vectorize -msve-vector-bits=256" { target aarch64_sve256_hw } } */
#include "index_offset_1.c"
#define TEST_INDEX_OFFSET(SIGNED, TYPE, ITERTYPE) \
{ \
SIGNED TYPE out[SIZE + 1]; \
SIGNED TYPE in1[SIZE + 1]; \
SIGNED TYPE in2[SIZE + 1]; \
for (int i = 0; i < SIZE + 1; ++i) \
{ \
in1[i] = (i * 4) ^ i; \
in2[i] = (i * 2) ^ i; \
asm volatile ("" ::: "memory"); \
} \
out[SIZE] = 42; \
set_##SIGNED##_##TYPE##_##ITERTYPE (out, in1); \
if (0 != __builtin_memcmp (out, in1, SIZE * sizeof (TYPE))) \
__builtin_abort (); \
set_##SIGNED##_##TYPE##_##ITERTYPE##_var (out, in2, SIZE); \
if (0 != __builtin_memcmp (out, in2, SIZE * sizeof (TYPE))) \
__builtin_abort (); \
if (out[SIZE] != 42) \
__builtin_abort (); \
}
int __attribute__ ((optimize (1)))
main (void)
{
TEST_ALL (TEST_INDEX_OFFSET);
return 0;
}