[AArch64] SVE tests
[official-gcc.git] / gcc / testsuite / gcc.target / aarch64 / sve / nlogical_1_run.c
blob63d6c237782435f3b8f5adf3925ca92c1d5038b8
1 /* { dg-do run { target { aarch64_sve_hw } } } */
2 /* { dg-options "-O3" } */
4 #include "nlogical_1.c"
6 #define N 128
8 #define TEST_VNLOGICAL(TYPE) \
9 { \
10 TYPE dst[N], src[N]; \
11 for (int i = 0; i < N; ++i) \
12 { \
13 dst[i] = i ^ 42; \
14 asm volatile ("" ::: "memory"); \
15 } \
16 vnlogical_not_##TYPE (dst, N); \
17 for (int i = 0; i < N; ++i) \
18 if (dst[i] != (TYPE) ~(i ^ 42)) \
19 __builtin_abort (); \
20 for (int i = 0; i < N; ++i) \
21 { \
22 dst[i] = i ^ 42; \
23 src[i] = i % 5; \
24 asm volatile ("" ::: "memory"); \
25 } \
26 vnlogical_bic_##TYPE (dst, src, N); \
27 for (int i = 0; i < N; ++i) \
28 if (dst[i] != (TYPE) ((i ^ 42) & ~(i % 5))) \
29 __builtin_abort (); \
32 int __attribute__ ((optimize (1)))
33 main (void)
35 TEST_ALL (TEST_VNLOGICAL)
36 return 0;