Rebase.
[official-gcc.git] / gcc / testsuite / gcc.target / aarch64 / simd / extq_u32.x
blob61bec8bad858b259d74b1e098e7e15ed845d067b
1 extern void abort (void);
3 uint32x4_t
4 test_vextq_u32_1 (uint32x4_t a, uint32x4_t b)
6   return vextq_u32 (a, b, 1);
9 uint32x4_t
10 test_vextq_u32_2 (uint32x4_t a, uint32x4_t b)
12   return vextq_u32 (a, b, 2);
15 uint32x4_t
16 test_vextq_u32_3 (uint32x4_t a, uint32x4_t b)
18   return vextq_u32 (a, b, 3);
21 int
22 main (int argc, char **argv)
24   int i, off;
25   uint32_t arr1[] = {0, 1, 2, 3};
26   uint32x4_t in1 = vld1q_u32 (arr1);
27   uint32_t arr2[] = {4, 5, 6, 7};
28   uint32x4_t in2 = vld1q_u32 (arr2);
29   uint32_t exp[4];
30   uint32x4_t expected;
31   uint32x4_t actual = test_vextq_u32_1 (in1, in2);
33   for (i = 0; i < 4; i++)
34     exp[i] = i + 1;
35   expected = vld1q_u32 (exp);
36   for (i = 0; i < 4; i++)
37     if (actual[i] != expected[i])
38       abort ();
40   actual = test_vextq_u32_2 (in1, in2);
41   for (i = 0; i < 4; i++)
42     exp[i] = i + 2;
43   expected = vld1q_u32 (exp);
44   for (i = 0; i < 4; i++)
45     if (actual[i] != expected[i])
46       abort ();
48   actual = test_vextq_u32_3 (in1, in2);
49   for (i = 0; i < 4; i++)
50     exp[i] = i + 3;
51   expected = vld1q_u32 (exp);
52   for (i = 0; i < 4; i++)
53     if (actual[i] != expected[i])
54       abort ();
56   return 0;