1extern void abort (void);
2
3int16x8_t
4test_vextq_s16_1 (int16x8_t a, int16x8_t b)
5{
6  return vextq_s16 (a, b, 1);
7}
8
9int16x8_t
10test_vextq_s16_2 (int16x8_t a, int16x8_t b)
11{
12  return vextq_s16 (a, b, 2);
13}
14
15int16x8_t
16test_vextq_s16_3 (int16x8_t a, int16x8_t b)
17{
18  return vextq_s16 (a, b, 3);
19}
20
21int16x8_t
22test_vextq_s16_4 (int16x8_t a, int16x8_t b)
23{
24  return vextq_s16 (a, b, 4);
25}
26
27int16x8_t
28test_vextq_s16_5 (int16x8_t a, int16x8_t b)
29{
30  return vextq_s16 (a, b, 5);
31}
32
33int16x8_t
34test_vextq_s16_6 (int16x8_t a, int16x8_t b)
35{
36  return vextq_s16 (a, b, 6);
37}
38
39int16x8_t
40test_vextq_s16_7 (int16x8_t a, int16x8_t b)
41{
42  return vextq_s16 (a, b, 7);
43}
44
45int
46main (int argc, char **argv)
47{
48  int i, off;
49  int16_t arr1[] = {0, 1, 2, 3, 4, 5, 6, 7};
50  int16x8_t in1 = vld1q_s16 (arr1);
51  int16_t arr2[] = {8, 9, 10, 11, 12, 13, 14, 15};
52  int16x8_t in2 = vld1q_s16 (arr2);
53  int16_t exp[8];
54  int16x8_t expected;
55  int16x8_t actual = test_vextq_s16_1 (in1, in2);
56
57  for (i = 0; i < 8; i++)
58    exp[i] = i + 1;
59  expected = vld1q_s16 (exp);
60  for (i = 0; i < 8; i++)
61    if (actual[i] != expected[i])
62      abort ();
63
64  actual = test_vextq_s16_2 (in1, in2);
65  for (i = 0; i < 8; i++)
66    exp[i] = i + 2;
67  expected = vld1q_s16 (exp);
68  for (i = 0; i < 8; i++)
69    if (actual[i] != expected[i])
70      abort ();
71
72  actual = test_vextq_s16_3 (in1, in2);
73  for (i = 0; i < 8; i++)
74    exp[i] = i + 3;
75  expected = vld1q_s16 (exp);
76  for (i = 0; i < 8; i++)
77    if (actual[i] != expected[i])
78      abort ();
79
80  actual = test_vextq_s16_4 (in1, in2);
81  for (i = 0; i < 8; i++)
82    exp[i] = i + 4;
83  expected = vld1q_s16 (exp);
84  for (i = 0; i < 8; i++)
85    if (actual[i] != expected[i])
86      abort ();
87
88  actual = test_vextq_s16_5 (in1, in2);
89  for (i = 0; i < 8; i++)
90    exp[i] = i + 5;
91  expected = vld1q_s16 (exp);
92  for (i = 0; i < 8; i++)
93    if (actual[i] != expected[i])
94      abort ();
95
96  actual = test_vextq_s16_6 (in1, in2);
97  for (i = 0; i < 8; i++)
98    exp[i] = i + 6;
99  expected = vld1q_s16 (exp);
100  for (i = 0; i < 8; i++)
101    if (actual[i] != expected[i])
102      abort ();
103
104  actual = test_vextq_s16_7 (in1, in2);
105  for (i = 0; i < 8; i++)
106    exp[i] = i + 7;
107  expected = vld1q_s16 (exp);
108  for (i = 0; i < 8; i++)
109    if (actual[i] != expected[i])
110      abort ();
111
112  return 0;
113}
114
115