1 #define SIMDE_TEST_ARM_NEON_INSN get_lane
2 
3 #include "test-neon.h"
4 #include "../../../simde/arm/neon/get_lane.h"
5 
6 HEDLEY_DIAGNOSTIC_PUSH
7 SIMDE_DIAGNOSTIC_DISABLE_UNREACHABLE_
8 
9 static int
test_simde_vget_lane_f32(SIMDE_MUNIT_TEST_ARGS)10 test_simde_vget_lane_f32 (SIMDE_MUNIT_TEST_ARGS) {
11   struct {
12     simde_float32 a[2];
13     int b;
14     simde_float32 r;
15   } test_vec[] = {
16     { { SIMDE_FLOAT32_C(   410.64), SIMDE_FLOAT32_C(   344.10) },
17        INT8_C(   1),
18       SIMDE_FLOAT32_C(   344.10) },
19     { { SIMDE_FLOAT32_C(  -838.05), SIMDE_FLOAT32_C(  -800.70) },
20        INT8_C(   1),
21       SIMDE_FLOAT32_C(  -800.70) },
22     { { SIMDE_FLOAT32_C(   546.78), SIMDE_FLOAT32_C(   198.96) },
23        INT8_C(   0),
24       SIMDE_FLOAT32_C(   546.78) },
25     { { SIMDE_FLOAT32_C(  -101.20), SIMDE_FLOAT32_C(  -135.04) },
26        INT8_C(   1),
27       SIMDE_FLOAT32_C(  -135.04) },
28     { { SIMDE_FLOAT32_C(   -61.99), SIMDE_FLOAT32_C(   998.55) },
29        INT8_C(   1),
30       SIMDE_FLOAT32_C(   998.55) },
31     { { SIMDE_FLOAT32_C(  -663.21), SIMDE_FLOAT32_C(  -581.66) },
32        INT8_C(   0),
33       SIMDE_FLOAT32_C(  -663.21) },
34     { { SIMDE_FLOAT32_C(  -515.64), SIMDE_FLOAT32_C(  -101.75) },
35        INT8_C(   1),
36       SIMDE_FLOAT32_C(  -101.75) },
37     { { SIMDE_FLOAT32_C(   909.95), SIMDE_FLOAT32_C(  -480.35) },
38        INT8_C(   0),
39       SIMDE_FLOAT32_C(   909.95) },
40 
41   };
42 
43   for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
44 
45     simde_float32x2_t a = simde_vld1_f32(test_vec[i].a);
46     int b = test_vec[i].b;
47     simde_float32 r;
48     SIMDE_CONSTIFY_2_(simde_vget_lane_f32, r, (HEDLEY_UNREACHABLE(), SIMDE_FLOAT32_C(0.0)), b, a);
49 
50     simde_assert_equal_f32(r, test_vec[i].r, 1);
51   }
52 
53   return 0;
54 }
55 
56 static int
test_simde_vget_lane_f64(SIMDE_MUNIT_TEST_ARGS)57 test_simde_vget_lane_f64 (SIMDE_MUNIT_TEST_ARGS) {
58   struct {
59     simde_float64 a[1];
60     simde_float64 r;
61   } test_vec[] = {
62     { { SIMDE_FLOAT64_C(  -475.46) },
63       SIMDE_FLOAT64_C(  -475.46) },
64     { { SIMDE_FLOAT64_C(    40.13) },
65       SIMDE_FLOAT64_C(    40.13) },
66     { { SIMDE_FLOAT64_C(   577.68) },
67       SIMDE_FLOAT64_C(   577.68) },
68     { { SIMDE_FLOAT64_C(  -438.44) },
69       SIMDE_FLOAT64_C(  -438.44) },
70     { { SIMDE_FLOAT64_C(   564.06) },
71       SIMDE_FLOAT64_C(   564.06) },
72     { { SIMDE_FLOAT64_C(  -519.34) },
73       SIMDE_FLOAT64_C(  -519.34) },
74     { { SIMDE_FLOAT64_C(  -449.22) },
75       SIMDE_FLOAT64_C(  -449.22) },
76     { { SIMDE_FLOAT64_C(  -456.94) },
77       SIMDE_FLOAT64_C(  -456.94) },
78 
79   };
80 
81   for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
82     simde_float64x1_t a = simde_vld1_f64(test_vec[i].a);
83     simde_float64 r = simde_vget_lane_f64(a, 0);
84 
85     simde_assert_equal_f64(r, test_vec[i].r, 1);
86   }
87 
88   return 0;
89 }
90 
91 static int
test_simde_vget_lane_s8(SIMDE_MUNIT_TEST_ARGS)92 test_simde_vget_lane_s8 (SIMDE_MUNIT_TEST_ARGS) {
93   struct {
94     int8_t a[8];
95     int b;
96     int8_t r;
97   } test_vec[] = {
98     { {  INT8_C(  79),  INT8_C(  68), -INT8_C(  36),  INT8_C(  47),  INT8_C(  87), -INT8_C(  22), -INT8_C(  44), -INT8_C( 111) },
99        INT8_C(   2),
100       -INT8_C(  36) },
101     { { -INT8_C(  78),  INT8_C(  75), -INT8_C( 106),  INT8_C( 111), -INT8_C(  55),  INT8_C(  39), -INT8_C(  69), -INT8_C( 110) },
102        INT8_C(   4),
103       -INT8_C(  55) },
104     { {  INT8_C(  72), -INT8_C( 120), -INT8_C( 122), -INT8_C(  86),  INT8_C(  90), -INT8_C(  24), -INT8_C(  60), -INT8_C( 104) },
105        INT8_C(   1),
106       -INT8_C( 120) },
107     { {  INT8_C( 116),  INT8_C(  37), -INT8_C(  99), -INT8_C(  48),  INT8_C( 117), -INT8_C(  31), -INT8_C(  84), -INT8_C(  92) },
108        INT8_C(   0),
109        INT8_C( 116) },
110     { { -INT8_C( 106),  INT8_C( 120), -INT8_C(  54), -INT8_C(  64),  INT8_C(  42),  INT8_C(  21),  INT8_C(  87), -INT8_C( 103) },
111        INT8_C(   6),
112        INT8_C(  87) },
113     { {  INT8_C( 126),  INT8_C(  84),  INT8_C( 112),  INT8_C(  98), -INT8_C( 100), -INT8_C(   7), -INT8_C(  23),  INT8_C(  70) },
114        INT8_C(   3),
115        INT8_C(  98) },
116     { { -INT8_C(  47),  INT8_C(  11), -INT8_C(  21),  INT8_C(  10),      INT8_MAX,  INT8_C(  17), -INT8_C(  89),  INT8_C(  79) },
117        INT8_C(   6),
118       -INT8_C(  89) },
119     { { -INT8_C( 120), -INT8_C(   5),  INT8_C(  42), -INT8_C(  64), -INT8_C( 110), -INT8_C(  94), -INT8_C( 118),  INT8_C(  82) },
120        INT8_C(   4),
121       -INT8_C( 110) },
122 
123   };
124 
125   for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
126     simde_int8x8_t a = simde_vld1_s8(test_vec[i].a);
127     int b = test_vec[i].b;
128     int8_t r;
129     SIMDE_CONSTIFY_8_(simde_vget_lane_s8, r, (HEDLEY_UNREACHABLE(), 0), b, a);
130 
131     simde_assert_equal_i8(r, test_vec[i].r);
132   }
133 
134   return 0;
135 }
136 
137 static int
test_simde_vget_lane_s16(SIMDE_MUNIT_TEST_ARGS)138 test_simde_vget_lane_s16 (SIMDE_MUNIT_TEST_ARGS) {
139   struct {
140     int16_t a[4];
141     int b;
142     int16_t r;
143   } test_vec[] = {
144     { {  INT16_C( 13913), -INT16_C(  7828), -INT16_C( 14489), -INT16_C( 26057) },
145        INT8_C(   0),
146        INT16_C( 13913) },
147     { {  INT16_C( 13818),  INT16_C( 18664), -INT16_C( 10245),  INT16_C(  6383) },
148        INT8_C(   0),
149        INT16_C( 13818) },
150     { { -INT16_C(  9771), -INT16_C( 25769),  INT16_C(  2933), -INT16_C(  2011) },
151        INT8_C(   2),
152        INT16_C(  2933) },
153     { { -INT16_C( 14019), -INT16_C( 15785), -INT16_C( 29150),  INT16_C(   814) },
154        INT8_C(   1),
155       -INT16_C( 15785) },
156     { {  INT16_C( 15094),  INT16_C(  3728), -INT16_C( 15051),  INT16_C( 32246) },
157        INT8_C(   1),
158        INT16_C(  3728) },
159     { {  INT16_C( 28109),  INT16_C( 18137), -INT16_C( 19902), -INT16_C(  8803) },
160        INT8_C(   0),
161        INT16_C( 28109) },
162     { {  INT16_C(   680),  INT16_C( 27168), -INT16_C(  5569),  INT16_C(   705) },
163        INT8_C(   0),
164        INT16_C(   680) },
165     { {  INT16_C( 12367),  INT16_C( 17680),  INT16_C( 18982),  INT16_C( 13525) },
166        INT8_C(   3),
167        INT16_C( 13525) },
168 
169   };
170 
171   for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
172     simde_int16x4_t a = simde_vld1_s16(test_vec[i].a);
173     int b = test_vec[i].b;
174     int16_t r;
175     SIMDE_CONSTIFY_4_(simde_vget_lane_s16, r, (HEDLEY_UNREACHABLE(), 0), b, a);
176 
177     simde_assert_equal_i16(r, test_vec[i].r);
178   }
179 
180   return 0;
181 }
182 
183 static int
test_simde_vget_lane_s32(SIMDE_MUNIT_TEST_ARGS)184 test_simde_vget_lane_s32 (SIMDE_MUNIT_TEST_ARGS) {
185   struct {
186     int32_t a[2];
187     int b;
188     int32_t r;
189   } test_vec[] = {
190     { {  INT32_C(   451851400), -INT32_C(   530446795) },
191        INT8_C(   0),
192        INT32_C(   451851400) },
193     { { -INT32_C(   497636127), -INT32_C(   338817732) },
194        INT8_C(   1),
195       -INT32_C(   338817732) },
196     { {  INT32_C(   212911362), -INT32_C(   643488292) },
197        INT8_C(   1),
198       -INT32_C(   643488292) },
199     { { -INT32_C(  1592001450), -INT32_C(  1634742396) },
200        INT8_C(   0),
201       -INT32_C(  1592001450) },
202     { { -INT32_C(   941293163), -INT32_C(  1004629534) },
203        INT8_C(   1),
204       -INT32_C(  1004629534) },
205     { {  INT32_C(  1941475883), -INT32_C(  1608286828) },
206        INT8_C(   0),
207        INT32_C(  1941475883) },
208     { { -INT32_C(    30194103),  INT32_C(  1025060764) },
209        INT8_C(   1),
210        INT32_C(  1025060764) },
211     { { -INT32_C(   330117656),  INT32_C(   718361442) },
212        INT8_C(   1),
213        INT32_C(   718361442) },
214 
215   };
216 
217   for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
218     simde_int32x2_t a = simde_vld1_s32(test_vec[i].a);
219     int b = test_vec[i].b;
220     int32_t r;
221     SIMDE_CONSTIFY_2_(simde_vget_lane_s32, r, (HEDLEY_UNREACHABLE(), 0), b, a);
222 
223     simde_assert_equal_i32(r, test_vec[i].r);
224   }
225 
226   return 0;
227 }
228 
229 static int
test_simde_vget_lane_s64(SIMDE_MUNIT_TEST_ARGS)230 test_simde_vget_lane_s64 (SIMDE_MUNIT_TEST_ARGS) {
231   struct {
232     int64_t a[1];
233     int64_t r;
234   } test_vec[] = {
235     { {  INT64_C( 7593315202386255056) },
236        INT64_C( 7593315202386255056) },
237     { { -INT64_C( 3283523923862515318) },
238       -INT64_C( 3283523923862515318) },
239     { {  INT64_C( 4591998433815169493) },
240        INT64_C( 4591998433815169493) },
241     { {  INT64_C( 3515554461116684124) },
242        INT64_C( 3515554461116684124) },
243     { {  INT64_C( 8463300658565386409) },
244        INT64_C( 8463300658565386409) },
245     { { -INT64_C( 5169869895816060153) },
246       -INT64_C( 5169869895816060153) },
247     { { -INT64_C( 3838821912131374513) },
248       -INT64_C( 3838821912131374513) },
249     { {  INT64_C(  166258511252788092) },
250        INT64_C(  166258511252788092) },
251 
252   };
253 
254   for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
255     simde_int64x1_t a = simde_vld1_s64(test_vec[i].a);
256     int64_t r = simde_vget_lane_s64(a, 0);
257 
258     simde_assert_equal_i64(r, test_vec[i].r);
259   }
260 
261   return 0;
262 }
263 
264 static int
test_simde_vget_lane_u8(SIMDE_MUNIT_TEST_ARGS)265 test_simde_vget_lane_u8 (SIMDE_MUNIT_TEST_ARGS) {
266   struct {
267     uint8_t a[16];
268     int b;
269     uint8_t r;
270   } test_vec[] = {
271     { { UINT8_C(145), UINT8_C( 15), UINT8_C(109), UINT8_C( 38), UINT8_C(127), UINT8_C( 69), UINT8_C(163), UINT8_C(231) },
272        INT8_C(   3),
273       UINT8_C( 38) },
274     { { UINT8_C( 26), UINT8_C( 62), UINT8_C(190), UINT8_C(237), UINT8_C(178), UINT8_C(209), UINT8_C( 61), UINT8_C(  4) },
275        INT8_C(   4),
276       UINT8_C(178) },
277     { { UINT8_C( 55), UINT8_C(139), UINT8_C( 83), UINT8_C( 28), UINT8_C( 77), UINT8_C( 73), UINT8_C(209), UINT8_C( 70) },
278        INT8_C(   0),
279       UINT8_C( 55) },
280     { { UINT8_C( 62), UINT8_C(144), UINT8_C( 10), UINT8_C(169), UINT8_C( 34), UINT8_C( 25), UINT8_C( 23), UINT8_C( 72) },
281        INT8_C(   0),
282       UINT8_C( 62) },
283     { { UINT8_C( 92), UINT8_C(235), UINT8_C(127), UINT8_C(  0), UINT8_C(  6), UINT8_C(189), UINT8_C(190), UINT8_C(243) },
284        INT8_C(   7),
285       UINT8_C(243) },
286     { { UINT8_C(143), UINT8_C( 49), UINT8_C(115), UINT8_C(147), UINT8_C(104), UINT8_C(254), UINT8_C(231), UINT8_C(132) },
287        INT8_C(   4),
288       UINT8_C(104) },
289     { { UINT8_C( 48), UINT8_C( 86), UINT8_C(146), UINT8_C(200), UINT8_C(148), UINT8_C( 34), UINT8_C(210), UINT8_C( 61) },
290        INT8_C(   4),
291       UINT8_C(148) },
292     { { UINT8_C(235), UINT8_C( 84), UINT8_C(141), UINT8_C(131), UINT8_C(177), UINT8_C(120), UINT8_C(  2), UINT8_C(177) },
293        INT8_C(   6),
294       UINT8_C(  2) },
295 
296   };
297 
298   for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
299     simde_uint8x8_t a = simde_vld1_u8(test_vec[i].a);
300     int b = test_vec[i].b;
301     uint8_t r;
302     SIMDE_CONSTIFY_8_(simde_vget_lane_u8, r, (HEDLEY_UNREACHABLE(), 0), b, a);
303 
304     simde_assert_equal_u8(r, test_vec[i].r);
305   }
306 
307   return 0;
308 }
309 
310 static int
test_simde_vget_lane_u16(SIMDE_MUNIT_TEST_ARGS)311 test_simde_vget_lane_u16 (SIMDE_MUNIT_TEST_ARGS) {
312   struct {
313     uint16_t a[4];
314     int b;
315     uint16_t r;
316   } test_vec[] = {
317     { { UINT16_C(12419), UINT16_C(50038), UINT16_C(38877), UINT16_C(17206) },
318        INT8_C(   2),
319       UINT16_C(38877) },
320     { { UINT16_C(48224), UINT16_C(21652), UINT16_C(15709), UINT16_C(31006) },
321        INT8_C(   3),
322       UINT16_C(31006) },
323     { { UINT16_C(39237), UINT16_C(11133), UINT16_C(17423), UINT16_C(50851) },
324        INT8_C(   2),
325       UINT16_C(17423) },
326     { { UINT16_C(48821), UINT16_C(47484), UINT16_C(44097), UINT16_C( 1071) },
327        INT8_C(   2),
328       UINT16_C(44097) },
329     { { UINT16_C(15302), UINT16_C(28877), UINT16_C(35227), UINT16_C(61189) },
330        INT8_C(   3),
331       UINT16_C(61189) },
332     { { UINT16_C( 3394), UINT16_C(19808), UINT16_C(63826), UINT16_C(32458) },
333        INT8_C(   0),
334       UINT16_C( 3394) },
335     { { UINT16_C( 8462), UINT16_C(23759), UINT16_C(36311), UINT16_C(37080) },
336        INT8_C(   2),
337       UINT16_C(36311) },
338     { { UINT16_C(49029), UINT16_C( 4051), UINT16_C( 3717), UINT16_C(63196) },
339        INT8_C(   1),
340       UINT16_C( 4051) },
341 
342   };
343 
344   for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
345     simde_uint16x4_t a = simde_vld1_u16(test_vec[i].a);
346     int b = test_vec[i].b;
347     uint16_t r;
348     SIMDE_CONSTIFY_4_(simde_vget_lane_u16, r, (HEDLEY_UNREACHABLE(), 0), b, a);
349     simde_assert_equal_u16(r, test_vec[i].r);
350   }
351 
352   return 0;
353 }
354 
355 static int
test_simde_vget_lane_u32(SIMDE_MUNIT_TEST_ARGS)356 test_simde_vget_lane_u32 (SIMDE_MUNIT_TEST_ARGS) {
357   struct {
358     uint32_t a[2];
359     int b;
360     uint32_t r;
361   } test_vec[] = {
362     { { UINT32_C(3007867267), UINT32_C(2989705603) },
363        INT8_C(   0),
364       UINT32_C(3007867267) },
365     { { UINT32_C(1366545288), UINT32_C(3281825408) },
366        INT8_C(   1),
367       UINT32_C(3281825408) },
368     { { UINT32_C( 661651758), UINT32_C(3582788621) },
369        INT8_C(   1),
370       UINT32_C(3582788621) },
371     { { UINT32_C( 203852593), UINT32_C(3260321551) },
372        INT8_C(   1),
373       UINT32_C(3260321551) },
374     { { UINT32_C(  96859549), UINT32_C(3464009853) },
375        INT8_C(   0),
376       UINT32_C(  96859549) },
377     { { UINT32_C(3990579750), UINT32_C(3210599832) },
378        INT8_C(   0),
379       UINT32_C(3990579750) },
380     { { UINT32_C( 197152098), UINT32_C(2318486398) },
381        INT8_C(   0),
382       UINT32_C( 197152098) },
383     { { UINT32_C(3541884608), UINT32_C(2174226811) },
384        INT8_C(   0),
385       UINT32_C(3541884608) },
386 
387   };
388 
389   for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
390     simde_uint32x2_t a = simde_vld1_u32(test_vec[i].a);
391     int b = test_vec[i].b;
392     uint32_t r;
393     SIMDE_CONSTIFY_2_(simde_vget_lane_u32, r, (HEDLEY_UNREACHABLE(), 0), b, a);
394     simde_assert_equal_u32(r, test_vec[i].r);
395   }
396 
397   return 0;
398 }
399 
400 static int
test_simde_vget_lane_u64(SIMDE_MUNIT_TEST_ARGS)401 test_simde_vget_lane_u64 (SIMDE_MUNIT_TEST_ARGS) {
402   struct {
403     uint64_t a[1];
404     uint64_t r;
405   } test_vec[] = {
406     { { UINT64_C( 8474713643211531917) },
407       UINT64_C( 8474713643211531917) },
408     { { UINT64_C( 4718805824424333625) },
409       UINT64_C( 4718805824424333625) },
410     { { UINT64_C( 2901443443683120557) },
411       UINT64_C( 2901443443683120557) },
412     { { UINT64_C(16896600451596749021) },
413       UINT64_C(16896600451596749021) },
414     { { UINT64_C( 2355020594457970359) },
415       UINT64_C( 2355020594457970359) },
416     { { UINT64_C(14871504216242625854) },
417       UINT64_C(14871504216242625854) },
418     { { UINT64_C(11884950968574087521) },
419       UINT64_C(11884950968574087521) },
420     { { UINT64_C(12253690780921831607) },
421       UINT64_C(12253690780921831607) },
422 
423   };
424 
425   for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
426     simde_uint64x1_t a = simde_vld1_u64(test_vec[i].a);
427     uint64_t r = simde_vget_lane_u64(a, 0);
428     simde_assert_equal_u64(r, test_vec[i].r);
429   }
430 
431   return 0;
432 }
433 
434 static int
test_simde_vgetq_lane_f32(SIMDE_MUNIT_TEST_ARGS)435 test_simde_vgetq_lane_f32 (SIMDE_MUNIT_TEST_ARGS) {
436   struct {
437     simde_float32 a[4];
438     int b;
439     simde_float32 r;
440   } test_vec[] = {
441     { { SIMDE_FLOAT32_C(   273.12), SIMDE_FLOAT32_C(   753.68), SIMDE_FLOAT32_C(   -47.15), SIMDE_FLOAT32_C(   832.55) },
442        INT8_C(   1),
443       SIMDE_FLOAT32_C(   753.68) },
444     { { SIMDE_FLOAT32_C(   -32.75), SIMDE_FLOAT32_C(    69.02), SIMDE_FLOAT32_C(   834.09), SIMDE_FLOAT32_C(   613.18) },
445        INT8_C(   3),
446       SIMDE_FLOAT32_C(   613.18) },
447     { { SIMDE_FLOAT32_C(  -409.75), SIMDE_FLOAT32_C(  -293.91), SIMDE_FLOAT32_C(  -958.18), SIMDE_FLOAT32_C(  -184.72) },
448        INT8_C(   3),
449       SIMDE_FLOAT32_C(  -184.72) },
450     { { SIMDE_FLOAT32_C(  -957.69), SIMDE_FLOAT32_C(   993.98), SIMDE_FLOAT32_C(   264.51), SIMDE_FLOAT32_C(  -192.93) },
451        INT8_C(   3),
452       SIMDE_FLOAT32_C(  -192.93) },
453     { { SIMDE_FLOAT32_C(   970.45), SIMDE_FLOAT32_C(   778.50), SIMDE_FLOAT32_C(   196.11), SIMDE_FLOAT32_C(   650.20) },
454        INT8_C(   1),
455       SIMDE_FLOAT32_C(   778.50) },
456     { { SIMDE_FLOAT32_C(  -845.53), SIMDE_FLOAT32_C(  -889.17), SIMDE_FLOAT32_C(  -363.16), SIMDE_FLOAT32_C(   770.16) },
457        INT8_C(   3),
458       SIMDE_FLOAT32_C(   770.16) },
459     { { SIMDE_FLOAT32_C(   532.17), SIMDE_FLOAT32_C(    43.28), SIMDE_FLOAT32_C(    39.43), SIMDE_FLOAT32_C(  -514.98) },
460        INT8_C(   1),
461       SIMDE_FLOAT32_C(    43.28) },
462     { { SIMDE_FLOAT32_C(    35.67), SIMDE_FLOAT32_C(   452.27), SIMDE_FLOAT32_C(   944.85), SIMDE_FLOAT32_C(  -130.24) },
463        INT8_C(   3),
464       SIMDE_FLOAT32_C(  -130.24) },
465 
466   };
467 
468   for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
469     simde_float32x4_t a = simde_vld1q_f32(test_vec[i].a);
470     int b = test_vec[i].b;
471     simde_float32 r;
472     SIMDE_CONSTIFY_4_(simde_vgetq_lane_f32, r, (HEDLEY_UNREACHABLE(), SIMDE_FLOAT32_C(0.0)), b, a);
473 
474     simde_assert_equal_f32(r, test_vec[i].r, 1);
475   }
476 
477   return 0;
478 }
479 
480 static int
test_simde_vgetq_lane_f64(SIMDE_MUNIT_TEST_ARGS)481 test_simde_vgetq_lane_f64 (SIMDE_MUNIT_TEST_ARGS) {
482   struct {
483     simde_float64 a[2];
484     int b;
485     simde_float64 r;
486   } test_vec[] = {
487     { { SIMDE_FLOAT64_C(   629.36), SIMDE_FLOAT64_C(  -547.88) },
488        INT8_C(   1),
489       SIMDE_FLOAT64_C(  -547.88) },
490     { { SIMDE_FLOAT64_C(  -917.95), SIMDE_FLOAT64_C(  -153.86) },
491        INT8_C(   1),
492       SIMDE_FLOAT64_C(  -153.86) },
493     { { SIMDE_FLOAT64_C(   233.05), SIMDE_FLOAT64_C(  -687.76) },
494        INT8_C(   1),
495       SIMDE_FLOAT64_C(  -687.76) },
496     { { SIMDE_FLOAT64_C(   358.76), SIMDE_FLOAT64_C(   -20.52) },
497        INT8_C(   1),
498       SIMDE_FLOAT64_C(   -20.52) },
499     { { SIMDE_FLOAT64_C(   501.06), SIMDE_FLOAT64_C(  -830.23) },
500        INT8_C(   1),
501       SIMDE_FLOAT64_C(  -830.23) },
502     { { SIMDE_FLOAT64_C(  -204.70), SIMDE_FLOAT64_C(  -481.76) },
503        INT8_C(   1),
504       SIMDE_FLOAT64_C(  -481.76) },
505     { { SIMDE_FLOAT64_C(  -746.83), SIMDE_FLOAT64_C(   -28.88) },
506        INT8_C(   1),
507       SIMDE_FLOAT64_C(   -28.88) },
508     { { SIMDE_FLOAT64_C(   935.21), SIMDE_FLOAT64_C(  -696.96) },
509        INT8_C(   1),
510       SIMDE_FLOAT64_C(  -696.96) },
511 
512   };
513 
514   for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
515     simde_float64x2_t a = simde_vld1q_f64(test_vec[i].a);
516     int b = test_vec[i].b;
517     simde_float64 r;
518     SIMDE_CONSTIFY_2_(simde_vgetq_lane_f64, r, (HEDLEY_UNREACHABLE(), SIMDE_FLOAT64_C(0.0)), b, a);
519 
520     simde_assert_equal_f64(r, test_vec[i].r, 1);
521   }
522 
523   return 0;
524 }
525 
526 static int
test_simde_vgetq_lane_s8(SIMDE_MUNIT_TEST_ARGS)527 test_simde_vgetq_lane_s8 (SIMDE_MUNIT_TEST_ARGS) {
528   struct {
529     int8_t a[16];
530     int b;
531     int8_t r;
532   } test_vec[] = {
533     { {  INT8_C(  62),  INT8_C(  17),  INT8_C(  52),  INT8_C(  30), -INT8_C(  59), -INT8_C( 118), -INT8_C(  42),  INT8_C(  25),
534         -INT8_C(  15), -INT8_C(  48), -INT8_C(  40), -INT8_C(  27),  INT8_C( 102),  INT8_C(  24), -INT8_C( 127), -INT8_C(  50) },
535        INT8_C(   4),
536       -INT8_C(  59) },
537     { { -INT8_C( 121), -INT8_C(  43), -INT8_C(  86),  INT8_C(  63),  INT8_C(   7),  INT8_C(  83),  INT8_C(  53),  INT8_C(  61),
538         -INT8_C(   4),  INT8_C(  81),  INT8_C(   2),  INT8_C(  47), -INT8_C(  19), -INT8_C( 112),  INT8_C( 109), -INT8_C(   2) },
539        INT8_C(   4),
540        INT8_C(   7) },
541     { { -INT8_C( 117), -INT8_C(  61),  INT8_C(  78),  INT8_C(  97), -INT8_C(  36),  INT8_C(  63),  INT8_C(  50), -INT8_C(  76),
542          INT8_C(  36), -INT8_C( 104), -INT8_C(  51), -INT8_C(  90),  INT8_C( 102),  INT8_C(  81),  INT8_C(  45),  INT8_C(  59) },
543        INT8_C(  11),
544       -INT8_C(  90) },
545     { {  INT8_C( 108),  INT8_C(  66),  INT8_C(  78), -INT8_C(  94),      INT8_MIN,  INT8_C(  74), -INT8_C(  13), -INT8_C( 126),
546          INT8_C( 121), -INT8_C(  32),  INT8_C(  18), -INT8_C(  25), -INT8_C(  34), -INT8_C(  41),  INT8_C( 114), -INT8_C(  94) },
547        INT8_C(   5),
548        INT8_C(  74) },
549     { { -INT8_C(  44),  INT8_C( 126),  INT8_C( 101),  INT8_C(   6),  INT8_C(  51), -INT8_C( 119), -INT8_C(  98),  INT8_C(   0),
550          INT8_C(  47),  INT8_C(   4),  INT8_C(  81),  INT8_C(  93),  INT8_C(  64),  INT8_C(  77), -INT8_C(  55), -INT8_C( 126) },
551        INT8_C(  11),
552        INT8_C(  93) },
553     { {  INT8_C( 107),  INT8_C(   2), -INT8_C(  26),  INT8_C(  95), -INT8_C( 124),  INT8_C(  95),  INT8_C(  63), -INT8_C( 105),
554          INT8_C(  70),  INT8_C(  30),  INT8_C( 110), -INT8_C(  71), -INT8_C(  64), -INT8_C( 109), -INT8_C( 115),  INT8_C(  62) },
555        INT8_C(   8),
556        INT8_C(  70) },
557     { { -INT8_C( 109),  INT8_C( 113), -INT8_C( 126),  INT8_C(  49),  INT8_C( 113), -INT8_C(  79),  INT8_C(  53), -INT8_C(  61),
558          INT8_C(  14),  INT8_C( 117),  INT8_C(  16), -INT8_C(  40), -INT8_C(   8), -INT8_C(  85),  INT8_C(  67), -INT8_C(   6) },
559        INT8_C(   1),
560        INT8_C( 113) },
561     { { -INT8_C(  94),      INT8_MAX, -INT8_C(  15), -INT8_C(  30),  INT8_C(  22),  INT8_C(  55),  INT8_C(   0), -INT8_C( 124),
562         -INT8_C(  16), -INT8_C(  64),  INT8_C(  23),  INT8_C( 125), -INT8_C(   2),  INT8_C(  16),  INT8_C(  16),  INT8_C( 112) },
563        INT8_C(   2),
564       -INT8_C(  15) },
565 
566   };
567 
568   for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
569     simde_int8x16_t a = simde_vld1q_s8(test_vec[i].a);
570     int b = test_vec[i].b;
571     int8_t r;
572     SIMDE_CONSTIFY_16_(simde_vgetq_lane_s8, r, (HEDLEY_UNREACHABLE(), 0), b, a);
573 
574     simde_assert_equal_i8(r, test_vec[i].r);
575   }
576 
577   return 0;
578 }
579 
580 static int
test_simde_vgetq_lane_s16(SIMDE_MUNIT_TEST_ARGS)581 test_simde_vgetq_lane_s16 (SIMDE_MUNIT_TEST_ARGS) {
582   struct {
583     int16_t a[8];
584     int b;
585     int16_t r;
586   } test_vec[] = {
587     { {  INT16_C( 16940), -INT16_C( 29603), -INT16_C( 16153), -INT16_C(  3490), -INT16_C( 19383),  INT16_C( 28817),  INT16_C(  5341),  INT16_C(  6146) },
588        INT8_C(   4),
589       -INT16_C( 19383) },
590     { { -INT16_C( 22867),  INT16_C( 27147),  INT16_C( 18990),  INT16_C(  5131),  INT16_C( 18178), -INT16_C( 29906), -INT16_C( 10956),  INT16_C( 30392) },
591        INT8_C(   2),
592        INT16_C( 18990) },
593     { {  INT16_C( 23876), -INT16_C( 23822),  INT16_C( 15439), -INT16_C(  8105),  INT16_C( 13484), -INT16_C( 20748), -INT16_C( 10164), -INT16_C(  3493) },
594        INT8_C(   3),
595       -INT16_C(  8105) },
596     { {  INT16_C(  8645), -INT16_C( 12242),  INT16_C( 12341),  INT16_C( 25623),  INT16_C( 19644),  INT16_C( 29753),  INT16_C( 27586),  INT16_C(  8376) },
597        INT8_C(   6),
598        INT16_C( 27586) },
599     { {  INT16_C( 28507), -INT16_C( 19814),  INT16_C( 18000),  INT16_C( 17638),  INT16_C( 13044),  INT16_C( 20253),  INT16_C(    37),  INT16_C( 17940) },
600        INT8_C(   6),
601        INT16_C(    37) },
602     { {  INT16_C( 31717), -INT16_C(   929),  INT16_C(  7135),  INT16_C(  6216),  INT16_C(  2959),  INT16_C( 18308), -INT16_C(  7637), -INT16_C( 25950) },
603        INT8_C(   4),
604        INT16_C(  2959) },
605     { { -INT16_C(  5548),  INT16_C( 15042), -INT16_C( 18897),  INT16_C( 19565), -INT16_C( 28155),  INT16_C(  6476),  INT16_C( 31704),  INT16_C( 21502) },
606        INT8_C(   2),
607       -INT16_C( 18897) },
608     { {  INT16_C( 13307),  INT16_C( 17397), -INT16_C( 31669), -INT16_C( 12466),  INT16_C( 31179),  INT16_C( 28337),  INT16_C( 11540), -INT16_C(   318) },
609        INT8_C(   7),
610       -INT16_C(   318) },
611 
612   };
613 
614   for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
615     simde_int16x8_t a = simde_vld1q_s16(test_vec[i].a);
616     int b = test_vec[i].b;
617     int16_t r;
618     SIMDE_CONSTIFY_8_(simde_vgetq_lane_s16, r, (HEDLEY_UNREACHABLE(), 0), b, a);
619 
620     simde_assert_equal_i16(r, test_vec[i].r);
621   }
622 
623   return 0;
624 }
625 
626 static int
test_simde_vgetq_lane_s32(SIMDE_MUNIT_TEST_ARGS)627 test_simde_vgetq_lane_s32 (SIMDE_MUNIT_TEST_ARGS) {
628   struct {
629     int32_t a[4];
630     int b;
631     int32_t r;
632   } test_vec[] = {
633     { { -INT32_C(   382002186),  INT32_C(  1860295962),  INT32_C(   860430686), -INT32_C(  1104420096) },
634        INT8_C(   1),
635        INT32_C(  1860295962) },
636     { { -INT32_C(  1513067068), -INT32_C(   120501551), -INT32_C(  1300405244),  INT32_C(   262707700) },
637        INT8_C(   0),
638       -INT32_C(  1513067068) },
639     { {  INT32_C(  1941055890), -INT32_C(   510390121),  INT32_C(  1875153987), -INT32_C(  1070336685) },
640        INT8_C(   2),
641        INT32_C(  1875153987) },
642     { { -INT32_C(  1458531880),  INT32_C(   101520521),  INT32_C(  1872691654),  INT32_C(   956396304) },
643        INT8_C(   1),
644        INT32_C(   101520521) },
645     { {  INT32_C(   137744756),  INT32_C(  1990031794),  INT32_C(   460058856),  INT32_C(  1106522544) },
646        INT8_C(   1),
647        INT32_C(  1990031794) },
648     { { -INT32_C(  1420375395),  INT32_C(  1873550544), -INT32_C(  1931297397), -INT32_C(   956299018) },
649        INT8_C(   1),
650        INT32_C(  1873550544) },
651     { { -INT32_C(  1497990903),  INT32_C(  1536597743), -INT32_C(  1366538566),  INT32_C(  1363922567) },
652        INT8_C(   0),
653       -INT32_C(  1497990903) },
654     { { -INT32_C(  1556078090),  INT32_C(  1918946448),  INT32_C(  1501189720), -INT32_C(  1755138018) },
655        INT8_C(   2),
656        INT32_C(  1501189720) },
657 
658   };
659 
660   for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
661     simde_int32x4_t a = simde_vld1q_s32(test_vec[i].a);
662     int b = test_vec[i].b;
663     int32_t r;
664     SIMDE_CONSTIFY_4_(simde_vgetq_lane_s32, r, (HEDLEY_UNREACHABLE(), 0), b, a);
665     simde_assert_equal_i32(r, test_vec[i].r);
666   }
667 
668   return 0;
669 }
670 
671 static int
test_simde_vgetq_lane_s64(SIMDE_MUNIT_TEST_ARGS)672 test_simde_vgetq_lane_s64 (SIMDE_MUNIT_TEST_ARGS) {
673   struct {
674     int64_t a[2];
675     int b;
676     int64_t r;
677   } test_vec[] = {
678     { {  INT64_C( 3728751874968948413),  INT64_C( 5321062654944271890) },
679        INT8_C(   1),
680        INT64_C( 5321062654944271890) },
681     { { -INT64_C( 6526973102782903603),  INT64_C( 4086456640948673758) },
682        INT8_C(   0),
683       -INT64_C( 6526973102782903603) },
684     { {  INT64_C(  821728255052303305), -INT64_C( 8871372210728488644) },
685        INT8_C(   1),
686       -INT64_C( 8871372210728488644) },
687     { {  INT64_C( 9063507124988743488), -INT64_C(  755308779427368444) },
688        INT8_C(   1),
689       -INT64_C(  755308779427368444) },
690     { { -INT64_C( 4601413837701090548), -INT64_C( 5568997109630427501) },
691        INT8_C(   1),
692       -INT64_C( 5568997109630427501) },
693     { {  INT64_C( 7249722157166126946), -INT64_C( 5802075325525506327) },
694        INT8_C(   1),
695       -INT64_C( 5802075325525506327) },
696     { {  INT64_C( 4192912744441392621), -INT64_C( 1385899749073431636) },
697        INT8_C(   0),
698        INT64_C( 4192912744441392621) },
699     { {  INT64_C( 3662145803337978095), -INT64_C( 1557336465030705668) },
700        INT8_C(   0),
701        INT64_C( 3662145803337978095) },
702 
703   };
704 
705   for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
706     simde_int64x2_t a = simde_vld1q_s64(test_vec[i].a);
707     int b = test_vec[i].b;
708     int64_t r;
709     SIMDE_CONSTIFY_2_(simde_vgetq_lane_s64, r, (HEDLEY_UNREACHABLE(), 0), b, a);
710     simde_assert_equal_i64(r, test_vec[i].r);
711   }
712 
713   return 0;
714 }
715 
716 static int
test_simde_vgetq_lane_u8(SIMDE_MUNIT_TEST_ARGS)717 test_simde_vgetq_lane_u8 (SIMDE_MUNIT_TEST_ARGS) {
718   struct {
719     uint8_t a[16];
720     int b;
721     uint8_t r;
722   } test_vec[] = {
723     { { UINT8_C(217), UINT8_C( 95), UINT8_C(111), UINT8_C(104), UINT8_C( 19), UINT8_C(112), UINT8_C(195), UINT8_C( 29),
724         UINT8_C(167), UINT8_C(167), UINT8_C( 53), UINT8_C(250), UINT8_C(196), UINT8_C(115), UINT8_C( 22), UINT8_C(127) },
725        INT8_C(  14),
726       UINT8_C( 22) },
727     { { UINT8_C(166), UINT8_C(247), UINT8_C( 43), UINT8_C( 33), UINT8_C(246), UINT8_C(230), UINT8_C(120), UINT8_C(202),
728         UINT8_C(208), UINT8_C(134), UINT8_C(111), UINT8_C(125), UINT8_C( 17), UINT8_C( 54), UINT8_C( 86), UINT8_C(112) },
729        INT8_C(   6),
730       UINT8_C(120) },
731     { { UINT8_C(191), UINT8_C(132), UINT8_C( 22), UINT8_C(130), UINT8_C(161), UINT8_C(189), UINT8_C( 41), UINT8_C(214),
732         UINT8_C(184), UINT8_C(237), UINT8_C( 73), UINT8_C(206), UINT8_C(108), UINT8_C(103), UINT8_C(117), UINT8_C( 99) },
733        INT8_C(   2),
734       UINT8_C( 22) },
735     { { UINT8_C(150), UINT8_C( 89), UINT8_C(120), UINT8_C( 14), UINT8_C( 36), UINT8_C( 72), UINT8_C(148), UINT8_C(147),
736         UINT8_C(197), UINT8_C(166), UINT8_C(201), UINT8_C( 28), UINT8_C( 22), UINT8_C(111), UINT8_C(219), UINT8_C(154) },
737        INT8_C(   6),
738       UINT8_C(148) },
739     { { UINT8_C( 93), UINT8_C( 59), UINT8_C( 67), UINT8_C(134), UINT8_C( 17), UINT8_C(251), UINT8_C(115), UINT8_C( 91),
740         UINT8_C(202), UINT8_C(223), UINT8_C(194), UINT8_C( 63), UINT8_C( 66), UINT8_C( 85), UINT8_C(213), UINT8_C(156) },
741        INT8_C(  13),
742       UINT8_C( 85) },
743     { { UINT8_C(227), UINT8_C(192), UINT8_C( 22), UINT8_C(120), UINT8_C( 83), UINT8_C(219), UINT8_C( 30), UINT8_C( 28),
744         UINT8_C(247), UINT8_C( 52), UINT8_C(140), UINT8_C(210), UINT8_C(207), UINT8_C( 18), UINT8_C( 47), UINT8_C( 10) },
745        INT8_C(   5),
746       UINT8_C(219) },
747     { { UINT8_C(181), UINT8_C( 28), UINT8_C( 81), UINT8_C( 40), UINT8_C(119), UINT8_C( 27), UINT8_C(  7), UINT8_C( 57),
748         UINT8_C( 90), UINT8_C( 74), UINT8_C(142), UINT8_C( 47), UINT8_C(230), UINT8_C( 92), UINT8_C( 18), UINT8_C(166) },
749        INT8_C(   2),
750       UINT8_C( 81) },
751     { { UINT8_C(138), UINT8_C(249), UINT8_C( 77), UINT8_C(168), UINT8_C( 21), UINT8_C( 69), UINT8_C(221), UINT8_C(161),
752         UINT8_C( 23), UINT8_C(172), UINT8_C(179), UINT8_C( 71), UINT8_C(182), UINT8_C(  9), UINT8_C(252), UINT8_C(210) },
753        INT8_C(  10),
754       UINT8_C(179) },
755 
756   };
757 
758   for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
759     simde_uint8x16_t a = simde_vld1q_u8(test_vec[i].a);
760     int b = test_vec[i].b;
761     uint8_t r;
762     SIMDE_CONSTIFY_16_(simde_vgetq_lane_u8, r, (HEDLEY_UNREACHABLE(), 0), b, a);
763 
764     simde_assert_equal_u8(r, test_vec[i].r);
765   }
766 
767   return 0;
768 }
769 
770 static int
test_simde_vgetq_lane_u16(SIMDE_MUNIT_TEST_ARGS)771 test_simde_vgetq_lane_u16 (SIMDE_MUNIT_TEST_ARGS) {
772   struct {
773     uint16_t a[8];
774     int b;
775     uint16_t r;
776   } test_vec[] = {
777     { { UINT16_C(61091), UINT16_C(53658), UINT16_C(16697), UINT16_C( 5906), UINT16_C( 8437), UINT16_C(24513), UINT16_C(37350), UINT16_C(20655) },
778        INT8_C(   0),
779       UINT16_C(61091) },
780     { { UINT16_C(42027), UINT16_C(57525), UINT16_C(55191), UINT16_C(45942), UINT16_C( 7418), UINT16_C( 8850), UINT16_C(38827), UINT16_C(39366) },
781        INT8_C(   1),
782       UINT16_C(57525) },
783     { { UINT16_C(53911), UINT16_C(43634), UINT16_C(26601), UINT16_C(43978), UINT16_C(45510), UINT16_C(30268), UINT16_C(29697), UINT16_C(42401) },
784        INT8_C(   1),
785       UINT16_C(43634) },
786     { { UINT16_C(15490), UINT16_C(63489), UINT16_C(64495), UINT16_C(33044), UINT16_C(48926), UINT16_C(58393), UINT16_C(19032), UINT16_C(10875) },
787        INT8_C(   5),
788       UINT16_C(58393) },
789     { { UINT16_C( 5157), UINT16_C(61476), UINT16_C(60351), UINT16_C(64417), UINT16_C(41569), UINT16_C(  623), UINT16_C(38983), UINT16_C(33668) },
790        INT8_C(   1),
791       UINT16_C(61476) },
792     { { UINT16_C(29308), UINT16_C(37269), UINT16_C(46068), UINT16_C( 3408), UINT16_C(43415), UINT16_C( 4695), UINT16_C( 5331), UINT16_C(59192) },
793        INT8_C(   1),
794       UINT16_C(37269) },
795     { { UINT16_C(42536), UINT16_C(51492), UINT16_C(34209), UINT16_C( 4203), UINT16_C(45703), UINT16_C( 3241), UINT16_C(16949), UINT16_C(42888) },
796        INT8_C(   7),
797       UINT16_C(42888) },
798     { { UINT16_C(39705), UINT16_C(27274), UINT16_C( 8616), UINT16_C(   19), UINT16_C(58932), UINT16_C(27668), UINT16_C(19918), UINT16_C(29844) },
799        INT8_C(   1),
800       UINT16_C(27274) },
801 
802   };
803 
804   for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
805     simde_uint16x8_t a = simde_vld1q_u16(test_vec[i].a);
806     int b = test_vec[i].b;
807     uint16_t r;
808     SIMDE_CONSTIFY_8_(simde_vgetq_lane_u16, r, (HEDLEY_UNREACHABLE(), 0), b, a);
809     simde_assert_equal_u16(r, test_vec[i].r);
810   }
811 
812   return 0;
813 }
814 
815 static int
test_simde_vgetq_lane_u32(SIMDE_MUNIT_TEST_ARGS)816 test_simde_vgetq_lane_u32 (SIMDE_MUNIT_TEST_ARGS) {
817   struct {
818     uint32_t a[4];
819     int b;
820     uint32_t r;
821   } test_vec[] = {
822     { { UINT32_C( 212833295), UINT32_C(2425004302), UINT32_C( 474038220), UINT32_C(2853920187) },
823        INT8_C(   0),
824       UINT32_C( 212833295) },
825     { { UINT32_C(2233196758), UINT32_C(2390980779), UINT32_C(2474222548), UINT32_C(1419939520) },
826        INT8_C(   1),
827       UINT32_C(2390980779) },
828     { { UINT32_C( 970875823), UINT32_C( 880388851), UINT32_C(3784455366), UINT32_C(3199696606) },
829        INT8_C(   1),
830       UINT32_C( 880388851) },
831     { { UINT32_C(3222366780), UINT32_C(1919149560), UINT32_C( 452993912), UINT32_C(3670687095) },
832        INT8_C(   3),
833       UINT32_C(3670687095) },
834     { { UINT32_C(2093338115), UINT32_C(2494598146), UINT32_C( 621973357), UINT32_C(3076631373) },
835        INT8_C(   0),
836       UINT32_C(2093338115) },
837     { { UINT32_C(2225188897), UINT32_C( 581376546), UINT32_C(4284423989), UINT32_C(3338828537) },
838        INT8_C(   3),
839       UINT32_C(3338828537) },
840     { { UINT32_C( 801884799), UINT32_C(1908291934), UINT32_C(3206286430), UINT32_C(1944181187) },
841        INT8_C(   2),
842       UINT32_C(3206286430) },
843     { { UINT32_C( 227841381), UINT32_C( 372033975), UINT32_C(3415221704), UINT32_C(3075133677) },
844        INT8_C(   3),
845       UINT32_C(3075133677) },
846 
847   };
848 
849   for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
850     simde_uint32x4_t a = simde_vld1q_u32(test_vec[i].a);
851     int b = test_vec[i].b;
852     uint32_t r;
853     SIMDE_CONSTIFY_4_(simde_vgetq_lane_u32, r, (HEDLEY_UNREACHABLE(), 0), b, a);
854 
855     simde_assert_equal_u32(r, test_vec[i].r);
856   }
857 
858   return 0;
859 }
860 
861 static int
test_simde_vgetq_lane_u64(SIMDE_MUNIT_TEST_ARGS)862 test_simde_vgetq_lane_u64 (SIMDE_MUNIT_TEST_ARGS) {
863   struct {
864     uint64_t a[2];
865     int b;
866     uint64_t r;
867   } test_vec[] = {
868     { { UINT64_C( 3092081787328485317), UINT64_C( 7985414882938276043) },
869        INT8_C(   1),
870       UINT64_C( 7985414882938276043) },
871     { { UINT64_C( 7025058213030416194), UINT64_C( 6780364979241558092) },
872        INT8_C(   1),
873       UINT64_C( 6780364979241558092) },
874     { { UINT64_C( 3391474989674094302), UINT64_C( 6056589457741813753) },
875        INT8_C(   0),
876       UINT64_C( 3391474989674094302) },
877     { { UINT64_C( 2242727670204370304), UINT64_C(16289431355216962840) },
878        INT8_C(   0),
879       UINT64_C( 2242727670204370304) },
880     { { UINT64_C(12501920663126502103), UINT64_C( 7356476994223244425) },
881        INT8_C(   0),
882       UINT64_C(12501920663126502103) },
883     { { UINT64_C( 5069585831496340757), UINT64_C( 3089409691725716985) },
884        INT8_C(   0),
885       UINT64_C( 5069585831496340757) },
886     { { UINT64_C( 8343717041656415431), UINT64_C( 6889051721661195117) },
887        INT8_C(   1),
888       UINT64_C( 6889051721661195117) },
889     { { UINT64_C( 1010574439278891982), UINT64_C(12967946829539362128) },
890        INT8_C(   1),
891       UINT64_C(12967946829539362128) },
892 
893   };
894 
895   for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
896     simde_uint64x2_t a = simde_vld1q_u64(test_vec[i].a);
897     int b = test_vec[i].b;
898     uint64_t r;
899     SIMDE_CONSTIFY_2_(simde_vgetq_lane_u64, r, (HEDLEY_UNREACHABLE(), 0), b, a);
900     simde_assert_equal_u64(r, test_vec[i].r);
901   }
902 
903   return 0;
904 }
905 
906 HEDLEY_DIAGNOSTIC_POP
907 
908 SIMDE_TEST_FUNC_LIST_BEGIN
909 SIMDE_TEST_FUNC_LIST_ENTRY(vget_lane_f32)
910 SIMDE_TEST_FUNC_LIST_ENTRY(vget_lane_f64)
911 SIMDE_TEST_FUNC_LIST_ENTRY(vget_lane_s8)
912 SIMDE_TEST_FUNC_LIST_ENTRY(vget_lane_s16)
913 SIMDE_TEST_FUNC_LIST_ENTRY(vget_lane_s32)
914 SIMDE_TEST_FUNC_LIST_ENTRY(vget_lane_s64)
915 SIMDE_TEST_FUNC_LIST_ENTRY(vget_lane_u8)
916 SIMDE_TEST_FUNC_LIST_ENTRY(vget_lane_u16)
917 SIMDE_TEST_FUNC_LIST_ENTRY(vget_lane_u32)
918 SIMDE_TEST_FUNC_LIST_ENTRY(vget_lane_u64)
919 
920 SIMDE_TEST_FUNC_LIST_ENTRY(vgetq_lane_f32)
921 SIMDE_TEST_FUNC_LIST_ENTRY(vgetq_lane_f64)
922 SIMDE_TEST_FUNC_LIST_ENTRY(vgetq_lane_s8)
923 SIMDE_TEST_FUNC_LIST_ENTRY(vgetq_lane_s16)
924 SIMDE_TEST_FUNC_LIST_ENTRY(vgetq_lane_s32)
925 SIMDE_TEST_FUNC_LIST_ENTRY(vgetq_lane_s64)
926 SIMDE_TEST_FUNC_LIST_ENTRY(vgetq_lane_u8)
927 SIMDE_TEST_FUNC_LIST_ENTRY(vgetq_lane_u16)
928 SIMDE_TEST_FUNC_LIST_ENTRY(vgetq_lane_u32)
929 SIMDE_TEST_FUNC_LIST_ENTRY(vgetq_lane_u64)
930 SIMDE_TEST_FUNC_LIST_END
931 
932 #include "test-neon-footer.h"
933