1 /* { dg-do run } */
2 /* { dg-options "-O3 -march=armv8.2-a" } */
3
4 #include "vect-shr-reg.c"
5
6 int
7 main(void)
8 {
9 int64_t a[16];
10 int64_t b[16];
11 int64_t c[17];
12
13 uint64_t ua[16];
14 uint64_t ub[16];
15 uint64_t uc[17];
16
17 int64_t res_a[16];
18 uint64_t res_ua[16];
19
20 int i;
21
22 /* Set up inputs. */
23 for (i = 0; i < 16; i++)
24 {
25 b[i] = -2;
26 c[i] = 34;
27 ub[i] = 0xffffffffffffffff;
28 uc[i] = 52;
29 }
30
31 /* Set up reference values. */
32 for (i = 0; i < 16; i++)
33 {
34 res_a[i] = -1LL;
35 res_ua[i] = 0x0fffLL;
36 }
37
38 /* Do the shifts. */
39 f (ua, ub, uc);
40 g (a, b, c);
41
42 /* Compare outputs against reference values. */
43 for (i = 0; i < 16; i++)
44 {
45 if (a[i] != res_a[i])
46 __builtin_abort ();
47
48 if (ua[i] != res_ua[i])
49 __builtin_abort ();
50 }
51
52 return 0;
53 }