annotate gcc/testsuite/gcc.target/powerpc/vec-pdep-0.c @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 2b5abeee2509
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
152
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1 /* { dg-do compile } */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
2 /* { dg-options "-mdejagnu-cpu=future" } */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
3
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
4 #include <altivec.h>
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
5
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
6 extern void abort (void);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
7
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
8 vector unsigned long long int
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
9 do_vec_pdep (vector unsigned long long int source,
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
10 vector unsigned long long int mask) {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
11 return vec_pdep (source, mask);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
12 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
13
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
14 int
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
15 vectors_equal (vector unsigned long long int a,
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
16 vector unsigned long long int b)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
17 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
18 return (a[0] == b[0]) && (a[1] == b[1]);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
19 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
20
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
21 int
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
22 main (int argc, char *argv [])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
23 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
24 vector unsigned long long int source_a = { 0xa5f07e3cull, 0x7e3ca5f0ull };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
25 vector unsigned long long int source_b = { 0x3ca5f07eull, 0x5a0fe7c3ull };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
26
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
27 vector unsigned long long int mask_a = { 0xffff0000ull, 0x0000ffffull };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
28 vector unsigned long long int mask_b = { 0x0f0f0f0full, 0xf0f0f0f0ull };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
29
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
30 /* See pdepd-0.c for derivation of expected results.
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
31
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
32 result_aa [0] is compute (source [0], mask [0];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
33 result_aa [1] is compute (source [1], mask [1].
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
34
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
35 result_ab [0] is compute (source [0], mask [2];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
36 result_ab [1] is compute (source [1], mask [3].
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
37
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
38 result_ba [0] is compute (source [2], mask [0];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
39 result_ba [1] is compute (source [3], mask [1].
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
40
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
41 result_bb [0] is compute (source [2], mask [2];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
42 result_bb [1] is compute (source [3], mask [3]. */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
43
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
44 vector unsigned long long int result_aa = { 0x7e3c0000ull, 0x0000a5f0ull };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
45 vector unsigned long long int result_ab = { 0x070e030cull, 0xa050f000ull };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
46 vector unsigned long long int result_ba = { 0xf07e0000ull, 0x0000e7c3ull };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
47 vector unsigned long long int result_bb = { 0x0f00070eull, 0xe070c030ull };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
48
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
49 if (!vec_all_eq (do_vec_pdep (source_a, mask_a), result_aa))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
50 abort ();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
51 if (!vec_all_eq (do_vec_pdep (source_a, mask_b), result_ab))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
52 abort ();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
53 if (!vec_all_eq (do_vec_pdep (source_b, mask_a), result_ba))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
54 abort ();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
55 if (!vec_all_eq (do_vec_pdep (source_b, mask_b), result_bb))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
56 abort ();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
57
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
58 return 0;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
59 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
60
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
61 /* { dg-final { scan-assembler {\mvpdepd\M} } } */