File: bsl.c

package info (click to toggle)
simde 0.8.2-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie, trixie-backports
  • size: 58,264 kB
  • sloc: ansic: 817,393; sh: 315; makefile: 45; python: 26
file content (2017 lines) | stat: -rw-r--r-- 125,763 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
#define SIMDE_TEST_ARM_NEON_INSN bsl

#include "test-neon.h"
#include "../../../simde/arm/neon/bsl.h"

static int
test_simde_vbsl_f16 (SIMDE_MUNIT_TEST_ARGS) {
  #if 1
    struct {
      uint16_t a[4];
      simde_float16_t b[4];
      simde_float16_t c[4];
      simde_float16_t r[4];
    } test_vec[] = {
    #if !defined(SIMDE_FAST_MATH) && defined(SIMDE_FLOAT16_IS_SCALAR)
    { { UINT16_C(18704), UINT16_C(47545), UINT16_C( 6410), UINT16_C(57433) },
      { SIMDE_FLOAT16_VALUE(  -614.50), SIMDE_FLOAT16_VALUE(  -671.50), SIMDE_FLOAT16_VALUE(  -876.00), SIMDE_FLOAT16_VALUE(   515.00) },
      { SIMDE_FLOAT16_VALUE(  -446.00), SIMDE_FLOAT16_VALUE(   385.00), SIMDE_FLOAT16_VALUE(  -263.00), SIMDE_FLOAT16_VALUE(  -438.00) },
      { SIMDE_FLOAT16_VALUE(  -110.50), SIMDE_FLOAT16_VALUE( -1853.00), SIMDE_FLOAT16_VALUE(    -4.11),            SIMDE_NANHF } },
    #endif
      { { UINT16_C(62834), UINT16_C( 2915), UINT16_C(15044), UINT16_C(55669) },
      { SIMDE_FLOAT16_VALUE(   430.50), SIMDE_FLOAT16_VALUE(  -815.50), SIMDE_FLOAT16_VALUE(  -364.00), SIMDE_FLOAT16_VALUE(  -185.75) },
      { SIMDE_FLOAT16_VALUE(  -861.50), SIMDE_FLOAT16_VALUE(   384.50), SIMDE_FLOAT16_VALUE(   249.50), SIMDE_FLOAT16_VALUE(  -701.50) },
      { SIMDE_FLOAT16_VALUE(   107.69), SIMDE_FLOAT16_VALUE(   100.19), SIMDE_FLOAT16_VALUE(   177.00), SIMDE_FLOAT16_VALUE(-43456.00) } },
    { { UINT16_C(51556), UINT16_C(12796), UINT16_C(49577), UINT16_C(41056) },
      { SIMDE_FLOAT16_VALUE(  -689.50), SIMDE_FLOAT16_VALUE(  -776.00), SIMDE_FLOAT16_VALUE(   144.75), SIMDE_FLOAT16_VALUE(  -410.75) },
      { SIMDE_FLOAT16_VALUE(   129.50), SIMDE_FLOAT16_VALUE(  -774.50), SIMDE_FLOAT16_VALUE(   261.25), SIMDE_FLOAT16_VALUE(   222.25) },
      { SIMDE_FLOAT16_VALUE(   -43.25), SIMDE_FLOAT16_VALUE(  -776.50), SIMDE_FLOAT16_VALUE(   293.00), SIMDE_FLOAT16_VALUE(  -222.25) } },
    { { UINT16_C( 6398), UINT16_C(50024), UINT16_C(56659), UINT16_C(39836) },
      { SIMDE_FLOAT16_VALUE(   910.00), SIMDE_FLOAT16_VALUE(   941.00), SIMDE_FLOAT16_VALUE(  -945.00), SIMDE_FLOAT16_VALUE(  -951.50) },
      { SIMDE_FLOAT16_VALUE(   325.50), SIMDE_FLOAT16_VALUE(   304.50), SIMDE_FLOAT16_VALUE(  -653.00), SIMDE_FLOAT16_VALUE(  -645.50) },
      { SIMDE_FLOAT16_VALUE(     5.11), SIMDE_FLOAT16_VALUE(   498.50), SIMDE_FLOAT16_VALUE(  -677.00), SIMDE_FLOAT16_VALUE(  -903.50) } },
    { { UINT16_C(26238), UINT16_C(53664), UINT16_C(15427), UINT16_C(34924) },
      { SIMDE_FLOAT16_VALUE(  -877.00), SIMDE_FLOAT16_VALUE(  -613.50), SIMDE_FLOAT16_VALUE(   868.50), SIMDE_FLOAT16_VALUE(   448.50) },
      { SIMDE_FLOAT16_VALUE(   691.00), SIMDE_FLOAT16_VALUE(  -784.50), SIMDE_FLOAT16_VALUE(   803.00), SIMDE_FLOAT16_VALUE(   -89.88) },
      { SIMDE_FLOAT16_VALUE(   941.00), SIMDE_FLOAT16_VALUE(  -832.50), SIMDE_FLOAT16_VALUE(   802.50), SIMDE_FLOAT16_VALUE(   356.50) } },
    { { UINT16_C(22596), UINT16_C(20143), UINT16_C( 2161), UINT16_C(10030) },
      { SIMDE_FLOAT16_VALUE(   377.50), SIMDE_FLOAT16_VALUE(  -730.00), SIMDE_FLOAT16_VALUE(   624.00), SIMDE_FLOAT16_VALUE(   931.50) },
      { SIMDE_FLOAT16_VALUE(   655.50), SIMDE_FLOAT16_VALUE(  -638.50), SIMDE_FLOAT16_VALUE(  -506.50), SIMDE_FLOAT16_VALUE(   -63.97) },
      { SIMDE_FLOAT16_VALUE( 44000.00), SIMDE_FLOAT16_VALUE(  -634.00), SIMDE_FLOAT16_VALUE(  -126.62), SIMDE_FLOAT16_VALUE(-16056.00) } },
    { { UINT16_C(15150), UINT16_C(29075), UINT16_C(65400), UINT16_C(27641) },
      { SIMDE_FLOAT16_VALUE(  -255.00), SIMDE_FLOAT16_VALUE(  -855.00), SIMDE_FLOAT16_VALUE(   123.38), SIMDE_FLOAT16_VALUE(  -564.00) },
      { SIMDE_FLOAT16_VALUE(  -639.50), SIMDE_FLOAT16_VALUE(   -73.75), SIMDE_FLOAT16_VALUE(   346.25), SIMDE_FLOAT16_VALUE(   748.00) },
      { SIMDE_FLOAT16_VALUE(  -255.12), SIMDE_FLOAT16_VALUE( -1166.00), SIMDE_FLOAT16_VALUE(   115.06), SIMDE_FLOAT16_VALUE(   564.00) } },
    { { UINT16_C( 9849), UINT16_C(59957), UINT16_C(25647), UINT16_C( 3346) },
      { SIMDE_FLOAT16_VALUE(  -224.12), SIMDE_FLOAT16_VALUE(   947.00), SIMDE_FLOAT16_VALUE(   569.00), SIMDE_FLOAT16_VALUE(  -569.00) },
      { SIMDE_FLOAT16_VALUE(  -691.50), SIMDE_FLOAT16_VALUE(  -937.50), SIMDE_FLOAT16_VALUE(   367.25), SIMDE_FLOAT16_VALUE(  -145.50) },
      { SIMDE_FLOAT16_VALUE(    -3.51), SIMDE_FLOAT16_VALUE(   947.00), SIMDE_FLOAT16_VALUE( 46656.00), SIMDE_FLOAT16_VALUE(   -36.94) } }
    };

    for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
      simde_uint16x4_t a = simde_vld1_u16(test_vec[i].a);
      simde_float16x4_t b = simde_vld1_f16(test_vec[i].b);
      simde_float16x4_t c = simde_vld1_f16(test_vec[i].c);
      simde_float16x4_t r = simde_vbsl_f16(a, b, c);

      simde_test_arm_neon_assert_equal_f16x4(r, simde_vld1_f16(test_vec[i].r), 1);
    }

    return 0;
  #else
    fputc('\n', stdout);
    for (int i = 0 ; i < 8 ; i++) {
      simde_uint16x4_t a = simde_test_arm_neon_random_u16x4();
      simde_float16x4_t b = simde_test_arm_neon_random_f16x4(-1000.0f, 1000.0f);
      simde_float16x4_t c = simde_test_arm_neon_random_f16x4(-1000.0f, 1000.0f);
      simde_float16x4_t r = simde_vbsl_f16(a, b, c);

      simde_test_arm_neon_write_u16x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
      simde_test_arm_neon_write_f16x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
      simde_test_arm_neon_write_f16x4(2, c, SIMDE_TEST_VEC_POS_MIDDLE);
      simde_test_arm_neon_write_f16x4(2, r, SIMDE_TEST_VEC_POS_LAST);
    }
    return 1;
  #endif
}

