summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/aarch64/sve_vec_bool_cmp_1_run.c
blob: 092aa386c6054a5ec8b979cb43d5fe4bc665f497 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/* { dg-do run { target { aarch64_sve_hw } } } */
/* { dg-options "-O3 -fno-inline -march=armv8-a+sve" } */

#include "sve_vec_bool_cmp_1.c"

#define N 103

#define TEST_VEC_BOOL(NAME, OP, VARTYPE, INDUCTYPE)		\
{								\
  INDUCTYPE i;							\
  VARTYPE src[N];						\
  VARTYPE dst[N];						\
  for (i = 0; i < N; i++)					\
    {								\
      src[i] = i;						\
      dst[i] = i * 2;						\
      asm volatile ("" ::: "memory");				\
    }								\
  vec_bool_##NAME##_##VARTYPE##_##INDUCTYPE (dst, src, 13,	\
					     97, 0xFF);		\
  for (i = 0; i < 13; i++)					\
    if (dst[i] != (VARTYPE) (0 OP 1 ? i : i * 2))		\
      __builtin_abort ();					\
  for (i = 13; i < 97; i++)					\
    if (dst[i] != (VARTYPE) (1 OP (i != 0x3D) ? i : i * 2))	\
      __builtin_abort ();					\
  for (i = 97; i < N; i++)					\
    if (dst[i] != (i * 2))					\
      __builtin_abort ();					\
}

int __attribute__ ((optimize (1)))
main ()
{
  TEST_ALL (TEST_VEC_BOOL)
  return 0;
}