annotate gcc/testsuite/g++.target/aarch64/sve/vcond_1_run.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children 1830386684a0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
131
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
1 /* { dg-do run { target aarch64_sve_hw } } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
2 /* { dg-options "-O" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
3 /* { dg-options "-O -msve-vector-bits=256" { target aarch64_sve256_hw } } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
4
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
5 #include "sve_vcond_1.c"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
6
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
7 #define NUM_ELEMS(X) (sizeof (X) / sizeof (X[0]))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
8
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
9 #define TEST_VCOND_VAR(TYPE, COND, SUFFIX) \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
10 { \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
11 TYPE x, y, a, b; \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
12 for (int i = 0; i < NUM_ELEMS (x); ++i) \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
13 { \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
14 a[i] = i - 2; \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
15 b[i] = NUM_ELEMS (x) - 2 - i; \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
16 x[i] = i * 2; \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
17 y[i] = -i * 3; \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
18 } \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
19 TYPE r = vcond_##TYPE##_##SUFFIX (x, y, a, b); \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
20 for (int i = 0; i < NUM_ELEMS (x); ++i) \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
21 if (r[i] != (a[i] COND b[i] ? x[i] : y[i])) \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
22 __builtin_abort (); \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
23 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
24
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
25 #define TEST_VCOND_IMM(TYPE, COND, IMM, SUFFIX) \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
26 { \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
27 TYPE x, y, a; \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
28 for (int i = 0; i < NUM_ELEMS (x); ++i) \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
29 { \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
30 a[i] = IMM - 2 + i; \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
31 x[i] = i * 2; \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
32 y[i] = -i * 3; \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
33 } \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
34 TYPE r = vcond_imm_##TYPE##_##SUFFIX (x, y, a); \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
35 for (int i = 0; i < NUM_ELEMS (x); ++i) \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
36 if (r[i] != (a[i] COND IMM ? x[i] : y[i])) \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
37 __builtin_abort (); \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
38 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
39
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
40
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
41 int main (int argc, char **argv)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
42 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
43 TEST_VAR_ALL (TEST_VCOND_VAR)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
44 TEST_IMM_ALL (TEST_VCOND_IMM)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
45 return 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
46 }