blob: e440f3a67942cab8d2d937c2d6f18e525454724e [file] [log] [blame]
/* { dg-do run { target aarch64_sve_hw } } */
/* { dg-options "-O2 -ftree-vectorize" } */
#include "vcond_7.c"
#define TEST_CONST_LOOP(NAME, SUFFIX, TYPE, CONST) \
{ \
for (int i = 0; i < N; ++i) \
{ \
dst[i] = i * 3; \
src[i] = i % (CONST + 3); \
} \
NAME##_##SUFFIX##_##TYPE (dst, src); \
for (int i = 0; i < N; ++i) \
if (dst[i] != (NAME (src[i], CONST) ? (TYPE) 1 : (TYPE) (i * 3))) \
__builtin_abort (); \
}
#define TEST_LOOPS(NAME, TYPE, CONST1, CONST2) \
{ \
TYPE dst[N], src[N]; \
for (int i = 0; i < N; ++i) \
{ \
dst[i] = i * 2; \
src[i] = i % 5; \
} \
NAME##_var_##TYPE (dst, src, 3); \
for (int i = 0; i < N; ++i) \
if (dst[i] != (NAME (src[i], 3) ? (TYPE) 3 : (TYPE) (i * 2))) \
__builtin_abort (); \
TEST_CONST_LOOP (NAME, const1, TYPE, CONST1) \
TEST_CONST_LOOP (NAME, const2, TYPE, CONST2) \
}
int __attribute__ ((noipa))
main (void)
{
FOR_EACH_TYPE (TEST_LOOPS);
return 0;
}