static int
test_simde_vbsl_f32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  struct {
    uint32_t a[2];
    simde_float32 b[2];
    simde_float32 c[2];
    simde_float32 r[2];
  } test_vec[] = {
    { { UINT32_C(2674418426), UINT32_C(3777353220) },
      { SIMDE_FLOAT32_C(   405.65), SIMDE_FLOAT32_C(   927.47) },
      { SIMDE_FLOAT32_C(   560.08), SIMDE_FLOAT32_C(   314.53) },
      { SIMDE_FLOAT32_C(   204.28), SIMDE_FLOAT32_C(    94.92) } },
    { { UINT32_C(2013377052), UINT32_C(3455611233) },
      { SIMDE_FLOAT32_C(  -536.59), SIMDE_FLOAT32_C(   460.49) },
      { SIMDE_FLOAT32_C(   342.29), SIMDE_FLOAT32_C(   371.78) },
      { SIMDE_FLOAT32_C(   340.29), SIMDE_FLOAT32_C(   451.40) } },
    { { UINT32_C(3025790568), UINT32_C(2349671826) },
      { SIMDE_FLOAT32_C(   788.79), SIMDE_FLOAT32_C(  -926.62) },
      { SIMDE_FLOAT32_C(  -581.67), SIMDE_FLOAT32_C(   594.40) },
      { SIMDE_FLOAT32_C(   772.66), SIMDE_FLOAT32_C(  -598.96) } },
    { { UINT32_C(3060552012), UINT32_C(4153264603) },
      { SIMDE_FLOAT32_C(  -460.00), SIMDE_FLOAT32_C(  -480.26) },
      { SIMDE_FLOAT32_C(  -404.52), SIMDE_FLOAT32_C(   864.59) },
      { SIMDE_FLOAT32_C(  -460.02), SIMDE_FLOAT32_C(  -416.29) } },
    { { UINT32_C(1772709632), UINT32_C(1083407319) },
      { SIMDE_FLOAT32_C(  -513.91), SIMDE_FLOAT32_C(  -140.44) },
      { SIMDE_FLOAT32_C(   -53.49), SIMDE_FLOAT32_C(   -77.23) },
      { SIMDE_FLOAT32_C(   -53.24), SIMDE_FLOAT32_C(   -34.11) } },
    { { UINT32_C(2558525713), UINT32_C(3273960567) },
      { SIMDE_FLOAT32_C(  -353.14), SIMDE_FLOAT32_C(  -890.91) },
      { SIMDE_FLOAT32_C(   522.94), SIMDE_FLOAT32_C(   387.01) },
      { SIMDE_FLOAT32_C( -1045.91), SIMDE_FLOAT32_C(    -6.18) } },
    { { UINT32_C(3587114586), UINT32_C(2494709396) },
      { SIMDE_FLOAT32_C(  -250.58), SIMDE_FLOAT32_C(   789.87) },
      { SIMDE_FLOAT32_C(  -999.31), SIMDE_FLOAT32_C(   725.63) },
      { SIMDE_FLOAT32_C(   -15.68), SIMDE_FLOAT32_C(   533.86) } },
    { { UINT32_C( 951947479), UINT32_C(2368516476) },
      { SIMDE_FLOAT32_C(  -889.18), SIMDE_FLOAT32_C(   581.78) },
      { SIMDE_FLOAT32_C(   860.56), SIMDE_FLOAT32_C(   106.82) },
      { SIMDE_FLOAT32_C(   888.55), SIMDE_FLOAT32_C( 26777.97) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint32x2_t a = simde_vld1_u32(test_vec[i].a);
    simde_float32x2_t b = simde_vld1_f32(test_vec[i].b);
    simde_float32x2_t c = simde_vld1_f32(test_vec[i].c);
    simde_float32x2_t r = simde_vbsl_f32(a, b, c);

    simde_test_arm_neon_assert_equal_f32x2(r, simde_vld1_f32(test_vec[i].r), 1);
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_uint32x2_t a = simde_test_arm_neon_random_u32x2();
    simde_float32x2_t b = simde_test_arm_neon_random_f32x2(-1000.0f, 1000.0f);
    simde_float32x2_t c = simde_test_arm_neon_random_f32x2(-1000.0f, 1000.0f);
    simde_float32x2_t r = simde_vbsl_f32(a, b, c);

    simde_test_arm_neon_write_u32x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_f32x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f32x2(2, c, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f32x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vbsl_f64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  struct {
    uint64_t a[1];
    simde_float64 b[1];
    simde_float64 c[1];
    simde_float64 r[1];
  } test_vec[] = {
    { { UINT64_C(11051150815757923623) },
      { SIMDE_FLOAT64_C(  -588.66) },
      { SIMDE_FLOAT64_C(  -849.95) },
      { SIMDE_FLOAT64_C(  -577.69) } },
    { { UINT64_C( 3459855493406248467) },
      { SIMDE_FLOAT64_C(  -254.41) },
      { SIMDE_FLOAT64_C(  -342.68) },
      { SIMDE_FLOAT64_C(  -380.68) } },
    { { UINT64_C( 8499033952931220346) },
      { SIMDE_FLOAT64_C(   598.37) },
      { SIMDE_FLOAT64_C(  -678.68) },
      { SIMDE_FLOAT64_C(  -758.93) } },
    { { UINT64_C( 4453775121523365047) },
      { SIMDE_FLOAT64_C(  -983.29) },
      { SIMDE_FLOAT64_C(  -133.31) },
      { SIMDE_FLOAT64_C( -3932.65) } },
    { { UINT64_C( 2741489458384578945) },
      { SIMDE_FLOAT64_C(  -672.98) },
      { SIMDE_FLOAT64_C(  -225.94) },
      { SIMDE_FLOAT64_C(  -168.19) } },
    { { UINT64_C(  649913727035663599) },
      { SIMDE_FLOAT64_C(   665.07) },
      { SIMDE_FLOAT64_C(  -836.34) },
      { SIMDE_FLOAT64_C(  -984.34) } },
    { { UINT64_C( 3156572937688261107) },
      { SIMDE_FLOAT64_C(  -862.48) },
      { SIMDE_FLOAT64_C(   875.24) },
      { SIMDE_FLOAT64_C(   879.50) } },
    { { UINT64_C( 6490021655321781721) },
      { SIMDE_FLOAT64_C(  -306.99) },
      { SIMDE_FLOAT64_C(   894.38) },
      { SIMDE_FLOAT64_C(  1784.82) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint64x1_t a = simde_vld1_u64(test_vec[i].a);
    simde_float64x1_t b = simde_vld1_f64(test_vec[i].b);
    simde_float64x1_t c = simde_vld1_f64(test_vec[i].c);
    simde_float64x1_t r = simde_vbsl_f64(a, b, c);

    simde_test_arm_neon_assert_equal_f64x1(r, simde_vld1_f64(test_vec[i].r), 1);
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_uint64x1_t a = simde_test_arm_neon_random_u64x1();
    simde_float64x1_t b = simde_test_arm_neon_random_f64x1(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
    simde_float64x1_t c = simde_test_arm_neon_random_f64x1(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
    simde_float64x1_t r = simde_vbsl_f64(a, b, c);

    simde_test_arm_neon_write_u64x1(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_f64x1(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f64x1(2, c, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f64x1(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vbsl_s8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  struct {
    uint8_t a[8];
    int8_t b[8];
    int8_t c[8];
    int8_t r[8];
  } test_vec[] = {
    { { UINT8_C(121), UINT8_C( 28), UINT8_C( 45), UINT8_C(151), UINT8_C(120), UINT8_C(  7), UINT8_C( 82), UINT8_C( 78) },
      {  INT8_C( 121), -INT8_C(  36), -INT8_C(  63),  INT8_C( 101),  INT8_C(  97), -INT8_C(  69),  INT8_C(  84),  INT8_C(  14) },
      { -INT8_C(  55),  INT8_C(  67), -INT8_C(  91),  INT8_C(  27), -INT8_C( 125), -INT8_C(  19), -INT8_C(  21), -INT8_C(  34) },
      { -INT8_C(   7),  INT8_C(  95), -INT8_C( 127),  INT8_C(  13), -INT8_C(  29), -INT8_C(  21), -INT8_C(   7), -INT8_C(  98) } },
    { { UINT8_C(174), UINT8_C( 64), UINT8_C(203), UINT8_C( 94), UINT8_C(160), UINT8_C(  0), UINT8_C(116), UINT8_C( 25) },
      {  INT8_C(  28), -INT8_C(  95), -INT8_C(  79), -INT8_C( 108), -INT8_C(  88),  INT8_C(   3), -INT8_C(  30),  INT8_C(  34) },
      { -INT8_C(  33), -INT8_C(  92), -INT8_C( 121),  INT8_C(  64),  INT8_C(  95), -INT8_C(  37),  INT8_C(  79),  INT8_C(  40) },
      {  INT8_C(  93), -INT8_C(  92), -INT8_C( 123),  INT8_C(  20), -INT8_C(   1), -INT8_C(  37),  INT8_C( 107),  INT8_C(  32) } },
    { { UINT8_C( 30), UINT8_C(244), UINT8_C( 67), UINT8_C(161), UINT8_C(226), UINT8_C( 47), UINT8_C(127), UINT8_C(144) },
      {  INT8_C( 111),  INT8_C(  74), -INT8_C(  17),  INT8_C(  15),  INT8_C(  75),  INT8_C(  99),  INT8_C(  41),  INT8_C( 103) },
      {  INT8_C(   5), -INT8_C(  38), -INT8_C(   4), -INT8_C(  83), -INT8_C(  35), -INT8_C(  34), -INT8_C(  49), -INT8_C(  68) },
      {  INT8_C(  15),  INT8_C(  74), -INT8_C(   1),  INT8_C(  13),  INT8_C(  95), -INT8_C(  13), -INT8_C(  87),  INT8_C(  44) } },
    { { UINT8_C(130), UINT8_C( 86), UINT8_C(252), UINT8_C(225), UINT8_C( 49), UINT8_C( 75), UINT8_C( 10), UINT8_C( 79) },
      {  INT8_C(  64),  INT8_C(  77), -INT8_C(  15),  INT8_C(  34),  INT8_C( 124),  INT8_C( 112), -INT8_C(  78), -INT8_C(  20) },
      { -INT8_C(  69), -INT8_C(  95), -INT8_C(   5),  INT8_C(   6),  INT8_C(   5),  INT8_C(  36),  INT8_C( 109),  INT8_C(  10) },
      {  INT8_C(  57), -INT8_C(  27), -INT8_C(  13),  INT8_C(  38),  INT8_C(  52),  INT8_C( 100),  INT8_C( 103),  INT8_C(  76) } },
    { { UINT8_C(254), UINT8_C(105), UINT8_C(183), UINT8_C(219), UINT8_C( 72), UINT8_C(135), UINT8_C(151), UINT8_C(202) },
      { -INT8_C(  35), -INT8_C( 108), -INT8_C(  84),  INT8_C(  15), -INT8_C(  33), -INT8_C(  74),  INT8_C(  94),  INT8_C(  31) },
      {  INT8_C(   3),  INT8_C(  79),  INT8_C(  65),      INT8_MIN, -INT8_C(  64), -INT8_C(  12),  INT8_C( 108),  INT8_C( 123) },
      { -INT8_C(  35),  INT8_C(   6), -INT8_C(  28),  INT8_C(  11), -INT8_C(  56), -INT8_C(  10),  INT8_C( 126),  INT8_C(  59) } },
    { { UINT8_C(149), UINT8_C(103), UINT8_C(129), UINT8_C(154), UINT8_C(140), UINT8_C(238), UINT8_C(164), UINT8_C(138) },
      {  INT8_C(  88),  INT8_C(  92),  INT8_C( 102), -INT8_C(  96), -INT8_C(  29), -INT8_C(   3),  INT8_C( 106), -INT8_C(  64) },
      { -INT8_C( 111),  INT8_C(  22), -INT8_C(  49),  INT8_C( 113), -INT8_C(  52),  INT8_C(  46), -INT8_C( 112), -INT8_C(  48) },
      {  INT8_C(  16),  INT8_C(  84),  INT8_C(  78), -INT8_C(  31), -INT8_C(  64), -INT8_C(  20),  INT8_C(  48), -INT8_C(  48) } },
    { { UINT8_C(125), UINT8_C(210), UINT8_C( 80), UINT8_C( 61), UINT8_C(198), UINT8_C(188), UINT8_C(184), UINT8_C( 91) },
      {  INT8_C(  35),  INT8_C(  57), -INT8_C(  10), -INT8_C(  81),  INT8_C(  40), -INT8_C( 102),  INT8_C(  58),      INT8_MIN },
      { -INT8_C(  10), -INT8_C(  96),  INT8_C(  32), -INT8_C(  39), -INT8_C(  99), -INT8_C( 118), -INT8_C( 102),  INT8_C(  47) },
      { -INT8_C(  93),  INT8_C(  48),  INT8_C( 112), -INT8_C(  19),  INT8_C(  25), -INT8_C( 102),  INT8_C(  58),  INT8_C(  36) } },
    { { UINT8_C(161), UINT8_C(105), UINT8_C(160), UINT8_C(109), UINT8_C(151), UINT8_C( 48), UINT8_C( 61), UINT8_C( 21) },
      {  INT8_C(   2), -INT8_C( 115),  INT8_C(  82), -INT8_C(  56),  INT8_C(  73),  INT8_C(  11),  INT8_C(  36),  INT8_C( 109) },
      {  INT8_C(  68),  INT8_C(  26),  INT8_C(  28),  INT8_C( 108), -INT8_C(  76),  INT8_C(  86), -INT8_C(  20), -INT8_C(  85) },
      {  INT8_C(  68),  INT8_C(  27),  INT8_C(  28),  INT8_C(  72),  INT8_C(  33),  INT8_C(  70), -INT8_C(  28), -INT8_C(  81) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint8x8_t a = simde_vld1_u8(test_vec[i].a);
    simde_int8x8_t b = simde_vld1_s8(test_vec[i].b);
    simde_int8x8_t c = simde_vld1_s8(test_vec[i].c);
    simde_int8x8_t r = simde_vbsl_s8(a, b, c);

    simde_test_arm_neon_assert_equal_i8x8(r, simde_vld1_s8(test_vec[i].r));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_uint8x8_t a = simde_test_arm_neon_random_u8x8();
    simde_int8x8_t b = simde_test_arm_neon_random_i8x8();
    simde_int8x8_t c = simde_test_arm_neon_random_i8x8();
    simde_int8x8_t r = simde_vbsl_s8(a, b, c);

    simde_test_arm_neon_write_u8x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_i8x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i8x8(2, c, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i8x8(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vbsl_s16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  struct {
    uint16_t a[4];
    int16_t b[4];
    int16_t c[4];
    int16_t r[4];
  } test_vec[] = {
    { { UINT16_C(24105), UINT16_C(62072), UINT16_C(14929), UINT16_C(19853) },
      {  INT16_C( 18703),  INT16_C(  2059), -INT16_C( 29657), -INT16_C( 14313) },
      {  INT16_C(  1857), -INT16_C( 14232), -INT16_C( 10103), -INT16_C(  1165) },
      {  INT16_C( 18761),  INT16_C(  2056), -INT16_C( 14199), -INT16_C(  1417) } },
    { { UINT16_C(64683), UINT16_C(25681), UINT16_C(27627), UINT16_C( 5351) },
      {  INT16_C( 24521),  INT16_C(  6662), -INT16_C( 27751), -INT16_C( 22169) },
      {  INT16_C( 29404),  INT16_C(   945), -INT16_C( 14082),  INT16_C( 16332) },
      {  INT16_C( 24285),  INT16_C(   928), -INT16_C( 31843),  INT16_C( 11119) } },
    { { UINT16_C(13519), UINT16_C(22791), UINT16_C(31245), UINT16_C(47188) },
      { -INT16_C( 23178),  INT16_C( 24860),  INT16_C(   784), -INT16_C(  9610) },
      {  INT16_C( 31843), -INT16_C(   780),  INT16_C( 23568), -INT16_C(  4955) },
      {  INT16_C( 27750), -INT16_C(  6668),  INT16_C(  1552), -INT16_C(  8971) } },
    { { UINT16_C(22222), UINT16_C(52720), UINT16_C(48158), UINT16_C(60940) },
      {  INT16_C(  5360), -INT16_C(   697), -INT16_C( 25714),  INT16_C(  1462) },
      { -INT16_C( 11712),  INT16_C( 20582), -INT16_C(  9002),  INT16_C( 14634) },
      { -INT16_C( 27456), -INT16_C(  8890), -INT16_C( 10034),  INT16_C(  5414) } },
    { { UINT16_C( 8025), UINT16_C(26933), UINT16_C(56187), UINT16_C(18773) },
      {  INT16_C( 17713),  INT16_C( 20502),  INT16_C(  8961), -INT16_C(  3522) },
      { -INT16_C( 31433), -INT16_C( 14865), -INT16_C( 23264),  INT16_C( 24778) },
      { -INT16_C( 31433), -INT16_C( 15138),  INT16_C(  9985),  INT16_C( 24734) } },
    { { UINT16_C(12664), UINT16_C(20144), UINT16_C(56077), UINT16_C(26247) },
      { -INT16_C( 17158),  INT16_C( 30159),  INT16_C(  9623), -INT16_C( 13890) },
      { -INT16_C( 10902),  INT16_C( 27673),  INT16_C( 22520),  INT16_C( 12126) },
      { -INT16_C(  2950),  INT16_C( 25737),  INT16_C(  1525),  INT16_C( 18910) } },
    { { UINT16_C(19932), UINT16_C(64756), UINT16_C(49139), UINT16_C(27484) },
      {  INT16_C(  3312), -INT16_C(   583),  INT16_C( 16615), -INT16_C(  7836) },
      {  INT16_C( 13308), -INT16_C( 27562),  INT16_C(  5464), -INT16_C( 15523) },
      {  INT16_C( 16112), -INT16_C(   846),  INT16_C(   235), -INT16_C(  7867) } },
    { { UINT16_C(30442), UINT16_C(57903), UINT16_C(36301), UINT16_C(43281) },
      {  INT16_C(  1498), -INT16_C( 12891),  INT16_C(   452), -INT16_C( 19400) },
      { -INT16_C(  3827), -INT16_C(  2638),  INT16_C(  5681),  INT16_C( 11990) },
      { -INT16_C( 31281), -INT16_C( 10827),  INT16_C(  5108), -INT16_C( 22826) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint16x4_t a = simde_vld1_u16(test_vec[i].a);
    simde_int16x4_t b = simde_vld1_s16(test_vec[i].b);
    simde_int16x4_t c = simde_vld1_s16(test_vec[i].c);
    simde_int16x4_t r = simde_vbsl_s16(a, b, c);

    simde_test_arm_neon_assert_equal_i16x4(r, simde_vld1_s16(test_vec[i].r));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_uint16x4_t a = simde_test_arm_neon_random_u16x4();
    simde_int16x4_t b = simde_test_arm_neon_random_i16x4();
    simde_int16x4_t c = simde_test_arm_neon_random_i16x4();
    simde_int16x4_t r = simde_vbsl_s16(a, b, c);

    simde_test_arm_neon_write_u16x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_i16x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i16x4(2, c, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i16x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vbsl_s32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  struct {
    uint32_t a[2];
    int32_t b[2];
    int32_t c[2];
    int32_t r[2];
  } test_vec[] = {
    { { UINT32_C(1530270266), UINT32_C(1664922840) },
      {  INT32_C(   283414752), -INT32_C(   644297687) },
      { -INT32_C(   890719696), -INT32_C(  1368609695) },
      { -INT32_C(  1863536608), -INT32_C(   849834967) } },
    { { UINT32_C(1917411085), UINT32_C(1617853222) },
      {  INT32_C(  1723638925),  INT32_C(   969537625) },
      { -INT32_C(  1320571512), -INT32_C(  1433738630) },
      { -INT32_C(   485972851), -INT32_C(  1429669800) } },
    { { UINT32_C(4118049428), UINT32_C( 732225822) },
      {  INT32_C(  1721625920), -INT32_C(   154727320) },
      {  INT32_C(   157057968),  INT32_C(    54666619) },
      {  INT32_C(  1813831968),  INT32_C(   583402601) } },
    { { UINT32_C(1303678163), UINT32_C(  49757806) },
      { -INT32_C(   822580048), -INT32_C(  1913021363) },
      { -INT32_C(   218916983),  INT32_C(  1407761059) },
      { -INT32_C(    17621096),  INT32_C(  1375313101) } },
    { { UINT32_C(3093120061), UINT32_C(1018929001) },
      { -INT32_C(  1719046357),  INT32_C(  1570537901) },
      {  INT32_C(   975934701), -INT32_C(  1178131152) },
      { -INT32_C(  1708403479), -INT32_C(  1646485191) } },
    { { UINT32_C(1605089980), UINT32_C(2998047605) },
      {  INT32_C(  1097535447), -INT32_C(   629332305) },
      {  INT32_C(  1131677590),  INT32_C(  1973489800) },
      {  INT32_C(  1098846102), -INT32_C(   684653907) } },
    { { UINT32_C(3568290980), UINT32_C(2911729393) },
      { -INT32_C(  1525925584), -INT32_C(  1537687604) },
      {  INT32_C(  2112209870),  INT32_C(  2136498921) },
      { -INT32_C(  1387525270), -INT32_C(   161990968) } },
    { { UINT32_C(4056140905), UINT32_C(2154194140) },
      {  INT32_C(   575935792), -INT32_C(  1127226997) },
      { -INT32_C(   413017062),  INT32_C(  1770764699) },
      {  INT32_C(   643830834), -INT32_C(   372246133) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint32x2_t a = simde_vld1_u32(test_vec[i].a);
    simde_int32x2_t b = simde_vld1_s32(test_vec[i].b);
    simde_int32x2_t c = simde_vld1_s32(test_vec[i].c);
    simde_int32x2_t r = simde_vbsl_s32(a, b, c);

    simde_test_arm_neon_assert_equal_i32x2(r, simde_vld1_s32(test_vec[i].r));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_uint32x2_t a = simde_test_arm_neon_random_u32x2();
    simde_int32x2_t b = simde_test_arm_neon_random_i32x2();
    simde_int32x2_t c = simde_test_arm_neon_random_i32x2();
    simde_int32x2_t r = simde_vbsl_s32(a, b, c);

    simde_test_arm_neon_write_u32x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_i32x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i32x2(2, c, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i32x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vbsl_s64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  struct {
    uint64_t a[1];
    int64_t b[1];
    int64_t c[1];
    int64_t r[1];
  } test_vec[] = {
    { { UINT64_C( 9620680368057188459) },
      { -INT64_C( 3689875764262471268) },
      { -INT64_C( 9004170336378258797) },
      { -INT64_C( 8751963524792583528) } },
    { { UINT64_C( 5744368692421788381) },
      {  INT64_C( 8786609585886222232) },
      {  INT64_C( 4656177399195942727) },
      {  INT64_C( 5311442486467149722) } },
    { { UINT64_C( 5609318480735350411) },
      {  INT64_C( 3855942873821709648) },
      { -INT64_C( 2036313555189412250) },
      { -INT64_C( 6366524597640117148) } },
    { { UINT64_C(11473855825243865935) },
      {  INT64_C( 2071316957582556929) },
      { -INT64_C( 8420935098164046512) },
      {  INT64_C( 2034157141122684689) } },
    { { UINT64_C(11574685700528718370) },
      { -INT64_C( 6034023422833698929) },
      {  INT64_C( 5854639938047128918) },
      { -INT64_C( 1072183263522621610) } },
    { { UINT64_C( 9701142154830647537) },
      { -INT64_C( 8496632253797601501) },
      { -INT64_C( 2336401143595421380) },
      { -INT64_C( 2660659904217079507) } },
    { { UINT64_C( 9148854339857723556) },
      { -INT64_C( 4918997769423407406) },
      {  INT64_C( 2461575523855237284) },
      {  INT64_C( 4232264231970418816) } },
    { { UINT64_C( 7665017462878459639) },
      {  INT64_C( 8527291724535390796) },
      { -INT64_C( 4283090230389707972) },
      { -INT64_C( 1812869665887753396) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint64x1_t a = simde_vld1_u64(test_vec[i].a);
    simde_int64x1_t b = simde_vld1_s64(test_vec[i].b);
    simde_int64x1_t c = simde_vld1_s64(test_vec[i].c);
    simde_int64x1_t r = simde_vbsl_s64(a, b, c);

    simde_test_arm_neon_assert_equal_i64x1(r, simde_vld1_s64(test_vec[i].r));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_uint64x1_t a = simde_test_arm_neon_random_u64x1();
    simde_int64x1_t b = simde_test_arm_neon_random_i64x1();
    simde_int64x1_t c = simde_test_arm_neon_random_i64x1();
    simde_int64x1_t r = simde_vbsl_s64(a, b, c);

    simde_test_arm_neon_write_u64x1(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_i64x1(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i64x1(2, c, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i64x1(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vbsl_u8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  struct {
    uint8_t a[8];
    uint8_t b[8];
    uint8_t c[8];
    uint8_t r[8];
  } test_vec[] = {
    { { UINT8_C(180), UINT8_C(  0), UINT8_C(193), UINT8_C( 74), UINT8_C( 97), UINT8_C(212), UINT8_C( 25), UINT8_C(176) },
      { UINT8_C(139), UINT8_C(110), UINT8_C( 75), UINT8_C( 82), UINT8_C( 56), UINT8_C(156), UINT8_C(198), UINT8_C( 81) },
      { UINT8_C(226), UINT8_C(123), UINT8_C(246), UINT8_C( 96), UINT8_C(177), UINT8_C( 52), UINT8_C(179), UINT8_C( 94) },
      { UINT8_C(194), UINT8_C(123), UINT8_C(119), UINT8_C( 98), UINT8_C(176), UINT8_C(180), UINT8_C(162), UINT8_C( 94) } },
    { { UINT8_C(197), UINT8_C(122), UINT8_C(231), UINT8_C(180), UINT8_C(179), UINT8_C(166), UINT8_C( 87), UINT8_C(103) },
      { UINT8_C(166), UINT8_C( 24), UINT8_C(178), UINT8_C(  8), UINT8_C(236), UINT8_C(203), UINT8_C(184), UINT8_C(119) },
      { UINT8_C( 57), UINT8_C(  3), UINT8_C(201), UINT8_C(114), UINT8_C(159), UINT8_C(143), UINT8_C(195), UINT8_C(130) },
      { UINT8_C(188), UINT8_C( 25), UINT8_C(170), UINT8_C( 66), UINT8_C(172), UINT8_C(139), UINT8_C(144), UINT8_C(231) } },
    { { UINT8_C( 11), UINT8_C(186), UINT8_C(226), UINT8_C(188), UINT8_C(238), UINT8_C(149), UINT8_C( 27), UINT8_C(180) },
      { UINT8_C( 15), UINT8_C(  2), UINT8_C(104), UINT8_C(195), UINT8_C(168), UINT8_C(191), UINT8_C( 42), UINT8_C( 79) },
      { UINT8_C(216), UINT8_C(220), UINT8_C( 87), UINT8_C(196), UINT8_C(168), UINT8_C( 15), UINT8_C( 60), UINT8_C(225) },
      { UINT8_C(219), UINT8_C( 70), UINT8_C(117), UINT8_C(192), UINT8_C(168), UINT8_C(159), UINT8_C( 46), UINT8_C( 69) } },
    { { UINT8_C( 18), UINT8_C(  5), UINT8_C( 83), UINT8_C(178), UINT8_C(149), UINT8_C( 23), UINT8_C( 52), UINT8_C(160) },
      { UINT8_C(209), UINT8_C( 22), UINT8_C( 92), UINT8_C(191), UINT8_C(172), UINT8_C(119), UINT8_C(115), UINT8_C(187) },
      { UINT8_C(122), UINT8_C(219), UINT8_C(126), UINT8_C( 34), UINT8_C(155), UINT8_C(169), UINT8_C(113), UINT8_C(115) },
      { UINT8_C(120), UINT8_C(222), UINT8_C(124), UINT8_C(178), UINT8_C(142), UINT8_C(191), UINT8_C(113), UINT8_C(243) } },
    { { UINT8_C(133), UINT8_C(200), UINT8_C( 55), UINT8_C( 45), UINT8_C(215), UINT8_C(115), UINT8_C( 15), UINT8_C(234) },
      { UINT8_C(121), UINT8_C( 98), UINT8_C(156), UINT8_C( 14), UINT8_C(121), UINT8_C(208), UINT8_C(174), UINT8_C( 74) },
      { UINT8_C(230), UINT8_C( 10), UINT8_C( 10), UINT8_C(146), UINT8_C(130), UINT8_C(125), UINT8_C( 78), UINT8_C(252) },
      { UINT8_C( 99), UINT8_C( 66), UINT8_C( 28), UINT8_C(158), UINT8_C( 81), UINT8_C( 92), UINT8_C( 78), UINT8_C( 94) } },
    { { UINT8_C( 89), UINT8_C(204), UINT8_C( 30), UINT8_C(244), UINT8_C(117), UINT8_C(144), UINT8_C(103), UINT8_C(251) },
      { UINT8_C( 88), UINT8_C(158), UINT8_C( 40), UINT8_C( 48), UINT8_C( 18), UINT8_C( 55), UINT8_C( 26), UINT8_C(139) },
      { UINT8_C(154), UINT8_C(182), UINT8_C(153), UINT8_C( 19), UINT8_C(134), UINT8_C( 71), UINT8_C( 94), UINT8_C(108) },
      { UINT8_C(218), UINT8_C(190), UINT8_C(137), UINT8_C( 51), UINT8_C(146), UINT8_C( 87), UINT8_C( 26), UINT8_C(143) } },
    { { UINT8_C( 81), UINT8_C(104),    UINT8_MAX, UINT8_C(211), UINT8_C(229), UINT8_C( 77), UINT8_C(207), UINT8_C( 62) },
      { UINT8_C( 25), UINT8_C(238), UINT8_C( 50), UINT8_C(143), UINT8_C(126), UINT8_C(153), UINT8_C(138), UINT8_C(214) },
      { UINT8_C( 56), UINT8_C(178), UINT8_C(  6), UINT8_C( 74), UINT8_C(234), UINT8_C( 32), UINT8_C(213), UINT8_C(132) },
      { UINT8_C( 57), UINT8_C(250), UINT8_C( 50), UINT8_C(139), UINT8_C(110), UINT8_C( 41), UINT8_C(154), UINT8_C(150) } },
    { { UINT8_C(214), UINT8_C(110), UINT8_C(151), UINT8_C( 92), UINT8_C(181), UINT8_C(245), UINT8_C(201), UINT8_C(  6) },
      { UINT8_C( 93), UINT8_C(200), UINT8_C(218), UINT8_C( 67), UINT8_C( 21), UINT8_C(169), UINT8_C(129), UINT8_C( 46) },
      { UINT8_C(151), UINT8_C(180), UINT8_C(189), UINT8_C( 21), UINT8_C( 77), UINT8_C( 71), UINT8_C(236), UINT8_C(133) },
      { UINT8_C( 85), UINT8_C(216), UINT8_C(186), UINT8_C( 65), UINT8_C( 93), UINT8_C(163), UINT8_C(165), UINT8_C(135) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint8x8_t a = simde_vld1_u8(test_vec[i].a);
    simde_uint8x8_t b = simde_vld1_u8(test_vec[i].b);
    simde_uint8x8_t c = simde_vld1_u8(test_vec[i].c);
    simde_uint8x8_t r = simde_vbsl_u8(a, b, c);

    simde_test_arm_neon_assert_equal_u8x8(r, simde_vld1_u8(test_vec[i].r));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_uint8x8_t a = simde_test_arm_neon_random_u8x8();
    simde_uint8x8_t b = simde_test_arm_neon_random_u8x8();
    simde_uint8x8_t c = simde_test_arm_neon_random_u8x8();
    simde_uint8x8_t r = simde_vbsl_u8(a, b, c);

    simde_test_arm_neon_write_u8x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_u8x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u8x8(2, c, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u8x8(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vbsl_u16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  struct {
    uint16_t a[4];
    uint16_t b[4];
    uint16_t c[4];
    uint16_t r[4];
  } test_vec[] = {
    { { UINT16_C(53761), UINT16_C(11743), UINT16_C(59878), UINT16_C(59435) },
      { UINT16_C(57726), UINT16_C(48484), UINT16_C(45929), UINT16_C(50279) },
      { UINT16_C(17564), UINT16_C(43054), UINT16_C( 9881), UINT16_C(30175) },
      { UINT16_C(50332), UINT16_C(44388), UINT16_C(42873), UINT16_C(54775) } },
    { { UINT16_C(13387), UINT16_C(12838), UINT16_C(50137), UINT16_C(56103) },
      { UINT16_C( 1941), UINT16_C(31752), UINT16_C(13296), UINT16_C(28516) },
      { UINT16_C(51220), UINT16_C(32300), UINT16_C(38011), UINT16_C( 5954) },
      { UINT16_C(52245), UINT16_C(31752), UINT16_C( 6130), UINT16_C(20324) } },
    { { UINT16_C(29144), UINT16_C(29375), UINT16_C(40599), UINT16_C(58343) },
      { UINT16_C( 3539), UINT16_C(44053), UINT16_C(15568), UINT16_C(25991) },
      { UINT16_C(36675), UINT16_C(13537), UINT16_C(17859), UINT16_C(55203) },
      { UINT16_C(36819), UINT16_C( 9301), UINT16_C(24016), UINT16_C(30087) } },
    { { UINT16_C(53005), UINT16_C(34901), UINT16_C(39011), UINT16_C(15520) },
      { UINT16_C(24329), UINT16_C(41134), UINT16_C(38398), UINT16_C(53635) },
      { UINT16_C(39074), UINT16_C(29309), UINT16_C( 1493), UINT16_C( 6359) },
      { UINT16_C(24491), UINT16_C(61996), UINT16_C(38390), UINT16_C( 4311) } },
    { { UINT16_C(47508), UINT16_C(22348), UINT16_C(61438), UINT16_C( 3119) },
      { UINT16_C(33983), UINT16_C( 8852), UINT16_C(13340), UINT16_C( 9566) },
      { UINT16_C( 3220), UINT16_C(37574), UINT16_C(18849), UINT16_C(17251) },
      { UINT16_C(33940), UINT16_C(33414), UINT16_C( 9245), UINT16_C(18254) } },
    { { UINT16_C(57570), UINT16_C(47029), UINT16_C(36325), UINT16_C(31439) },
      { UINT16_C( 7238), UINT16_C(17617), UINT16_C(   11), UINT16_C(51792) },
      { UINT16_C(58757), UINT16_C(41453), UINT16_C(19225), UINT16_C(44487) },
      { UINT16_C( 1351), UINT16_C( 1241), UINT16_C(16921), UINT16_C(53056) } },
    { { UINT16_C(36184), UINT16_C(63807), UINT16_C(41686), UINT16_C(47165) },
      { UINT16_C(62083), UINT16_C(26735), UINT16_C(16255), UINT16_C(50658) },
      { UINT16_C(46171), UINT16_C(26122), UINT16_C(23220), UINT16_C(14641) },
      { UINT16_C(45059), UINT16_C(28207), UINT16_C(31350), UINT16_C(33056) } },
    { { UINT16_C( 7743), UINT16_C(23003), UINT16_C(41577), UINT16_C(49414) },
      { UINT16_C(17967), UINT16_C( 1467), UINT16_C(63720), UINT16_C(27582) },
      { UINT16_C(11754), UINT16_C(27348), UINT16_C(46700), UINT16_C(50991) },
      { UINT16_C(10223), UINT16_C( 9119), UINT16_C(46188), UINT16_C(18223) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint16x4_t a = simde_vld1_u16(test_vec[i].a);
    simde_uint16x4_t b = simde_vld1_u16(test_vec[i].b);
    simde_uint16x4_t c = simde_vld1_u16(test_vec[i].c);
    simde_uint16x4_t r = simde_vbsl_u16(a, b, c);
    simde_test_arm_neon_assert_equal_u16x4(r, simde_vld1_u16(test_vec[i].r));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_uint16x4_t a = simde_test_arm_neon_random_u16x4();
    simde_uint16x4_t b = simde_test_arm_neon_random_u16x4();
    simde_uint16x4_t c = simde_test_arm_neon_random_u16x4();
    simde_uint16x4_t r = simde_vbsl_u16(a, b, c);

    simde_test_arm_neon_write_u16x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_u16x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u16x4(2, c, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u16x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vbsl_u32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  struct {
    uint32_t a[2];
    uint32_t b[2];
    uint32_t c[2];
    uint32_t r[2];
  } test_vec[] = {
    { { UINT32_C( 432062503), UINT32_C(1205184263) },
      { UINT32_C( 818040885), UINT32_C(3381211908) },
      { UINT32_C( 956542168), UINT32_C(2355800916) },
      { UINT32_C( 818113789), UINT32_C(3383438164) } },
    { { UINT32_C(4190297053), UINT32_C(3328249247) },
      { UINT32_C(3588170190), UINT32_C(4246582472) },
      { UINT32_C( 154001156), UINT32_C(3956455187) },
      { UINT32_C(3522102732), UINT32_C(3985880712) } },
    { { UINT32_C(3072644451), UINT32_C(1564708480) },
      { UINT32_C( 139921001), UINT32_C(3788421139) },
      { UINT32_C(2729946585), UINT32_C(1704973409) },
      { UINT32_C(   9907449), UINT32_C(1641994337) } },
    { { UINT32_C(3329150387), UINT32_C(3887153284) },
      { UINT32_C(2510214421), UINT32_C(3438535011) },
      { UINT32_C(4224994023), UINT32_C(3688669698) },
      { UINT32_C(3181299541), UINT32_C(3707625986) } },
    { { UINT32_C(2961019727), UINT32_C( 454434151) },
      { UINT32_C(1860273386), UINT32_C(3663041477) },
      { UINT32_C(3429954408), UINT32_C(3164103636) },
      { UINT32_C(1818353770), UINT32_C(3197924309) } },
    { { UINT32_C(2948033965), UINT32_C(1602917135) },
      { UINT32_C(2383349799), UINT32_C( 262743333) },
      { UINT32_C(1870498730), UINT32_C(2252984862) },
      { UINT32_C(3461319207), UINT32_C(2412331285) } },
    { { UINT32_C(2572335557), UINT32_C(3377851164) },
      { UINT32_C(1735920728), UINT32_C(3351643040) },
      { UINT32_C( 810931723), UINT32_C(2772434939) },
      { UINT32_C( 559238730), UINT32_C(3849197539) } },
    { { UINT32_C(2819931274), UINT32_C(1395547790) },
      { UINT32_C( 887914775), UINT32_C(3304931948) },
      { UINT32_C(3995825742), UINT32_C(2226516601) },
      { UINT32_C(1714405958), UINT32_C(3300778621) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint32x2_t a = simde_vld1_u32(test_vec[i].a);
    simde_uint32x2_t b = simde_vld1_u32(test_vec[i].b);
    simde_uint32x2_t c = simde_vld1_u32(test_vec[i].c);
    simde_uint32x2_t r = simde_vbsl_u32(a, b, c);
    simde_test_arm_neon_assert_equal_u32x2(r, simde_vld1_u32(test_vec[i].r));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_uint32x2_t a = simde_test_arm_neon_random_u32x2();
    simde_uint32x2_t b = simde_test_arm_neon_random_u32x2();
    simde_uint32x2_t c = simde_test_arm_neon_random_u32x2();
    simde_uint32x2_t r = simde_vbsl_u32(a, b, c);

    simde_test_arm_neon_write_u32x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_u32x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u32x2(2, c, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u32x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vbsl_u64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  struct {
    uint64_t a[1];
    uint64_t b[1];
    uint64_t c[1];
    uint64_t r[1];
  } test_vec[] = {
    { { UINT64_C(14528356940023175243) },
      { UINT64_C(17194180434942818272) },
      { UINT64_C( 7586136997276299551) },
      { UINT64_C(16779928735372194132) } },
    { { UINT64_C(11436712391308833254) },
      { UINT64_C(15593945675035042037) },
      { UINT64_C( 4879995600925107401) },
      { UINT64_C(15647882750434305261) } },
    { { UINT64_C( 1746683290664817516) },
      { UINT64_C(15409676213281850088) },
      { UINT64_C(12167280193671793930) },
      { UINT64_C(12743685970628677226) } },
    { { UINT64_C( 2118711289033487872) },
      { UINT64_C(17747046816302536447) },
      { UINT64_C(17394041849491144112) },
      { UINT64_C(17600678980047904688) } },
    { { UINT64_C(13016193149737162778) },
      { UINT64_C( 4617103595531670853) },
      { UINT64_C(16274244551423624150) },
      { UINT64_C( 4709427112947291076) } },
    { { UINT64_C( 3625913475667069816) },
      { UINT64_C( 6347486207960368557) },
      { UINT64_C(  316203249634832354) },
      { UINT64_C( 1455477651332326826) } },
    { { UINT64_C(  682226695321212261) },
      { UINT64_C( 7644783113438554061) },
      { UINT64_C(17468022663372620542) },
      { UINT64_C(18023304074852354015) } },
    { { UINT64_C( 9152573495301290449) },
      { UINT64_C( 8928540943956962382) },
      { UINT64_C(  619938784361861236) },
      { UINT64_C( 8906446650004007012) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint64x1_t a = simde_vld1_u64(test_vec[i].a);
    simde_uint64x1_t b = simde_vld1_u64(test_vec[i].b);
    simde_uint64x1_t c = simde_vld1_u64(test_vec[i].c);
    simde_uint64x1_t r = simde_vbsl_u64(a, b, c);
    simde_test_arm_neon_assert_equal_u64x1(r, simde_vld1_u64(test_vec[i].r));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_uint64x1_t a = simde_test_arm_neon_random_u64x1();
    simde_uint64x1_t b = simde_test_arm_neon_random_u64x1();
    simde_uint64x1_t c = simde_test_arm_neon_random_u64x1();
    simde_uint64x1_t r = simde_vbsl_u64(a, b, c);

    simde_test_arm_neon_write_u64x1(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_u64x1(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u64x1(2, c, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u64x1(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vbslq_f16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  struct {
    uint16_t a[8];
    simde_float16_t b[8];
    simde_float16_t c[8];
    simde_float16_t r[8];
  } test_vec[] = {
    { { UINT16_C(37688), UINT16_C(35401), UINT16_C(27742), UINT16_C(58401), UINT16_C(50272), UINT16_C(49953), UINT16_C(15249), UINT16_C(43869) },
      { SIMDE_FLOAT16_VALUE(  -660.00), SIMDE_FLOAT16_VALUE(  -281.00), SIMDE_FLOAT16_VALUE(  -589.00), SIMDE_FLOAT16_VALUE(  -492.25),
        SIMDE_FLOAT16_VALUE(   484.00), SIMDE_FLOAT16_VALUE(   115.50), SIMDE_FLOAT16_VALUE(    18.55), SIMDE_FLOAT16_VALUE(  -919.50) },
      { SIMDE_FLOAT16_VALUE(   971.00), SIMDE_FLOAT16_VALUE(   210.25), SIMDE_FLOAT16_VALUE(   343.25), SIMDE_FLOAT16_VALUE(    28.61),
        SIMDE_FLOAT16_VALUE(  -981.50), SIMDE_FLOAT16_VALUE(    37.84), SIMDE_FLOAT16_VALUE(   972.00), SIMDE_FLOAT16_VALUE(   958.00) },
      { SIMDE_FLOAT16_VALUE(  -727.00), SIMDE_FLOAT16_VALUE(  -154.25), SIMDE_FLOAT16_VALUE( 10456.00), SIMDE_FLOAT16_VALUE(   -28.61),
        SIMDE_FLOAT16_VALUE(  1931.00), SIMDE_FLOAT16_VALUE(    61.81), SIMDE_FLOAT16_VALUE(     9.07), SIMDE_FLOAT16_VALUE(  -918.50) } },
    { { UINT16_C(27765), UINT16_C(54208), UINT16_C(57817), UINT16_C(14775), UINT16_C(55462), UINT16_C(14332), UINT16_C(23059), UINT16_C(57315) },
      { SIMDE_FLOAT16_VALUE(  -799.50), SIMDE_FLOAT16_VALUE(   964.50), SIMDE_FLOAT16_VALUE(  -361.25), SIMDE_FLOAT16_VALUE(   684.50),
        SIMDE_FLOAT16_VALUE(    80.12), SIMDE_FLOAT16_VALUE(   657.00), SIMDE_FLOAT16_VALUE(   764.50), SIMDE_FLOAT16_VALUE(    51.31) },
      { SIMDE_FLOAT16_VALUE(  -132.62), SIMDE_FLOAT16_VALUE(   108.00), SIMDE_FLOAT16_VALUE(  -920.00), SIMDE_FLOAT16_VALUE(  -114.00),
        SIMDE_FLOAT16_VALUE(  -854.00), SIMDE_FLOAT16_VALUE(  -948.00), SIMDE_FLOAT16_VALUE(  -156.00), SIMDE_FLOAT16_VALUE(  -337.50) },
      { SIMDE_FLOAT16_VALUE( -8616.00), SIMDE_FLOAT16_VALUE(     7.50), SIMDE_FLOAT16_VALUE(    -3.81), SIMDE_FLOAT16_VALUE( -1809.00),
        SIMDE_FLOAT16_VALUE( 12368.00), SIMDE_FLOAT16_VALUE(  -656.00), SIMDE_FLOAT16_VALUE(    -2.47), SIMDE_FLOAT16_VALUE(    51.19) } },
    { { UINT16_C(19268), UINT16_C( 7523), UINT16_C( 6701), UINT16_C(54103), UINT16_C(21490), UINT16_C( 1290), UINT16_C(60845), UINT16_C(22756) },
      { SIMDE_FLOAT16_VALUE(   546.50), SIMDE_FLOAT16_VALUE(   662.50), SIMDE_FLOAT16_VALUE(  -687.50), SIMDE_FLOAT16_VALUE(  -373.25),
        SIMDE_FLOAT16_VALUE(   319.75), SIMDE_FLOAT16_VALUE(  -923.00), SIMDE_FLOAT16_VALUE(   678.00), SIMDE_FLOAT16_VALUE(  -812.50) },
      { SIMDE_FLOAT16_VALUE(   185.00), SIMDE_FLOAT16_VALUE(   758.00), SIMDE_FLOAT16_VALUE(    73.25), SIMDE_FLOAT16_VALUE(   330.75),
        SIMDE_FLOAT16_VALUE(   810.50), SIMDE_FLOAT16_VALUE(   917.50), SIMDE_FLOAT16_VALUE(   993.50), SIMDE_FLOAT16_VALUE(   301.25) },
      { SIMDE_FLOAT16_VALUE(    38.38), SIMDE_FLOAT16_VALUE(   726.50), SIMDE_FLOAT16_VALUE(     4.61), SIMDE_FLOAT16_VALUE(  -351.25),
        SIMDE_FLOAT16_VALUE( 10168.00), SIMDE_FLOAT16_VALUE(   913.50), SIMDE_FLOAT16_VALUE(   935.00), SIMDE_FLOAT16_VALUE(     4.32) } },
    { { UINT16_C(39569), UINT16_C(48865), UINT16_C(14516), UINT16_C(42641), UINT16_C(40075), UINT16_C(14763), UINT16_C(36745), UINT16_C( 3217) },
      { SIMDE_FLOAT16_VALUE(   720.50), SIMDE_FLOAT16_VALUE(  -893.50), SIMDE_FLOAT16_VALUE(   726.50), SIMDE_FLOAT16_VALUE(    40.28),
        SIMDE_FLOAT16_VALUE(  -816.50), SIMDE_FLOAT16_VALUE(   404.75), SIMDE_FLOAT16_VALUE(   227.50), SIMDE_FLOAT16_VALUE(   368.25) },
      { SIMDE_FLOAT16_VALUE(   163.00), SIMDE_FLOAT16_VALUE(  -699.00), SIMDE_FLOAT16_VALUE(  -300.75), SIMDE_FLOAT16_VALUE(   -26.78),
        SIMDE_FLOAT16_VALUE(  -782.00), SIMDE_FLOAT16_VALUE(  -307.50), SIMDE_FLOAT16_VALUE(  -725.50), SIMDE_FLOAT16_VALUE(   478.25) },
      { SIMDE_FLOAT16_VALUE(     2.77), SIMDE_FLOAT16_VALUE( -1019.50), SIMDE_FLOAT16_VALUE( -1191.00), SIMDE_FLOAT16_VALUE(     8.27),
        SIMDE_FLOAT16_VALUE(  -778.50), SIMDE_FLOAT16_VALUE(  -273.75), SIMDE_FLOAT16_VALUE(  3668.00), SIMDE_FLOAT16_VALUE(   506.25) } },
    { { UINT16_C(26640), UINT16_C(50419), UINT16_C(33952), UINT16_C(11114), UINT16_C( 5408), UINT16_C(43620), UINT16_C(62885), UINT16_C(55222) },
      { SIMDE_FLOAT16_VALUE(   612.00), SIMDE_FLOAT16_VALUE(   866.50), SIMDE_FLOAT16_VALUE(  -682.00), SIMDE_FLOAT16_VALUE(   795.50),
        SIMDE_FLOAT16_VALUE(   271.25), SIMDE_FLOAT16_VALUE(   545.50), SIMDE_FLOAT16_VALUE(   163.75), SIMDE_FLOAT16_VALUE(  -566.00) },
      { SIMDE_FLOAT16_VALUE(   846.00), SIMDE_FLOAT16_VALUE(   863.00), SIMDE_FLOAT16_VALUE(   407.50), SIMDE_FLOAT16_VALUE(  -936.00),
        SIMDE_FLOAT16_VALUE(  -444.75), SIMDE_FLOAT16_VALUE(   682.00), SIMDE_FLOAT16_VALUE(   542.50), SIMDE_FLOAT16_VALUE(   842.00) },
      { SIMDE_FLOAT16_VALUE(   838.00), SIMDE_FLOAT16_VALUE(   870.50), SIMDE_FLOAT16_VALUE(  -203.75), SIMDE_FLOAT16_VALUE(  -793.00),
        SIMDE_FLOAT16_VALUE(  -444.75), SIMDE_FLOAT16_VALUE(   680.00), SIMDE_FLOAT16_VALUE(    40.88), SIMDE_FLOAT16_VALUE(  -530.00) } },
    { { UINT16_C(57334), UINT16_C(38623), UINT16_C(19043), UINT16_C(33986), UINT16_C( 9823), UINT16_C( 1070), UINT16_C(58396), UINT16_C(52187) },
      { SIMDE_FLOAT16_VALUE(   164.62), SIMDE_FLOAT16_VALUE(   284.50), SIMDE_FLOAT16_VALUE(  -327.00), SIMDE_FLOAT16_VALUE(  -564.00),
        SIMDE_FLOAT16_VALUE(  -170.12), SIMDE_FLOAT16_VALUE(   836.50), SIMDE_FLOAT16_VALUE(  -130.00), SIMDE_FLOAT16_VALUE(  -324.00) },
      { SIMDE_FLOAT16_VALUE(   699.50), SIMDE_FLOAT16_VALUE(  -722.50), SIMDE_FLOAT16_VALUE(  -259.75), SIMDE_FLOAT16_VALUE(  -745.00),
        SIMDE_FLOAT16_VALUE(   959.00), SIMDE_FLOAT16_VALUE(  -717.00), SIMDE_FLOAT16_VALUE(  -903.50), SIMDE_FLOAT16_VALUE(   656.00) },
      { SIMDE_FLOAT16_VALUE( 42144.00), SIMDE_FLOAT16_VALUE( 22304.00), SIMDE_FLOAT16_VALUE(  -259.00), SIMDE_FLOAT16_VALUE(  -680.00),
        SIMDE_FLOAT16_VALUE(     2.72), SIMDE_FLOAT16_VALUE(  -716.00), SIMDE_FLOAT16_VALUE(    -3.54), SIMDE_FLOAT16_VALUE( -2656.00) } },
    { { UINT16_C(30015), UINT16_C(41645), UINT16_C(28607), UINT16_C( 7718), UINT16_C(21653), UINT16_C(45347), UINT16_C(65081), UINT16_C(32637) },
      { SIMDE_FLOAT16_VALUE(   -32.66), SIMDE_FLOAT16_VALUE(   785.00), SIMDE_FLOAT16_VALUE(  -794.00), SIMDE_FLOAT16_VALUE(   797.00),
        SIMDE_FLOAT16_VALUE(   621.50), SIMDE_FLOAT16_VALUE(    75.69), SIMDE_FLOAT16_VALUE(  -526.50), SIMDE_FLOAT16_VALUE(   321.00) },
      { SIMDE_FLOAT16_VALUE(   353.00), SIMDE_FLOAT16_VALUE(   213.62), SIMDE_FLOAT16_VALUE(   576.00), SIMDE_FLOAT16_VALUE(   312.25),
        SIMDE_FLOAT16_VALUE(   496.50), SIMDE_FLOAT16_VALUE(   672.50), SIMDE_FLOAT16_VALUE(   -31.95), SIMDE_FLOAT16_VALUE(  -105.12) },
      { SIMDE_FLOAT16_VALUE(   146.62), SIMDE_FLOAT16_VALUE( 50176.00), SIMDE_FLOAT16_VALUE(   794.00), SIMDE_FLOAT16_VALUE(     3.44),
        SIMDE_FLOAT16_VALUE(    15.65), SIMDE_FLOAT16_VALUE(    35.09), SIMDE_FLOAT16_VALUE(  -750.50), SIMDE_FLOAT16_VALUE(  -353.50) } },
    { { UINT16_C(50389), UINT16_C(37897), UINT16_C(12083), UINT16_C(51635), UINT16_C(54916), UINT16_C(48506), UINT16_C(63444), UINT16_C(49980) },
      { SIMDE_FLOAT16_VALUE(   434.25), SIMDE_FLOAT16_VALUE(   -38.09), SIMDE_FLOAT16_VALUE(    23.38), SIMDE_FLOAT16_VALUE(    55.78),
        SIMDE_FLOAT16_VALUE(  -962.50), SIMDE_FLOAT16_VALUE(   496.75), SIMDE_FLOAT16_VALUE(  -623.00), SIMDE_FLOAT16_VALUE(   390.50) },
      { SIMDE_FLOAT16_VALUE(  -289.75), SIMDE_FLOAT16_VALUE(   953.00), SIMDE_FLOAT16_VALUE(  -297.25), SIMDE_FLOAT16_VALUE(  -793.50),
        SIMDE_FLOAT16_VALUE(   625.50), SIMDE_FLOAT16_VALUE(   671.00), SIMDE_FLOAT16_VALUE(   101.56), SIMDE_FLOAT16_VALUE(   561.50) },
      { SIMDE_FLOAT16_VALUE(   304.75), SIMDE_FLOAT16_VALUE(-15256.00), SIMDE_FLOAT16_VALUE(  -357.00), SIMDE_FLOAT16_VALUE(   856.50),
        SIMDE_FLOAT16_VALUE(  -883.50), SIMDE_FLOAT16_VALUE(   337.50), SIMDE_FLOAT16_VALUE(  -622.50), SIMDE_FLOAT16_VALUE(   813.50) } }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint16x8_t a = simde_vld1q_u16(test_vec[i].a);
    simde_float16x8_t b = simde_vld1q_f16(test_vec[i].b);
    simde_float16x8_t c = simde_vld1q_f16(test_vec[i].c);
    simde_float16x8_t r = simde_vbslq_f16(a, b, c);
    simde_test_arm_neon_assert_equal_f16x8(r, simde_vld1q_f16(test_vec[i].r), 1);
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_uint16x8_t a = simde_test_arm_neon_random_u16x8();
    simde_float16x8_t b = simde_test_arm_neon_random_f16x8(-100.0f, 100.0f);
    simde_float16x8_t c = simde_test_arm_neon_random_f16x8(-100.0f, 100.0f);
    simde_float16x8_t r = simde_vbslq_f16(a, b, c);

    simde_test_arm_neon_write_u16x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_f16x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f16x8(2, c, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f16x8(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vbslq_f32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  struct {
    uint32_t a[4];
    simde_float32 b[4];
    simde_float32 c[4];
    simde_float32 r[4];
  } test_vec[] = {
    { { UINT32_C(2050512422), UINT32_C(1891785275), UINT32_C(3601774981), UINT32_C( 108127079) },
      { SIMDE_FLOAT32_C(   726.27), SIMDE_FLOAT32_C(  -285.01), SIMDE_FLOAT32_C(   100.31), SIMDE_FLOAT32_C(  -361.34) },
      { SIMDE_FLOAT32_C(   922.89), SIMDE_FLOAT32_C(   266.21), SIMDE_FLOAT32_C(   203.26), SIMDE_FLOAT32_C(   423.67) },
      { SIMDE_FLOAT32_C(   986.89), SIMDE_FLOAT32_C(   270.01), SIMDE_FLOAT32_C(   403.71), SIMDE_FLOAT32_C(   357.43) } },
    { { UINT32_C(3614509257), UINT32_C( 280160490), UINT32_C(2039147070), UINT32_C(3404352837) },
      { SIMDE_FLOAT32_C(   -48.71), SIMDE_FLOAT32_C(   -96.93), SIMDE_FLOAT32_C(   765.30), SIMDE_FLOAT32_C(  -365.42) },
      { SIMDE_FLOAT32_C(    51.72), SIMDE_FLOAT32_C(   310.81), SIMDE_FLOAT32_C(   707.75), SIMDE_FLOAT32_C(  -222.02) },
      { SIMDE_FLOAT32_C(   -51.72), SIMDE_FLOAT32_C(   275.62), SIMDE_FLOAT32_C(   745.28), SIMDE_FLOAT32_C(  -364.04) } },
    { { UINT32_C(1311624492), UINT32_C(2429832391), UINT32_C(1046955348), UINT32_C(1800345901) },
      { SIMDE_FLOAT32_C(   173.43), SIMDE_FLOAT32_C(   396.70), SIMDE_FLOAT32_C(  -158.88), SIMDE_FLOAT32_C(   270.13) },
      { SIMDE_FLOAT32_C(   511.35), SIMDE_FLOAT32_C(  -236.38), SIMDE_FLOAT32_C(  -423.74), SIMDE_FLOAT32_C(  -537.35) },
      { SIMDE_FLOAT32_C(   510.85), SIMDE_FLOAT32_C(   472.82), SIMDE_FLOAT32_C(  -301.72), SIMDE_FLOAT32_C(-34646.40) } },
    { { UINT32_C(3818566759), UINT32_C(4063432390), UINT32_C(2722128091), UINT32_C(   3347628) },
      { SIMDE_FLOAT32_C(   968.99), SIMDE_FLOAT32_C(   614.68), SIMDE_FLOAT32_C(  -913.19), SIMDE_FLOAT32_C(   634.92) },
      { SIMDE_FLOAT32_C(   -20.17), SIMDE_FLOAT32_C(  -778.48), SIMDE_FLOAT32_C(   528.43), SIMDE_FLOAT32_C(  -846.74) },
      { SIMDE_FLOAT32_C(     2.80), SIMDE_FLOAT32_C(   838.42), SIMDE_FLOAT32_C(  -785.42), SIMDE_FLOAT32_C(  -842.94) } },
    { { UINT32_C(2382485607), UINT32_C( 247141543), UINT32_C(2415023561), UINT32_C(1065493860) },
      { SIMDE_FLOAT32_C(   927.69), SIMDE_FLOAT32_C(   298.66), SIMDE_FLOAT32_C(  -205.27), SIMDE_FLOAT32_C(   460.63) },
      { SIMDE_FLOAT32_C(  -702.09), SIMDE_FLOAT32_C(  -280.47), SIMDE_FLOAT32_C(   122.07), SIMDE_FLOAT32_C(  -733.10) },
      { SIMDE_FLOAT32_C(   703.21), SIMDE_FLOAT32_C(  -298.47), SIMDE_FLOAT32_C(  -196.40), SIMDE_FLOAT32_C(  -366.52) } },
    { { UINT32_C(1673032367), UINT32_C(1729866496), UINT32_C( 720706691), UINT32_C(4198084657) },
      { SIMDE_FLOAT32_C(  -540.17), SIMDE_FLOAT32_C(   251.09), SIMDE_FLOAT32_C(   225.13), SIMDE_FLOAT32_C(   954.24) },
      { SIMDE_FLOAT32_C(  -734.26), SIMDE_FLOAT32_C(  -103.09), SIMDE_FLOAT32_C(    61.68), SIMDE_FLOAT32_C(  -806.57) },
      { SIMDE_FLOAT32_C(  -542.04), SIMDE_FLOAT32_C(  -446.06), SIMDE_FLOAT32_C(    56.91), SIMDE_FLOAT32_C(   930.07) } },
    { { UINT32_C(2768866254), UINT32_C(1356217504), UINT32_C(2931003054), UINT32_C(3172323130) },
      { SIMDE_FLOAT32_C(  -417.88), SIMDE_FLOAT32_C(  -357.81), SIMDE_FLOAT32_C(  -174.77), SIMDE_FLOAT32_C(   472.44) },
      { SIMDE_FLOAT32_C(  -587.42), SIMDE_FLOAT32_C(  -441.94), SIMDE_FLOAT32_C(  -296.02), SIMDE_FLOAT32_C(  -127.59) },
      { SIMDE_FLOAT32_C(    -9.18), SIMDE_FLOAT32_C(  -309.79), SIMDE_FLOAT32_C(  -166.52), SIMDE_FLOAT32_C(   476.31) } },
    { { UINT32_C(2620104780), UINT32_C(2037634475), UINT32_C(  18775136), UINT32_C(1716647096) },
      { SIMDE_FLOAT32_C(   -62.34), SIMDE_FLOAT32_C(   454.95), SIMDE_FLOAT32_C(  -901.11), SIMDE_FLOAT32_C(    30.12) },
      { SIMDE_FLOAT32_C(   146.40), SIMDE_FLOAT32_C(  -437.09), SIMDE_FLOAT32_C(   -77.62), SIMDE_FLOAT32_C(   728.52) },
      { SIMDE_FLOAT32_C(  -185.27), SIMDE_FLOAT32_C(  -470.72), SIMDE_FLOAT32_C(   -64.63), SIMDE_FLOAT32_C(     3.86) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint32x4_t a = simde_vld1q_u32(test_vec[i].a);
    simde_float32x4_t b = simde_vld1q_f32(test_vec[i].b);
    simde_float32x4_t c = simde_vld1q_f32(test_vec[i].c);
    simde_float32x4_t r = simde_vbslq_f32(a, b, c);
    simde_test_arm_neon_assert_equal_f32x4(r, simde_vld1q_f32(test_vec[i].r), 1);
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_uint32x4_t a = simde_test_arm_neon_random_u32x4();
    simde_float32x4_t b = simde_test_arm_neon_random_f32x4(-1000.0f, 1000.0f);
    simde_float32x4_t c = simde_test_arm_neon_random_f32x4(-1000.0f, 1000.0f);
    simde_float32x4_t r = simde_vbslq_f32(a, b, c);

    simde_test_arm_neon_write_u32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f32x4(2, c, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vbslq_f64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  struct {
    uint64_t a[2];
    simde_float64 b[2];
    simde_float64 c[2];
    simde_float64 r[2];
  } test_vec[] = {
    { { UINT64_C(13764238683935597897), UINT64_C(16898862026458326254) },
      { SIMDE_FLOAT64_C(  -774.89), SIMDE_FLOAT64_C(  -747.47) },
      { SIMDE_FLOAT64_C(  -332.23), SIMDE_FLOAT64_C(   521.67) },
      { SIMDE_FLOAT64_C(  -266.47), SIMDE_FLOAT64_C(  -651.66) } },
    { { UINT64_C(13223275955338830799), UINT64_C( 7046989072648393554) },
      { SIMDE_FLOAT64_C(   994.41), SIMDE_FLOAT64_C(   822.45) },
      { SIMDE_FLOAT64_C(  -294.88), SIMDE_FLOAT64_C(  -105.01) },
      { SIMDE_FLOAT64_C( 75509.48), SIMDE_FLOAT64_C( -1640.90) } },
    { { UINT64_C(11175800480316490419), UINT64_C( 9412372685746910188) },
      { SIMDE_FLOAT64_C(   757.22), SIMDE_FLOAT64_C(  -233.80) },
      { SIMDE_FLOAT64_C(   -54.26), SIMDE_FLOAT64_C(   966.12) },
      { SIMDE_FLOAT64_C(    38.32), SIMDE_FLOAT64_C(    -3.65) } },
    { { UINT64_C(13983593746892684661), UINT64_C(  316639219210923907) },
      { SIMDE_FLOAT64_C(  -380.48), SIMDE_FLOAT64_C(   397.51) },
      { SIMDE_FLOAT64_C(   -87.86), SIMDE_FLOAT64_C(   -48.58) },
      { SIMDE_FLOAT64_C(   -95.11), SIMDE_FLOAT64_C(  -198.32) } },
    { { UINT64_C(11225398681450588207), UINT64_C(16926446589552624066) },
      { SIMDE_FLOAT64_C(   635.25), SIMDE_FLOAT64_C(   381.12) },
      { SIMDE_FLOAT64_C(  -832.41), SIMDE_FLOAT64_C(  -124.32) },
      { SIMDE_FLOAT64_C(   592.41), SIMDE_FLOAT64_C(   509.34) } },
    { { UINT64_C(18076222544372871973), UINT64_C( 4870150017706326817) },
      { SIMDE_FLOAT64_C(  -197.71), SIMDE_FLOAT64_C(  -523.67) },
      { SIMDE_FLOAT64_C(   628.41), SIMDE_FLOAT64_C(   -93.61) },
      { SIMDE_FLOAT64_C(   -49.31), SIMDE_FLOAT64_C( -8890.06) } },
    { { UINT64_C( 2218233479757940575), UINT64_C(14533229422664185268) },
      { SIMDE_FLOAT64_C(   537.41), SIMDE_FLOAT64_C(   -64.67) },
      { SIMDE_FLOAT64_C(  -883.30), SIMDE_FLOAT64_C(  -802.50) },
      { SIMDE_FLOAT64_C(  -625.43), SIMDE_FLOAT64_C(    -6.30) } },
    { { UINT64_C( 2444631349764358662), UINT64_C( 3147906818953694066) },
      { SIMDE_FLOAT64_C(   483.18), SIMDE_FLOAT64_C(   409.15) },
      { SIMDE_FLOAT64_C(  -524.40), SIMDE_FLOAT64_C(   755.41) },
      { SIMDE_FLOAT64_C(  -227.58), SIMDE_FLOAT64_C(    12.79) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint64x2_t a = simde_vld1q_u64(test_vec[i].a);
    simde_float64x2_t b = simde_vld1q_f64(test_vec[i].b);
    simde_float64x2_t c = simde_vld1q_f64(test_vec[i].c);
    simde_float64x2_t r = simde_vbslq_f64(a, b, c);

    simde_test_arm_neon_assert_equal_f64x2(r, simde_vld1q_f64(test_vec[i].r), 1);
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_uint64x2_t a = simde_test_arm_neon_random_u64x2();
    simde_float64x2_t b = simde_test_arm_neon_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
    simde_float64x2_t c = simde_test_arm_neon_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
    simde_float64x2_t r = simde_vbslq_f64(a, b, c);

    simde_test_arm_neon_write_u64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f64x2(2, c, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vbslq_s8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  struct {
    uint8_t a[16];
    int8_t b[16];
    int8_t c[16];
    int8_t r[16];
  } test_vec[] = {
    { { UINT8_C(136), UINT8_C(230), UINT8_C( 97), UINT8_C(  0), UINT8_C( 20), UINT8_C( 50), UINT8_C(138), UINT8_C(231),
           UINT8_MAX, UINT8_C( 18), UINT8_C(190), UINT8_C(185), UINT8_C(181), UINT8_C( 25), UINT8_C( 53), UINT8_C(  6) },
      {  INT8_C(  60), -INT8_C(  30),  INT8_C(  93), -INT8_C(  89), -INT8_C(   3),  INT8_C( 121),  INT8_C(  83), -INT8_C( 123),
         INT8_C( 102), -INT8_C( 115), -INT8_C(  97), -INT8_C(  39), -INT8_C( 104),  INT8_C(  82), -INT8_C(  24),  INT8_C(  32) },
      {  INT8_C(  56),  INT8_C(  73),  INT8_C(  32),  INT8_C(  76),  INT8_C( 123), -INT8_C(  85),  INT8_C(  51),  INT8_C( 122),
        -INT8_C(  67), -INT8_C(  15),  INT8_C(  51),  INT8_C( 114),  INT8_C(  11),  INT8_C( 104),  INT8_C( 120),  INT8_C(  71) },
      {  INT8_C(  56), -INT8_C(  21),  INT8_C(  65),  INT8_C(  76),      INT8_MAX, -INT8_C(  71),  INT8_C(  51), -INT8_C(  99),
         INT8_C( 102), -INT8_C(  31), -INT8_C(  97), -INT8_C(  37), -INT8_C( 102),  INT8_C( 112),  INT8_C( 104),  INT8_C(  65) } },
    { { UINT8_C( 74), UINT8_C(214), UINT8_C(238), UINT8_C( 71), UINT8_C( 79), UINT8_C( 65), UINT8_C(204), UINT8_C(181),
        UINT8_C(207), UINT8_C(107), UINT8_C(142), UINT8_C(103), UINT8_C(189), UINT8_C(118), UINT8_C(136), UINT8_C(245) },
      { -INT8_C(  65), -INT8_C(  88),  INT8_C(  65),  INT8_C(  58),  INT8_C(  83),  INT8_C( 117), -INT8_C(  76),  INT8_C(  17),
         INT8_C( 102), -INT8_C(  25), -INT8_C( 125),  INT8_C( 113),  INT8_C(  79), -INT8_C(   4), -INT8_C(  72), -INT8_C( 103) },
      { -INT8_C(  46), -INT8_C(  90), -INT8_C(  32),  INT8_C(  33), -INT8_C(  24), -INT8_C(  84), -INT8_C(  42), -INT8_C(  73),
         INT8_C(  23),  INT8_C( 100),  INT8_C(  30), -INT8_C(  44), -INT8_C(  37), -INT8_C(  90), -INT8_C(  55), -INT8_C( 102) },
      { -INT8_C( 102), -INT8_C(  96),  INT8_C(  64),  INT8_C(  34), -INT8_C(  29), -INT8_C(  19), -INT8_C( 106),  INT8_C(  19),
         INT8_C(  86),  INT8_C( 103), -INT8_C( 110), -INT8_C(  15),  INT8_C(  79), -INT8_C(  12), -INT8_C(  55), -INT8_C( 101) } },
    { { UINT8_C( 79), UINT8_C( 11), UINT8_C(213), UINT8_C(162), UINT8_C(128), UINT8_C(137), UINT8_C(179), UINT8_C(230),
        UINT8_C(113), UINT8_C( 55), UINT8_C( 88), UINT8_C(192), UINT8_C( 51), UINT8_C( 16), UINT8_C( 90), UINT8_C(  5) },
      { -INT8_C(  73),  INT8_C(  58),  INT8_C(  38), -INT8_C(  97), -INT8_C(  25), -INT8_C(   4),  INT8_C(  86), -INT8_C(   2),
         INT8_C(  96),  INT8_C( 116), -INT8_C(  45),  INT8_C(  59),  INT8_C(  27), -INT8_C( 100), -INT8_C(  42),  INT8_C( 106) },
      { -INT8_C(  89), -INT8_C(  85),  INT8_C(  12),  INT8_C(  39),  INT8_C(  52), -INT8_C(  64),  INT8_C(  14), -INT8_C(  91),
        -INT8_C(   9),  INT8_C( 102),  INT8_C( 102),  INT8_C(  42),  INT8_C( 118), -INT8_C(  64),  INT8_C(  47),  INT8_C(  45) },
      { -INT8_C(  89), -INT8_C(  86),  INT8_C(  12), -INT8_C( 121), -INT8_C(  76), -INT8_C(  56),  INT8_C(  30), -INT8_C(  25),
        -INT8_C(  26),  INT8_C( 116),  INT8_C( 118),  INT8_C(  42),  INT8_C(  87), -INT8_C(  48),  INT8_C( 119),  INT8_C(  40) } },
    { { UINT8_C(250), UINT8_C( 85), UINT8_C(204), UINT8_C(225), UINT8_C( 81), UINT8_C( 34), UINT8_C(224), UINT8_C(177),
        UINT8_C(151), UINT8_C(179), UINT8_C(237), UINT8_C(178), UINT8_C( 79), UINT8_C(195), UINT8_C( 28), UINT8_C(247) },
      {  INT8_C( 110),  INT8_C(  40),  INT8_C(  30), -INT8_C(  94), -INT8_C(  24),  INT8_C(  44),  INT8_C(  72), -INT8_C(  33),
        -INT8_C( 110), -INT8_C(  82),  INT8_C(   9),  INT8_C(   9),  INT8_C( 110),  INT8_C(  56),  INT8_C(  54),  INT8_C( 104) },
      { -INT8_C( 115),  INT8_C(   3),  INT8_C(  74), -INT8_C(  34),  INT8_C(  37),  INT8_C(  42), -INT8_C( 112), -INT8_C(  68),
        -INT8_C(  35),  INT8_C( 125),  INT8_C( 110),  INT8_C(  44),  INT8_C(  64), -INT8_C( 118),  INT8_C(  35), -INT8_C(  82) },
      {  INT8_C( 111),  INT8_C(   2),  INT8_C(  14), -INT8_C(  66),  INT8_C( 100),  INT8_C(  40),  INT8_C(  80), -INT8_C(  99),
        -INT8_C(  38), -INT8_C(  18),  INT8_C(  11),  INT8_C(  12),  INT8_C(  78),  INT8_C(   8),  INT8_C(  55),  INT8_C( 104) } },
    { { UINT8_C(179), UINT8_C( 66), UINT8_C( 80), UINT8_C(155), UINT8_C(110), UINT8_C(152), UINT8_C(123), UINT8_C(  1),
        UINT8_C( 70), UINT8_C(132), UINT8_C( 10), UINT8_C(180), UINT8_C(189), UINT8_C( 64), UINT8_C( 29), UINT8_C( 74) },
      {  INT8_C(  67),  INT8_C( 103),  INT8_C(  41),  INT8_C( 105), -INT8_C( 111), -INT8_C(  71),  INT8_C(  37),  INT8_C( 110),
         INT8_C(  54), -INT8_C( 108), -INT8_C( 102),  INT8_C( 118),  INT8_C(  30), -INT8_C(  66),  INT8_C(  36), -INT8_C(  47) },
      {  INT8_C(   0),  INT8_C( 116),  INT8_C( 109),  INT8_C( 110),  INT8_C(  13), -INT8_C(  24),  INT8_C( 111),  INT8_C(  83),
         INT8_C( 108),  INT8_C( 121),  INT8_C(   8),  INT8_C(  41), -INT8_C(  70),  INT8_C(  37),  INT8_C( 116), -INT8_C(   3) },
      {  INT8_C(   3),  INT8_C( 118),  INT8_C(  45),  INT8_C( 109),  INT8_C(   1), -INT8_C(   8),  INT8_C(  37),  INT8_C(  82),
         INT8_C(  46), -INT8_C(   3),  INT8_C(  10),  INT8_C(  61),  INT8_C(  30),  INT8_C(  37),  INT8_C( 100), -INT8_C(  11) } },
    { { UINT8_C(140), UINT8_C(157), UINT8_C(102), UINT8_C( 29), UINT8_C( 86), UINT8_C(140), UINT8_C(139), UINT8_C(140),
        UINT8_C( 32), UINT8_C( 37), UINT8_C(  2), UINT8_C( 62), UINT8_C(227), UINT8_C( 38), UINT8_C( 16), UINT8_C(227) },
      { -INT8_C( 102),  INT8_C( 125),  INT8_C(  82), -INT8_C(  89),  INT8_C( 101), -INT8_C(  63), -INT8_C(   5), -INT8_C(  47),
         INT8_C(  59),  INT8_C(   3), -INT8_C(   5), -INT8_C(  11),  INT8_C(  40),  INT8_C( 111), -INT8_C(  14), -INT8_C(  76) },
      {  INT8_C(  12),  INT8_C(  89), -INT8_C(  47),  INT8_C(  98), -INT8_C(  27),  INT8_C(  92), -INT8_C(  18),  INT8_C(   5),
        -INT8_C( 127), -INT8_C(  16),  INT8_C(  67),  INT8_C( 101),  INT8_C(  22),  INT8_C(  83),  INT8_C(  72), -INT8_C(  80) },
      { -INT8_C( 120),  INT8_C(  93), -INT8_C(  45),  INT8_C( 103), -INT8_C(  27), -INT8_C(  48), -INT8_C(  17), -INT8_C( 127),
        -INT8_C(  95), -INT8_C(  47),  INT8_C(  67),  INT8_C( 117),  INT8_C(  52),  INT8_C( 119),  INT8_C(  88), -INT8_C(  80) } },
    { { UINT8_C(208), UINT8_C(154), UINT8_C( 88), UINT8_C( 53), UINT8_C( 92), UINT8_C( 83), UINT8_C(  7), UINT8_C(151),
        UINT8_C( 86), UINT8_C(  2), UINT8_C(140), UINT8_C(126), UINT8_C(113), UINT8_C(126), UINT8_C( 50), UINT8_C(125) },
      { -INT8_C(  41),  INT8_C(   3), -INT8_C(  33), -INT8_C(  68),  INT8_C(  95), -INT8_C(  51), -INT8_C(  63), -INT8_C(  32),
        -INT8_C(  67),  INT8_C(   5),  INT8_C(  69), -INT8_C(  45),  INT8_C(  88), -INT8_C( 114), -INT8_C( 125),  INT8_C(  41) },
      {  INT8_C(  40), -INT8_C(  37),  INT8_C(  94), -INT8_C( 124),  INT8_C(  46),  INT8_C( 101),  INT8_C(  27), -INT8_C( 124),
         INT8_C( 103), -INT8_C(  89),  INT8_C(   2), -INT8_C(  40),  INT8_C(  38),  INT8_C(  52),  INT8_C(  85), -INT8_C(   3) },
      { -INT8_C(   8),  INT8_C(  67),  INT8_C(  94), -INT8_C(  76),  INT8_C( 126),  INT8_C( 101),  INT8_C(  25),      INT8_MIN,
         INT8_C(  53), -INT8_C(  91),  INT8_C(   6), -INT8_C(  46),  INT8_C(  86),  INT8_C(  14),  INT8_C(  71), -INT8_C(  87) } },
    { { UINT8_C( 55), UINT8_C( 52), UINT8_C(186), UINT8_C(150), UINT8_C(  1), UINT8_C(123), UINT8_C(119), UINT8_C(190),
        UINT8_C(128), UINT8_C(188), UINT8_C(145), UINT8_C(217), UINT8_C( 74), UINT8_C( 21), UINT8_C(  2), UINT8_C(115) },
      { -INT8_C(  16),  INT8_C(  96), -INT8_C(   9),  INT8_C(  31), -INT8_C(  58),  INT8_C(  19), -INT8_C(  93),  INT8_C(  45),
        -INT8_C(  70), -INT8_C(  90),  INT8_C(   6), -INT8_C(  32), -INT8_C(  38),  INT8_C(  91), -INT8_C(  34),  INT8_C(  18) },
      { -INT8_C( 112), -INT8_C( 104), -INT8_C(  88), -INT8_C( 111),  INT8_C(  19),  INT8_C(  31),  INT8_C(  80), -INT8_C( 108),
        -INT8_C(  36), -INT8_C(  31),  INT8_C( 109),  INT8_C(  38), -INT8_C(  10),  INT8_C( 111), -INT8_C( 103), -INT8_C(  25) },
      { -INT8_C(  80), -INT8_C(  88), -INT8_C(  78),  INT8_C(  23),  INT8_C(  18),  INT8_C(  23),  INT8_C(  35),  INT8_C(  44),
        -INT8_C(  36), -INT8_C(  27),  INT8_C( 108), -INT8_C(  26), -INT8_C(   2),  INT8_C( 123), -INT8_C( 101), -INT8_C( 106) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint8x16_t a = simde_vld1q_u8(test_vec[i].a);
    simde_int8x16_t b = simde_vld1q_s8(test_vec[i].b);
    simde_int8x16_t c = simde_vld1q_s8(test_vec[i].c);
    simde_int8x16_t r = simde_vbslq_s8(a, b, c);

    simde_test_arm_neon_assert_equal_i8x16(r, simde_vld1q_s8(test_vec[i].r));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_uint8x16_t a = simde_test_arm_neon_random_u8x16();
    simde_int8x16_t b = simde_test_arm_neon_random_i8x16();
    simde_int8x16_t c = simde_test_arm_neon_random_i8x16();
    simde_int8x16_t r = simde_vbslq_s8(a, b, c);

    simde_test_arm_neon_write_u8x16(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_i8x16(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i8x16(2, c, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i8x16(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vbslq_s16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  struct {
    uint16_t a[8];
    int16_t b[8];
    int16_t c[8];
    int16_t r[8];
  } test_vec[] = {
    { { UINT16_C(29959), UINT16_C( 5999), UINT16_C(39015), UINT16_C(20558), UINT16_C(58240), UINT16_C(60934), UINT16_C(14982), UINT16_C(23147) },
      {  INT16_C( 25631),  INT16_C( 21395), -INT16_C( 29489), -INT16_C(  5080),  INT16_C( 13097), -INT16_C( 13303), -INT16_C( 17379),  INT16_C(  9417) },
      {  INT16_C( 14385), -INT16_C( 26564), -INT16_C( 30000),  INT16_C( 20712), -INT16_C(  4498), -INT16_C(  3010), -INT16_C( 21976),  INT16_C( 18254) },
      {  INT16_C( 27703), -INT16_C( 25837), -INT16_C( 29993),  INT16_C( 16552),  INT16_C( 12142), -INT16_C(  9160), -INT16_C( 18388),  INT16_C(  1357) } },
    { { UINT16_C(57870), UINT16_C(56730), UINT16_C(49774), UINT16_C(38857), UINT16_C(54005), UINT16_C( 4707), UINT16_C(11407), UINT16_C(49207) },
      {  INT16_C( 29540),  INT16_C( 13657),  INT16_C( 16893),  INT16_C( 27525), -INT16_C( 15312),  INT16_C( 22623), -INT16_C( 20882),  INT16_C( 31904) },
      {  INT16_C( 14992), -INT16_C(   422),  INT16_C(  9213), -INT16_C(  3434), -INT16_C(  1546), -INT16_C( 31483),  INT16_C( 15398), -INT16_C( 30139) },
      {  INT16_C( 31380),  INT16_C( 14168),  INT16_C( 25085),  INT16_C( 25495), -INT16_C(  5838), -INT16_C( 27321),  INT16_C( 15406),  INT16_C( 19040) } },
    { { UINT16_C(40623), UINT16_C(44223), UINT16_C(17888), UINT16_C( 4120), UINT16_C(30473), UINT16_C(30568), UINT16_C( 2085), UINT16_C(46579) },
      {  INT16_C( 19779),  INT16_C( 16564),  INT16_C( 19057),  INT16_C( 26418),  INT16_C( 14147),  INT16_C( 27116),  INT16_C( 12659),  INT16_C(  8948) },
      { -INT16_C( 19504), -INT16_C( 20273), -INT16_C(  6152),  INT16_C(   448),  INT16_C( 10334), -INT16_C( 31624),  INT16_C( 27697),  INT16_C( 29753) },
      {  INT16_C( 11603),  INT16_C(  4340), -INT16_C(  7560),  INT16_C(   464),  INT16_C( 16215), -INT16_C(  7816),  INT16_C( 25649),  INT16_C( 24824) } },
    { { UINT16_C(60857), UINT16_C(10932), UINT16_C(58935), UINT16_C(31633), UINT16_C(32030), UINT16_C(37348), UINT16_C(55471), UINT16_C(32692) },
      { -INT16_C( 31860), -INT16_C( 31697), -INT16_C(  4246), -INT16_C( 14202), -INT16_C(   489),  INT16_C( 18508), -INT16_C( 31126),  INT16_C(  9404) },
      {  INT16_C( 28787), -INT16_C( 21682), -INT16_C(  8105),  INT16_C( 29990),  INT16_C(  2653),  INT16_C(  3078), -INT16_C( 17693),  INT16_C( 28555) },
      { -INT16_C( 28214), -INT16_C( 32402), -INT16_C(  6558),  INT16_C( 19622),  INT16_C( 32343),  INT16_C(  3142), -INT16_C( 23958),  INT16_C(  9407) } },
    { { UINT16_C(47677), UINT16_C(42995), UINT16_C(31145), UINT16_C(49520), UINT16_C(48248), UINT16_C(57865), UINT16_C(50754), UINT16_C(46598) },
      {  INT16_C( 21814), -INT16_C( 29343), -INT16_C( 30923), -INT16_C( 28158),  INT16_C(  2449),  INT16_C( 29855),  INT16_C( 10947),  INT16_C(   483) },
      { -INT16_C( 10267), -INT16_C( 29016),  INT16_C(  6224), -INT16_C( 14257),  INT16_C( 22997),  INT16_C(  6059), -INT16_C( 20193),  INT16_C( 21965) },
      {  INT16_C( 22004), -INT16_C( 29335),  INT16_C(   369), -INT16_C( 30705),  INT16_C( 18837),  INT16_C( 30123),  INT16_C( 13151),  INT16_C( 16843) } },
    { { UINT16_C(11782), UINT16_C(15331), UINT16_C(58805), UINT16_C(18382), UINT16_C(28142), UINT16_C(45755), UINT16_C(40855), UINT16_C(31923) },
      {  INT16_C( 23414), -INT16_C( 14837),  INT16_C( 23156),  INT16_C( 18831),  INT16_C( 15027), -INT16_C( 11680),  INT16_C( 12011), -INT16_C(  3544) },
      {  INT16_C(  2908),  INT16_C(  4653), -INT16_C(  1040), -INT16_C(  8359),  INT16_C(  5224),  INT16_C(   145),  INT16_C( 17587),  INT16_C( 10620) },
      {  INT16_C(  2910),  INT16_C(   527),  INT16_C( 23156), -INT16_C(  9825),  INT16_C( 14498), -INT16_C( 28128),  INT16_C( 20131),  INT16_C( 29036) } },
    { { UINT16_C(34719), UINT16_C( 5104), UINT16_C(32738), UINT16_C(38236), UINT16_C(48569), UINT16_C(42088), UINT16_C(37099), UINT16_C(18326) },
      { -INT16_C( 15205), -INT16_C( 29863), -INT16_C( 19777),  INT16_C( 10346), -INT16_C(  1081),  INT16_C( 31272), -INT16_C( 23489), -INT16_C(  8284) },
      { -INT16_C( 27604),  INT16_C(  3826),  INT16_C( 20243), -INT16_C( 13149),  INT16_C(  2828), -INT16_C(  2192),  INT16_C(  1947),  INT16_C( 13886) },
      { -INT16_C( 27461),  INT16_C(  3922),  INT16_C( 12979),  INT16_C( 18667), -INT16_C( 17531),  INT16_C( 29496), -INT16_C( 30917),  INT16_C( 30636) } },
    { { UINT16_C(39115), UINT16_C(35522), UINT16_C(11338), UINT16_C( 4530), UINT16_C(55848), UINT16_C(26508), UINT16_C(12415), UINT16_C(43846) },
      {  INT16_C( 14788), -INT16_C( 10311),  INT16_C( 23688), -INT16_C( 27485),  INT16_C(  4968),  INT16_C(   907), -INT16_C( 14054), -INT16_C(  6854) },
      { -INT16_C(   927), -INT16_C( 21392),  INT16_C(  8744),  INT16_C( 20669),  INT16_C( 18941),  INT16_C( 31928), -INT16_C(   391),  INT16_C( 15655) },
      {  INT16_C( 31968), -INT16_C( 22864),  INT16_C(  3624),  INT16_C( 20655),  INT16_C(  5117),  INT16_C(  7096), -INT16_C( 12774), -INT16_C( 19165) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint16x8_t a = simde_vld1q_u16(test_vec[i].a);
    simde_int16x8_t b = simde_vld1q_s16(test_vec[i].b);
    simde_int16x8_t c = simde_vld1q_s16(test_vec[i].c);
    simde_int16x8_t r = simde_vbslq_s16(a, b, c);

    simde_test_arm_neon_assert_equal_i16x8(r, simde_vld1q_s16(test_vec[i].r));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_uint16x8_t a = simde_test_arm_neon_random_u16x8();
    simde_int16x8_t b = simde_test_arm_neon_random_i16x8();
    simde_int16x8_t c = simde_test_arm_neon_random_i16x8();
    simde_int16x8_t r = simde_vbslq_s16(a, b, c);

    simde_test_arm_neon_write_u16x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_i16x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i16x8(2, c, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i16x8(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vbslq_s32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  struct {
    uint32_t a[4];
    int32_t b[4];
    int32_t c[4];
    int32_t r[4];
  } test_vec[] = {
    { { UINT32_C( 166371924), UINT32_C(3163181267), UINT32_C( 825615355), UINT32_C(4176949107) },
      { -INT32_C(    45381750),  INT32_C(   849081286), -INT32_C(  1238516410),  INT32_C(  1893146651) },
      { -INT32_C(  1787182654),  INT32_C(   206636049),  INT32_C(  1514047463),  INT32_C(  1079129526) },
      { -INT32_C(  1654930558),  INT32_C(   819680450),  INT32_C(  2049942854),  INT32_C(  1893150871) } },
    { { UINT32_C(2185076156), UINT32_C(3619018896), UINT32_C(2978865814), UINT32_C(3290522626) },
      {  INT32_C(   928619301), -INT32_C(  2042385505), -INT32_C(   387940046),  INT32_C(  1932014518) },
      {  INT32_C(  1643472336), -INT32_C(   751261123), -INT32_C(  1887058547),  INT32_C(  1330947626) },
      {  INT32_C(  1675229540), -INT32_C(  2046186819), -INT32_C(  1367309029),  INT32_C(  1265934890) } },
    { { UINT32_C(3766922561), UINT32_C(2321992280), UINT32_C(  41043787), UINT32_C(1249221242) },
      {  INT32_C(  1034644223), -INT32_C(  1575951595), -INT32_C(   751725143),  INT32_C(  2099414332) },
      { -INT32_C(  1956730573), -INT32_C(  1105804173), -INT32_C(  2050979829),  INT32_C(   584070435) },
      {  INT32_C(   735717491), -INT32_C(  1240414669), -INT32_C(  2018472695),  INT32_C(  1755358521) } },
    { { UINT32_C(3042933664), UINT32_C( 139948127), UINT32_C(1104906245), UINT32_C(1103101198) },
      {  INT32_C(   432807334), -INT32_C(   304553247), -INT32_C(  1905092501),  INT32_C(  1857045198) },
      {  INT32_C(   488837310), -INT32_C(  2061141376),  INT32_C(   281477122), -INT32_C(  1538160899) },
      {  INT32_C(   426514878), -INT32_C(  1922012479),  INT32_C(   274106371), -INT32_C(   454016257) } },
    { { UINT32_C(2226986659), UINT32_C(1802605824), UINT32_C(4244235310), UINT32_C(3832195622) },
      {  INT32_C(   973180346),  INT32_C(   163522055),  INT32_C(   605718054), -INT32_C(  1345819892) },
      { -INT32_C(  1976269431),  INT32_C(  1240835355), -INT32_C(  1337593975),  INT32_C(  1402253209) },
      {  INT32_C(   167873962),  INT32_C(   162866203),  INT32_C(   605851559), -INT32_C(  1210306659) } },
    { { UINT32_C(1133352508), UINT32_C(3813428412), UINT32_C(3741804243), UINT32_C(1536151506) },
      {  INT32_C(  1877328724), -INT32_C(   222766232),  INT32_C(  1671626186), -INT32_C(   390711636) },
      { -INT32_C(  1993653300),  INT32_C(  1651275919), -INT32_C(  1337822242), -INT32_C(  1777544894) },
      { -INT32_C(   878197804), -INT32_C(   500664277),  INT32_C(  1665299918), -INT32_C(   863627648) } },
    { { UINT32_C(4228313492), UINT32_C(2532228812), UINT32_C(1761185980), UINT32_C(2471604167) },
      { -INT32_C(  2112062222), -INT32_C(   739997452),  INT32_C(  1032005371), -INT32_C(  1949003785) },
      {  INT32_C(  1300814465),  INT32_C(  1424258712), -INT32_C(   826417913),  INT32_C(  2137067149) },
      { -INT32_C(  2121500015), -INT32_C(   756758316), -INT32_C(  1366995525), -INT32_C(   277835825) } },
    { { UINT32_C(2130804362), UINT32_C(  38987270), UINT32_C(  71292172), UINT32_C(3868136293) },
      { -INT32_C(  2043471891), -INT32_C(  1780869234), -INT32_C(  2107402251),  INT32_C(   805422245) },
      {  INT32_C(  1236206402), -INT32_C(   179633687),  INT32_C(  1006209750), -INT32_C(  1960736354) },
      {  INT32_C(   112138184), -INT32_C(   178583569),  INT32_C(  1004773334),  INT32_C(   690063551) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint32x4_t a = simde_vld1q_u32(test_vec[i].a);
    simde_int32x4_t b = simde_vld1q_s32(test_vec[i].b);
    simde_int32x4_t c = simde_vld1q_s32(test_vec[i].c);
    simde_int32x4_t r = simde_vbslq_s32(a, b, c);
    simde_test_arm_neon_assert_equal_i32x4(r, simde_vld1q_s32(test_vec[i].r));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_uint32x4_t a = simde_test_arm_neon_random_u32x4();
    simde_int32x4_t b = simde_test_arm_neon_random_i32x4();
    simde_int32x4_t c = simde_test_arm_neon_random_i32x4();
    simde_int32x4_t r = simde_vbslq_s32(a, b, c);

    simde_test_arm_neon_write_u32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_i32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i32x4(2, c, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vbslq_s64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  struct {
    uint64_t a[2];
    int64_t b[2];
    int64_t c[2];
    int64_t r[2];
  } test_vec[] = {
    { { UINT64_C( 7795818849416578166), UINT64_C(14966646166231909917) },
      { -INT64_C( 1068368472424484962),  INT64_C(   91235875088826701) },
      {  INT64_C( 8539869812187597094), -INT64_C( 8218959441254434116) },
      {  INT64_C( 8260715013321461014),  INT64_C(   91306241623177389) } },
    { { UINT64_C(10037573859184794066), UINT64_C(  445386730649992609) },
      {  INT64_C( 2823088921630323806),  INT64_C( 1357614561922374746) },
      { -INT64_C( 8225057344842806511), -INT64_C( 7107550753161811081) },
      {  INT64_C(  549080619647078995), -INT64_C( 7253403027809575338) } },
    { { UINT64_C( 8299431632794057116), UINT64_C(13668588338187957598) },
      {  INT64_C( 5645798521896181471), -INT64_C( 7516787075213618222) },
      { -INT64_C( 2087194652701817989),  INT64_C( 4083130274454553920) },
      { -INT64_C( 4464813712291849473), -INT64_C( 7662274460797005486) } },
    { { UINT64_C( 8031428440031016527), UINT64_C(10881312548301380208) },
      { -INT64_C( 6153267932422234317), -INT64_C( 7094786458336682760) },
      {  INT64_C( 6558431740862697207), -INT64_C( 1655133656428673708) },
      {  INT64_C( 4184182062128864947), -INT64_C(  213981810549875340) } },
    { { UINT64_C( 6880441842545013607), UINT64_C( 5495863055540556633) },
      { -INT64_C( 7489797051327116856),  INT64_C(  290781913680499819) },
      {  INT64_C( 4686086571514309443), -INT64_C( 4898175920371025562) },
      {  INT64_C( 1732874077065414976), -INT64_C( 5475509944796465041) } },
    { { UINT64_C( 4040712711685793591), UINT64_C( 7994841704351406930) },
      { -INT64_C( 9136079489626224371), -INT64_C( 8824449092932591655) },
      { -INT64_C( 3949916946509531094), -INT64_C(  664091926299375826) },
      { -INT64_C( 4522140434435614451), -INT64_C( 7743434016418128004) } },
    { { UINT64_C(15713377964977283188), UINT64_C(13336337789699444033) },
      {  INT64_C( 6154414252077618217),  INT64_C( 4559745962363265127) },
      { -INT64_C( 7623221616342781352),  INT64_C( 3852329258121026349) },
      {  INT64_C( 6063184672427610664),  INT64_C( 4424286953917616749) } },
    { { UINT64_C( 7910921318392145485), UINT64_C( 5289483196180560221) },
      {  INT64_C( 4909441564937500471), -INT64_C( 3678465080099256654) },
      {  INT64_C( 7066158834674354333),  INT64_C(  701986301675294339) },
      {  INT64_C( 5048841978297511573),  INT64_C( 5257376916863960722) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint64x2_t a = simde_vld1q_u64(test_vec[i].a);
    simde_int64x2_t b = simde_vld1q_s64(test_vec[i].b);
    simde_int64x2_t c = simde_vld1q_s64(test_vec[i].c);
    simde_int64x2_t r = simde_vbslq_s64(a, b, c);
    simde_test_arm_neon_assert_equal_i64x2(r, simde_vld1q_s64(test_vec[i].r));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_uint64x2_t a = simde_test_arm_neon_random_u64x2();
    simde_int64x2_t b = simde_test_arm_neon_random_i64x2();
    simde_int64x2_t c = simde_test_arm_neon_random_i64x2();
    simde_int64x2_t r = simde_vbslq_s64(a, b, c);

    simde_test_arm_neon_write_u64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_i64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i64x2(2, c, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vbslq_u8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  struct {
    uint8_t a[16];
    uint8_t b[16];
    uint8_t c[16];
    uint8_t r[16];
  } test_vec[] = {
    { { UINT8_C(167), UINT8_C(219), UINT8_C(174), UINT8_C(  9), UINT8_C( 98), UINT8_C(152), UINT8_C(237), UINT8_C(192),
        UINT8_C(158), UINT8_C( 47), UINT8_C( 49), UINT8_C( 36), UINT8_C(247), UINT8_C(160), UINT8_C( 91), UINT8_C( 79) },
      { UINT8_C(128), UINT8_C(172), UINT8_C(173), UINT8_C(235), UINT8_C(222), UINT8_C(206), UINT8_C(217), UINT8_C(159),
        UINT8_C( 71), UINT8_C(212), UINT8_C(238), UINT8_C(215), UINT8_C(120), UINT8_C(220), UINT8_C(145), UINT8_C( 32) },
      { UINT8_C(184), UINT8_C( 63), UINT8_C( 41), UINT8_C( 26), UINT8_C(216), UINT8_C( 22), UINT8_C(218), UINT8_C(118),
        UINT8_C( 69), UINT8_C( 12), UINT8_C(154), UINT8_C( 60), UINT8_C(172), UINT8_C(245), UINT8_C(139), UINT8_C( 45) },
      { UINT8_C(152), UINT8_C(172), UINT8_C(173), UINT8_C( 27), UINT8_C(218), UINT8_C(142), UINT8_C(219), UINT8_C(182),
        UINT8_C( 71), UINT8_C(  4), UINT8_C(170), UINT8_C( 28), UINT8_C(120), UINT8_C(213), UINT8_C(145), UINT8_C( 32) } },
    { { UINT8_C(161), UINT8_C( 57), UINT8_C( 24), UINT8_C(128), UINT8_C(  7), UINT8_C(241), UINT8_C( 31), UINT8_C( 79),
        UINT8_C(198), UINT8_C( 13), UINT8_C( 38), UINT8_C( 62), UINT8_C(234), UINT8_C(183), UINT8_C( 94), UINT8_C(162) },
      { UINT8_C(246), UINT8_C(135), UINT8_C(188), UINT8_C(206), UINT8_C(158), UINT8_C(150), UINT8_C( 68), UINT8_C(227),
        UINT8_C(162), UINT8_C(222), UINT8_C( 32), UINT8_C( 79), UINT8_C(212), UINT8_C(171), UINT8_C(124), UINT8_C(117) },
      { UINT8_C(228), UINT8_C(148), UINT8_C(245), UINT8_C(236), UINT8_C(134), UINT8_C( 21), UINT8_C( 59), UINT8_C( 76),
        UINT8_C( 34), UINT8_C( 97), UINT8_C(138), UINT8_C( 12), UINT8_C( 24), UINT8_C(233), UINT8_C(174), UINT8_C( 14) },
      { UINT8_C(228), UINT8_C(133), UINT8_C(253), UINT8_C(236), UINT8_C(134), UINT8_C(148), UINT8_C( 36), UINT8_C( 67),
        UINT8_C(162), UINT8_C(108), UINT8_C(168), UINT8_C( 14), UINT8_C(208), UINT8_C(235), UINT8_C(252), UINT8_C( 44) } },
    { { UINT8_C(112), UINT8_C(106), UINT8_C(221), UINT8_C( 14), UINT8_C(  1), UINT8_C( 33), UINT8_C(242), UINT8_C(163),
        UINT8_C(  0), UINT8_C( 18), UINT8_C(242), UINT8_C(212), UINT8_C(189), UINT8_C(110), UINT8_C( 73), UINT8_C(162) },
      { UINT8_C(  3), UINT8_C( 63), UINT8_C(142), UINT8_C(137), UINT8_C( 84), UINT8_C(201), UINT8_C(213), UINT8_C(118),
        UINT8_C( 42), UINT8_C( 95), UINT8_C(131), UINT8_C( 66), UINT8_C( 72), UINT8_C( 49), UINT8_C( 80), UINT8_C(185) },
      { UINT8_C(156), UINT8_C( 45), UINT8_C(199), UINT8_C(157), UINT8_C( 79), UINT8_C(185), UINT8_C( 64), UINT8_C( 79),
        UINT8_C(203), UINT8_C( 51), UINT8_C( 35), UINT8_C(137), UINT8_C(161), UINT8_C(108), UINT8_C( 43), UINT8_C(164) },
      { UINT8_C(140), UINT8_C( 47), UINT8_C(142), UINT8_C(153), UINT8_C( 78), UINT8_C(153), UINT8_C(208), UINT8_C(110),
        UINT8_C(203), UINT8_C( 51), UINT8_C(131), UINT8_C( 73), UINT8_C(  8), UINT8_C( 32), UINT8_C( 98), UINT8_C(164) } },
    { { UINT8_C(171), UINT8_C(185), UINT8_C( 45),    UINT8_MAX, UINT8_C(130), UINT8_C(  2), UINT8_C(118), UINT8_C(172),
        UINT8_C( 98), UINT8_C(249), UINT8_C(238), UINT8_C(170), UINT8_C( 42), UINT8_C( 62), UINT8_C( 99), UINT8_C(198) },
      { UINT8_C(108), UINT8_C( 43), UINT8_C( 99), UINT8_C(187), UINT8_C(228), UINT8_C(164), UINT8_C( 10), UINT8_C(176),
        UINT8_C(215), UINT8_C( 45), UINT8_C( 57), UINT8_C(120), UINT8_C(153), UINT8_C(100), UINT8_C( 29), UINT8_C( 69) },
      { UINT8_C( 29), UINT8_C( 74), UINT8_C( 68), UINT8_C(159), UINT8_C( 77), UINT8_C(186), UINT8_C( 75), UINT8_C(175),
        UINT8_C(179), UINT8_C( 57), UINT8_C( 89), UINT8_C(222), UINT8_C(119), UINT8_C(189), UINT8_C(164), UINT8_C(227) },
      { UINT8_C( 60), UINT8_C(107), UINT8_C( 97), UINT8_C(187), UINT8_C(205), UINT8_C(184), UINT8_C( 11), UINT8_C(163),
        UINT8_C(211), UINT8_C( 41), UINT8_C( 57), UINT8_C(124), UINT8_C( 93), UINT8_C(165), UINT8_C(133), UINT8_C(101) } },
    { { UINT8_C(232), UINT8_C(  8), UINT8_C(158), UINT8_C(204), UINT8_C(172), UINT8_C(168), UINT8_C(124), UINT8_C(131),
        UINT8_C(213), UINT8_C(181), UINT8_C(251), UINT8_C(111), UINT8_C( 25), UINT8_C( 24), UINT8_C(180), UINT8_C( 54) },
      { UINT8_C( 99), UINT8_C(248), UINT8_C(213), UINT8_C(176), UINT8_C(179), UINT8_C( 32), UINT8_C( 95), UINT8_C(102),
        UINT8_C( 89), UINT8_C(184), UINT8_C( 68), UINT8_C(209), UINT8_C(117), UINT8_C(233), UINT8_C(180), UINT8_C( 93) },
      { UINT8_C(241), UINT8_C( 83), UINT8_C( 42), UINT8_C(157), UINT8_C(251), UINT8_C(166), UINT8_C( 32), UINT8_C(209),
        UINT8_C( 92), UINT8_C( 27), UINT8_C( 64), UINT8_C(117), UINT8_C( 52), UINT8_C(244), UINT8_C(172), UINT8_C(151) },
      { UINT8_C(113), UINT8_C( 91), UINT8_C(180), UINT8_C(145), UINT8_C(243), UINT8_C( 38), UINT8_C( 92), UINT8_C( 82),
        UINT8_C( 89), UINT8_C(186), UINT8_C( 64), UINT8_C( 81), UINT8_C( 53), UINT8_C(236), UINT8_C(188), UINT8_C(149) } },
    { { UINT8_C(236), UINT8_C(129), UINT8_C( 71), UINT8_C(159), UINT8_C(162), UINT8_C(166), UINT8_C(  6), UINT8_C(251),
        UINT8_C( 94), UINT8_C( 74), UINT8_C(204), UINT8_C(212), UINT8_C( 51), UINT8_C(129), UINT8_C( 49), UINT8_C( 36) },
      { UINT8_C(212), UINT8_C( 91), UINT8_C(193), UINT8_C(207), UINT8_C(  2), UINT8_C(225), UINT8_C(160), UINT8_C( 94),
        UINT8_C(253), UINT8_C(224), UINT8_C(211), UINT8_C( 49), UINT8_C(212), UINT8_C(127), UINT8_C(200), UINT8_C(193) },
      { UINT8_C(  1), UINT8_C( 15), UINT8_C( 96), UINT8_C(163), UINT8_C(181), UINT8_C(102), UINT8_C(158), UINT8_C( 19),
        UINT8_C(177), UINT8_C(107), UINT8_C(231), UINT8_C(228), UINT8_C(236), UINT8_C( 25), UINT8_C(  9), UINT8_C(192) },
      { UINT8_C(197), UINT8_C( 15), UINT8_C( 97), UINT8_C(175), UINT8_C( 23), UINT8_C(224), UINT8_C(152), UINT8_C( 90),
        UINT8_C(253), UINT8_C( 97), UINT8_C(227), UINT8_C( 48), UINT8_C(220), UINT8_C( 25), UINT8_C(  8), UINT8_C(192) } },
    { { UINT8_C(116), UINT8_C(202), UINT8_C(143), UINT8_C(118), UINT8_C(172), UINT8_C( 48), UINT8_C(212), UINT8_C(169),
        UINT8_C( 16), UINT8_C(168), UINT8_C(218), UINT8_C(229), UINT8_C( 39), UINT8_C(162), UINT8_C(166), UINT8_C( 40) },
      { UINT8_C(177), UINT8_C(  6), UINT8_C(203), UINT8_C(102), UINT8_C(109), UINT8_C(106), UINT8_C(121), UINT8_C( 30),
        UINT8_C(213), UINT8_C( 97), UINT8_C(  2), UINT8_C(193), UINT8_C(122), UINT8_C( 11), UINT8_C(129), UINT8_C(238) },
      { UINT8_C(214), UINT8_C( 16), UINT8_C(101), UINT8_C(130), UINT8_C( 64), UINT8_C( 57), UINT8_C( 43), UINT8_C( 81),
        UINT8_C(225), UINT8_C(  5), UINT8_C( 54), UINT8_C(  9), UINT8_C(167), UINT8_C(220), UINT8_C( 49), UINT8_C( 88) },
      { UINT8_C(178), UINT8_C( 18), UINT8_C(235), UINT8_C(230), UINT8_C(108), UINT8_C( 41), UINT8_C(123), UINT8_C( 88),
        UINT8_C(241), UINT8_C( 37), UINT8_C( 38), UINT8_C(201), UINT8_C(162), UINT8_C( 94), UINT8_C(145), UINT8_C(120) } },
    { { UINT8_C(226), UINT8_C(253), UINT8_C(190), UINT8_C( 79), UINT8_C(103), UINT8_C( 55), UINT8_C(109), UINT8_C( 60),
        UINT8_C(152), UINT8_C(112), UINT8_C(253), UINT8_C( 18), UINT8_C(123), UINT8_C(126), UINT8_C(  1), UINT8_C( 81) },
      { UINT8_C(142), UINT8_C(102), UINT8_C(211), UINT8_C(207), UINT8_C(159), UINT8_C(254), UINT8_C( 32), UINT8_C(129),
        UINT8_C(  3), UINT8_C( 86), UINT8_C(138), UINT8_C(170), UINT8_C( 50), UINT8_C(187), UINT8_C(  2), UINT8_C( 20) },
      { UINT8_C(184), UINT8_C(192), UINT8_C(100), UINT8_C( 31), UINT8_C(248), UINT8_C(209), UINT8_C( 91), UINT8_C(144),
        UINT8_C( 65), UINT8_C( 88), UINT8_C(163), UINT8_C(189), UINT8_C(214), UINT8_C(164), UINT8_C( 14), UINT8_C(101) },
      { UINT8_C(154), UINT8_C(100), UINT8_C(210), UINT8_C( 95), UINT8_C(159), UINT8_C(246), UINT8_C( 50), UINT8_C(128),
        UINT8_C( 65), UINT8_C( 88), UINT8_C(138), UINT8_C(175), UINT8_C(182), UINT8_C(186), UINT8_C( 14), UINT8_C( 52) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint8x16_t a = simde_vld1q_u8(test_vec[i].a);
    simde_uint8x16_t b = simde_vld1q_u8(test_vec[i].b);
    simde_uint8x16_t c = simde_vld1q_u8(test_vec[i].c);
    simde_uint8x16_t r = simde_vbslq_u8(a, b, c);

    simde_test_arm_neon_assert_equal_u8x16(r, simde_vld1q_u8(test_vec[i].r));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_uint8x16_t a = simde_test_arm_neon_random_u8x16();
    simde_uint8x16_t b = simde_test_arm_neon_random_u8x16();
    simde_uint8x16_t c = simde_test_arm_neon_random_u8x16();
    simde_uint8x16_t r = simde_vbslq_u8(a, b, c);

    simde_test_arm_neon_write_u8x16(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_u8x16(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u8x16(2, c, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u8x16(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vbslq_u16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  struct {
    uint16_t a[8];
    uint16_t b[8];
    uint16_t c[8];
    uint16_t r[8];
  } test_vec[] = {
    { { UINT16_C(46061), UINT16_C(22274), UINT16_C(54714), UINT16_C(34948), UINT16_C(27294), UINT16_C(41079), UINT16_C(30227), UINT16_C(13653) },
      { UINT16_C(23669), UINT16_C( 7091), UINT16_C(40486), UINT16_C( 9309), UINT16_C(42650), UINT16_C(59973), UINT16_C(25501), UINT16_C(35358) },
      { UINT16_C( 8214), UINT16_C(53473), UINT16_C(26358), UINT16_C(37976), UINT16_C(53200), UINT16_C(58420), UINT16_C(35398), UINT16_C(47897) },
      { UINT16_C( 4215), UINT16_C(37859), UINT16_C(46694), UINT16_C( 5212), UINT16_C(42970), UINT16_C(58437), UINT16_C(59989), UINT16_C(35356) } },
    { { UINT16_C(52454), UINT16_C( 3542), UINT16_C(13163), UINT16_C( 1329), UINT16_C(30425), UINT16_C(30447), UINT16_C( 3802), UINT16_C(61440) },
      { UINT16_C(57902), UINT16_C( 9409), UINT16_C( 6472), UINT16_C( 6328), UINT16_C(60905), UINT16_C(12284), UINT16_C( 5495), UINT16_C(24042) },
      { UINT16_C(49378), UINT16_C(19818), UINT16_C(40180), UINT16_C(52562), UINT16_C(16914), UINT16_C(60484), UINT16_C(17488), UINT16_C(32477) },
      { UINT16_C(49190), UINT16_C(17640), UINT16_C(40412), UINT16_C(51314), UINT16_C(25803), UINT16_C(44780), UINT16_C(17490), UINT16_C(24285) } },
    { { UINT16_C(40486), UINT16_C(28323), UINT16_C(23479), UINT16_C(41095), UINT16_C(33608), UINT16_C(49103), UINT16_C(47513), UINT16_C(31517) },
      { UINT16_C(34682), UINT16_C(28360), UINT16_C( 6691), UINT16_C(13883), UINT16_C(32604), UINT16_C(44066), UINT16_C(65476), UINT16_C(59947) },
      { UINT16_C(52893), UINT16_C(21849), UINT16_C(57385), UINT16_C(29429), UINT16_C(50531), UINT16_C(64561), UINT16_C(20094), UINT16_C(63607) },
      { UINT16_C(50875), UINT16_C(32728), UINT16_C(47659), UINT16_C(29299), UINT16_C(18283), UINT16_C(60466), UINT16_C(65510), UINT16_C(60011) } },
    { { UINT16_C(16342), UINT16_C(63846), UINT16_C(41562), UINT16_C(46639), UINT16_C(21025), UINT16_C(58723), UINT16_C(36433), UINT16_C(61392) },
      { UINT16_C(10588), UINT16_C(34116), UINT16_C(14601), UINT16_C(27895), UINT16_C(10750), UINT16_C(32105), UINT16_C(57463), UINT16_C(19829) },
      { UINT16_C(56352), UINT16_C(31303), UINT16_C(30334), UINT16_C(40752), UINT16_C(37832), UINT16_C( 6789), UINT16_C(21793), UINT16_C(32009) },
      { UINT16_C(59764), UINT16_C(33605), UINT16_C(29740), UINT16_C(11575), UINT16_C(33256), UINT16_C(32741), UINT16_C(53617), UINT16_C(23897) } },
    { { UINT16_C(19838), UINT16_C(34563), UINT16_C(64134), UINT16_C(34291), UINT16_C(23587), UINT16_C(39682), UINT16_C(30525), UINT16_C(24040) },
      { UINT16_C(12115), UINT16_C(53719), UINT16_C( 1958), UINT16_C(28273), UINT16_C(63131), UINT16_C(48264), UINT16_C(37195), UINT16_C(51514) },
      { UINT16_C(15838), UINT16_C(25936), UINT16_C(17207), UINT16_C(23530), UINT16_C(60576), UINT16_C(56822), UINT16_C(56931), UINT16_C(46906) },
      { UINT16_C(15826), UINT16_C(57683), UINT16_C(  951), UINT16_C(24185), UINT16_C(62595), UINT16_C(56564), UINT16_C(39243), UINT16_C(60218) } },
    { { UINT16_C( 4366), UINT16_C(46216), UINT16_C(63768), UINT16_C(45858), UINT16_C(44015), UINT16_C(14960), UINT16_C(43580), UINT16_C( 6915) },
      { UINT16_C(21479), UINT16_C( 7808), UINT16_C(27287), UINT16_C(14201), UINT16_C(28502), UINT16_C(47380), UINT16_C(20046), UINT16_C(23664) },
      { UINT16_C(63839), UINT16_C(30480), UINT16_C(13042), UINT16_C(57899), UINT16_C(39901), UINT16_C( 6684), UINT16_C( 8261), UINT16_C(11317) },
      { UINT16_C(63831), UINT16_C(22416), UINT16_C(27378), UINT16_C(29481), UINT16_C(15190), UINT16_C(14364), UINT16_C( 2637), UINT16_C(15412) } },
    { { UINT16_C(46451), UINT16_C( 2634), UINT16_C(50207), UINT16_C(30017), UINT16_C(21811), UINT16_C(33070), UINT16_C(40867), UINT16_C(  733) },
      { UINT16_C(60824), UINT16_C(35450), UINT16_C(42272), UINT16_C(64876), UINT16_C(35136), UINT16_C(34071), UINT16_C(19625), UINT16_C( 7345) },
      { UINT16_C(64257), UINT16_C( 8231), UINT16_C(26815), UINT16_C(62357), UINT16_C(50366), UINT16_C(24948), UINT16_C(21091), UINT16_C(64356) },
      { UINT16_C(61200), UINT16_C(10863), UINT16_C(44192), UINT16_C(63444), UINT16_C(33164), UINT16_C(57686), UINT16_C(19681), UINT16_C(63921) } },
    { { UINT16_C(56895), UINT16_C(24453), UINT16_C(62083), UINT16_C(50013), UINT16_C(29819), UINT16_C( 9288), UINT16_C(63937), UINT16_C(49728) },
      { UINT16_C(26612), UINT16_C(46307), UINT16_C(30928), UINT16_C(36519), UINT16_C( 6972), UINT16_C(40943), UINT16_C(21357), UINT16_C(44442) },
      { UINT16_C( 8241), UINT16_C(46092), UINT16_C(26898), UINT16_C(36215), UINT16_C(49118), UINT16_C(40881), UINT16_C(61880), UINT16_C(44385) },
      { UINT16_C(26164), UINT16_C(46217), UINT16_C(31120), UINT16_C(36391), UINT16_C(39868), UINT16_C(40953), UINT16_C(20857), UINT16_C(44321) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint16x8_t a = simde_vld1q_u16(test_vec[i].a);
    simde_uint16x8_t b = simde_vld1q_u16(test_vec[i].b);
    simde_uint16x8_t c = simde_vld1q_u16(test_vec[i].c);
    simde_uint16x8_t r = simde_vbslq_u16(a, b, c);
    simde_test_arm_neon_assert_equal_u16x8(r, simde_vld1q_u16(test_vec[i].r));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_uint16x8_t a = simde_test_arm_neon_random_u16x8();
    simde_uint16x8_t b = simde_test_arm_neon_random_u16x8();
    simde_uint16x8_t c = simde_test_arm_neon_random_u16x8();
    simde_uint16x8_t r = simde_vbslq_u16(a, b, c);

    simde_test_arm_neon_write_u16x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_u16x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u16x8(2, c, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u16x8(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vbslq_u32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  struct {
    uint32_t a[4];
    uint32_t b[4];
    uint32_t c[4];
    uint32_t r[4];
  } test_vec[] = {
    { { UINT32_C(2860368209), UINT32_C( 846600018), UINT32_C(1097333921), UINT32_C(3276145535) },
      { UINT32_C( 238363688), UINT32_C(4256380213), UINT32_C(2983547187), UINT32_C(1925569056) },
      { UINT32_C(3994829467), UINT32_C(4213215834), UINT32_C( 222070926), UINT32_C(3033629323) },
      { UINT32_C(1312096906), UINT32_C(4180841752), UINT32_C( 224219183), UINT32_C(1993704096) } },
    { { UINT32_C(3703703206), UINT32_C(1859745339), UINT32_C(3894390471), UINT32_C( 609936776) },
      { UINT32_C(2165470759), UINT32_C(2541498888), UINT32_C(1185200314), UINT32_C(3791287611) },
      { UINT32_C(3082665084), UINT32_C(4196832818), UINT32_C(3454158149), UINT32_C(1391541290) },
      { UINT32_C(2738863742), UINT32_C(2524885512), UINT32_C(1172629890), UINT32_C(1929084202) } },
    { { UINT32_C(3134391218), UINT32_C(4031860790), UINT32_C(1127675400), UINT32_C(3877974123) },
      { UINT32_C( 530572013), UINT32_C(3189359993), UINT32_C( 898366218), UINT32_C(3917970743) },
      { UINT32_C(3064224384), UINT32_C(3014129066), UINT32_C(1475796459), UINT32_C(4215151374) },
      { UINT32_C( 515332768), UINT32_C(3015173560), UINT32_C( 365100011), UINT32_C(4179573543) } },
    { { UINT32_C(1998249470), UINT32_C(2905945250), UINT32_C(1742913583), UINT32_C(3192940861) },
      { UINT32_C(1853158595), UINT32_C(3575716842), UINT32_C( 120330233), UINT32_C( 822242099) },
      { UINT32_C(3953663048), UINT32_C(2157501776), UINT32_C(3689380509), UINT32_C(2795059171) },
      { UINT32_C(4004566210), UINT32_C(2242501106), UINT32_C(2670017209), UINT32_C( 814317555) } },
    { { UINT32_C( 370412844), UINT32_C( 585839913), UINT32_C(2150176845), UINT32_C(3417385859) },
      { UINT32_C(2562087239), UINT32_C(3541585462), UINT32_C(2880372680), UINT32_C(1649559350) },
      { UINT32_C(2121819733), UINT32_C(3919602844), UINT32_C(4285122940), UINT32_C(1003100916) },
      { UINT32_C(2021419861), UINT32_C(3406316724), UINT32_C(4285061496), UINT32_C(1918505846) } },
    { { UINT32_C(2849210739), UINT32_C(2558323663), UINT32_C( 558050282), UINT32_C(3347289458) },
      { UINT32_C(2554723580), UINT32_C(3699500384), UINT32_C(2732321454), UINT32_C(2011079940) },
      { UINT32_C(4129337638), UINT32_C(2274270365), UINT32_C( 984142279), UINT32_C(1661021287) },
      { UINT32_C(3730944116), UINT32_C(2676159824), UINT32_C( 988543663), UINT32_C(1736617221) } },
    { { UINT32_C(2298169128), UINT32_C(3680795692), UINT32_C(1786593126), UINT32_C( 199318500) },
      { UINT32_C(2852192525), UINT32_C(1697746845), UINT32_C(3349142112), UINT32_C( 774545414) },
      { UINT32_C( 347481575), UINT32_C( 133110433), UINT32_C(1030843481), UINT32_C(3578286792) },
      { UINT32_C(2617582031), UINT32_C(1168838285), UINT32_C(1461541497), UINT32_C(3727163404) } },
    { { UINT32_C(4051650899), UINT32_C( 961982680), UINT32_C(2415981962), UINT32_C(2109614997) },
      { UINT32_C(4069618768), UINT32_C(3891888270), UINT32_C(3022351340), UINT32_C( 294219197) },
      { UINT32_C(2399275191), UINT32_C(1137203385), UINT32_C(3805595981), UINT32_C(1147114228) },
      { UINT32_C(4262543604), UINT32_C(1675151529), UINT32_C(4074006989), UINT32_C( 298433013) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint32x4_t a = simde_vld1q_u32(test_vec[i].a);
    simde_uint32x4_t b = simde_vld1q_u32(test_vec[i].b);
    simde_uint32x4_t c = simde_vld1q_u32(test_vec[i].c);
    simde_uint32x4_t r = simde_vbslq_u32(a, b, c);

    simde_test_arm_neon_assert_equal_u32x4(r, simde_vld1q_u32(test_vec[i].r));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_uint32x4_t a = simde_test_arm_neon_random_u32x4();
    simde_uint32x4_t b = simde_test_arm_neon_random_u32x4();
    simde_uint32x4_t c = simde_test_arm_neon_random_u32x4();
    simde_uint32x4_t r = simde_vbslq_u32(a, b, c);

    simde_test_arm_neon_write_u32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_u32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u32x4(2, c, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vbslq_u64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  struct {
    uint64_t a[2];
    uint64_t b[2];
    uint64_t c[2];
    uint64_t r[2];
  } test_vec[] = {
    { { UINT64_C( 3591810382812026283), UINT64_C(16405937380248416137) },
      { UINT64_C(11295520154613915977), UINT64_C( 2687092596342288586) },
      { UINT64_C(10466732805528575117), UINT64_C( 2792016118067119293) },
      { UINT64_C(10430880479856511245), UINT64_C( 2673514040022294716) } },
    { { UINT64_C( 5815810152152417884), UINT64_C( 5402170822885590360) },
      { UINT64_C( 8670164562858372537), UINT64_C( 8710828213637800160) },
      { UINT64_C( 5453936056050125530), UINT64_C(15677897956199875467) },
      { UINT64_C( 6561900733515582618), UINT64_C(15700414826102440643) } },
    { { UINT64_C( 7617817368925498755), UINT64_C(18041148664896162764) },
      { UINT64_C(13857868751251894291), UINT64_C(  560307298380639949) },
      { UINT64_C( 1764562557693419657), UINT64_C(13844451922523693832) },
      { UINT64_C( 5789685480717017099), UINT64_C(  172929698024237772) } },
    { { UINT64_C( 5928170346728815439), UINT64_C( 8291133416724713093) },
      { UINT64_C( 6541763587432928869), UINT64_C( 8580099633672538534) },
      { UINT64_C( 8500334219694430239), UINT64_C(11667858224492459662) },
      { UINT64_C( 8643326235096633941), UINT64_C(17581080137045276814) } },
    { { UINT64_C( 1986681675388777189), UINT64_C(15457621344735073509) },
      { UINT64_C( 5745874869769961561), UINT64_C(12720051885852540072) },
      { UINT64_C(15832257110833879334), UINT64_C(18310349266614756749) },
      { UINT64_C(14678763632229583171), UINT64_C(13303612972326073768) } },
    { { UINT64_C(12825130274157729517), UINT64_C(11365708282709001280) },
      { UINT64_C(12305505563839144948), UINT64_C(  556487138878663957) },
      { UINT64_C( 4997501370106183841), UINT64_C(   38856792151748725) },
      { UINT64_C(16485058153964208868), UINT64_C(  412376349718983733) } },
    { { UINT64_C(14444644566615901103), UINT64_C( 1188453801116525660) },
      { UINT64_C( 6522642610181976892), UINT64_C(10452805128511018500) },
      { UINT64_C(  365304665020889493), UINT64_C(  915913873276310582) },
      { UINT64_C( 5549935201716288316), UINT64_C( 2058095493828826150) } },
    { { UINT64_C( 9758687427988123438), UINT64_C( 2025395558509098408) },
      { UINT64_C( 9245176770987391135), UINT64_C(17431423991996139787) },
      { UINT64_C(12705905830843921738), UINT64_C( 3515717642809502503) },
      { UINT64_C(12708439114211752014), UINT64_C( 3515291040853510927) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint64x2_t a = simde_vld1q_u64(test_vec[i].a);
    simde_uint64x2_t b = simde_vld1q_u64(test_vec[i].b);
    simde_uint64x2_t c = simde_vld1q_u64(test_vec[i].c);
    simde_uint64x2_t r = simde_vbslq_u64(a, b, c);
    simde_test_arm_neon_assert_equal_u64x2(r, simde_vld1q_u64(test_vec[i].r));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_uint64x2_t a = simde_test_arm_neon_random_u64x2();
    simde_uint64x2_t b = simde_test_arm_neon_random_u64x2();
    simde_uint64x2_t c = simde_test_arm_neon_random_u64x2();
    simde_uint64x2_t r = simde_vbslq_u64(a, b, c);

    simde_test_arm_neon_write_u64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_u64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u64x2(2, c, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vbsl_p8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  struct {
    uint8_t a[8];
    simde_poly8_t b[8];
    simde_poly8_t c[8];
    simde_poly8_t r[8];
  } test_vec[] = {
    { { UINT8_C( 88), UINT8_C(228), UINT8_C(190), UINT8_C(195), UINT8_C( 56), UINT8_C(249), UINT8_C(  2), UINT8_C( 85) },
      { SIMDE_POLY8_C(174), SIMDE_POLY8_C(140), SIMDE_POLY8_C(185), SIMDE_POLY8_C(228), SIMDE_POLY8_C( 52), SIMDE_POLY8_C(251), SIMDE_POLY8_C( 95), SIMDE_POLY8_C(121) },
      { SIMDE_POLY8_C(105), SIMDE_POLY8_C(165), SIMDE_POLY8_C( 23), SIMDE_POLY8_C( 82), SIMDE_POLY8_C( 66), SIMDE_POLY8_C(172), SIMDE_POLY8_C( 52), SIMDE_POLY8_C( 40) },
      { SIMDE_POLY8_C( 41), SIMDE_POLY8_C(133), SIMDE_POLY8_C(185), SIMDE_POLY8_C(208), SIMDE_POLY8_C(114), SIMDE_POLY8_C(253), SIMDE_POLY8_C( 54), SIMDE_POLY8_C(121) } },
    { { UINT8_C(  8), UINT8_C( 68), UINT8_C(147), UINT8_C( 92), UINT8_C(140), UINT8_C(189), UINT8_C(166), UINT8_C(228) },
      { SIMDE_POLY8_C(161), SIMDE_POLY8_C(101), SIMDE_POLY8_C(167), SIMDE_POLY8_C(218), SIMDE_POLY8_C( 94), SIMDE_POLY8_C(169), SIMDE_POLY8_C( 47), SIMDE_POLY8_C( 12) },
      { SIMDE_POLY8_C( 53), SIMDE_POLY8_C(232), SIMDE_POLY8_C(240), SIMDE_POLY8_C(106), SIMDE_POLY8_C(227), SIMDE_POLY8_C( 79), SIMDE_POLY8_C(227), SIMDE_POLY8_C( 77) },
      { SIMDE_POLY8_C( 53), SIMDE_POLY8_C(236), SIMDE_POLY8_C(227), SIMDE_POLY8_C(122), SIMDE_POLY8_C(111), SIMDE_POLY8_C(235), SIMDE_POLY8_C(103), SIMDE_POLY8_C( 13) } },
    { { UINT8_C(244), UINT8_C(251), UINT8_C(159), UINT8_C( 55), UINT8_C(167), UINT8_C(211), UINT8_C( 95), UINT8_C(175) },
      { SIMDE_POLY8_C( 23), SIMDE_POLY8_C(242), SIMDE_POLY8_C( 12), SIMDE_POLY8_C(163), SIMDE_POLY8_C(175), SIMDE_POLY8_C(178), SIMDE_POLY8_C(135), SIMDE_POLY8_C( 81) },
      { SIMDE_POLY8_C( 23), SIMDE_POLY8_C( 47), SIMDE_POLY8_C( 43), SIMDE_POLY8_C(118), SIMDE_POLY8_C(216), SIMDE_POLY8_C( 90), SIMDE_POLY8_C(130), SIMDE_POLY8_C( 14) },
      { SIMDE_POLY8_C( 23), SIMDE_POLY8_C(246), SIMDE_POLY8_C( 44), SIMDE_POLY8_C( 99),    SIMDE_POLY8_C(UINT8_MAX), SIMDE_POLY8_C(154), SIMDE_POLY8_C(135), SIMDE_POLY8_C(  1) } },
    { { UINT8_C( 66), UINT8_C(115), UINT8_C(120), UINT8_C( 37), UINT8_C(194), UINT8_C( 91), UINT8_C(114), UINT8_C(183) },
      { SIMDE_POLY8_C( 86), SIMDE_POLY8_C( 17), SIMDE_POLY8_C(238), SIMDE_POLY8_C(254), SIMDE_POLY8_C(228), SIMDE_POLY8_C( 77), SIMDE_POLY8_C(173), SIMDE_POLY8_C(251) },
      { SIMDE_POLY8_C( 64), SIMDE_POLY8_C(185), SIMDE_POLY8_C(158), SIMDE_POLY8_C(239), SIMDE_POLY8_C(108), SIMDE_POLY8_C( 38), SIMDE_POLY8_C( 64), SIMDE_POLY8_C(131) },
      { SIMDE_POLY8_C( 66), SIMDE_POLY8_C(153), SIMDE_POLY8_C(238), SIMDE_POLY8_C(238), SIMDE_POLY8_C(236), SIMDE_POLY8_C(109), SIMDE_POLY8_C( 32), SIMDE_POLY8_C(179) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint8x8_t a = simde_vld1_u8(test_vec[i].a);
    simde_poly8x8_t b = simde_vld1_p8(test_vec[i].b);
    simde_poly8x8_t c = simde_vld1_p8(test_vec[i].c);
    simde_poly8x8_t r = simde_vbsl_p8(a, b, c);

    simde_test_arm_neon_assert_equal_p8x8(r, simde_vld1_p8(test_vec[i].r));
  }

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 4 ; i++) {
    simde_uint8x8_t a = simde_test_arm_neon_random_u8x8();
    simde_poly8x8_t b = simde_test_arm_neon_random_p8x8();
    simde_poly8x8_t c = simde_test_arm_neon_random_p8x8();
    simde_poly8x8_t r = simde_vbsl_p8(a, b, c);

    simde_test_arm_neon_write_u8x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_p8x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p8x8(2, c, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p8x8(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vbsl_p16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  struct {
    uint16_t a[4];
    simde_poly16_t b[4];
    simde_poly16_t c[4];
    simde_poly16_t r[4];
  } test_vec[] = {
    { { UINT16_C(27477), UINT16_C(11769), UINT16_C(31941), UINT16_C( 1851) },
      { SIMDE_POLY16_C(46063), SIMDE_POLY16_C(45357), SIMDE_POLY16_C(40719), SIMDE_POLY16_C(25960) },
      { SIMDE_POLY16_C(22193), SIMDE_POLY16_C(38243), SIMDE_POLY16_C( 4516), SIMDE_POLY16_C(58513) },
      { SIMDE_POLY16_C(14309), SIMDE_POLY16_C(45355), SIMDE_POLY16_C( 7461), SIMDE_POLY16_C(58792) } },
    { { UINT16_C(12234), UINT16_C(14035), UINT16_C( 5205), UINT16_C(43706) },
      { SIMDE_POLY16_C(45951), SIMDE_POLY16_C(17880), SIMDE_POLY16_C( 4911), SIMDE_POLY16_C( 7756) },
      { SIMDE_POLY16_C(31175), SIMDE_POLY16_C(54992), SIMDE_POLY16_C(14361), SIMDE_POLY16_C(51771) },
      { SIMDE_POLY16_C(29519), SIMDE_POLY16_C(50384), SIMDE_POLY16_C(14349), SIMDE_POLY16_C(18953) } },
    { { UINT16_C(40847), UINT16_C(13151), UINT16_C(61616), UINT16_C(31255) },
      { SIMDE_POLY16_C(59936), SIMDE_POLY16_C(30129), SIMDE_POLY16_C(27646), SIMDE_POLY16_C(32288) },
      { SIMDE_POLY16_C(63518), SIMDE_POLY16_C(20163), SIMDE_POLY16_C( 3851), SIMDE_POLY16_C(53868) },
      { SIMDE_POLY16_C(59920), SIMDE_POLY16_C(32145), SIMDE_POLY16_C(28603), SIMDE_POLY16_C(64104) } },
    { { UINT16_C(15497), UINT16_C(41640), UINT16_C(58485), UINT16_C( 1132) },
      { SIMDE_POLY16_C(52099), SIMDE_POLY16_C(13111), SIMDE_POLY16_C(20156), SIMDE_POLY16_C(56493) },
      { SIMDE_POLY16_C(24120), SIMDE_POLY16_C(14161), SIMDE_POLY16_C(29129), SIMDE_POLY16_C(59573) },
      { SIMDE_POLY16_C(19121), SIMDE_POLY16_C(14193), SIMDE_POLY16_C(21948), SIMDE_POLY16_C(60605) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint16x4_t a = simde_vld1_u16(test_vec[i].a);
    simde_poly16x4_t b = simde_vld1_p16(test_vec[i].b);
    simde_poly16x4_t c = simde_vld1_p16(test_vec[i].c);
    simde_poly16x4_t r = simde_vbsl_p16(a, b, c);
    simde_test_arm_neon_assert_equal_p16x4(r, simde_vld1_p16(test_vec[i].r));
  }

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 4 ; i++) {
    simde_uint16x4_t a = simde_test_arm_neon_random_u16x4();
    simde_poly16x4_t b = simde_test_arm_neon_random_p16x4();
    simde_poly16x4_t c = simde_test_arm_neon_random_p16x4();
    simde_poly16x4_t r = simde_vbsl_p16(a, b, c);

    simde_test_arm_neon_write_u16x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_p16x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p16x4(2, c, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p16x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vbsl_p64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  struct {
    uint64_t a[1];
    simde_poly64_t b[1];
    simde_poly64_t c[1];
    simde_poly64_t r[1];
  } test_vec[] = {
    { { UINT64_C( 1173084930624092265) },
      { SIMDE_POLY64_C( 6293814376553181407) },
      { SIMDE_POLY64_C( 1549862646890270698) },
      { SIMDE_POLY64_C( 1567278907587753931) } },
    { { UINT64_C(12558007483409159062) },
      { SIMDE_POLY64_C(18379589339477933433) },
      { SIMDE_POLY64_C(14737655818561504347) },
      { SIMDE_POLY64_C(17186206365850490201) } },
    { { UINT64_C(15937381767530549306) },
      { SIMDE_POLY64_C(17634834425642318280) },
      { SIMDE_POLY64_C(11898798605973446402) },
      { SIMDE_POLY64_C(17593741072317931272) } },
    { { UINT64_C( 6447283433664443594) },
      { SIMDE_POLY64_C(12146099208905092202) },
      { SIMDE_POLY64_C( 5946001998875053077) },
      { SIMDE_POLY64_C(  760326862113205343) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint64x1_t a = simde_vld1_u64(test_vec[i].a);
    simde_poly64x1_t b = simde_vld1_p64(test_vec[i].b);
    simde_poly64x1_t c = simde_vld1_p64(test_vec[i].c);
    simde_poly64x1_t r = simde_vbsl_p64(a, b, c);
    simde_test_arm_neon_assert_equal_p64x1(r, simde_vld1_p64(test_vec[i].r));
  }

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 4 ; i++) {
    simde_uint64x1_t a = simde_test_arm_neon_random_u64x1();
    simde_poly64x1_t b = simde_test_arm_neon_random_p64x1();
    simde_poly64x1_t c = simde_test_arm_neon_random_p64x1();
    simde_poly64x1_t r = simde_vbsl_p64(a, b, c);

    simde_test_arm_neon_write_u64x1(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_p64x1(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p64x1(2, c, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p64x1(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vbslq_p8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  struct {
    uint8_t a[16];
    simde_poly8_t b[16];
    simde_poly8_t c[16];
    simde_poly8_t r[16];
  } test_vec[] = {
    { { UINT8_C( 80), UINT8_C(121), UINT8_C(116), UINT8_C(154), UINT8_C(127), UINT8_C(149), UINT8_C( 63), UINT8_C( 74),
        UINT8_C(  9), UINT8_C( 19), UINT8_C(247), UINT8_C( 40), UINT8_C(109), UINT8_C(112), UINT8_C(129), UINT8_C(215) },
      { SIMDE_POLY8_C( 92), SIMDE_POLY8_C(241), SIMDE_POLY8_C(136), SIMDE_POLY8_C( 61), SIMDE_POLY8_C(142), SIMDE_POLY8_C( 23), SIMDE_POLY8_C(229), SIMDE_POLY8_C(163),
        SIMDE_POLY8_C(227), SIMDE_POLY8_C(155), SIMDE_POLY8_C( 51), SIMDE_POLY8_C( 52), SIMDE_POLY8_C( 12), SIMDE_POLY8_C(183), SIMDE_POLY8_C(134), SIMDE_POLY8_C( 92) },
      { SIMDE_POLY8_C( 48), SIMDE_POLY8_C(251), SIMDE_POLY8_C(246), SIMDE_POLY8_C(176), SIMDE_POLY8_C(144), SIMDE_POLY8_C( 53), SIMDE_POLY8_C(250), SIMDE_POLY8_C(154),
        SIMDE_POLY8_C( 72), SIMDE_POLY8_C(241), SIMDE_POLY8_C(194), SIMDE_POLY8_C(181), SIMDE_POLY8_C( 97), SIMDE_POLY8_C( 68), SIMDE_POLY8_C(140), SIMDE_POLY8_C(190) },
      { SIMDE_POLY8_C(112), SIMDE_POLY8_C(243), SIMDE_POLY8_C(130), SIMDE_POLY8_C( 56), SIMDE_POLY8_C(142), SIMDE_POLY8_C( 53), SIMDE_POLY8_C(229), SIMDE_POLY8_C(146),
        SIMDE_POLY8_C( 65), SIMDE_POLY8_C(243), SIMDE_POLY8_C( 51), SIMDE_POLY8_C(181), SIMDE_POLY8_C( 12), SIMDE_POLY8_C( 52), SIMDE_POLY8_C(140), SIMDE_POLY8_C(124) } },
    { { UINT8_C( 53), UINT8_C( 20), UINT8_C(251), UINT8_C(195), UINT8_C( 44), UINT8_C(224), UINT8_C(103), UINT8_C( 15),
        UINT8_C(123), UINT8_C(154), UINT8_C( 67), UINT8_C(135), UINT8_C( 82), UINT8_C(202), UINT8_C(227), UINT8_C(130) },
      { SIMDE_POLY8_C(197), SIMDE_POLY8_C(217), SIMDE_POLY8_C( 50), SIMDE_POLY8_C( 85), SIMDE_POLY8_C( 14), SIMDE_POLY8_C( 44), SIMDE_POLY8_C(239), SIMDE_POLY8_C( 86),
        SIMDE_POLY8_C( 29), SIMDE_POLY8_C(178), SIMDE_POLY8_C( 11), SIMDE_POLY8_C(127), SIMDE_POLY8_C(246), SIMDE_POLY8_C(151), SIMDE_POLY8_C( 61), SIMDE_POLY8_C( 43) },
      { SIMDE_POLY8_C(172), SIMDE_POLY8_C( 56), SIMDE_POLY8_C(239), SIMDE_POLY8_C(216), SIMDE_POLY8_C( 24), SIMDE_POLY8_C( 86), SIMDE_POLY8_C(231), SIMDE_POLY8_C(148),
        SIMDE_POLY8_C(240), SIMDE_POLY8_C( 43), SIMDE_POLY8_C( 27), SIMDE_POLY8_C( 66), SIMDE_POLY8_C(245),    SIMDE_POLY8_C(UINT8_MAX), SIMDE_POLY8_C(197), SIMDE_POLY8_C(186) },
      { SIMDE_POLY8_C(141), SIMDE_POLY8_C( 56), SIMDE_POLY8_C( 54), SIMDE_POLY8_C( 89), SIMDE_POLY8_C( 28), SIMDE_POLY8_C( 54), SIMDE_POLY8_C(231), SIMDE_POLY8_C(150),
        SIMDE_POLY8_C(153), SIMDE_POLY8_C(179), SIMDE_POLY8_C( 27), SIMDE_POLY8_C( 71), SIMDE_POLY8_C(247), SIMDE_POLY8_C(183), SIMDE_POLY8_C( 37), SIMDE_POLY8_C( 58) } },
    { { UINT8_C(216), UINT8_C(247), UINT8_C( 15), UINT8_C(231), UINT8_C( 36),    UINT8_MAX, UINT8_C( 61), UINT8_C( 65),
        UINT8_C(177), UINT8_C( 73), UINT8_C(192), UINT8_C(167), UINT8_C(224), UINT8_C(253), UINT8_C(210), UINT8_C(140) },
      { SIMDE_POLY8_C( 53), SIMDE_POLY8_C(193), SIMDE_POLY8_C(100), SIMDE_POLY8_C( 78), SIMDE_POLY8_C( 23), SIMDE_POLY8_C( 76), SIMDE_POLY8_C(226), SIMDE_POLY8_C(  8),
        SIMDE_POLY8_C(119), SIMDE_POLY8_C(253), SIMDE_POLY8_C( 74), SIMDE_POLY8_C(108), SIMDE_POLY8_C(252), SIMDE_POLY8_C( 15), SIMDE_POLY8_C( 38), SIMDE_POLY8_C(213) },
      { SIMDE_POLY8_C(  7), SIMDE_POLY8_C( 53), SIMDE_POLY8_C(188), SIMDE_POLY8_C( 43), SIMDE_POLY8_C( 52), SIMDE_POLY8_C(249), SIMDE_POLY8_C(108), SIMDE_POLY8_C(229),
        SIMDE_POLY8_C( 66), SIMDE_POLY8_C( 45), SIMDE_POLY8_C(140), SIMDE_POLY8_C( 35), SIMDE_POLY8_C( 42), SIMDE_POLY8_C( 95), SIMDE_POLY8_C(175), SIMDE_POLY8_C( 96) },
      { SIMDE_POLY8_C( 23), SIMDE_POLY8_C(193), SIMDE_POLY8_C(180), SIMDE_POLY8_C( 78), SIMDE_POLY8_C( 20), SIMDE_POLY8_C( 76), SIMDE_POLY8_C( 96), SIMDE_POLY8_C(164),
        SIMDE_POLY8_C(115), SIMDE_POLY8_C(109), SIMDE_POLY8_C( 76), SIMDE_POLY8_C( 36), SIMDE_POLY8_C(234), SIMDE_POLY8_C( 15), SIMDE_POLY8_C( 47), SIMDE_POLY8_C(228) } },
    { { UINT8_C( 32), UINT8_C( 20), UINT8_C(174), UINT8_C( 56), UINT8_C( 96), UINT8_C(144), UINT8_C( 64), UINT8_C(215),
        UINT8_C(141), UINT8_C(138), UINT8_C( 67), UINT8_C(138), UINT8_C(154), UINT8_C(105), UINT8_C( 95), UINT8_C(161) },
      { SIMDE_POLY8_C(158), SIMDE_POLY8_C( 27), SIMDE_POLY8_C(204), SIMDE_POLY8_C(211), SIMDE_POLY8_C( 20), SIMDE_POLY8_C( 56), SIMDE_POLY8_C(184), SIMDE_POLY8_C( 87),
        SIMDE_POLY8_C(101), SIMDE_POLY8_C( 69), SIMDE_POLY8_C(122), SIMDE_POLY8_C(144), SIMDE_POLY8_C(164), SIMDE_POLY8_C( 41), SIMDE_POLY8_C(240), SIMDE_POLY8_C(196) },
      { SIMDE_POLY8_C( 61), SIMDE_POLY8_C(158), SIMDE_POLY8_C(252), SIMDE_POLY8_C(157), SIMDE_POLY8_C( 46), SIMDE_POLY8_C( 60), SIMDE_POLY8_C(116), SIMDE_POLY8_C(187),
        SIMDE_POLY8_C(199), SIMDE_POLY8_C(183), SIMDE_POLY8_C( 69), SIMDE_POLY8_C( 97), SIMDE_POLY8_C( 32), SIMDE_POLY8_C(164), SIMDE_POLY8_C(  2), SIMDE_POLY8_C(191) },
      { SIMDE_POLY8_C( 29), SIMDE_POLY8_C(154), SIMDE_POLY8_C(220), SIMDE_POLY8_C(149), SIMDE_POLY8_C( 14), SIMDE_POLY8_C( 60), SIMDE_POLY8_C( 52), SIMDE_POLY8_C(127),
        SIMDE_POLY8_C( 71), SIMDE_POLY8_C( 53), SIMDE_POLY8_C( 70), SIMDE_POLY8_C(225), SIMDE_POLY8_C(160), SIMDE_POLY8_C(173), SIMDE_POLY8_C( 80), SIMDE_POLY8_C(158) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint8x16_t a = simde_vld1q_u8(test_vec[i].a);
    simde_poly8x16_t b = simde_vld1q_p8(test_vec[i].b);
    simde_poly8x16_t c = simde_vld1q_p8(test_vec[i].c);
    simde_poly8x16_t r = simde_vbslq_p8(a, b, c);

    simde_test_arm_neon_assert_equal_p8x16(r, simde_vld1q_p8(test_vec[i].r));
  }

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 4 ; i++) {
    simde_uint8x16_t a = simde_test_arm_neon_random_u8x16();
    simde_poly8x16_t b = simde_test_arm_neon_random_p8x16();
    simde_poly8x16_t c = simde_test_arm_neon_random_p8x16();
    simde_poly8x16_t r = simde_vbslq_p8(a, b, c);

    simde_test_arm_neon_write_u8x16(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_p8x16(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p8x16(2, c, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p8x16(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vbslq_p16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  struct {
    uint16_t a[8];
    simde_poly16_t b[8];
    simde_poly16_t c[8];
    simde_poly16_t r[8];
  } test_vec[] = {
{ { UINT16_C(52927), UINT16_C(54418), UINT16_C(18950), UINT16_C(27691), UINT16_C(42383), UINT16_C(13308), UINT16_C(60622), UINT16_C( 3320) },
      { SIMDE_POLY16_C(62602), SIMDE_POLY16_C(47273), SIMDE_POLY16_C( 7729), SIMDE_POLY16_C(63603), SIMDE_POLY16_C(47573), SIMDE_POLY16_C(63065), SIMDE_POLY16_C(23389), SIMDE_POLY16_C( 7605) },
      { SIMDE_POLY16_C(18217), SIMDE_POLY16_C(12273), SIMDE_POLY16_C( 7313), SIMDE_POLY16_C( 8603), SIMDE_POLY16_C(38849), SIMDE_POLY16_C(36692), SIMDE_POLY16_C(19587), SIMDE_POLY16_C( 3483) },
      { SIMDE_POLY16_C(50570), SIMDE_POLY16_C(48097), SIMDE_POLY16_C( 7825), SIMDE_POLY16_C(27059), SIMDE_POLY16_C(46021), SIMDE_POLY16_C(48728), SIMDE_POLY16_C(18509), SIMDE_POLY16_C( 3507) } },
    { { UINT16_C(17729), UINT16_C(29381), UINT16_C(14691), UINT16_C(14442), UINT16_C(50162), UINT16_C(20270), UINT16_C(58142), UINT16_C(18284) },
      { SIMDE_POLY16_C(23850), SIMDE_POLY16_C(48246), SIMDE_POLY16_C( 4729), SIMDE_POLY16_C(15069), SIMDE_POLY16_C(12713), SIMDE_POLY16_C(11722), SIMDE_POLY16_C(25982), SIMDE_POLY16_C(48954) },
      { SIMDE_POLY16_C(  170), SIMDE_POLY16_C( 3377), SIMDE_POLY16_C(39737), SIMDE_POLY16_C(11078), SIMDE_POLY16_C(29790), SIMDE_POLY16_C(31866), SIMDE_POLY16_C(59224), SIMDE_POLY16_C(33475) },
      { SIMDE_POLY16_C(17834), SIMDE_POLY16_C(15732), SIMDE_POLY16_C(37497), SIMDE_POLY16_C(15180), SIMDE_POLY16_C(13740), SIMDE_POLY16_C(15706), SIMDE_POLY16_C(25950), SIMDE_POLY16_C(34731) } },
    { { UINT16_C(14660), UINT16_C(48702), UINT16_C( 6987), UINT16_C(62968), UINT16_C(49741), UINT16_C(52002), UINT16_C(23592), UINT16_C(53898) },
      { SIMDE_POLY16_C(47964), SIMDE_POLY16_C(38368), SIMDE_POLY16_C( 9814), SIMDE_POLY16_C(46272), SIMDE_POLY16_C(15258), SIMDE_POLY16_C(62000), SIMDE_POLY16_C(62242), SIMDE_POLY16_C(26229) },
      { SIMDE_POLY16_C(45868), SIMDE_POLY16_C(30756), SIMDE_POLY16_C( 7631), SIMDE_POLY16_C( 7277), SIMDE_POLY16_C(36831), SIMDE_POLY16_C( 2023), SIMDE_POLY16_C(29163), SIMDE_POLY16_C(18650) },
      { SIMDE_POLY16_C(47980), SIMDE_POLY16_C(54304), SIMDE_POLY16_C( 1734), SIMDE_POLY16_C(48325), SIMDE_POLY16_C( 3994), SIMDE_POLY16_C(50917), SIMDE_POLY16_C(29155), SIMDE_POLY16_C(19024) } },
    { { UINT16_C(47660), UINT16_C(33501), UINT16_C(40672), UINT16_C(31286), UINT16_C(26329), UINT16_C(64365), UINT16_C(57945), UINT16_C(34145) },
      { SIMDE_POLY16_C(34453), SIMDE_POLY16_C(25853), SIMDE_POLY16_C(27299), SIMDE_POLY16_C(33408), SIMDE_POLY16_C(26617), SIMDE_POLY16_C(58762), SIMDE_POLY16_C(25816), SIMDE_POLY16_C( 1069) },
      { SIMDE_POLY16_C( 2590), SIMDE_POLY16_C(65158), SIMDE_POLY16_C(48296), SIMDE_POLY16_C(33144), SIMDE_POLY16_C(58658), SIMDE_POLY16_C(31612), SIMDE_POLY16_C(57031), SIMDE_POLY16_C(23809) },
      { SIMDE_POLY16_C(33302), SIMDE_POLY16_C(31967), SIMDE_POLY16_C(10920), SIMDE_POLY16_C(33608), SIMDE_POLY16_C(59387), SIMDE_POLY16_C(57624), SIMDE_POLY16_C(31966), SIMDE_POLY16_C(23585) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint16x8_t a = simde_vld1q_u16(test_vec[i].a);
    simde_poly16x8_t b = simde_vld1q_p16(test_vec[i].b);
    simde_poly16x8_t c = simde_vld1q_p16(test_vec[i].c);
    simde_poly16x8_t r = simde_vbslq_p16(a, b, c);
    simde_test_arm_neon_assert_equal_p16x8(r, simde_vld1q_p16(test_vec[i].r));
  }

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 4 ; i++) {
    simde_uint16x8_t a = simde_test_arm_neon_random_u16x8();
    simde_poly16x8_t b = simde_test_arm_neon_random_p16x8();
    simde_poly16x8_t c = simde_test_arm_neon_random_p16x8();
    simde_poly16x8_t r = simde_vbslq_p16(a, b, c);

    simde_test_arm_neon_write_u16x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_p16x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p16x8(2, c, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p16x8(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vbslq_p64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  struct {
    uint64_t a[2];
    simde_poly64_t b[2];
    simde_poly64_t c[2];
    simde_poly64_t r[2];
  } test_vec[] = {
    { { UINT64_C( 7100279306395450980), UINT64_C(10774427215166116777) },
      { SIMDE_POLY64_C(17053175522107002239), SIMDE_POLY64_C( 7428239000598947313) },
      { SIMDE_POLY64_C(14065577375986276199), SIMDE_POLY64_C( 7861257374840224267) },
      { SIMDE_POLY64_C(16265797175188852071), SIMDE_POLY64_C( 7862980983837387171) } },
    { { UINT64_C(12217771801825357016), UINT64_C(14253462217530996067) },
      { SIMDE_POLY64_C( 4624289949621239120), SIMDE_POLY64_C( 1557643201509290305) },
      { SIMDE_POLY64_C(15341869954038706824), SIMDE_POLY64_C( 1467621268558400571) },
      { SIMDE_POLY64_C( 6083597219631939152), SIMDE_POLY64_C( 1557218100806121817) } },
    { { UINT64_C(18211618711091999558), UINT64_C(16388257488223108892) },
      { SIMDE_POLY64_C(11979589763832424188), SIMDE_POLY64_C(14641938533581814617) },
      { SIMDE_POLY64_C( 8522784506166882448), SIMDE_POLY64_C( 4089618367786218370) },
      { SIMDE_POLY64_C(11980429786353967828), SIMDE_POLY64_C(15826703683828022170) } },
    { { UINT64_C( 5437786431125054820), UINT64_C(16407064602626012513) },
      { SIMDE_POLY64_C( 9086986396818667594), SIMDE_POLY64_C(10186329994739641320) },
      { SIMDE_POLY64_C( 5278169186275426818), SIMDE_POLY64_C(10213847582672660616) },
      { SIMDE_POLY64_C( 5339993701848244802), SIMDE_POLY64_C(10168978430344800744) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint64x2_t a = simde_vld1q_u64(test_vec[i].a);
    simde_poly64x2_t b = simde_vld1q_p64(test_vec[i].b);
    simde_poly64x2_t c = simde_vld1q_p64(test_vec[i].c);
    simde_poly64x2_t r = simde_vbslq_p64(a, b, c);
    simde_test_arm_neon_assert_equal_p64x2(r, simde_vld1q_p64(test_vec[i].r));
  }

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 4 ; i++) {
    simde_uint64x2_t a = simde_test_arm_neon_random_u64x2();
    simde_poly64x2_t b = simde_test_arm_neon_random_p64x2();
    simde_poly64x2_t c = simde_test_arm_neon_random_p64x2();
    simde_poly64x2_t r = simde_vbslq_p64(a, b, c);

    simde_test_arm_neon_write_u64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_p64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p64x2(2, c, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

SIMDE_TEST_FUNC_LIST_BEGIN
SIMDE_TEST_FUNC_LIST_ENTRY(vbsl_f16)
SIMDE_TEST_FUNC_LIST_ENTRY(vbsl_f32)
SIMDE_TEST_FUNC_LIST_ENTRY(vbsl_f64)
SIMDE_TEST_FUNC_LIST_ENTRY(vbsl_s8)
SIMDE_TEST_FUNC_LIST_ENTRY(vbsl_s16)
SIMDE_TEST_FUNC_LIST_ENTRY(vbsl_s32)
SIMDE_TEST_FUNC_LIST_ENTRY(vbsl_s64)
SIMDE_TEST_FUNC_LIST_ENTRY(vbsl_u8)
SIMDE_TEST_FUNC_LIST_ENTRY(vbsl_u16)
SIMDE_TEST_FUNC_LIST_ENTRY(vbsl_u32)
SIMDE_TEST_FUNC_LIST_ENTRY(vbsl_u64)

SIMDE_TEST_FUNC_LIST_ENTRY(vbslq_f16)
SIMDE_TEST_FUNC_LIST_ENTRY(vbslq_f32)
SIMDE_TEST_FUNC_LIST_ENTRY(vbslq_f64)
SIMDE_TEST_FUNC_LIST_ENTRY(vbslq_s8)
SIMDE_TEST_FUNC_LIST_ENTRY(vbslq_s16)
SIMDE_TEST_FUNC_LIST_ENTRY(vbslq_s32)
SIMDE_TEST_FUNC_LIST_ENTRY(vbslq_s64)
SIMDE_TEST_FUNC_LIST_ENTRY(vbslq_u8)
SIMDE_TEST_FUNC_LIST_ENTRY(vbslq_u16)
SIMDE_TEST_FUNC_LIST_ENTRY(vbslq_u32)
SIMDE_TEST_FUNC_LIST_ENTRY(vbslq_u64)

SIMDE_TEST_FUNC_LIST_ENTRY(vbsl_p8)
SIMDE_TEST_FUNC_LIST_ENTRY(vbsl_p16)
SIMDE_TEST_FUNC_LIST_ENTRY(vbsl_p64)
SIMDE_TEST_FUNC_LIST_ENTRY(vbslq_p8)
SIMDE_TEST_FUNC_LIST_ENTRY(vbslq_p16)
SIMDE_TEST_FUNC_LIST_ENTRY(vbslq_p64)
SIMDE_TEST_FUNC_LIST_END

#include "test-neon-footer.h"