File: avx.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 (16702 lines) | stat: -rw-r--r-- 1,153,783 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
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
3739
3740
3741
3742
3743
3744
3745
3746
3747
3748
3749
3750
3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
3783
3784
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
3805
3806
3807
3808
3809
3810
3811
3812
3813
3814
3815
3816
3817
3818
3819
3820
3821
3822
3823
3824
3825
3826
3827
3828
3829
3830
3831
3832
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
3843
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
3868
3869
3870
3871
3872
3873
3874
3875
3876
3877
3878
3879
3880
3881
3882
3883
3884
3885
3886
3887
3888
3889
3890
3891
3892
3893
3894
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
3905
3906
3907
3908
3909
3910
3911
3912
3913
3914
3915
3916
3917
3918
3919
3920
3921
3922
3923
3924
3925
3926
3927
3928
3929
3930
3931
3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
3944
3945
3946
3947
3948
3949
3950
3951
3952
3953
3954
3955
3956
3957
3958
3959
3960
3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
4026
4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
4038
4039
4040
4041
4042
4043
4044
4045
4046
4047
4048
4049
4050
4051
4052
4053
4054
4055
4056
4057
4058
4059
4060
4061
4062
4063
4064
4065
4066
4067
4068
4069
4070
4071
4072
4073
4074
4075
4076
4077
4078
4079
4080
4081
4082
4083
4084
4085
4086
4087
4088
4089
4090
4091
4092
4093
4094
4095
4096
4097
4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
4108
4109
4110
4111
4112
4113
4114
4115
4116
4117
4118
4119
4120
4121
4122
4123
4124
4125
4126
4127
4128
4129
4130
4131
4132
4133
4134
4135
4136
4137
4138
4139
4140
4141
4142
4143
4144
4145
4146
4147
4148
4149
4150
4151
4152
4153
4154
4155
4156
4157
4158
4159
4160
4161
4162
4163
4164
4165
4166
4167
4168
4169
4170
4171
4172
4173
4174
4175
4176
4177
4178
4179
4180
4181
4182
4183
4184
4185
4186
4187
4188
4189
4190
4191
4192
4193
4194
4195
4196
4197
4198
4199
4200
4201
4202
4203
4204
4205
4206
4207
4208
4209
4210
4211
4212
4213
4214
4215
4216
4217
4218
4219
4220
4221
4222
4223
4224
4225
4226
4227
4228
4229
4230
4231
4232
4233
4234
4235
4236
4237
4238
4239
4240
4241
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
4253
4254
4255
4256
4257
4258
4259
4260
4261
4262
4263
4264
4265
4266
4267
4268
4269
4270
4271
4272
4273
4274
4275
4276
4277
4278
4279
4280
4281
4282
4283
4284
4285
4286
4287
4288
4289
4290
4291
4292
4293
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
4304
4305
4306
4307
4308
4309
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
4320
4321
4322
4323
4324
4325
4326
4327
4328
4329
4330
4331
4332
4333
4334
4335
4336
4337
4338
4339
4340
4341
4342
4343
4344
4345
4346
4347
4348
4349
4350
4351
4352
4353
4354
4355
4356
4357
4358
4359
4360
4361
4362
4363
4364
4365
4366
4367
4368
4369
4370
4371
4372
4373
4374
4375
4376
4377
4378
4379
4380
4381
4382
4383
4384
4385
4386
4387
4388
4389
4390
4391
4392
4393
4394
4395
4396
4397
4398
4399
4400
4401
4402
4403
4404
4405
4406
4407
4408
4409
4410
4411
4412
4413
4414
4415
4416
4417
4418
4419
4420
4421
4422
4423
4424
4425
4426
4427
4428
4429
4430
4431
4432
4433
4434
4435
4436
4437
4438
4439
4440
4441
4442
4443
4444
4445
4446
4447
4448
4449
4450
4451
4452
4453
4454
4455
4456
4457
4458
4459
4460
4461
4462
4463
4464
4465
4466
4467
4468
4469
4470
4471
4472
4473
4474
4475
4476
4477
4478
4479
4480
4481
4482
4483
4484
4485
4486
4487
4488
4489
4490
4491
4492
4493
4494
4495
4496
4497
4498
4499
4500
4501
4502
4503
4504
4505
4506
4507
4508
4509
4510
4511
4512
4513
4514
4515
4516
4517
4518
4519
4520
4521
4522
4523
4524
4525
4526
4527
4528
4529
4530
4531
4532
4533
4534
4535
4536
4537
4538
4539
4540
4541
4542
4543
4544
4545
4546
4547
4548
4549
4550
4551
4552
4553
4554
4555
4556
4557
4558
4559
4560
4561
4562
4563
4564
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
4575
4576
4577
4578
4579
4580
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
4591
4592
4593
4594
4595
4596
4597
4598
4599
4600
4601
4602
4603
4604
4605
4606
4607
4608
4609
4610
4611
4612
4613
4614
4615
4616
4617
4618
4619
4620
4621
4622
4623
4624
4625
4626
4627
4628
4629
4630
4631
4632
4633
4634
4635
4636
4637
4638
4639
4640
4641
4642
4643
4644
4645
4646
4647
4648
4649
4650
4651
4652
4653
4654
4655
4656
4657
4658
4659
4660
4661
4662
4663
4664
4665
4666
4667
4668
4669
4670
4671
4672
4673
4674
4675
4676
4677
4678
4679
4680
4681
4682
4683
4684
4685
4686
4687
4688
4689
4690
4691
4692
4693
4694
4695
4696
4697
4698
4699
4700
4701
4702
4703
4704
4705
4706
4707
4708
4709
4710
4711
4712
4713
4714
4715
4716
4717
4718
4719
4720
4721
4722
4723
4724
4725
4726
4727
4728
4729
4730
4731
4732
4733
4734
4735
4736
4737
4738
4739
4740
4741
4742
4743
4744
4745
4746
4747
4748
4749
4750
4751
4752
4753
4754
4755
4756
4757
4758
4759
4760
4761
4762
4763
4764
4765
4766
4767
4768
4769
4770
4771
4772
4773
4774
4775
4776
4777
4778
4779
4780
4781
4782
4783
4784
4785
4786
4787
4788
4789
4790
4791
4792
4793
4794
4795
4796
4797
4798
4799
4800
4801
4802
4803
4804
4805
4806
4807
4808
4809
4810
4811
4812
4813
4814
4815
4816
4817
4818
4819
4820
4821
4822
4823
4824
4825
4826
4827
4828
4829
4830
4831
4832
4833
4834
4835
4836
4837
4838
4839
4840
4841
4842
4843
4844
4845
4846
4847
4848
4849
4850
4851
4852
4853
4854
4855
4856
4857
4858
4859
4860
4861
4862
4863
4864
4865
4866
4867
4868
4869
4870
4871
4872
4873
4874
4875
4876
4877
4878
4879
4880
4881
4882
4883
4884
4885
4886
4887
4888
4889
4890
4891
4892
4893
4894
4895
4896
4897
4898
4899
4900
4901
4902
4903
4904
4905
4906
4907
4908
4909
4910
4911
4912
4913
4914
4915
4916
4917
4918
4919
4920
4921
4922
4923
4924
4925
4926
4927
4928
4929
4930
4931
4932
4933
4934
4935
4936
4937
4938
4939
4940
4941
4942
4943
4944
4945
4946
4947
4948
4949
4950
4951
4952
4953
4954
4955
4956
4957
4958
4959
4960
4961
4962
4963
4964
4965
4966
4967
4968
4969
4970
4971
4972
4973
4974
4975
4976
4977
4978
4979
4980
4981
4982
4983
4984
4985
4986
4987
4988
4989
4990
4991
4992
4993
4994
4995
4996
4997
4998
4999
5000
5001
5002
5003
5004
5005
5006
5007
5008
5009
5010
5011
5012
5013
5014
5015
5016
5017
5018
5019
5020
5021
5022
5023
5024
5025
5026
5027
5028
5029
5030
5031
5032
5033
5034
5035
5036
5037
5038
5039
5040
5041
5042
5043
5044
5045
5046
5047
5048
5049
5050
5051
5052
5053
5054
5055
5056
5057
5058
5059
5060
5061
5062
5063
5064
5065
5066
5067
5068
5069
5070
5071
5072
5073
5074
5075
5076
5077
5078
5079
5080
5081
5082
5083
5084
5085
5086
5087
5088
5089
5090
5091
5092
5093
5094
5095
5096
5097
5098
5099
5100
5101
5102
5103
5104
5105
5106
5107
5108
5109
5110
5111
5112
5113
5114
5115
5116
5117
5118
5119
5120
5121
5122
5123
5124
5125
5126
5127
5128
5129
5130
5131
5132
5133
5134
5135
5136
5137
5138
5139
5140
5141
5142
5143
5144
5145
5146
5147
5148
5149
5150
5151
5152
5153
5154
5155
5156
5157
5158
5159
5160
5161
5162
5163
5164
5165
5166
5167
5168
5169
5170
5171
5172
5173
5174
5175
5176
5177
5178
5179
5180
5181
5182
5183
5184
5185
5186
5187
5188
5189
5190
5191
5192
5193
5194
5195
5196
5197
5198
5199
5200
5201
5202
5203
5204
5205
5206
5207
5208
5209
5210
5211
5212
5213
5214
5215
5216
5217
5218
5219
5220
5221
5222
5223
5224
5225
5226
5227
5228
5229
5230
5231
5232
5233
5234
5235
5236
5237
5238
5239
5240
5241
5242
5243
5244
5245
5246
5247
5248
5249
5250
5251
5252
5253
5254
5255
5256
5257
5258
5259
5260
5261
5262
5263
5264
5265
5266
5267
5268
5269
5270
5271
5272
5273
5274
5275
5276
5277
5278
5279
5280
5281
5282
5283
5284
5285
5286
5287
5288
5289
5290
5291
5292
5293
5294
5295
5296
5297
5298
5299
5300
5301
5302
5303
5304
5305
5306
5307
5308
5309
5310
5311
5312
5313
5314
5315
5316
5317
5318
5319
5320
5321
5322
5323
5324
5325
5326
5327
5328
5329
5330
5331
5332
5333
5334
5335
5336
5337
5338
5339
5340
5341
5342
5343
5344
5345
5346
5347
5348
5349
5350
5351
5352
5353
5354
5355
5356
5357
5358
5359
5360
5361
5362
5363
5364
5365
5366
5367
5368
5369
5370
5371
5372
5373
5374
5375
5376
5377
5378
5379
5380
5381
5382
5383
5384
5385
5386
5387
5388
5389
5390
5391
5392
5393
5394
5395
5396
5397
5398
5399
5400
5401
5402
5403
5404
5405
5406
5407
5408
5409
5410
5411
5412
5413
5414
5415
5416
5417
5418
5419
5420
5421
5422
5423
5424
5425
5426
5427
5428
5429
5430
5431
5432
5433
5434
5435
5436
5437
5438
5439
5440
5441
5442
5443
5444
5445
5446
5447
5448
5449
5450
5451
5452
5453
5454
5455
5456
5457
5458
5459
5460
5461
5462
5463
5464
5465
5466
5467
5468
5469
5470
5471
5472
5473
5474
5475
5476
5477
5478
5479
5480
5481
5482
5483
5484
5485
5486
5487
5488
5489
5490
5491
5492
5493
5494
5495
5496
5497
5498
5499
5500
5501
5502
5503
5504
5505
5506
5507
5508
5509
5510
5511
5512
5513
5514
5515
5516
5517
5518
5519
5520
5521
5522
5523
5524
5525
5526
5527
5528
5529
5530
5531
5532
5533
5534
5535
5536
5537
5538
5539
5540
5541
5542
5543
5544
5545
5546
5547
5548
5549
5550
5551
5552
5553
5554
5555
5556
5557
5558
5559
5560
5561
5562
5563
5564
5565
5566
5567
5568
5569
5570
5571
5572
5573
5574
5575
5576
5577
5578
5579
5580
5581
5582
5583
5584
5585
5586
5587
5588
5589
5590
5591
5592
5593
5594
5595
5596
5597
5598
5599
5600
5601
5602
5603
5604
5605
5606
5607
5608
5609
5610
5611
5612
5613
5614
5615
5616
5617
5618
5619
5620
5621
5622
5623
5624
5625
5626
5627
5628
5629
5630
5631
5632
5633
5634
5635
5636
5637
5638
5639
5640
5641
5642
5643
5644
5645
5646
5647
5648
5649
5650
5651
5652
5653
5654
5655
5656
5657
5658
5659
5660
5661
5662
5663
5664
5665
5666
5667
5668
5669
5670
5671
5672
5673
5674
5675
5676
5677
5678
5679
5680
5681
5682
5683
5684
5685
5686
5687
5688
5689
5690
5691
5692
5693
5694
5695
5696
5697
5698
5699
5700
5701
5702
5703
5704
5705
5706
5707
5708
5709
5710
5711
5712
5713
5714
5715
5716
5717
5718
5719
5720
5721
5722
5723
5724
5725
5726
5727
5728
5729
5730
5731
5732
5733
5734
5735
5736
5737
5738
5739
5740
5741
5742
5743
5744
5745
5746
5747
5748
5749
5750
5751
5752
5753
5754
5755
5756
5757
5758
5759
5760
5761
5762
5763
5764
5765
5766
5767
5768
5769
5770
5771
5772
5773
5774
5775
5776
5777
5778
5779
5780
5781
5782
5783
5784
5785
5786
5787
5788
5789
5790
5791
5792
5793
5794
5795
5796
5797
5798
5799
5800
5801
5802
5803
5804
5805
5806
5807
5808
5809
5810
5811
5812
5813
5814
5815
5816
5817
5818
5819
5820
5821
5822
5823
5824
5825
5826
5827
5828
5829
5830
5831
5832
5833
5834
5835
5836
5837
5838
5839
5840
5841
5842
5843
5844
5845
5846
5847
5848
5849
5850
5851
5852
5853
5854
5855
5856
5857
5858
5859
5860
5861
5862
5863
5864
5865
5866
5867
5868
5869
5870
5871
5872
5873
5874
5875
5876
5877
5878
5879
5880
5881
5882
5883
5884
5885
5886
5887
5888
5889
5890
5891
5892
5893
5894
5895
5896
5897
5898
5899
5900
5901
5902
5903
5904
5905
5906
5907
5908
5909
5910
5911
5912
5913
5914
5915
5916
5917
5918
5919
5920
5921
5922
5923
5924
5925
5926
5927
5928
5929
5930
5931
5932
5933
5934
5935
5936
5937
5938
5939
5940
5941
5942
5943
5944
5945
5946
5947
5948
5949
5950
5951
5952
5953
5954
5955
5956
5957
5958
5959
5960
5961
5962
5963
5964
5965
5966
5967
5968
5969
5970
5971
5972
5973
5974
5975
5976
5977
5978
5979
5980
5981
5982
5983
5984
5985
5986
5987
5988
5989
5990
5991
5992
5993
5994
5995
5996
5997
5998
5999
6000
6001
6002
6003
6004
6005
6006
6007
6008
6009
6010
6011
6012
6013
6014
6015
6016
6017
6018
6019
6020
6021
6022
6023
6024
6025
6026
6027
6028
6029
6030
6031
6032
6033
6034
6035
6036
6037
6038
6039
6040
6041
6042
6043
6044
6045
6046
6047
6048
6049
6050
6051
6052
6053
6054
6055
6056
6057
6058
6059
6060
6061
6062
6063
6064
6065
6066
6067
6068
6069
6070
6071
6072
6073
6074
6075
6076
6077
6078
6079
6080
6081
6082
6083
6084
6085
6086
6087
6088
6089
6090
6091
6092
6093
6094
6095
6096
6097
6098
6099
6100
6101
6102
6103
6104
6105
6106
6107
6108
6109
6110
6111
6112
6113
6114
6115
6116
6117
6118
6119
6120
6121
6122
6123
6124
6125
6126
6127
6128
6129
6130
6131
6132
6133
6134
6135
6136
6137
6138
6139
6140
6141
6142
6143
6144
6145
6146
6147
6148
6149
6150
6151
6152
6153
6154
6155
6156
6157
6158
6159
6160
6161
6162
6163
6164
6165
6166
6167
6168
6169
6170
6171
6172
6173
6174
6175
6176
6177
6178
6179
6180
6181
6182
6183
6184
6185
6186
6187
6188
6189
6190
6191
6192
6193
6194
6195
6196
6197
6198
6199
6200
6201
6202
6203
6204
6205
6206
6207
6208
6209
6210
6211
6212
6213
6214
6215
6216
6217
6218
6219
6220
6221
6222
6223
6224
6225
6226
6227
6228
6229
6230
6231
6232
6233
6234
6235
6236
6237
6238
6239
6240
6241
6242
6243
6244
6245
6246
6247
6248
6249
6250
6251
6252
6253
6254
6255
6256
6257
6258
6259
6260
6261
6262
6263
6264
6265
6266
6267
6268
6269
6270
6271
6272
6273
6274
6275
6276
6277
6278
6279
6280
6281
6282
6283
6284
6285
6286
6287
6288
6289
6290
6291
6292
6293
6294
6295
6296
6297
6298
6299
6300
6301
6302
6303
6304
6305
6306
6307
6308
6309
6310
6311
6312
6313
6314
6315
6316
6317
6318
6319
6320
6321
6322
6323
6324
6325
6326
6327
6328
6329
6330
6331
6332
6333
6334
6335
6336
6337
6338
6339
6340
6341
6342
6343
6344
6345
6346
6347
6348
6349
6350
6351
6352
6353
6354
6355
6356
6357
6358
6359
6360
6361
6362
6363
6364
6365
6366
6367
6368
6369
6370
6371
6372
6373
6374
6375
6376
6377
6378
6379
6380
6381
6382
6383
6384
6385
6386
6387
6388
6389
6390
6391
6392
6393
6394
6395
6396
6397
6398
6399
6400
6401
6402
6403
6404
6405
6406
6407
6408
6409
6410
6411
6412
6413
6414
6415
6416
6417
6418
6419
6420
6421
6422
6423
6424
6425
6426
6427
6428
6429
6430
6431
6432
6433
6434
6435
6436
6437
6438
6439
6440
6441
6442
6443
6444
6445
6446
6447
6448
6449
6450
6451
6452
6453
6454
6455
6456
6457
6458
6459
6460
6461
6462
6463
6464
6465
6466
6467
6468
6469
6470
6471
6472
6473
6474
6475
6476
6477
6478
6479
6480
6481
6482
6483
6484
6485
6486
6487
6488
6489
6490
6491
6492
6493
6494
6495
6496
6497
6498
6499
6500
6501
6502
6503
6504
6505
6506
6507
6508
6509
6510
6511
6512
6513
6514
6515
6516
6517
6518
6519
6520
6521
6522
6523
6524
6525
6526
6527
6528
6529
6530
6531
6532
6533
6534
6535
6536
6537
6538
6539
6540
6541
6542
6543
6544
6545
6546
6547
6548
6549
6550
6551
6552
6553
6554
6555
6556
6557
6558
6559
6560
6561
6562
6563
6564
6565
6566
6567
6568
6569
6570
6571
6572
6573
6574
6575
6576
6577
6578
6579
6580
6581
6582
6583
6584
6585
6586
6587
6588
6589
6590
6591
6592
6593
6594
6595
6596
6597
6598
6599
6600
6601
6602
6603
6604
6605
6606
6607
6608
6609
6610
6611
6612
6613
6614
6615
6616
6617
6618
6619
6620
6621
6622
6623
6624
6625
6626
6627
6628
6629
6630
6631
6632
6633
6634
6635
6636
6637
6638
6639
6640
6641
6642
6643
6644
6645
6646
6647
6648
6649
6650
6651
6652
6653
6654
6655
6656
6657
6658
6659
6660
6661
6662
6663
6664
6665
6666
6667
6668
6669
6670
6671
6672
6673
6674
6675
6676
6677
6678
6679
6680
6681
6682
6683
6684
6685
6686
6687
6688
6689
6690
6691
6692
6693
6694
6695
6696
6697
6698
6699
6700
6701
6702
6703
6704
6705
6706
6707
6708
6709
6710
6711
6712
6713
6714
6715
6716
6717
6718
6719
6720
6721
6722
6723
6724
6725
6726
6727
6728
6729
6730
6731
6732
6733
6734
6735
6736
6737
6738
6739
6740
6741
6742
6743
6744
6745
6746
6747
6748
6749
6750
6751
6752
6753
6754
6755
6756
6757
6758
6759
6760
6761
6762
6763
6764
6765
6766
6767
6768
6769
6770
6771
6772
6773
6774
6775
6776
6777
6778
6779
6780
6781
6782
6783
6784
6785
6786
6787
6788
6789
6790
6791
6792
6793
6794
6795
6796
6797
6798
6799
6800
6801
6802
6803
6804
6805
6806
6807
6808
6809
6810
6811
6812
6813
6814
6815
6816
6817
6818
6819
6820
6821
6822
6823
6824
6825
6826
6827
6828
6829
6830
6831
6832
6833
6834
6835
6836
6837
6838
6839
6840
6841
6842
6843
6844
6845
6846
6847
6848
6849
6850
6851
6852
6853
6854
6855
6856
6857
6858
6859
6860
6861
6862
6863
6864
6865
6866
6867
6868
6869
6870
6871
6872
6873
6874
6875
6876
6877
6878
6879
6880
6881
6882
6883
6884
6885
6886
6887
6888
6889
6890
6891
6892
6893
6894
6895
6896
6897
6898
6899
6900
6901
6902
6903
6904
6905
6906
6907
6908
6909
6910
6911
6912
6913
6914
6915
6916
6917
6918
6919
6920
6921
6922
6923
6924
6925
6926
6927
6928
6929
6930
6931
6932
6933
6934
6935
6936
6937
6938
6939
6940
6941
6942
6943
6944
6945
6946
6947
6948
6949
6950
6951
6952
6953
6954
6955
6956
6957
6958
6959
6960
6961
6962
6963
6964
6965
6966
6967
6968
6969
6970
6971
6972
6973
6974
6975
6976
6977
6978
6979
6980
6981
6982
6983
6984
6985
6986
6987
6988
6989
6990
6991
6992
6993
6994
6995
6996
6997
6998
6999
7000
7001
7002
7003
7004
7005
7006
7007
7008
7009
7010
7011
7012
7013
7014
7015
7016
7017
7018
7019
7020
7021
7022
7023
7024
7025
7026
7027
7028
7029
7030
7031
7032
7033
7034
7035
7036
7037
7038
7039
7040
7041
7042
7043
7044
7045
7046
7047
7048
7049
7050
7051
7052
7053
7054
7055
7056
7057
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
7068
7069
7070
7071
7072
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
7083
7084
7085
7086
7087
7088
7089
7090
7091
7092
7093
7094
7095
7096
7097
7098
7099
7100
7101
7102
7103
7104
7105
7106
7107
7108
7109
7110
7111
7112
7113
7114
7115
7116
7117
7118
7119
7120
7121
7122
7123
7124
7125
7126
7127
7128
7129
7130
7131
7132
7133
7134
7135
7136
7137
7138
7139
7140
7141
7142
7143
7144
7145
7146
7147
7148
7149
7150
7151
7152
7153
7154
7155
7156
7157
7158
7159
7160
7161
7162
7163
7164
7165
7166
7167
7168
7169
7170
7171
7172
7173
7174
7175
7176
7177
7178
7179
7180
7181
7182
7183
7184
7185
7186
7187
7188
7189
7190
7191
7192
7193
7194
7195
7196
7197
7198
7199
7200
7201
7202
7203
7204
7205
7206
7207
7208
7209
7210
7211
7212
7213
7214
7215
7216
7217
7218
7219
7220
7221
7222
7223
7224
7225
7226
7227
7228
7229
7230
7231
7232
7233
7234
7235
7236
7237
7238
7239
7240
7241
7242
7243
7244
7245
7246
7247
7248
7249
7250
7251
7252
7253
7254
7255
7256
7257
7258
7259
7260
7261
7262
7263
7264
7265
7266
7267
7268
7269
7270
7271
7272
7273
7274
7275
7276
7277
7278
7279
7280
7281
7282
7283
7284
7285
7286
7287
7288
7289
7290
7291
7292
7293
7294
7295
7296
7297
7298
7299
7300
7301
7302
7303
7304
7305
7306
7307
7308
7309
7310
7311
7312
7313
7314
7315
7316
7317
7318
7319
7320
7321
7322
7323
7324
7325
7326
7327
7328
7329
7330
7331
7332
7333
7334
7335
7336
7337
7338
7339
7340
7341
7342
7343
7344
7345
7346
7347
7348
7349
7350
7351
7352
7353
7354
7355
7356
7357
7358
7359
7360
7361
7362
7363
7364
7365
7366
7367
7368
7369
7370
7371
7372
7373
7374
7375
7376
7377
7378
7379
7380
7381
7382
7383
7384
7385
7386
7387
7388
7389
7390
7391
7392
7393
7394
7395
7396
7397
7398
7399
7400
7401
7402
7403
7404
7405
7406
7407
7408
7409
7410
7411
7412
7413
7414
7415
7416
7417
7418
7419
7420
7421
7422
7423
7424
7425
7426
7427
7428
7429
7430
7431
7432
7433
7434
7435
7436
7437
7438
7439
7440
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
7451
7452
7453
7454
7455
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
7466
7467
7468
7469
7470
7471
7472
7473
7474
7475
7476
7477
7478
7479
7480
7481
7482
7483
7484
7485
7486
7487
7488
7489
7490
7491
7492
7493
7494
7495
7496
7497
7498
7499
7500
7501
7502
7503
7504
7505
7506
7507
7508
7509
7510
7511
7512
7513
7514
7515
7516
7517
7518
7519
7520
7521
7522
7523
7524
7525
7526
7527
7528
7529
7530
7531
7532
7533
7534
7535
7536
7537
7538
7539
7540
7541
7542
7543
7544
7545
7546
7547
7548
7549
7550
7551
7552
7553
7554
7555
7556
7557
7558
7559
7560
7561
7562
7563
7564
7565
7566
7567
7568
7569
7570
7571
7572
7573
7574
7575
7576
7577
7578
7579
7580
7581
7582
7583
7584
7585
7586
7587
7588
7589
7590
7591
7592
7593
7594
7595
7596
7597
7598
7599
7600
7601
7602
7603
7604
7605
7606
7607
7608
7609
7610
7611
7612
7613
7614
7615
7616
7617
7618
7619
7620
7621
7622
7623
7624
7625
7626
7627
7628
7629
7630
7631
7632
7633
7634
7635
7636
7637
7638
7639
7640
7641
7642
7643
7644
7645
7646
7647
7648
7649
7650
7651
7652
7653
7654
7655
7656
7657
7658
7659
7660
7661
7662
7663
7664
7665
7666
7667
7668
7669
7670
7671
7672
7673
7674
7675
7676
7677
7678
7679
7680
7681
7682
7683
7684
7685
7686
7687
7688
7689
7690
7691
7692
7693
7694
7695
7696
7697
7698
7699
7700
7701
7702
7703
7704
7705
7706
7707
7708
7709
7710
7711
7712
7713
7714
7715
7716
7717
7718
7719
7720
7721
7722
7723
7724
7725
7726
7727
7728
7729
7730
7731
7732
7733
7734
7735
7736
7737
7738
7739
7740
7741
7742
7743
7744
7745
7746
7747
7748
7749
7750
7751
7752
7753
7754
7755
7756
7757
7758
7759
7760
7761
7762
7763
7764
7765
7766
7767
7768
7769
7770
7771
7772
7773
7774
7775
7776
7777
7778
7779
7780
7781
7782
7783
7784
7785
7786
7787
7788
7789
7790
7791
7792
7793
7794
7795
7796
7797
7798
7799
7800
7801
7802
7803
7804
7805
7806
7807
7808
7809
7810
7811
7812
7813
7814
7815
7816
7817
7818
7819
7820
7821
7822
7823
7824
7825
7826
7827
7828
7829
7830
7831
7832
7833
7834
7835
7836
7837
7838
7839
7840
7841
7842
7843
7844
7845
7846
7847
7848
7849
7850
7851
7852
7853
7854
7855
7856
7857
7858
7859
7860
7861
7862
7863
7864
7865
7866
7867
7868
7869
7870
7871
7872
7873
7874
7875
7876
7877
7878
7879
7880
7881
7882
7883
7884
7885
7886
7887
7888
7889
7890
7891
7892
7893
7894
7895
7896
7897
7898
7899
7900
7901
7902
7903
7904
7905
7906
7907
7908
7909
7910
7911
7912
7913
7914
7915
7916
7917
7918
7919
7920
7921
7922
7923
7924
7925
7926
7927
7928
7929
7930
7931
7932
7933
7934
7935
7936
7937
7938
7939
7940
7941
7942
7943
7944
7945
7946
7947
7948
7949
7950
7951
7952
7953
7954
7955
7956
7957
7958
7959
7960
7961
7962
7963
7964
7965
7966
7967
7968
7969
7970
7971
7972
7973
7974
7975
7976
7977
7978
7979
7980
7981
7982
7983
7984
7985
7986
7987
7988
7989
7990
7991
7992
7993
7994
7995
7996
7997
7998
7999
8000
8001
8002
8003
8004
8005
8006
8007
8008
8009
8010
8011
8012
8013
8014
8015
8016
8017
8018
8019
8020
8021
8022
8023
8024
8025
8026
8027
8028
8029
8030
8031
8032
8033
8034
8035
8036
8037
8038
8039
8040
8041
8042
8043
8044
8045
8046
8047
8048
8049
8050
8051
8052
8053
8054
8055
8056
8057
8058
8059
8060
8061
8062
8063
8064
8065
8066
8067
8068
8069
8070
8071
8072
8073
8074
8075
8076
8077
8078
8079
8080
8081
8082
8083
8084
8085
8086
8087
8088
8089
8090
8091
8092
8093
8094
8095
8096
8097
8098
8099
8100
8101
8102
8103
8104
8105
8106
8107
8108
8109
8110
8111
8112
8113
8114
8115
8116
8117
8118
8119
8120
8121
8122
8123
8124
8125
8126
8127
8128
8129
8130
8131
8132
8133
8134
8135
8136
8137
8138
8139
8140
8141
8142
8143
8144
8145
8146
8147
8148
8149
8150
8151
8152
8153
8154
8155
8156
8157
8158
8159
8160
8161
8162
8163
8164
8165
8166
8167
8168
8169
8170
8171
8172
8173
8174
8175
8176
8177
8178
8179
8180
8181
8182
8183
8184
8185
8186
8187
8188
8189
8190
8191
8192
8193
8194
8195
8196
8197
8198
8199
8200
8201
8202
8203
8204
8205
8206
8207
8208
8209
8210
8211
8212
8213
8214
8215
8216
8217
8218
8219
8220
8221
8222
8223
8224
8225
8226
8227
8228
8229
8230
8231
8232
8233
8234
8235
8236
8237
8238
8239
8240
8241
8242
8243
8244
8245
8246
8247
8248
8249
8250
8251
8252
8253
8254
8255
8256
8257
8258
8259
8260
8261
8262
8263
8264
8265
8266
8267
8268
8269
8270
8271
8272
8273
8274
8275
8276
8277
8278
8279
8280
8281
8282
8283
8284
8285
8286
8287
8288
8289
8290
8291
8292
8293
8294
8295
8296
8297
8298
8299
8300
8301
8302
8303
8304
8305
8306
8307
8308
8309
8310
8311
8312
8313
8314
8315
8316
8317
8318
8319
8320
8321
8322
8323
8324
8325
8326
8327
8328
8329
8330
8331
8332
8333
8334
8335
8336
8337
8338
8339
8340
8341
8342
8343
8344
8345
8346
8347
8348
8349
8350
8351
8352
8353
8354
8355
8356
8357
8358
8359
8360
8361
8362
8363
8364
8365
8366
8367
8368
8369
8370
8371
8372
8373
8374
8375
8376
8377
8378
8379
8380
8381
8382
8383
8384
8385
8386
8387
8388
8389
8390
8391
8392
8393
8394
8395
8396
8397
8398
8399
8400
8401
8402
8403
8404
8405
8406
8407
8408
8409
8410
8411
8412
8413
8414
8415
8416
8417
8418
8419
8420
8421
8422
8423
8424
8425
8426
8427
8428
8429
8430
8431
8432
8433
8434
8435
8436
8437
8438
8439
8440
8441
8442
8443
8444
8445
8446
8447
8448
8449
8450
8451
8452
8453
8454
8455
8456
8457
8458
8459
8460
8461
8462
8463
8464
8465
8466
8467
8468
8469
8470
8471
8472
8473
8474
8475
8476
8477
8478
8479
8480
8481
8482
8483
8484
8485
8486
8487
8488
8489
8490
8491
8492
8493
8494
8495
8496
8497
8498
8499
8500
8501
8502
8503
8504
8505
8506
8507
8508
8509
8510
8511
8512
8513
8514
8515
8516
8517
8518
8519
8520
8521
8522
8523
8524
8525
8526
8527
8528
8529
8530
8531
8532
8533
8534
8535
8536
8537
8538
8539
8540
8541
8542
8543
8544
8545
8546
8547
8548
8549
8550
8551
8552
8553
8554
8555
8556
8557
8558
8559
8560
8561
8562
8563
8564
8565
8566
8567
8568
8569
8570
8571
8572
8573
8574
8575
8576
8577
8578
8579
8580
8581
8582
8583
8584
8585
8586
8587
8588
8589
8590
8591
8592
8593
8594
8595
8596
8597
8598
8599
8600
8601
8602
8603
8604
8605
8606
8607
8608
8609
8610
8611
8612
8613
8614
8615
8616
8617
8618
8619
8620
8621
8622
8623
8624
8625
8626
8627
8628
8629
8630
8631
8632
8633
8634
8635
8636
8637
8638
8639
8640
8641
8642
8643
8644
8645
8646
8647
8648
8649
8650
8651
8652
8653
8654
8655
8656
8657
8658
8659
8660
8661
8662
8663
8664
8665
8666
8667
8668
8669
8670
8671
8672
8673
8674
8675
8676
8677
8678
8679
8680
8681
8682
8683
8684
8685
8686
8687
8688
8689
8690
8691
8692
8693
8694
8695
8696
8697
8698
8699
8700
8701
8702
8703
8704
8705
8706
8707
8708
8709
8710
8711
8712
8713
8714
8715
8716
8717
8718
8719
8720
8721
8722
8723
8724
8725
8726
8727
8728
8729
8730
8731
8732
8733
8734
8735
8736
8737
8738
8739
8740
8741
8742
8743
8744
8745
8746
8747
8748
8749
8750
8751
8752
8753
8754
8755
8756
8757
8758
8759
8760
8761
8762
8763
8764
8765
8766
8767
8768
8769
8770
8771
8772
8773
8774
8775
8776
8777
8778
8779
8780
8781
8782
8783
8784
8785
8786
8787
8788
8789
8790
8791
8792
8793
8794
8795
8796
8797
8798
8799
8800
8801
8802
8803
8804
8805
8806
8807
8808
8809
8810
8811
8812
8813
8814
8815
8816
8817
8818
8819
8820
8821
8822
8823
8824
8825
8826
8827
8828
8829
8830
8831
8832
8833
8834
8835
8836
8837
8838
8839
8840
8841
8842
8843
8844
8845
8846
8847
8848
8849
8850
8851
8852
8853
8854
8855
8856
8857
8858
8859
8860
8861
8862
8863
8864
8865
8866
8867
8868
8869
8870
8871
8872
8873
8874
8875
8876
8877
8878
8879
8880
8881
8882
8883
8884
8885
8886
8887
8888
8889
8890
8891
8892
8893
8894
8895
8896
8897
8898
8899
8900
8901
8902
8903
8904
8905
8906
8907
8908
8909
8910
8911
8912
8913
8914
8915
8916
8917
8918
8919
8920
8921
8922
8923
8924
8925
8926
8927
8928
8929
8930
8931
8932
8933
8934
8935
8936
8937
8938
8939
8940
8941
8942
8943
8944
8945
8946
8947
8948
8949
8950
8951
8952
8953
8954
8955
8956
8957
8958
8959
8960
8961
8962
8963
8964
8965
8966
8967
8968
8969
8970
8971
8972
8973
8974
8975
8976
8977
8978
8979
8980
8981
8982
8983
8984
8985
8986
8987
8988
8989
8990
8991
8992
8993
8994
8995
8996
8997
8998
8999
9000
9001
9002
9003
9004
9005
9006
9007
9008
9009
9010
9011
9012
9013
9014
9015
9016
9017
9018
9019
9020
9021
9022
9023
9024
9025
9026
9027
9028
9029
9030
9031
9032
9033
9034
9035
9036
9037
9038
9039
9040
9041
9042
9043
9044
9045
9046
9047
9048
9049
9050
9051
9052
9053
9054
9055
9056
9057
9058
9059
9060
9061
9062
9063
9064
9065
9066
9067
9068
9069
9070
9071
9072
9073
9074
9075
9076
9077
9078
9079
9080
9081
9082
9083
9084
9085
9086
9087
9088
9089
9090
9091
9092
9093
9094
9095
9096
9097
9098
9099
9100
9101
9102
9103
9104
9105
9106
9107
9108
9109
9110
9111
9112
9113
9114
9115
9116
9117
9118
9119
9120
9121
9122
9123
9124
9125
9126
9127
9128
9129
9130
9131
9132
9133
9134
9135
9136
9137
9138
9139
9140
9141
9142
9143
9144
9145
9146
9147
9148
9149
9150
9151
9152
9153
9154
9155
9156
9157
9158
9159
9160
9161
9162
9163
9164
9165
9166
9167
9168
9169
9170
9171
9172
9173
9174
9175
9176
9177
9178
9179
9180
9181
9182
9183
9184
9185
9186
9187
9188
9189
9190
9191
9192
9193
9194
9195
9196
9197
9198
9199
9200
9201
9202
9203
9204
9205
9206
9207
9208
9209
9210
9211
9212
9213
9214
9215
9216
9217
9218
9219
9220
9221
9222
9223
9224
9225
9226
9227
9228
9229
9230
9231
9232
9233
9234
9235
9236
9237
9238
9239
9240
9241
9242
9243
9244
9245
9246
9247
9248
9249
9250
9251
9252
9253
9254
9255
9256
9257
9258
9259
9260
9261
9262
9263
9264
9265
9266
9267
9268
9269
9270
9271
9272
9273
9274
9275
9276
9277
9278
9279
9280
9281
9282
9283
9284
9285
9286
9287
9288
9289
9290
9291
9292
9293
9294
9295
9296
9297
9298
9299
9300
9301
9302
9303
9304
9305
9306
9307
9308
9309
9310
9311
9312
9313
9314
9315
9316
9317
9318
9319
9320
9321
9322
9323
9324
9325
9326
9327
9328
9329
9330
9331
9332
9333
9334
9335
9336
9337
9338
9339
9340
9341
9342
9343
9344
9345
9346
9347
9348
9349
9350
9351
9352
9353
9354
9355
9356
9357
9358
9359
9360
9361
9362
9363
9364
9365
9366
9367
9368
9369
9370
9371
9372
9373
9374
9375
9376
9377
9378
9379
9380
9381
9382
9383
9384
9385
9386
9387
9388
9389
9390
9391
9392
9393
9394
9395
9396
9397
9398
9399
9400
9401
9402
9403
9404
9405
9406
9407
9408
9409
9410
9411
9412
9413
9414
9415
9416
9417
9418
9419
9420
9421
9422
9423
9424
9425
9426
9427
9428
9429
9430
9431
9432
9433
9434
9435
9436
9437
9438
9439
9440
9441
9442
9443
9444
9445
9446
9447
9448
9449
9450
9451
9452
9453
9454
9455
9456
9457
9458
9459
9460
9461
9462
9463
9464
9465
9466
9467
9468
9469
9470
9471
9472
9473
9474
9475
9476
9477
9478
9479
9480
9481
9482
9483
9484
9485
9486
9487
9488
9489
9490
9491
9492
9493
9494
9495
9496
9497
9498
9499
9500
9501
9502
9503
9504
9505
9506
9507
9508
9509
9510
9511
9512
9513
9514
9515
9516
9517
9518
9519
9520
9521
9522
9523
9524
9525
9526
9527
9528
9529
9530
9531
9532
9533
9534
9535
9536
9537
9538
9539
9540
9541
9542
9543
9544
9545
9546
9547
9548
9549
9550
9551
9552
9553
9554
9555
9556
9557
9558
9559
9560
9561
9562
9563
9564
9565
9566
9567
9568
9569
9570
9571
9572
9573
9574
9575
9576
9577
9578
9579
9580
9581
9582
9583
9584
9585
9586
9587
9588
9589
9590
9591
9592
9593
9594
9595
9596
9597
9598
9599
9600
9601
9602
9603
9604
9605
9606
9607
9608
9609
9610
9611
9612
9613
9614
9615
9616
9617
9618
9619
9620
9621
9622
9623
9624
9625
9626
9627
9628
9629
9630
9631
9632
9633
9634
9635
9636
9637
9638
9639
9640
9641
9642
9643
9644
9645
9646
9647
9648
9649
9650
9651
9652
9653
9654
9655
9656
9657
9658
9659
9660
9661
9662
9663
9664
9665
9666
9667
9668
9669
9670
9671
9672
9673
9674
9675
9676
9677
9678
9679
9680
9681
9682
9683
9684
9685
9686
9687
9688
9689
9690
9691
9692
9693
9694
9695
9696
9697
9698
9699
9700
9701
9702
9703
9704
9705
9706
9707
9708
9709
9710
9711
9712
9713
9714
9715
9716
9717
9718
9719
9720
9721
9722
9723
9724
9725
9726
9727
9728
9729
9730
9731
9732
9733
9734
9735
9736
9737
9738
9739
9740
9741
9742
9743
9744
9745
9746
9747
9748
9749
9750
9751
9752
9753
9754
9755
9756
9757
9758
9759
9760
9761
9762
9763
9764
9765
9766
9767
9768
9769
9770
9771
9772
9773
9774
9775
9776
9777
9778
9779
9780
9781
9782
9783
9784
9785
9786
9787
9788
9789
9790
9791
9792
9793
9794
9795
9796
9797
9798
9799
9800
9801
9802
9803
9804
9805
9806
9807
9808
9809
9810
9811
9812
9813
9814
9815
9816
9817
9818
9819
9820
9821
9822
9823
9824
9825
9826
9827
9828
9829
9830
9831
9832
9833
9834
9835
9836
9837
9838
9839
9840
9841
9842
9843
9844
9845
9846
9847
9848
9849
9850
9851
9852
9853
9854
9855
9856
9857
9858
9859
9860
9861
9862
9863
9864
9865
9866
9867
9868
9869
9870
9871
9872
9873
9874
9875
9876
9877
9878
9879
9880
9881
9882
9883
9884
9885
9886
9887
9888
9889
9890
9891
9892
9893
9894
9895
9896
9897
9898
9899
9900
9901
9902
9903
9904
9905
9906
9907
9908
9909
9910
9911
9912
9913
9914
9915
9916
9917
9918
9919
9920
9921
9922
9923
9924
9925
9926
9927
9928
9929
9930
9931
9932
9933
9934
9935
9936
9937
9938
9939
9940
9941
9942
9943
9944
9945
9946
9947
9948
9949
9950
9951
9952
9953
9954
9955
9956
9957
9958
9959
9960
9961
9962
9963
9964
9965
9966
9967
9968
9969
9970
9971
9972
9973
9974
9975
9976
9977
9978
9979
9980
9981
9982
9983
9984
9985
9986
9987
9988
9989
9990
9991
9992
9993
9994
9995
9996
9997
9998
9999
10000
10001
10002
10003
10004
10005
10006
10007
10008
10009
10010
10011
10012
10013
10014
10015
10016
10017
10018
10019
10020
10021
10022
10023
10024
10025
10026
10027
10028
10029
10030
10031
10032
10033
10034
10035
10036
10037
10038
10039
10040
10041
10042
10043
10044
10045
10046
10047
10048
10049
10050
10051
10052
10053
10054
10055
10056
10057
10058
10059
10060
10061
10062
10063
10064
10065
10066
10067
10068
10069
10070
10071
10072
10073
10074
10075
10076
10077
10078
10079
10080
10081
10082
10083
10084
10085
10086
10087
10088
10089
10090
10091
10092
10093
10094
10095
10096
10097
10098
10099
10100
10101
10102
10103
10104
10105
10106
10107
10108
10109
10110
10111
10112
10113
10114
10115
10116
10117
10118
10119
10120
10121
10122
10123
10124
10125
10126
10127
10128
10129
10130
10131
10132
10133
10134
10135
10136
10137
10138
10139
10140
10141
10142
10143
10144
10145
10146
10147
10148
10149
10150
10151
10152
10153
10154
10155
10156
10157
10158
10159
10160
10161
10162
10163
10164
10165
10166
10167
10168
10169
10170
10171
10172
10173
10174
10175
10176
10177
10178
10179
10180
10181
10182
10183
10184
10185
10186
10187
10188
10189
10190
10191
10192
10193
10194
10195
10196
10197
10198
10199
10200
10201
10202
10203
10204
10205
10206
10207
10208
10209
10210
10211
10212
10213
10214
10215
10216
10217
10218
10219
10220
10221
10222
10223
10224
10225
10226
10227
10228
10229
10230
10231
10232
10233
10234
10235
10236
10237
10238
10239
10240
10241
10242
10243
10244
10245
10246
10247
10248
10249
10250
10251
10252
10253
10254
10255
10256
10257
10258
10259
10260
10261
10262
10263
10264
10265
10266
10267
10268
10269
10270
10271
10272
10273
10274
10275
10276
10277
10278
10279
10280
10281
10282
10283
10284
10285
10286
10287
10288
10289
10290
10291
10292
10293
10294
10295
10296
10297
10298
10299
10300
10301
10302
10303
10304
10305
10306
10307
10308
10309
10310
10311
10312
10313
10314
10315
10316
10317
10318
10319
10320
10321
10322
10323
10324
10325
10326
10327
10328
10329
10330
10331
10332
10333
10334
10335
10336
10337
10338
10339
10340
10341
10342
10343
10344
10345
10346
10347
10348
10349
10350
10351
10352
10353
10354
10355
10356
10357
10358
10359
10360
10361
10362
10363
10364
10365
10366
10367
10368
10369
10370
10371
10372
10373
10374
10375
10376
10377
10378
10379
10380
10381
10382
10383
10384
10385
10386
10387
10388
10389
10390
10391
10392
10393
10394
10395
10396
10397
10398
10399
10400
10401
10402
10403
10404
10405
10406
10407
10408
10409
10410
10411
10412
10413
10414
10415
10416
10417
10418
10419
10420
10421
10422
10423
10424
10425
10426
10427
10428
10429
10430
10431
10432
10433
10434
10435
10436
10437
10438
10439
10440
10441
10442
10443
10444
10445
10446
10447
10448
10449
10450
10451
10452
10453
10454
10455
10456
10457
10458
10459
10460
10461
10462
10463
10464
10465
10466
10467
10468
10469
10470
10471
10472
10473
10474
10475
10476
10477
10478
10479
10480
10481
10482
10483
10484
10485
10486
10487
10488
10489
10490
10491
10492
10493
10494
10495
10496
10497
10498
10499
10500
10501
10502
10503
10504
10505
10506
10507
10508
10509
10510
10511
10512
10513
10514
10515
10516
10517
10518
10519
10520
10521
10522
10523
10524
10525
10526
10527
10528
10529
10530
10531
10532
10533
10534
10535
10536
10537
10538
10539
10540
10541
10542
10543
10544
10545
10546
10547
10548
10549
10550
10551
10552
10553
10554
10555
10556
10557
10558
10559
10560
10561
10562
10563
10564
10565
10566
10567
10568
10569
10570
10571
10572
10573
10574
10575
10576
10577
10578
10579
10580
10581
10582
10583
10584
10585
10586
10587
10588
10589
10590
10591
10592
10593
10594
10595
10596
10597
10598
10599
10600
10601
10602
10603
10604
10605
10606
10607
10608
10609
10610
10611
10612
10613
10614
10615
10616
10617
10618
10619
10620
10621
10622
10623
10624
10625
10626
10627
10628
10629
10630
10631
10632
10633
10634
10635
10636
10637
10638
10639
10640
10641
10642
10643
10644
10645
10646
10647
10648
10649
10650
10651
10652
10653
10654
10655
10656
10657
10658
10659
10660
10661
10662
10663
10664
10665
10666
10667
10668
10669
10670
10671
10672
10673
10674
10675
10676
10677
10678
10679
10680
10681
10682
10683
10684
10685
10686
10687
10688
10689
10690
10691
10692
10693
10694
10695
10696
10697
10698
10699
10700
10701
10702
10703
10704
10705
10706
10707
10708
10709
10710
10711
10712
10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
11068
11069
11070
11071
11072
11073
11074
11075
11076
11077
11078
11079
11080
11081
11082
11083
11084
11085
11086
11087
11088
11089
11090
11091
11092
11093
11094
11095
11096
11097
11098
11099
11100
11101
11102
11103
11104
11105
11106
11107
11108
11109
11110
11111
11112
11113
11114
11115
11116
11117
11118
11119
11120
11121
11122
11123
11124
11125
11126
11127
11128
11129
11130
11131
11132
11133
11134
11135
11136
11137
11138
11139
11140
11141
11142
11143
11144
11145
11146
11147
11148
11149
11150
11151
11152
11153
11154
11155
11156
11157
11158
11159
11160
11161
11162
11163
11164
11165
11166
11167
11168
11169
11170
11171
11172
11173
11174
11175
11176
11177
11178
11179
11180
11181
11182
11183
11184
11185
11186
11187
11188
11189
11190
11191
11192
11193
11194
11195
11196
11197
11198
11199
11200
11201
11202
11203
11204
11205
11206
11207
11208
11209
11210
11211
11212
11213
11214
11215
11216
11217
11218
11219
11220
11221
11222
11223
11224
11225
11226
11227
11228
11229
11230
11231
11232
11233
11234
11235
11236
11237
11238
11239
11240
11241
11242
11243
11244
11245
11246
11247
11248
11249
11250
11251
11252
11253
11254
11255
11256
11257
11258
11259
11260
11261
11262
11263
11264
11265
11266
11267
11268
11269
11270
11271
11272
11273
11274
11275
11276
11277
11278
11279
11280
11281
11282
11283
11284
11285
11286
11287
11288
11289
11290
11291
11292
11293
11294
11295
11296
11297
11298
11299
11300
11301
11302
11303
11304
11305
11306
11307
11308
11309
11310
11311
11312
11313
11314
11315
11316
11317
11318
11319
11320
11321
11322
11323
11324
11325
11326
11327
11328
11329
11330
11331
11332
11333
11334
11335
11336
11337
11338
11339
11340
11341
11342
11343
11344
11345
11346
11347
11348
11349
11350
11351
11352
11353
11354
11355
11356
11357
11358
11359
11360
11361
11362
11363
11364
11365
11366
11367
11368
11369
11370
11371
11372
11373
11374
11375
11376
11377
11378
11379
11380
11381
11382
11383
11384
11385
11386
11387
11388
11389
11390
11391
11392
11393
11394
11395
11396
11397
11398
11399
11400
11401
11402
11403
11404
11405
11406
11407
11408
11409
11410
11411
11412
11413
11414
11415
11416
11417
11418
11419
11420
11421
11422
11423
11424
11425
11426
11427
11428
11429
11430
11431
11432
11433
11434
11435
11436
11437
11438
11439
11440
11441
11442
11443
11444
11445
11446
11447
11448
11449
11450
11451
11452
11453
11454
11455
11456
11457
11458
11459
11460
11461
11462
11463
11464
11465
11466
11467
11468
11469
11470
11471
11472
11473
11474
11475
11476
11477
11478
11479
11480
11481
11482
11483
11484
11485
11486
11487
11488
11489
11490
11491
11492
11493
11494
11495
11496
11497
11498
11499
11500
11501
11502
11503
11504
11505
11506
11507
11508
11509
11510
11511
11512
11513
11514
11515
11516
11517
11518
11519
11520
11521
11522
11523
11524
11525
11526
11527
11528
11529
11530
11531
11532
11533
11534
11535
11536
11537
11538
11539
11540
11541
11542
11543
11544
11545
11546
11547
11548
11549
11550
11551
11552
11553
11554
11555
11556
11557
11558
11559
11560
11561
11562
11563
11564
11565
11566
11567
11568
11569
11570
11571
11572
11573
11574
11575
11576
11577
11578
11579
11580
11581
11582
11583
11584
11585
11586
11587
11588
11589
11590
11591
11592
11593
11594
11595
11596
11597
11598
11599
11600
11601
11602
11603
11604
11605
11606
11607
11608
11609
11610
11611
11612
11613
11614
11615
11616
11617
11618
11619
11620
11621
11622
11623
11624
11625
11626
11627
11628
11629
11630
11631
11632
11633
11634
11635
11636
11637
11638
11639
11640
11641
11642
11643
11644
11645
11646
11647
11648
11649
11650
11651
11652
11653
11654
11655
11656
11657
11658
11659
11660
11661
11662
11663
11664
11665
11666
11667
11668
11669
11670
11671
11672
11673
11674
11675
11676
11677
11678
11679
11680
11681
11682
11683
11684
11685
11686
11687
11688
11689
11690
11691
11692
11693
11694
11695
11696
11697
11698
11699
11700
11701
11702
11703
11704
11705
11706
11707
11708
11709
11710
11711
11712
11713
11714
11715
11716
11717
11718
11719
11720
11721
11722
11723
11724
11725
11726
11727
11728
11729
11730
11731
11732
11733
11734
11735
11736
11737
11738
11739
11740
11741
11742
11743
11744
11745
11746
11747
11748
11749
11750
11751
11752
11753
11754
11755
11756
11757
11758
11759
11760
11761
11762
11763
11764
11765
11766
11767
11768
11769
11770
11771
11772
11773
11774
11775
11776
11777
11778
11779
11780
11781
11782
11783
11784
11785
11786
11787
11788
11789
11790
11791
11792
11793
11794
11795
11796
11797
11798
11799
11800
11801
11802
11803
11804
11805
11806
11807
11808
11809
11810
11811
11812
11813
11814
11815
11816
11817
11818
11819
11820
11821
11822
11823
11824
11825
11826
11827
11828
11829
11830
11831
11832
11833
11834
11835
11836
11837
11838
11839
11840
11841
11842
11843
11844
11845
11846
11847
11848
11849
11850
11851
11852
11853
11854
11855
11856
11857
11858
11859
11860
11861
11862
11863
11864
11865
11866
11867
11868
11869
11870
11871
11872
11873
11874
11875
11876
11877
11878
11879
11880
11881
11882
11883
11884
11885
11886
11887
11888
11889
11890
11891
11892
11893
11894
11895
11896
11897
11898
11899
11900
11901
11902
11903
11904
11905
11906
11907
11908
11909
11910
11911
11912
11913
11914
11915
11916
11917
11918
11919
11920
11921
11922
11923
11924
11925
11926
11927
11928
11929
11930
11931
11932
11933
11934
11935
11936
11937
11938
11939
11940
11941
11942
11943
11944
11945
11946
11947
11948
11949
11950
11951
11952
11953
11954
11955
11956
11957
11958
11959
11960
11961
11962
11963
11964
11965
11966
11967
11968
11969
11970
11971
11972
11973
11974
11975
11976
11977
11978
11979
11980
11981
11982
11983
11984
11985
11986
11987
11988
11989
11990
11991
11992
11993
11994
11995
11996
11997
11998
11999
12000
12001
12002
12003
12004
12005
12006
12007
12008
12009
12010
12011
12012
12013
12014
12015
12016
12017
12018
12019
12020
12021
12022
12023
12024
12025
12026
12027
12028
12029
12030
12031
12032
12033
12034
12035
12036
12037
12038
12039
12040
12041
12042
12043
12044
12045
12046
12047
12048
12049
12050
12051
12052
12053
12054
12055
12056
12057
12058
12059
12060
12061
12062
12063
12064
12065
12066
12067
12068
12069
12070
12071
12072
12073
12074
12075
12076
12077
12078
12079
12080
12081
12082
12083
12084
12085
12086
12087
12088
12089
12090
12091
12092
12093
12094
12095
12096
12097
12098
12099
12100
12101
12102
12103
12104
12105
12106
12107
12108
12109
12110
12111
12112
12113
12114
12115
12116
12117
12118
12119
12120
12121
12122
12123
12124
12125
12126
12127
12128
12129
12130
12131
12132
12133
12134
12135
12136
12137
12138
12139
12140
12141
12142
12143
12144
12145
12146
12147
12148
12149
12150
12151
12152
12153
12154
12155
12156
12157
12158
12159
12160
12161
12162
12163
12164
12165
12166
12167
12168
12169
12170
12171
12172
12173
12174
12175
12176
12177
12178
12179
12180
12181
12182
12183
12184
12185
12186
12187
12188
12189
12190
12191
12192
12193
12194
12195
12196
12197
12198
12199
12200
12201
12202
12203
12204
12205
12206
12207
12208
12209
12210
12211
12212
12213
12214
12215
12216
12217
12218
12219
12220
12221
12222
12223
12224
12225
12226
12227
12228
12229
12230
12231
12232
12233
12234
12235
12236
12237
12238
12239
12240
12241
12242
12243
12244
12245
12246
12247
12248
12249
12250
12251
12252
12253
12254
12255
12256
12257
12258
12259
12260
12261
12262
12263
12264
12265
12266
12267
12268
12269
12270
12271
12272
12273
12274
12275
12276
12277
12278
12279
12280
12281
12282
12283
12284
12285
12286
12287
12288
12289
12290
12291
12292
12293
12294
12295
12296
12297
12298
12299
12300
12301
12302
12303
12304
12305
12306
12307
12308
12309
12310
12311
12312
12313
12314
12315
12316
12317
12318
12319
12320
12321
12322
12323
12324
12325
12326
12327
12328
12329
12330
12331
12332
12333
12334
12335
12336
12337
12338
12339
12340
12341
12342
12343
12344
12345
12346
12347
12348
12349
12350
12351
12352
12353
12354
12355
12356
12357
12358
12359
12360
12361
12362
12363
12364
12365
12366
12367
12368
12369
12370
12371
12372
12373
12374
12375
12376
12377
12378
12379
12380
12381
12382
12383
12384
12385
12386
12387
12388
12389
12390
12391
12392
12393
12394
12395
12396
12397
12398
12399
12400
12401
12402
12403
12404
12405
12406
12407
12408
12409
12410
12411
12412
12413
12414
12415
12416
12417
12418
12419
12420
12421
12422
12423
12424
12425
12426
12427
12428
12429
12430
12431
12432
12433
12434
12435
12436
12437
12438
12439
12440
12441
12442
12443
12444
12445
12446
12447
12448
12449
12450
12451
12452
12453
12454
12455
12456
12457
12458
12459
12460
12461
12462
12463
12464
12465
12466
12467
12468
12469
12470
12471
12472
12473
12474
12475
12476
12477
12478
12479
12480
12481
12482
12483
12484
12485
12486
12487
12488
12489
12490
12491
12492
12493
12494
12495
12496
12497
12498
12499
12500
12501
12502
12503
12504
12505
12506
12507
12508
12509
12510
12511
12512
12513
12514
12515
12516
12517
12518
12519
12520
12521
12522
12523
12524
12525
12526
12527
12528
12529
12530
12531
12532
12533
12534
12535
12536
12537
12538
12539
12540
12541
12542
12543
12544
12545
12546
12547
12548
12549
12550
12551
12552
12553
12554
12555
12556
12557
12558
12559
12560
12561
12562
12563
12564
12565
12566
12567
12568
12569
12570
12571
12572
12573
12574
12575
12576
12577
12578
12579
12580
12581
12582
12583
12584
12585
12586
12587
12588
12589
12590
12591
12592
12593
12594
12595
12596
12597
12598
12599
12600
12601
12602
12603
12604
12605
12606
12607
12608
12609
12610
12611
12612
12613
12614
12615
12616
12617
12618
12619
12620
12621
12622
12623
12624
12625
12626
12627
12628
12629
12630
12631
12632
12633
12634
12635
12636
12637
12638
12639
12640
12641
12642
12643
12644
12645
12646
12647
12648
12649
12650
12651
12652
12653
12654
12655
12656
12657
12658
12659
12660
12661
12662
12663
12664
12665
12666
12667
12668
12669
12670
12671
12672
12673
12674
12675
12676
12677
12678
12679
12680
12681
12682
12683
12684
12685
12686
12687
12688
12689
12690
12691
12692
12693
12694
12695
12696
12697
12698
12699
12700
12701
12702
12703
12704
12705
12706
12707
12708
12709
12710
12711
12712
12713
12714
12715
12716
12717
12718
12719
12720
12721
12722
12723
12724
12725
12726
12727
12728
12729
12730
12731
12732
12733
12734
12735
12736
12737
12738
12739
12740
12741
12742
12743
12744
12745
12746
12747
12748
12749
12750
12751
12752
12753
12754
12755
12756
12757
12758
12759
12760
12761
12762
12763
12764
12765
12766
12767
12768
12769
12770
12771
12772
12773
12774
12775
12776
12777
12778
12779
12780
12781
12782
12783
12784
12785
12786
12787
12788
12789
12790
12791
12792
12793
12794
12795
12796
12797
12798
12799
12800
12801
12802
12803
12804
12805
12806
12807
12808
12809
12810
12811
12812
12813
12814
12815
12816
12817
12818
12819
12820
12821
12822
12823
12824
12825
12826
12827
12828
12829
12830
12831
12832
12833
12834
12835
12836
12837
12838
12839
12840
12841
12842
12843
12844
12845
12846
12847
12848
12849
12850
12851
12852
12853
12854
12855
12856
12857
12858
12859
12860
12861
12862
12863
12864
12865
12866
12867
12868
12869
12870
12871
12872
12873
12874
12875
12876
12877
12878
12879
12880
12881
12882
12883
12884
12885
12886
12887
12888
12889
12890
12891
12892
12893
12894
12895
12896
12897
12898
12899
12900
12901
12902
12903
12904
12905
12906
12907
12908
12909
12910
12911
12912
12913
12914
12915
12916
12917
12918
12919
12920
12921
12922
12923
12924
12925
12926
12927
12928
12929
12930
12931
12932
12933
12934
12935
12936
12937
12938
12939
12940
12941
12942
12943
12944
12945
12946
12947
12948
12949
12950
12951
12952
12953
12954
12955
12956
12957
12958
12959
12960
12961
12962
12963
12964
12965
12966
12967
12968
12969
12970
12971
12972
12973
12974
12975
12976
12977
12978
12979
12980
12981
12982
12983
12984
12985
12986
12987
12988
12989
12990
12991
12992
12993
12994
12995
12996
12997
12998
12999
13000
13001
13002
13003
13004
13005
13006
13007
13008
13009
13010
13011
13012
13013
13014
13015
13016
13017
13018
13019
13020
13021
13022
13023
13024
13025
13026
13027
13028
13029
13030
13031
13032
13033
13034
13035
13036
13037
13038
13039
13040
13041
13042
13043
13044
13045
13046
13047
13048
13049
13050
13051
13052
13053
13054
13055
13056
13057
13058
13059
13060
13061
13062
13063
13064
13065
13066
13067
13068
13069
13070
13071
13072
13073
13074
13075
13076
13077
13078
13079
13080
13081
13082
13083
13084
13085
13086
13087
13088
13089
13090
13091
13092
13093
13094
13095
13096
13097
13098
13099
13100
13101
13102
13103
13104
13105
13106
13107
13108
13109
13110
13111
13112
13113
13114
13115
13116
13117
13118
13119
13120
13121
13122
13123
13124
13125
13126
13127
13128
13129
13130
13131
13132
13133
13134
13135
13136
13137
13138
13139
13140
13141
13142
13143
13144
13145
13146
13147
13148
13149
13150
13151
13152
13153
13154
13155
13156
13157
13158
13159
13160
13161
13162
13163
13164
13165
13166
13167
13168
13169
13170
13171
13172
13173
13174
13175
13176
13177
13178
13179
13180
13181
13182
13183
13184
13185
13186
13187
13188
13189
13190
13191
13192
13193
13194
13195
13196
13197
13198
13199
13200
13201
13202
13203
13204
13205
13206
13207
13208
13209
13210
13211
13212
13213
13214
13215
13216
13217
13218
13219
13220
13221
13222
13223
13224
13225
13226
13227
13228
13229
13230
13231
13232
13233
13234
13235
13236
13237
13238
13239
13240
13241
13242
13243
13244
13245
13246
13247
13248
13249
13250
13251
13252
13253
13254
13255
13256
13257
13258
13259
13260
13261
13262
13263
13264
13265
13266
13267
13268
13269
13270
13271
13272
13273
13274
13275
13276
13277
13278
13279
13280
13281
13282
13283
13284
13285
13286
13287
13288
13289
13290
13291
13292
13293
13294
13295
13296
13297
13298
13299
13300
13301
13302
13303
13304
13305
13306
13307
13308
13309
13310
13311
13312
13313
13314
13315
13316
13317
13318
13319
13320
13321
13322
13323
13324
13325
13326
13327
13328
13329
13330
13331
13332
13333
13334
13335
13336
13337
13338
13339
13340
13341
13342
13343
13344
13345
13346
13347
13348
13349
13350
13351
13352
13353
13354
13355
13356
13357
13358
13359
13360
13361
13362
13363
13364
13365
13366
13367
13368
13369
13370
13371
13372
13373
13374
13375
13376
13377
13378
13379
13380
13381
13382
13383
13384
13385
13386
13387
13388
13389
13390
13391
13392
13393
13394
13395
13396
13397
13398
13399
13400
13401
13402
13403
13404
13405
13406
13407
13408
13409
13410
13411
13412
13413
13414
13415
13416
13417
13418
13419
13420
13421
13422
13423
13424
13425
13426
13427
13428
13429
13430
13431
13432
13433
13434
13435
13436
13437
13438
13439
13440
13441
13442
13443
13444
13445
13446
13447
13448
13449
13450
13451
13452
13453
13454
13455
13456
13457
13458
13459
13460
13461
13462
13463
13464
13465
13466
13467
13468
13469
13470
13471
13472
13473
13474
13475
13476
13477
13478
13479
13480
13481
13482
13483
13484
13485
13486
13487
13488
13489
13490
13491
13492
13493
13494
13495
13496
13497
13498
13499
13500
13501
13502
13503
13504
13505
13506
13507
13508
13509
13510
13511
13512
13513
13514
13515
13516
13517
13518
13519
13520
13521
13522
13523
13524
13525
13526
13527
13528
13529
13530
13531
13532
13533
13534
13535
13536
13537
13538
13539
13540
13541
13542
13543
13544
13545
13546
13547
13548
13549
13550
13551
13552
13553
13554
13555
13556
13557
13558
13559
13560
13561
13562
13563
13564
13565
13566
13567
13568
13569
13570
13571
13572
13573
13574
13575
13576
13577
13578
13579
13580
13581
13582
13583
13584
13585
13586
13587
13588
13589
13590
13591
13592
13593
13594
13595
13596
13597
13598
13599
13600
13601
13602
13603
13604
13605
13606
13607
13608
13609
13610
13611
13612
13613
13614
13615
13616
13617
13618
13619
13620
13621
13622
13623
13624
13625
13626
13627
13628
13629
13630
13631
13632
13633
13634
13635
13636
13637
13638
13639
13640
13641
13642
13643
13644
13645
13646
13647
13648
13649
13650
13651
13652
13653
13654
13655
13656
13657
13658
13659
13660
13661
13662
13663
13664
13665
13666
13667
13668
13669
13670
13671
13672
13673
13674
13675
13676
13677
13678
13679
13680
13681
13682
13683
13684
13685
13686
13687
13688
13689
13690
13691
13692
13693
13694
13695
13696
13697
13698
13699
13700
13701
13702
13703
13704
13705
13706
13707
13708
13709
13710
13711
13712
13713
13714
13715
13716
13717
13718
13719
13720
13721
13722
13723
13724
13725
13726
13727
13728
13729
13730
13731
13732
13733
13734
13735
13736
13737
13738
13739
13740
13741
13742
13743
13744
13745
13746
13747
13748
13749
13750
13751
13752
13753
13754
13755
13756
13757
13758
13759
13760
13761
13762
13763
13764
13765
13766
13767
13768
13769
13770
13771
13772
13773
13774
13775
13776
13777
13778
13779
13780
13781
13782
13783
13784
13785
13786
13787
13788
13789
13790
13791
13792
13793
13794
13795
13796
13797
13798
13799
13800
13801
13802
13803
13804
13805
13806
13807
13808
13809
13810
13811
13812
13813
13814
13815
13816
13817
13818
13819
13820
13821
13822
13823
13824
13825
13826
13827
13828
13829
13830
13831
13832
13833
13834
13835
13836
13837
13838
13839
13840
13841
13842
13843
13844
13845
13846
13847
13848
13849
13850
13851
13852
13853
13854
13855
13856
13857
13858
13859
13860
13861
13862
13863
13864
13865
13866
13867
13868
13869
13870
13871
13872
13873
13874
13875
13876
13877
13878
13879
13880
13881
13882
13883
13884
13885
13886
13887
13888
13889
13890
13891
13892
13893
13894
13895
13896
13897
13898
13899
13900
13901
13902
13903
13904
13905
13906
13907
13908
13909
13910
13911
13912
13913
13914
13915
13916
13917
13918
13919
13920
13921
13922
13923
13924
13925
13926
13927
13928
13929
13930
13931
13932
13933
13934
13935
13936
13937
13938
13939
13940
13941
13942
13943
13944
13945
13946
13947
13948
13949
13950
13951
13952
13953
13954
13955
13956
13957
13958
13959
13960
13961
13962
13963
13964
13965
13966
13967
13968
13969
13970
13971
13972
13973
13974
13975
13976
13977
13978
13979
13980
13981
13982
13983
13984
13985
13986
13987
13988
13989
13990
13991
13992
13993
13994
13995
13996
13997
13998
13999
14000
14001
14002
14003
14004
14005
14006
14007
14008
14009
14010
14011
14012
14013
14014
14015
14016
14017
14018
14019
14020
14021
14022
14023
14024
14025
14026
14027
14028
14029
14030
14031
14032
14033
14034
14035
14036
14037
14038
14039
14040
14041
14042
14043
14044
14045
14046
14047
14048
14049
14050
14051
14052
14053
14054
14055
14056
14057
14058
14059
14060
14061
14062
14063
14064
14065
14066
14067
14068
14069
14070
14071
14072
14073
14074
14075
14076
14077
14078
14079
14080
14081
14082
14083
14084
14085
14086
14087
14088
14089
14090
14091
14092
14093
14094
14095
14096
14097
14098
14099
14100
14101
14102
14103
14104
14105
14106
14107
14108
14109
14110
14111
14112
14113
14114
14115
14116
14117
14118
14119
14120
14121
14122
14123
14124
14125
14126
14127
14128
14129
14130
14131
14132
14133
14134
14135
14136
14137
14138
14139
14140
14141
14142
14143
14144
14145
14146
14147
14148
14149
14150
14151
14152
14153
14154
14155
14156
14157
14158
14159
14160
14161
14162
14163
14164
14165
14166
14167
14168
14169
14170
14171
14172
14173
14174
14175
14176
14177
14178
14179
14180
14181
14182
14183
14184
14185
14186
14187
14188
14189
14190
14191
14192
14193
14194
14195
14196
14197
14198
14199
14200
14201
14202
14203
14204
14205
14206
14207
14208
14209
14210
14211
14212
14213
14214
14215
14216
14217
14218
14219
14220
14221
14222
14223
14224
14225
14226
14227
14228
14229
14230
14231
14232
14233
14234
14235
14236
14237
14238
14239
14240
14241
14242
14243
14244
14245
14246
14247
14248
14249
14250
14251
14252
14253
14254
14255
14256
14257
14258
14259
14260
14261
14262
14263
14264
14265
14266
14267
14268
14269
14270
14271
14272
14273
14274
14275
14276
14277
14278
14279
14280
14281
14282
14283
14284
14285
14286
14287
14288
14289
14290
14291
14292
14293
14294
14295
14296
14297
14298
14299
14300
14301
14302
14303
14304
14305
14306
14307
14308
14309
14310
14311
14312
14313
14314
14315
14316
14317
14318
14319
14320
14321
14322
14323
14324
14325
14326
14327
14328
14329
14330
14331
14332
14333
14334
14335
14336
14337
14338
14339
14340
14341
14342
14343
14344
14345
14346
14347
14348
14349
14350
14351
14352
14353
14354
14355
14356
14357
14358
14359
14360
14361
14362
14363
14364
14365
14366
14367
14368
14369
14370
14371
14372
14373
14374
14375
14376
14377
14378
14379
14380
14381
14382
14383
14384
14385
14386
14387
14388
14389
14390
14391
14392
14393
14394
14395
14396
14397
14398
14399
14400
14401
14402
14403
14404
14405
14406
14407
14408
14409
14410
14411
14412
14413
14414
14415
14416
14417
14418
14419
14420
14421
14422
14423
14424
14425
14426
14427
14428
14429
14430
14431
14432
14433
14434
14435
14436
14437
14438
14439
14440
14441
14442
14443
14444
14445
14446
14447
14448
14449
14450
14451
14452
14453
14454
14455
14456
14457
14458
14459
14460
14461
14462
14463
14464
14465
14466
14467
14468
14469
14470
14471
14472
14473
14474
14475
14476
14477
14478
14479
14480
14481
14482
14483
14484
14485
14486
14487
14488
14489
14490
14491
14492
14493
14494
14495
14496
14497
14498
14499
14500
14501
14502
14503
14504
14505
14506
14507
14508
14509
14510
14511
14512
14513
14514
14515
14516
14517
14518
14519
14520
14521
14522
14523
14524
14525
14526
14527
14528
14529
14530
14531
14532
14533
14534
14535
14536
14537
14538
14539
14540
14541
14542
14543
14544
14545
14546
14547
14548
14549
14550
14551
14552
14553
14554
14555
14556
14557
14558
14559
14560
14561
14562
14563
14564
14565
14566
14567
14568
14569
14570
14571
14572
14573
14574
14575
14576
14577
14578
14579
14580
14581
14582
14583
14584
14585
14586
14587
14588
14589
14590
14591
14592
14593
14594
14595
14596
14597
14598
14599
14600
14601
14602
14603
14604
14605
14606
14607
14608
14609
14610
14611
14612
14613
14614
14615
14616
14617
14618
14619
14620
14621
14622
14623
14624
14625
14626
14627
14628
14629
14630
14631
14632
14633
14634
14635
14636
14637
14638
14639
14640
14641
14642
14643
14644
14645
14646
14647
14648
14649
14650
14651
14652
14653
14654
14655
14656
14657
14658
14659
14660
14661
14662
14663
14664
14665
14666
14667
14668
14669
14670
14671
14672
14673
14674
14675
14676
14677
14678
14679
14680
14681
14682
14683
14684
14685
14686
14687
14688
14689
14690
14691
14692
14693
14694
14695
14696
14697
14698
14699
14700
14701
14702
14703
14704
14705
14706
14707
14708
14709
14710
14711
14712
14713
14714
14715
14716
14717
14718
14719
14720
14721
14722
14723
14724
14725
14726
14727
14728
14729
14730
14731
14732
14733
14734
14735
14736
14737
14738
14739
14740
14741
14742
14743
14744
14745
14746
14747
14748
14749
14750
14751
14752
14753
14754
14755
14756
14757
14758
14759
14760
14761
14762
14763
14764
14765
14766
14767
14768
14769
14770
14771
14772
14773
14774
14775
14776
14777
14778
14779
14780
14781
14782
14783
14784
14785
14786
14787
14788
14789
14790
14791
14792
14793
14794
14795
14796
14797
14798
14799
14800
14801
14802
14803
14804
14805
14806
14807
14808
14809
14810
14811
14812
14813
14814
14815
14816
14817
14818
14819
14820
14821
14822
14823
14824
14825
14826
14827
14828
14829
14830
14831
14832
14833
14834
14835
14836
14837
14838
14839
14840
14841
14842
14843
14844
14845
14846
14847
14848
14849
14850
14851
14852
14853
14854
14855
14856
14857
14858
14859
14860
14861
14862
14863
14864
14865
14866
14867
14868
14869
14870
14871
14872
14873
14874
14875
14876
14877
14878
14879
14880
14881
14882
14883
14884
14885
14886
14887
14888
14889
14890
14891
14892
14893
14894
14895
14896
14897
14898
14899
14900
14901
14902
14903
14904
14905
14906
14907
14908
14909
14910
14911
14912
14913
14914
14915
14916
14917
14918
14919
14920
14921
14922
14923
14924
14925
14926
14927
14928
14929
14930
14931
14932
14933
14934
14935
14936
14937
14938
14939
14940
14941
14942
14943
14944
14945
14946
14947
14948
14949
14950
14951
14952
14953
14954
14955
14956
14957
14958
14959
14960
14961
14962
14963
14964
14965
14966
14967
14968
14969
14970
14971
14972
14973
14974
14975
14976
14977
14978
14979
14980
14981
14982
14983
14984
14985
14986
14987
14988
14989
14990
14991
14992
14993
14994
14995
14996
14997
14998
14999
15000
15001
15002
15003
15004
15005
15006
15007
15008
15009
15010
15011
15012
15013
15014
15015
15016
15017
15018
15019
15020
15021
15022
15023
15024
15025
15026
15027
15028
15029
15030
15031
15032
15033
15034
15035
15036
15037
15038
15039
15040
15041
15042
15043
15044
15045
15046
15047
15048
15049
15050
15051
15052
15053
15054
15055
15056
15057
15058
15059
15060
15061
15062
15063
15064
15065
15066
15067
15068
15069
15070
15071
15072
15073
15074
15075
15076
15077
15078
15079
15080
15081
15082
15083
15084
15085
15086
15087
15088
15089
15090
15091
15092
15093
15094
15095
15096
15097
15098
15099
15100
15101
15102
15103
15104
15105
15106
15107
15108
15109
15110
15111
15112
15113
15114
15115
15116
15117
15118
15119
15120
15121
15122
15123
15124
15125
15126
15127
15128
15129
15130
15131
15132
15133
15134
15135
15136
15137
15138
15139
15140
15141
15142
15143
15144
15145
15146
15147
15148
15149
15150
15151
15152
15153
15154
15155
15156
15157
15158
15159
15160
15161
15162
15163
15164
15165
15166
15167
15168
15169
15170
15171
15172
15173
15174
15175
15176
15177
15178
15179
15180
15181
15182
15183
15184
15185
15186
15187
15188
15189
15190
15191
15192
15193
15194
15195
15196
15197
15198
15199
15200
15201
15202
15203
15204
15205
15206
15207
15208
15209
15210
15211
15212
15213
15214
15215
15216
15217
15218
15219
15220
15221
15222
15223
15224
15225
15226
15227
15228
15229
15230
15231
15232
15233
15234
15235
15236
15237
15238
15239
15240
15241
15242
15243
15244
15245
15246
15247
15248
15249
15250
15251
15252
15253
15254
15255
15256
15257
15258
15259
15260
15261
15262
15263
15264
15265
15266
15267
15268
15269
15270
15271
15272
15273
15274
15275
15276
15277
15278
15279
15280
15281
15282
15283
15284
15285
15286
15287
15288
15289
15290
15291
15292
15293
15294
15295
15296
15297
15298
15299
15300
15301
15302
15303
15304
15305
15306
15307
15308
15309
15310
15311
15312
15313
15314
15315
15316
15317
15318
15319
15320
15321
15322
15323
15324
15325
15326
15327
15328
15329
15330
15331
15332
15333
15334
15335
15336
15337
15338
15339
15340
15341
15342
15343
15344
15345
15346
15347
15348
15349
15350
15351
15352
15353
15354
15355
15356
15357
15358
15359
15360
15361
15362
15363
15364
15365
15366
15367
15368
15369
15370
15371
15372
15373
15374
15375
15376
15377
15378
15379
15380
15381
15382
15383
15384
15385
15386
15387
15388
15389
15390
15391
15392
15393
15394
15395
15396
15397
15398
15399
15400
15401
15402
15403
15404
15405
15406
15407
15408
15409
15410
15411
15412
15413
15414
15415
15416
15417
15418
15419
15420
15421
15422
15423
15424
15425
15426
15427
15428
15429
15430
15431
15432
15433
15434
15435
15436
15437
15438
15439
15440
15441
15442
15443
15444
15445
15446
15447
15448
15449
15450
15451
15452
15453
15454
15455
15456
15457
15458
15459
15460
15461
15462
15463
15464
15465
15466
15467
15468
15469
15470
15471
15472
15473
15474
15475
15476
15477
15478
15479
15480
15481
15482
15483
15484
15485
15486
15487
15488
15489
15490
15491
15492
15493
15494
15495
15496
15497
15498
15499
15500
15501
15502
15503
15504
15505
15506
15507
15508
15509
15510
15511
15512
15513
15514
15515
15516
15517
15518
15519
15520
15521
15522
15523
15524
15525
15526
15527
15528
15529
15530
15531
15532
15533
15534
15535
15536
15537
15538
15539
15540
15541
15542
15543
15544
15545
15546
15547
15548
15549
15550
15551
15552
15553
15554
15555
15556
15557
15558
15559
15560
15561
15562
15563
15564
15565
15566
15567
15568
15569
15570
15571
15572
15573
15574
15575
15576
15577
15578
15579
15580
15581
15582
15583
15584
15585
15586
15587
15588
15589
15590
15591
15592
15593
15594
15595
15596
15597
15598
15599
15600
15601
15602
15603
15604
15605
15606
15607
15608
15609
15610
15611
15612
15613
15614
15615
15616
15617
15618
15619
15620
15621
15622
15623
15624
15625
15626
15627
15628
15629
15630
15631
15632
15633
15634
15635
15636
15637
15638
15639
15640
15641
15642
15643
15644
15645
15646
15647
15648
15649
15650
15651
15652
15653
15654
15655
15656
15657
15658
15659
15660
15661
15662
15663
15664
15665
15666
15667
15668
15669
15670
15671
15672
15673
15674
15675
15676
15677
15678
15679
15680
15681
15682
15683
15684
15685
15686
15687
15688
15689
15690
15691
15692
15693
15694
15695
15696
15697
15698
15699
15700
15701
15702
15703
15704
15705
15706
15707
15708
15709
15710
15711
15712
15713
15714
15715
15716
15717
15718
15719
15720
15721
15722
15723
15724
15725
15726
15727
15728
15729
15730
15731
15732
15733
15734
15735
15736
15737
15738
15739
15740
15741
15742
15743
15744
15745
15746
15747
15748
15749
15750
15751
15752
15753
15754
15755
15756
15757
15758
15759
15760
15761
15762
15763
15764
15765
15766
15767
15768
15769
15770
15771
15772
15773
15774
15775
15776
15777
15778
15779
15780
15781
15782
15783
15784
15785
15786
15787
15788
15789
15790
15791
15792
15793
15794
15795
15796
15797
15798
15799
15800
15801
15802
15803
15804
15805
15806
15807
15808
15809
15810
15811
15812
15813
15814
15815
15816
15817
15818
15819
15820
15821
15822
15823
15824
15825
15826
15827
15828
15829
15830
15831
15832
15833
15834
15835
15836
15837
15838
15839
15840
15841
15842
15843
15844
15845
15846
15847
15848
15849
15850
15851
15852
15853
15854
15855
15856
15857
15858
15859
15860
15861
15862
15863
15864
15865
15866
15867
15868
15869
15870
15871
15872
15873
15874
15875
15876
15877
15878
15879
15880
15881
15882
15883
15884
15885
15886
15887
15888
15889
15890
15891
15892
15893
15894
15895
15896
15897
15898
15899
15900
15901
15902
15903
15904
15905
15906
15907
15908
15909
15910
15911
15912
15913
15914
15915
15916
15917
15918
15919
15920
15921
15922
15923
15924
15925
15926
15927
15928
15929
15930
15931
15932
15933
15934
15935
15936
15937
15938
15939
15940
15941
15942
15943
15944
15945
15946
15947
15948
15949
15950
15951
15952
15953
15954
15955
15956
15957
15958
15959
15960
15961
15962
15963
15964
15965
15966
15967
15968
15969
15970
15971
15972
15973
15974
15975
15976
15977
15978
15979
15980
15981
15982
15983
15984
15985
15986
15987
15988
15989
15990
15991
15992
15993
15994
15995
15996
15997
15998
15999
16000
16001
16002
16003
16004
16005
16006
16007
16008
16009
16010
16011
16012
16013
16014
16015
16016
16017
16018
16019
16020
16021
16022
16023
16024
16025
16026
16027
16028
16029
16030
16031
16032
16033
16034
16035
16036
16037
16038
16039
16040
16041
16042
16043
16044
16045
16046
16047
16048
16049
16050
16051
16052
16053
16054
16055
16056
16057
16058
16059
16060
16061
16062
16063
16064
16065
16066
16067
16068
16069
16070
16071
16072
16073
16074
16075
16076
16077
16078
16079
16080
16081
16082
16083
16084
16085
16086
16087
16088
16089
16090
16091
16092
16093
16094
16095
16096
16097
16098
16099
16100
16101
16102
16103
16104
16105
16106
16107
16108
16109
16110
16111
16112
16113
16114
16115
16116
16117
16118
16119
16120
16121
16122
16123
16124
16125
16126
16127
16128
16129
16130
16131
16132
16133
16134
16135
16136
16137
16138
16139
16140
16141
16142
16143
16144
16145
16146
16147
16148
16149
16150
16151
16152
16153
16154
16155
16156
16157
16158
16159
16160
16161
16162
16163
16164
16165
16166
16167
16168
16169
16170
16171
16172
16173
16174
16175
16176
16177
16178
16179
16180
16181
16182
16183
16184
16185
16186
16187
16188
16189
16190
16191
16192
16193
16194
16195
16196
16197
16198
16199
16200
16201
16202
16203
16204
16205
16206
16207
16208
16209
16210
16211
16212
16213
16214
16215
16216
16217
16218
16219
16220
16221
16222
16223
16224
16225
16226
16227
16228
16229
16230
16231
16232
16233
16234
16235
16236
16237
16238
16239
16240
16241
16242
16243
16244
16245
16246
16247
16248
16249
16250
16251
16252
16253
16254
16255
16256
16257
16258
16259
16260
16261
16262
16263
16264
16265
16266
16267
16268
16269
16270
16271
16272
16273
16274
16275
16276
16277
16278
16279
16280
16281
16282
16283
16284
16285
16286
16287
16288
16289
16290
16291
16292
16293
16294
16295
16296
16297
16298
16299
16300
16301
16302
16303
16304
16305
16306
16307
16308
16309
16310
16311
16312
16313
16314
16315
16316
16317
16318
16319
16320
16321
16322
16323
16324
16325
16326
16327
16328
16329
16330
16331
16332
16333
16334
16335
16336
16337
16338
16339
16340
16341
16342
16343
16344
16345
16346
16347
16348
16349
16350
16351
16352
16353
16354
16355
16356
16357
16358
16359
16360
16361
16362
16363
16364
16365
16366
16367
16368
16369
16370
16371
16372
16373
16374
16375
16376
16377
16378
16379
16380
16381
16382
16383
16384
16385
16386
16387
16388
16389
16390
16391
16392
16393
16394
16395
16396
16397
16398
16399
16400
16401
16402
16403
16404
16405
16406
16407
16408
16409
16410
16411
16412
16413
16414
16415
16416
16417
16418
16419
16420
16421
16422
16423
16424
16425
16426
16427
16428
16429
16430
16431
16432
16433
16434
16435
16436
16437
16438
16439
16440
16441
16442
16443
16444
16445
16446
16447
16448
16449
16450
16451
16452
16453
16454
16455
16456
16457
16458
16459
16460
16461
16462
16463
16464
16465
16466
16467
16468
16469
16470
16471
16472
16473
16474
16475
16476
16477
16478
16479
16480
16481
16482
16483
16484
16485
16486
16487
16488
16489
16490
16491
16492
16493
16494
16495
16496
16497
16498
16499
16500
16501
16502
16503
16504
16505
16506
16507
16508
16509
16510
16511
16512
16513
16514
16515
16516
16517
16518
16519
16520
16521
16522
16523
16524
16525
16526
16527
16528
16529
16530
16531
16532
16533
16534
16535
16536
16537
16538
16539
16540
16541
16542
16543
16544
16545
16546
16547
16548
16549
16550
16551
16552
16553
16554
16555
16556
16557
16558
16559
16560
16561
16562
16563
16564
16565
16566
16567
16568
16569
16570
16571
16572
16573
16574
16575
16576
16577
16578
16579
16580
16581
16582
16583
16584
16585
16586
16587
16588
16589
16590
16591
16592
16593
16594
16595
16596
16597
16598
16599
16600
16601
16602
16603
16604
16605
16606
16607
16608
16609
16610
16611
16612
16613
16614
16615
16616
16617
16618
16619
16620
16621
16622
16623
16624
16625
16626
16627
16628
16629
16630
16631
16632
16633
16634
16635
16636
16637
16638
16639
16640
16641
16642
16643
16644
16645
16646
16647
16648
16649
16650
16651
16652
16653
16654
16655
16656
16657
16658
16659
16660
16661
16662
16663
16664
16665
16666
16667
16668
16669
16670
16671
16672
16673
16674
16675
16676
16677
16678
16679
16680
16681
16682
16683
16684
16685
16686
16687
16688
16689
16690
16691
16692
16693
16694
16695
16696
16697
16698
16699
16700
16701
16702
/* Copyright (c) 2018, 2019 Evan Nemerson <evan@nemerson.com>
 *
 * Permission is hereby granted, free of charge, to any person
 * obtaining a copy of this software and associated documentation
 * files (the "Software"), to deal in the Software without
 * restriction, including without limitation the rights to use, copy,
 * modify, merge, publish, distribute, sublicense, and/or sell copies
 * of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

#define SIMDE_TESTS_CURRENT_ISAX avx
#if !defined(__clang__) && (defined(__linux__) || defined(__linux) || defined(__gnu_linux__)) && !defined(_GNU_SOURCE)
  #define _GNU_SOURCE 1  // for MAP_ANONYMOUS
#endif
#include <simde/x86/avx.h>
#include <test/x86/test-avx.h>
#if !defined(HEDLEY_MSVC_VERSION)
  #include <sys/mman.h>
#endif

HEDLEY_DIAGNOSTIC_PUSH
HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION

static simde_float32 u32_to_f32(uint32_t u32) {
  simde_float32 f32;
  simde_memcpy(&f32, &u32, sizeof(f32));
  return f32;
}

static simde_float64 u64_to_f64(uint64_t u64) {
  simde_float64 f64;
  simde_memcpy(&f64, &u64, sizeof(f64));
  return f64;
}

HEDLEY_DIAGNOSTIC_POP

static int
test_simde_mm256_set_epi8(SIMDE_MUNIT_TEST_ARGS) {
  for (size_t i = 0 ; i < 32 ; i++) {
    int8_t a[32];
    simde__m256i r;

    simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
    r = simde_mm256_set_epi8(a[31], a[30], a[29], a[28], a[27], a[26], a[25], a[24],
                             a[23], a[22], a[21], a[20], a[19], a[18], a[17], a[16],
                             a[15], a[14], a[13], a[12], a[11], a[10], a[ 9], a[ 8],
                             a[ 7], a[ 6], a[ 5], a[ 4], a[ 3], a[ 2], a[ 1], a[ 0]);

    simde_test_x86_assert_equal_i8x32(simde_x_mm256_loadu_epi8(a), r);
  }

  return 0;
}

static int
test_simde_mm256_set_epi16(SIMDE_MUNIT_TEST_ARGS) {
  for (size_t i = 0 ; i < 16 ; i++) {
    int16_t a[16];
    simde__m256i r;

    simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
    r = simde_mm256_set_epi16(a[15], a[14], a[13], a[12], a[11], a[10], a[ 9], a[ 8],
                              a[ 7], a[ 6], a[ 5], a[ 4], a[ 3], a[ 2], a[ 1], a[ 0]);

    simde_test_x86_assert_equal_i16x16(simde_x_mm256_loadu_epi16(a), r);
  }

  return 0;
}

static int
test_simde_mm256_set_epi32(SIMDE_MUNIT_TEST_ARGS) {
  for (size_t i = 0 ; i < 32 ; i++) {
    int32_t a[8];
    simde__m256i r;

    simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
    r = simde_mm256_set_epi32(a[7], a[6], a[5], a[4], a[3], a[2], a[1], a[0]);

    simde_test_x86_assert_equal_i32x8(simde_x_mm256_loadu_epi32(a), r);
  }

  return 0;
}

static int
test_simde_mm256_set_epi64x(SIMDE_MUNIT_TEST_ARGS) {
  for (size_t i = 0 ; i < 64 ; i++) {
    int64_t a[4];
    simde__m256i r;

    simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
    r = simde_mm256_set_epi64x(a[3], a[2], a[1], a[0]);

    simde_test_x86_assert_equal_i64x4(simde_x_mm256_loadu_epi64(a), r);
  }

  return 0;
}

static int
test_simde_mm256_set_ps(SIMDE_MUNIT_TEST_ARGS) {
  struct {
    simde_float32 a[sizeof(simde__m256) / sizeof(simde_float32)];
    simde_float32 r[sizeof(simde__m256) / sizeof(simde_float32)];
  } test_vec[] = {
    { { SIMDE_FLOAT32_C(  -114.94), SIMDE_FLOAT32_C(  -844.95), SIMDE_FLOAT32_C(   616.69), SIMDE_FLOAT32_C(  -717.57),
        SIMDE_FLOAT32_C(   321.75), SIMDE_FLOAT32_C(   709.09), SIMDE_FLOAT32_C(  -540.81), SIMDE_FLOAT32_C(   218.53) },
      { SIMDE_FLOAT32_C(  -114.94), SIMDE_FLOAT32_C(  -844.95), SIMDE_FLOAT32_C(   616.69), SIMDE_FLOAT32_C(  -717.57),
        SIMDE_FLOAT32_C(   321.75), SIMDE_FLOAT32_C(   709.09), SIMDE_FLOAT32_C(  -540.81), SIMDE_FLOAT32_C(   218.53) } },
    { { SIMDE_FLOAT32_C(  -651.16), SIMDE_FLOAT32_C(  -438.85), SIMDE_FLOAT32_C(     9.87), SIMDE_FLOAT32_C(   429.00),
        SIMDE_FLOAT32_C(   129.97), SIMDE_FLOAT32_C(   774.42), SIMDE_FLOAT32_C(  -864.41), SIMDE_FLOAT32_C(  -659.36) },
      { SIMDE_FLOAT32_C(  -651.16), SIMDE_FLOAT32_C(  -438.85), SIMDE_FLOAT32_C(     9.87), SIMDE_FLOAT32_C(   429.00),
        SIMDE_FLOAT32_C(   129.97), SIMDE_FLOAT32_C(   774.42), SIMDE_FLOAT32_C(  -864.41), SIMDE_FLOAT32_C(  -659.36) } },
    { { SIMDE_FLOAT32_C(   454.07), SIMDE_FLOAT32_C(  -313.38), SIMDE_FLOAT32_C(   658.78), SIMDE_FLOAT32_C(   553.99),
        SIMDE_FLOAT32_C(   841.57), SIMDE_FLOAT32_C(  -926.85), SIMDE_FLOAT32_C(  -371.71), SIMDE_FLOAT32_C(  -519.83) },
      { SIMDE_FLOAT32_C(   454.07), SIMDE_FLOAT32_C(  -313.38), SIMDE_FLOAT32_C(   658.78), SIMDE_FLOAT32_C(   553.99),
        SIMDE_FLOAT32_C(   841.57), SIMDE_FLOAT32_C(  -926.85), SIMDE_FLOAT32_C(  -371.71), SIMDE_FLOAT32_C(  -519.83) } },
    { { SIMDE_FLOAT32_C(  -569.24), SIMDE_FLOAT32_C(  -886.28), SIMDE_FLOAT32_C(   502.22), SIMDE_FLOAT32_C(   647.50),
        SIMDE_FLOAT32_C(   962.06), SIMDE_FLOAT32_C(   396.40), SIMDE_FLOAT32_C(   624.85), SIMDE_FLOAT32_C(  -152.88) },
      { SIMDE_FLOAT32_C(  -569.24), SIMDE_FLOAT32_C(  -886.28), SIMDE_FLOAT32_C(   502.22), SIMDE_FLOAT32_C(   647.50),
        SIMDE_FLOAT32_C(   962.06), SIMDE_FLOAT32_C(   396.40), SIMDE_FLOAT32_C(   624.85), SIMDE_FLOAT32_C(  -152.88) } },
    { { SIMDE_FLOAT32_C(   551.45), SIMDE_FLOAT32_C(   241.55), SIMDE_FLOAT32_C(   129.54), SIMDE_FLOAT32_C(  -126.80),
        SIMDE_FLOAT32_C(   -49.37), SIMDE_FLOAT32_C(   588.74), SIMDE_FLOAT32_C(  -908.27), SIMDE_FLOAT32_C(   299.47) },
      { SIMDE_FLOAT32_C(   551.45), SIMDE_FLOAT32_C(   241.55), SIMDE_FLOAT32_C(   129.54), SIMDE_FLOAT32_C(  -126.80),
        SIMDE_FLOAT32_C(   -49.37), SIMDE_FLOAT32_C(   588.74), SIMDE_FLOAT32_C(  -908.27), SIMDE_FLOAT32_C(   299.47) } },
    { { SIMDE_FLOAT32_C(  -850.12), SIMDE_FLOAT32_C(   101.60), SIMDE_FLOAT32_C(  -271.53), SIMDE_FLOAT32_C(   279.86),
        SIMDE_FLOAT32_C(  -123.98), SIMDE_FLOAT32_C(  -135.94), SIMDE_FLOAT32_C(   620.49), SIMDE_FLOAT32_C(  -669.90) },
      { SIMDE_FLOAT32_C(  -850.12), SIMDE_FLOAT32_C(   101.60), SIMDE_FLOAT32_C(  -271.53), SIMDE_FLOAT32_C(   279.86),
        SIMDE_FLOAT32_C(  -123.98), SIMDE_FLOAT32_C(  -135.94), SIMDE_FLOAT32_C(   620.49), SIMDE_FLOAT32_C(  -669.90) } },
    { { SIMDE_FLOAT32_C(   550.68), SIMDE_FLOAT32_C(   279.27), SIMDE_FLOAT32_C(   884.09), SIMDE_FLOAT32_C(   392.25),
        SIMDE_FLOAT32_C(   352.43), SIMDE_FLOAT32_C(  -487.62), SIMDE_FLOAT32_C(   872.43), SIMDE_FLOAT32_C(   783.18) },
      { SIMDE_FLOAT32_C(   550.68), SIMDE_FLOAT32_C(   279.27), SIMDE_FLOAT32_C(   884.09), SIMDE_FLOAT32_C(   392.25),
        SIMDE_FLOAT32_C(   352.43), SIMDE_FLOAT32_C(  -487.62), SIMDE_FLOAT32_C(   872.43), SIMDE_FLOAT32_C(   783.18) } },
    { { SIMDE_FLOAT32_C(  -373.91), SIMDE_FLOAT32_C(   374.65), SIMDE_FLOAT32_C(   430.69), SIMDE_FLOAT32_C(  -411.85),
        SIMDE_FLOAT32_C(  -228.96), SIMDE_FLOAT32_C(    55.54), SIMDE_FLOAT32_C(   435.27), SIMDE_FLOAT32_C(  -677.51) },
      { SIMDE_FLOAT32_C(  -373.91), SIMDE_FLOAT32_C(   374.65), SIMDE_FLOAT32_C(   430.69), SIMDE_FLOAT32_C(  -411.85),
        SIMDE_FLOAT32_C(  -228.96), SIMDE_FLOAT32_C(    55.54), SIMDE_FLOAT32_C(   435.27), SIMDE_FLOAT32_C(  -677.51) } }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_float32* a = test_vec[i].a;
    simde__m256 r = simde_mm256_set_ps(a[7], a[6], a[5], a[4], a[3], a[2], a[1], a[0]);
    simde_test_x86_assert_equal_f32x8(r, simde_mm256_loadu_ps(test_vec[i].r), 1);
  }

  return 0;
}

static int
test_simde_mm256_set_pd(SIMDE_MUNIT_TEST_ARGS) {
  struct {
    simde_float64 a[sizeof(simde__m256) / sizeof(simde_float64)];
    simde_float64 r[sizeof(simde__m256) / sizeof(simde_float64)];
  } test_vec[] = {
    { { SIMDE_FLOAT64_C(   237.07), SIMDE_FLOAT64_C(  -691.18), SIMDE_FLOAT64_C(  -606.39), SIMDE_FLOAT64_C(    84.18) },
      { SIMDE_FLOAT64_C(   237.07), SIMDE_FLOAT64_C(  -691.18), SIMDE_FLOAT64_C(  -606.39), SIMDE_FLOAT64_C(    84.18) } },
    { { SIMDE_FLOAT64_C(   106.38), SIMDE_FLOAT64_C(  -554.05), SIMDE_FLOAT64_C(   782.28), SIMDE_FLOAT64_C(  -694.29) },
      { SIMDE_FLOAT64_C(   106.38), SIMDE_FLOAT64_C(  -554.05), SIMDE_FLOAT64_C(   782.28), SIMDE_FLOAT64_C(  -694.29) } },
    { { SIMDE_FLOAT64_C(   250.86), SIMDE_FLOAT64_C(  -269.75), SIMDE_FLOAT64_C(  -927.01), SIMDE_FLOAT64_C(   214.49) },
      { SIMDE_FLOAT64_C(   250.86), SIMDE_FLOAT64_C(  -269.75), SIMDE_FLOAT64_C(  -927.01), SIMDE_FLOAT64_C(   214.49) } },
    { { SIMDE_FLOAT64_C(   515.10), SIMDE_FLOAT64_C(  -597.89), SIMDE_FLOAT64_C(   888.27), SIMDE_FLOAT64_C(  -756.42) },
      { SIMDE_FLOAT64_C(   515.10), SIMDE_FLOAT64_C(  -597.89), SIMDE_FLOAT64_C(   888.27), SIMDE_FLOAT64_C(  -756.42) } },
    { { SIMDE_FLOAT64_C(   947.11), SIMDE_FLOAT64_C(  -148.81), SIMDE_FLOAT64_C(   852.53), SIMDE_FLOAT64_C(   316.80) },
      { SIMDE_FLOAT64_C(   947.11), SIMDE_FLOAT64_C(  -148.81), SIMDE_FLOAT64_C(   852.53), SIMDE_FLOAT64_C(   316.80) } },
    { { SIMDE_FLOAT64_C(  -150.15), SIMDE_FLOAT64_C(  -882.96), SIMDE_FLOAT64_C(   -23.16), SIMDE_FLOAT64_C(   367.96) },
      { SIMDE_FLOAT64_C(  -150.15), SIMDE_FLOAT64_C(  -882.96), SIMDE_FLOAT64_C(   -23.16), SIMDE_FLOAT64_C(   367.96) } },
    { { SIMDE_FLOAT64_C(  -169.14), SIMDE_FLOAT64_C(   745.70), SIMDE_FLOAT64_C(  -976.16), SIMDE_FLOAT64_C(   641.22) },
      { SIMDE_FLOAT64_C(  -169.14), SIMDE_FLOAT64_C(   745.70), SIMDE_FLOAT64_C(  -976.16), SIMDE_FLOAT64_C(   641.22) } },
    { { SIMDE_FLOAT64_C(  -923.21), SIMDE_FLOAT64_C(   559.44), SIMDE_FLOAT64_C(  -648.43), SIMDE_FLOAT64_C(   313.86) },
      { SIMDE_FLOAT64_C(  -923.21), SIMDE_FLOAT64_C(   559.44), SIMDE_FLOAT64_C(  -648.43), SIMDE_FLOAT64_C(   313.86) } }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_float64* a = test_vec[i].a;
    simde__m256d r = simde_mm256_set_pd(a[3], a[2], a[1], a[0]);
    simde_test_x86_assert_equal_f64x4(r, simde_mm256_loadu_pd(test_vec[i].r), 1);
  }

  return 0;
}

static int
test_simde_mm256_set_m128(SIMDE_MUNIT_TEST_ARGS) {
  struct {
    simde_float32 lo[sizeof(simde__m128) / sizeof(simde_float32)];
    simde_float32 hi[sizeof(simde__m128) / sizeof(simde_float32)];
    simde_float32 r[sizeof(simde__m256) / sizeof(simde_float32)];
  } test_vec[] = {
    { { SIMDE_FLOAT32_C(   955.26), SIMDE_FLOAT32_C(  -742.43), SIMDE_FLOAT32_C(  -685.02), SIMDE_FLOAT32_C(   649.65) },
      { SIMDE_FLOAT32_C(    76.57), SIMDE_FLOAT32_C(   826.18), SIMDE_FLOAT32_C(   499.67), SIMDE_FLOAT32_C(   965.25) },
      { SIMDE_FLOAT32_C(   955.26), SIMDE_FLOAT32_C(  -742.43), SIMDE_FLOAT32_C(  -685.02), SIMDE_FLOAT32_C(   649.65),
        SIMDE_FLOAT32_C(    76.57), SIMDE_FLOAT32_C(   826.18), SIMDE_FLOAT32_C(   499.67), SIMDE_FLOAT32_C(   965.25) } },
    { { SIMDE_FLOAT32_C(  -924.37), SIMDE_FLOAT32_C(  -870.83), SIMDE_FLOAT32_C(   379.26), SIMDE_FLOAT32_C(   192.12) },
      { SIMDE_FLOAT32_C(   260.12), SIMDE_FLOAT32_C(   -54.88), SIMDE_FLOAT32_C(  -275.93), SIMDE_FLOAT32_C(    53.40) },
      { SIMDE_FLOAT32_C(  -924.37), SIMDE_FLOAT32_C(  -870.83), SIMDE_FLOAT32_C(   379.26), SIMDE_FLOAT32_C(   192.12),
        SIMDE_FLOAT32_C(   260.12), SIMDE_FLOAT32_C(   -54.88), SIMDE_FLOAT32_C(  -275.93), SIMDE_FLOAT32_C(    53.40) } },
    { { SIMDE_FLOAT32_C(   572.77), SIMDE_FLOAT32_C(   -29.00), SIMDE_FLOAT32_C(   535.58), SIMDE_FLOAT32_C(  -761.05) },
      { SIMDE_FLOAT32_C(  -139.13), SIMDE_FLOAT32_C(   923.28), SIMDE_FLOAT32_C(   643.94), SIMDE_FLOAT32_C(  -866.67) },
      { SIMDE_FLOAT32_C(   572.77), SIMDE_FLOAT32_C(   -29.00), SIMDE_FLOAT32_C(   535.58), SIMDE_FLOAT32_C(  -761.05),
        SIMDE_FLOAT32_C(  -139.13), SIMDE_FLOAT32_C(   923.28), SIMDE_FLOAT32_C(   643.94), SIMDE_FLOAT32_C(  -866.67) } },
    { { SIMDE_FLOAT32_C(   430.48), SIMDE_FLOAT32_C(   138.84), SIMDE_FLOAT32_C(  -254.67), SIMDE_FLOAT32_C(  -492.95) },
      { SIMDE_FLOAT32_C(  -242.21), SIMDE_FLOAT32_C(  -193.36), SIMDE_FLOAT32_C(  -353.17), SIMDE_FLOAT32_C(   -95.67) },
      { SIMDE_FLOAT32_C(   430.48), SIMDE_FLOAT32_C(   138.84), SIMDE_FLOAT32_C(  -254.67), SIMDE_FLOAT32_C(  -492.95),
        SIMDE_FLOAT32_C(  -242.21), SIMDE_FLOAT32_C(  -193.36), SIMDE_FLOAT32_C(  -353.17), SIMDE_FLOAT32_C(   -95.67) } },
    { { SIMDE_FLOAT32_C(  -497.42), SIMDE_FLOAT32_C(  -212.71), SIMDE_FLOAT32_C(  -430.07), SIMDE_FLOAT32_C(   762.70) },
      { SIMDE_FLOAT32_C(   -34.98), SIMDE_FLOAT32_C(  -754.99), SIMDE_FLOAT32_C(  -527.69), SIMDE_FLOAT32_C(   -79.72) },
      { SIMDE_FLOAT32_C(  -497.42), SIMDE_FLOAT32_C(  -212.71), SIMDE_FLOAT32_C(  -430.07), SIMDE_FLOAT32_C(   762.70),
        SIMDE_FLOAT32_C(   -34.98), SIMDE_FLOAT32_C(  -754.99), SIMDE_FLOAT32_C(  -527.69), SIMDE_FLOAT32_C(   -79.72) } },
    { { SIMDE_FLOAT32_C(   423.17), SIMDE_FLOAT32_C(  -804.64), SIMDE_FLOAT32_C(     0.17), SIMDE_FLOAT32_C(  -715.96) },
      { SIMDE_FLOAT32_C(   732.41), SIMDE_FLOAT32_C(   294.00), SIMDE_FLOAT32_C(  -183.90), SIMDE_FLOAT32_C(   808.04) },
      { SIMDE_FLOAT32_C(   423.17), SIMDE_FLOAT32_C(  -804.64), SIMDE_FLOAT32_C(     0.17), SIMDE_FLOAT32_C(  -715.96),
        SIMDE_FLOAT32_C(   732.41), SIMDE_FLOAT32_C(   294.00), SIMDE_FLOAT32_C(  -183.90), SIMDE_FLOAT32_C(   808.04) } },
    { { SIMDE_FLOAT32_C(   615.10), SIMDE_FLOAT32_C(   952.95), SIMDE_FLOAT32_C(   930.37), SIMDE_FLOAT32_C(  -627.11) },
      { SIMDE_FLOAT32_C(  -881.36), SIMDE_FLOAT32_C(  -355.90), SIMDE_FLOAT32_C(  -582.63), SIMDE_FLOAT32_C(   691.42) },
      { SIMDE_FLOAT32_C(   615.10), SIMDE_FLOAT32_C(   952.95), SIMDE_FLOAT32_C(   930.37), SIMDE_FLOAT32_C(  -627.11),
        SIMDE_FLOAT32_C(  -881.36), SIMDE_FLOAT32_C(  -355.90), SIMDE_FLOAT32_C(  -582.63), SIMDE_FLOAT32_C(   691.42) } },
    { { SIMDE_FLOAT32_C(   716.04), SIMDE_FLOAT32_C(  -977.44), SIMDE_FLOAT32_C(  -302.88), SIMDE_FLOAT32_C(  -318.94) },
      { SIMDE_FLOAT32_C(  -240.41), SIMDE_FLOAT32_C(  -422.80), SIMDE_FLOAT32_C(   277.23), SIMDE_FLOAT32_C(  -809.93) },
      { SIMDE_FLOAT32_C(   716.04), SIMDE_FLOAT32_C(  -977.44), SIMDE_FLOAT32_C(  -302.88), SIMDE_FLOAT32_C(  -318.94),
        SIMDE_FLOAT32_C(  -240.41), SIMDE_FLOAT32_C(  -422.80), SIMDE_FLOAT32_C(   277.23), SIMDE_FLOAT32_C(  -809.93) } }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde__m128
      lo = simde_mm_loadu_ps(test_vec[i].lo),
      hi = simde_mm_loadu_ps(test_vec[i].hi);
    simde__m256 r = simde_mm256_set_m128(hi, lo);
    simde_test_x86_assert_equal_f32x8(r, simde_mm256_loadu_ps(test_vec[i].r), 1);
  }

  return 0;
}

static int
test_simde_mm256_set_m128d(SIMDE_MUNIT_TEST_ARGS) {
  struct {
    simde_float64 lo[sizeof(simde__m128d) / sizeof(simde_float64)];
    simde_float64 hi[sizeof(simde__m128d) / sizeof(simde_float64)];
    simde_float64 r[sizeof(simde__m256) / sizeof(simde_float64)];
  } test_vec[] = {
    { { SIMDE_FLOAT64_C(   102.87), SIMDE_FLOAT64_C(   237.14) },
      { SIMDE_FLOAT64_C(   970.02), SIMDE_FLOAT64_C(   617.63) },
      { SIMDE_FLOAT64_C(   102.87), SIMDE_FLOAT64_C(   237.14), SIMDE_FLOAT64_C(   970.02), SIMDE_FLOAT64_C(   617.63) } },
    { { SIMDE_FLOAT64_C(  -786.65), SIMDE_FLOAT64_C(   343.67) },
      { SIMDE_FLOAT64_C(  -249.99), SIMDE_FLOAT64_C(  -396.81) },
      { SIMDE_FLOAT64_C(  -786.65), SIMDE_FLOAT64_C(   343.67), SIMDE_FLOAT64_C(  -249.99), SIMDE_FLOAT64_C(  -396.81) } },
    { { SIMDE_FLOAT64_C(   334.77), SIMDE_FLOAT64_C(   890.51) },
      { SIMDE_FLOAT64_C(   -50.87), SIMDE_FLOAT64_C(  -723.47) },
      { SIMDE_FLOAT64_C(   334.77), SIMDE_FLOAT64_C(   890.51), SIMDE_FLOAT64_C(   -50.87), SIMDE_FLOAT64_C(  -723.47) } },
    { { SIMDE_FLOAT64_C(  -834.03), SIMDE_FLOAT64_C(  -242.09) },
      { SIMDE_FLOAT64_C(  -638.54), SIMDE_FLOAT64_C(   -98.76) },
      { SIMDE_FLOAT64_C(  -834.03), SIMDE_FLOAT64_C(  -242.09), SIMDE_FLOAT64_C(  -638.54), SIMDE_FLOAT64_C(   -98.76) } },
    { { SIMDE_FLOAT64_C(   453.20), SIMDE_FLOAT64_C(   958.59) },
      { SIMDE_FLOAT64_C(   231.94), SIMDE_FLOAT64_C(  -131.61) },
      { SIMDE_FLOAT64_C(   453.20), SIMDE_FLOAT64_C(   958.59), SIMDE_FLOAT64_C(   231.94), SIMDE_FLOAT64_C(  -131.61) } },
    { { SIMDE_FLOAT64_C(  -981.17), SIMDE_FLOAT64_C(  -996.20) },
      { SIMDE_FLOAT64_C(   210.92), SIMDE_FLOAT64_C(  -800.51) },
      { SIMDE_FLOAT64_C(  -981.17), SIMDE_FLOAT64_C(  -996.20), SIMDE_FLOAT64_C(   210.92), SIMDE_FLOAT64_C(  -800.51) } },
    { { SIMDE_FLOAT64_C(   774.24), SIMDE_FLOAT64_C(  -383.33) },
      { SIMDE_FLOAT64_C(  -513.10), SIMDE_FLOAT64_C(   -84.69) },
      { SIMDE_FLOAT64_C(   774.24), SIMDE_FLOAT64_C(  -383.33), SIMDE_FLOAT64_C(  -513.10), SIMDE_FLOAT64_C(   -84.69) } },
    { { SIMDE_FLOAT64_C(   101.10), SIMDE_FLOAT64_C(  -236.55) },
      { SIMDE_FLOAT64_C(  -206.58), SIMDE_FLOAT64_C(    21.06) },
      { SIMDE_FLOAT64_C(   101.10), SIMDE_FLOAT64_C(  -236.55), SIMDE_FLOAT64_C(  -206.58), SIMDE_FLOAT64_C(    21.06) } }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde__m128d
      lo = simde_mm_loadu_pd(test_vec[i].lo),
      hi = simde_mm_loadu_pd(test_vec[i].hi);
    simde__m256d r = simde_mm256_set_m128d(hi, lo);
    simde_test_x86_assert_equal_f64x4(r, simde_mm256_loadu_pd(test_vec[i].r), 1);
  }

  return 0;
}

static int
test_simde_mm256_set_m128i(SIMDE_MUNIT_TEST_ARGS) {
  struct {
    simde_float32 a[sizeof(simde__m256) / sizeof(simde_float32)];
    simde_float32 r[sizeof(simde__m256) / sizeof(simde_float32)];
  } test_vec[] = {
    { { SIMDE_FLOAT32_C(  -862.79), SIMDE_FLOAT32_C(   575.51), SIMDE_FLOAT32_C(  -229.06), SIMDE_FLOAT32_C(    41.19),
        SIMDE_FLOAT32_C(  -323.42), SIMDE_FLOAT32_C(  -210.46), SIMDE_FLOAT32_C(   770.69), SIMDE_FLOAT32_C(   519.80) },
      { SIMDE_FLOAT32_C(  -862.79), SIMDE_FLOAT32_C(   575.51), SIMDE_FLOAT32_C(  -229.06), SIMDE_FLOAT32_C(    41.19),
        SIMDE_FLOAT32_C(  -323.42), SIMDE_FLOAT32_C(  -210.46), SIMDE_FLOAT32_C(   770.69), SIMDE_FLOAT32_C(   519.80) } },
    { { SIMDE_FLOAT32_C(   547.64), SIMDE_FLOAT32_C(  -280.68), SIMDE_FLOAT32_C(  -533.93), SIMDE_FLOAT32_C(  -474.55),
        SIMDE_FLOAT32_C(   108.16), SIMDE_FLOAT32_C(   945.55), SIMDE_FLOAT32_C(  -578.81), SIMDE_FLOAT32_C(   909.72) },
      { SIMDE_FLOAT32_C(   547.64), SIMDE_FLOAT32_C(  -280.68), SIMDE_FLOAT32_C(  -533.93), SIMDE_FLOAT32_C(  -474.55),
        SIMDE_FLOAT32_C(   108.16), SIMDE_FLOAT32_C(   945.55), SIMDE_FLOAT32_C(  -578.81), SIMDE_FLOAT32_C(   909.72) } },
    { { SIMDE_FLOAT32_C(   712.09), SIMDE_FLOAT32_C(   149.26), SIMDE_FLOAT32_C(  -126.56), SIMDE_FLOAT32_C(  -722.11),
        SIMDE_FLOAT32_C(    49.51), SIMDE_FLOAT32_C(   630.17), SIMDE_FLOAT32_C(   155.12), SIMDE_FLOAT32_C(   912.29) },
      { SIMDE_FLOAT32_C(   712.09), SIMDE_FLOAT32_C(   149.26), SIMDE_FLOAT32_C(  -126.56), SIMDE_FLOAT32_C(  -722.11),
        SIMDE_FLOAT32_C(    49.51), SIMDE_FLOAT32_C(   630.17), SIMDE_FLOAT32_C(   155.12), SIMDE_FLOAT32_C(   912.29) } },
    { { SIMDE_FLOAT32_C(  -870.50), SIMDE_FLOAT32_C(  -720.59), SIMDE_FLOAT32_C(   906.13), SIMDE_FLOAT32_C(  -438.81),
        SIMDE_FLOAT32_C(    17.74), SIMDE_FLOAT32_C(   559.71), SIMDE_FLOAT32_C(  -313.51), SIMDE_FLOAT32_C(   154.94) },
      { SIMDE_FLOAT32_C(  -870.50), SIMDE_FLOAT32_C(  -720.59), SIMDE_FLOAT32_C(   906.13), SIMDE_FLOAT32_C(  -438.81),
        SIMDE_FLOAT32_C(    17.74), SIMDE_FLOAT32_C(   559.71), SIMDE_FLOAT32_C(  -313.51), SIMDE_FLOAT32_C(   154.94) } },
    { { SIMDE_FLOAT32_C(   135.22), SIMDE_FLOAT32_C(   457.42), SIMDE_FLOAT32_C(  -803.87), SIMDE_FLOAT32_C(   811.80),
        SIMDE_FLOAT32_C(  -753.03), SIMDE_FLOAT32_C(   966.83), SIMDE_FLOAT32_C(   331.60), SIMDE_FLOAT32_C(   794.61) },
      { SIMDE_FLOAT32_C(   135.22), SIMDE_FLOAT32_C(   457.42), SIMDE_FLOAT32_C(  -803.87), SIMDE_FLOAT32_C(   811.80),
        SIMDE_FLOAT32_C(  -753.03), SIMDE_FLOAT32_C(   966.83), SIMDE_FLOAT32_C(   331.60), SIMDE_FLOAT32_C(   794.61) } },
    { { SIMDE_FLOAT32_C(  -313.86), SIMDE_FLOAT32_C(   797.67), SIMDE_FLOAT32_C(  -679.93), SIMDE_FLOAT32_C(   794.30),
        SIMDE_FLOAT32_C(   743.22), SIMDE_FLOAT32_C(  -258.75), SIMDE_FLOAT32_C(   704.02), SIMDE_FLOAT32_C(   455.31) },
      { SIMDE_FLOAT32_C(  -313.86), SIMDE_FLOAT32_C(   797.67), SIMDE_FLOAT32_C(  -679.93), SIMDE_FLOAT32_C(   794.30),
        SIMDE_FLOAT32_C(   743.22), SIMDE_FLOAT32_C(  -258.75), SIMDE_FLOAT32_C(   704.02), SIMDE_FLOAT32_C(   455.31) } },
    { { SIMDE_FLOAT32_C(   890.51), SIMDE_FLOAT32_C(  -422.54), SIMDE_FLOAT32_C(   733.20), SIMDE_FLOAT32_C(   -59.98),
        SIMDE_FLOAT32_C(  -792.37), SIMDE_FLOAT32_C(  -111.68), SIMDE_FLOAT32_C(  -147.69), SIMDE_FLOAT32_C(  -662.87) },
      { SIMDE_FLOAT32_C(   890.51), SIMDE_FLOAT32_C(  -422.54), SIMDE_FLOAT32_C(   733.20), SIMDE_FLOAT32_C(   -59.98),
        SIMDE_FLOAT32_C(  -792.37), SIMDE_FLOAT32_C(  -111.68), SIMDE_FLOAT32_C(  -147.69), SIMDE_FLOAT32_C(  -662.87) } },
    { { SIMDE_FLOAT32_C(   167.73), SIMDE_FLOAT32_C(  -241.56), SIMDE_FLOAT32_C(  -101.68), SIMDE_FLOAT32_C(  -814.53),
        SIMDE_FLOAT32_C(  -681.85), SIMDE_FLOAT32_C(   584.81), SIMDE_FLOAT32_C(   340.41), SIMDE_FLOAT32_C(   453.36) },
      { SIMDE_FLOAT32_C(   167.73), SIMDE_FLOAT32_C(  -241.56), SIMDE_FLOAT32_C(  -101.68), SIMDE_FLOAT32_C(  -814.53),
        SIMDE_FLOAT32_C(  -681.85), SIMDE_FLOAT32_C(   584.81), SIMDE_FLOAT32_C(   340.41), SIMDE_FLOAT32_C(   453.36) } }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_float32* a = test_vec[i].a;
    simde__m256 r = simde_mm256_set_ps(a[7], a[6], a[5], a[4], a[3], a[2], a[1], a[0]);
    simde_test_x86_assert_equal_f32x8(r, simde_mm256_loadu_ps(test_vec[i].r), 1);
  }

  return 0;
}

static int
test_simde_mm256_set1_epi8(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    int8_t a;
    simde__m256i r;
  } test_vec[8] = {
    { 41,
      simde_mm256_set_epi8(INT8_C(  41), INT8_C(  41), INT8_C(  41), INT8_C(  41),
                           INT8_C(  41), INT8_C(  41), INT8_C(  41), INT8_C(  41),
                           INT8_C(  41), INT8_C(  41), INT8_C(  41), INT8_C(  41),
                           INT8_C(  41), INT8_C(  41), INT8_C(  41), INT8_C(  41),
                           INT8_C(  41), INT8_C(  41), INT8_C(  41), INT8_C(  41),
                           INT8_C(  41), INT8_C(  41), INT8_C(  41), INT8_C(  41),
                           INT8_C(  41), INT8_C(  41), INT8_C(  41), INT8_C(  41),
                           INT8_C(  41), INT8_C(  41), INT8_C(  41), INT8_C(  41)) },
    { -5,
      simde_mm256_set_epi8(INT8_C(  -5), INT8_C(  -5), INT8_C(  -5), INT8_C(  -5),
                           INT8_C(  -5), INT8_C(  -5), INT8_C(  -5), INT8_C(  -5),
                           INT8_C(  -5), INT8_C(  -5), INT8_C(  -5), INT8_C(  -5),
                           INT8_C(  -5), INT8_C(  -5), INT8_C(  -5), INT8_C(  -5),
                           INT8_C(  -5), INT8_C(  -5), INT8_C(  -5), INT8_C(  -5),
                           INT8_C(  -5), INT8_C(  -5), INT8_C(  -5), INT8_C(  -5),
                           INT8_C(  -5), INT8_C(  -5), INT8_C(  -5), INT8_C(  -5),
                           INT8_C(  -5), INT8_C(  -5), INT8_C(  -5), INT8_C(  -5)) },
    { -85,
      simde_mm256_set_epi8(INT8_C( -85), INT8_C( -85), INT8_C( -85), INT8_C( -85),
                           INT8_C( -85), INT8_C( -85), INT8_C( -85), INT8_C( -85),
                           INT8_C( -85), INT8_C( -85), INT8_C( -85), INT8_C( -85),
                           INT8_C( -85), INT8_C( -85), INT8_C( -85), INT8_C( -85),
                           INT8_C( -85), INT8_C( -85), INT8_C( -85), INT8_C( -85),
                           INT8_C( -85), INT8_C( -85), INT8_C( -85), INT8_C( -85),
                           INT8_C( -85), INT8_C( -85), INT8_C( -85), INT8_C( -85),
                           INT8_C( -85), INT8_C( -85), INT8_C( -85), INT8_C( -85)) },
    { 61,
      simde_mm256_set_epi8(INT8_C(  61), INT8_C(  61), INT8_C(  61), INT8_C(  61),
                           INT8_C(  61), INT8_C(  61), INT8_C(  61), INT8_C(  61),
                           INT8_C(  61), INT8_C(  61), INT8_C(  61), INT8_C(  61),
                           INT8_C(  61), INT8_C(  61), INT8_C(  61), INT8_C(  61),
                           INT8_C(  61), INT8_C(  61), INT8_C(  61), INT8_C(  61),
                           INT8_C(  61), INT8_C(  61), INT8_C(  61), INT8_C(  61),
                           INT8_C(  61), INT8_C(  61), INT8_C(  61), INT8_C(  61),
                           INT8_C(  61), INT8_C(  61), INT8_C(  61), INT8_C(  61)) },
    { -125,
      simde_mm256_set_epi8(INT8_C(-125), INT8_C(-125), INT8_C(-125), INT8_C(-125),
                           INT8_C(-125), INT8_C(-125), INT8_C(-125), INT8_C(-125),
                           INT8_C(-125), INT8_C(-125), INT8_C(-125), INT8_C(-125),
                           INT8_C(-125), INT8_C(-125), INT8_C(-125), INT8_C(-125),
                           INT8_C(-125), INT8_C(-125), INT8_C(-125), INT8_C(-125),
                           INT8_C(-125), INT8_C(-125), INT8_C(-125), INT8_C(-125),
                           INT8_C(-125), INT8_C(-125), INT8_C(-125), INT8_C(-125),
                           INT8_C(-125), INT8_C(-125), INT8_C(-125), INT8_C(-125)) },
    { -117,
      simde_mm256_set_epi8(INT8_C(-117), INT8_C(-117), INT8_C(-117), INT8_C(-117),
                           INT8_C(-117), INT8_C(-117), INT8_C(-117), INT8_C(-117),
                           INT8_C(-117), INT8_C(-117), INT8_C(-117), INT8_C(-117),
                           INT8_C(-117), INT8_C(-117), INT8_C(-117), INT8_C(-117),
                           INT8_C(-117), INT8_C(-117), INT8_C(-117), INT8_C(-117),
                           INT8_C(-117), INT8_C(-117), INT8_C(-117), INT8_C(-117),
                           INT8_C(-117), INT8_C(-117), INT8_C(-117), INT8_C(-117),
                           INT8_C(-117), INT8_C(-117), INT8_C(-117), INT8_C(-117)) },
    { 5,
      simde_mm256_set_epi8(INT8_C(   5), INT8_C(   5), INT8_C(   5), INT8_C(   5),
                           INT8_C(   5), INT8_C(   5), INT8_C(   5), INT8_C(   5),
                           INT8_C(   5), INT8_C(   5), INT8_C(   5), INT8_C(   5),
                           INT8_C(   5), INT8_C(   5), INT8_C(   5), INT8_C(   5),
                           INT8_C(   5), INT8_C(   5), INT8_C(   5), INT8_C(   5),
                           INT8_C(   5), INT8_C(   5), INT8_C(   5), INT8_C(   5),
                           INT8_C(   5), INT8_C(   5), INT8_C(   5), INT8_C(   5),
                           INT8_C(   5), INT8_C(   5), INT8_C(   5), INT8_C(   5)) },
    { -41,
      simde_mm256_set_epi8(INT8_C( -41), INT8_C( -41), INT8_C( -41), INT8_C( -41),
                           INT8_C( -41), INT8_C( -41), INT8_C( -41), INT8_C( -41),
                           INT8_C( -41), INT8_C( -41), INT8_C( -41), INT8_C( -41),
                           INT8_C( -41), INT8_C( -41), INT8_C( -41), INT8_C( -41),
                           INT8_C( -41), INT8_C( -41), INT8_C( -41), INT8_C( -41),
                           INT8_C( -41), INT8_C( -41), INT8_C( -41), INT8_C( -41),
                           INT8_C( -41), INT8_C( -41), INT8_C( -41), INT8_C( -41),
                           INT8_C( -41), INT8_C( -41), INT8_C( -41), INT8_C( -41)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256i r = simde_mm256_set1_epi8(test_vec[i].a);
    simde_assert_m256i_i8(r, ==, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_set1_epi16(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    int16_t a;
    simde__m256i r;
  } test_vec[8] = {
    { INT16_C( -7117),
      simde_mm256_set_epi16(INT16_C( -7117), INT16_C( -7117), INT16_C( -7117), INT16_C( -7117),
                            INT16_C( -7117), INT16_C( -7117), INT16_C( -7117), INT16_C( -7117),
                            INT16_C( -7117), INT16_C( -7117), INT16_C( -7117), INT16_C( -7117),
                            INT16_C( -7117), INT16_C( -7117), INT16_C( -7117), INT16_C( -7117)) },
    { INT16_C( -4832),
      simde_mm256_set_epi16(INT16_C( -4832), INT16_C( -4832), INT16_C( -4832), INT16_C( -4832),
                            INT16_C( -4832), INT16_C( -4832), INT16_C( -4832), INT16_C( -4832),
                            INT16_C( -4832), INT16_C( -4832), INT16_C( -4832), INT16_C( -4832),
                            INT16_C( -4832), INT16_C( -4832), INT16_C( -4832), INT16_C( -4832)) },
    { INT16_C( 20615),
      simde_mm256_set_epi16(INT16_C( 20615), INT16_C( 20615), INT16_C( 20615), INT16_C( 20615),
                            INT16_C( 20615), INT16_C( 20615), INT16_C( 20615), INT16_C( 20615),
                            INT16_C( 20615), INT16_C( 20615), INT16_C( 20615), INT16_C( 20615),
                            INT16_C( 20615), INT16_C( 20615), INT16_C( 20615), INT16_C( 20615)) },
    { INT16_C(-30117),
      simde_mm256_set_epi16(INT16_C(-30117), INT16_C(-30117), INT16_C(-30117), INT16_C(-30117),
                            INT16_C(-30117), INT16_C(-30117), INT16_C(-30117), INT16_C(-30117),
                            INT16_C(-30117), INT16_C(-30117), INT16_C(-30117), INT16_C(-30117),
                            INT16_C(-30117), INT16_C(-30117), INT16_C(-30117), INT16_C(-30117)) },
    { INT16_C( 32088),
      simde_mm256_set_epi16(INT16_C( 32088), INT16_C( 32088), INT16_C( 32088), INT16_C( 32088),
                            INT16_C( 32088), INT16_C( 32088), INT16_C( 32088), INT16_C( 32088),
                            INT16_C( 32088), INT16_C( 32088), INT16_C( 32088), INT16_C( 32088),
                            INT16_C( 32088), INT16_C( 32088), INT16_C( 32088), INT16_C( 32088)) },
    { INT16_C(-14076),
      simde_mm256_set_epi16(INT16_C(-14076), INT16_C(-14076), INT16_C(-14076), INT16_C(-14076),
                            INT16_C(-14076), INT16_C(-14076), INT16_C(-14076), INT16_C(-14076),
                            INT16_C(-14076), INT16_C(-14076), INT16_C(-14076), INT16_C(-14076),
                            INT16_C(-14076), INT16_C(-14076), INT16_C(-14076), INT16_C(-14076)) },
    { INT16_C( -9132),
      simde_mm256_set_epi16(INT16_C( -9132), INT16_C( -9132), INT16_C( -9132), INT16_C( -9132),
                            INT16_C( -9132), INT16_C( -9132), INT16_C( -9132), INT16_C( -9132),
                            INT16_C( -9132), INT16_C( -9132), INT16_C( -9132), INT16_C( -9132),
                            INT16_C( -9132), INT16_C( -9132), INT16_C( -9132), INT16_C( -9132)) },
    { INT16_C(-24801),
      simde_mm256_set_epi16(INT16_C(-24801), INT16_C(-24801), INT16_C(-24801), INT16_C(-24801),
                            INT16_C(-24801), INT16_C(-24801), INT16_C(-24801), INT16_C(-24801),
                            INT16_C(-24801), INT16_C(-24801), INT16_C(-24801), INT16_C(-24801),
                            INT16_C(-24801), INT16_C(-24801), INT16_C(-24801), INT16_C(-24801)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256i r = simde_mm256_set1_epi16(test_vec[i].a);
    simde_assert_m256i_i16(r, ==, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_set1_epi32(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    int32_t a;
    simde__m256i r;
  } test_vec[8] = {
    { INT32_C( 1458307866),
      simde_mm256_set_epi32(INT32_C( 1458307866), INT32_C( 1458307866), INT32_C( 1458307866), INT32_C( 1458307866),
                            INT32_C( 1458307866), INT32_C( 1458307866), INT32_C( 1458307866), INT32_C( 1458307866)) },
    { INT32_C(-1231481357),
      simde_mm256_set_epi32(INT32_C(-1231481357), INT32_C(-1231481357), INT32_C(-1231481357), INT32_C(-1231481357),
                            INT32_C(-1231481357), INT32_C(-1231481357), INT32_C(-1231481357), INT32_C(-1231481357)) },
    { INT32_C( 1330347041),
      simde_mm256_set_epi32(INT32_C( 1330347041), INT32_C( 1330347041), INT32_C( 1330347041), INT32_C( 1330347041),
                            INT32_C( 1330347041), INT32_C( 1330347041), INT32_C( 1330347041), INT32_C( 1330347041)) },
    { INT32_C(-2031969158),
      simde_mm256_set_epi32(INT32_C(-2031969158), INT32_C(-2031969158), INT32_C(-2031969158), INT32_C(-2031969158),
                            INT32_C(-2031969158), INT32_C(-2031969158), INT32_C(-2031969158), INT32_C(-2031969158)) },
    { INT32_C(  138293031),
      simde_mm256_set_epi32(INT32_C(  138293031), INT32_C(  138293031), INT32_C(  138293031), INT32_C(  138293031),
                            INT32_C(  138293031), INT32_C(  138293031), INT32_C(  138293031), INT32_C(  138293031)) },
    { INT32_C( -870589211),
      simde_mm256_set_epi32(INT32_C( -870589211), INT32_C( -870589211), INT32_C( -870589211), INT32_C( -870589211),
                            INT32_C( -870589211), INT32_C( -870589211), INT32_C( -870589211), INT32_C( -870589211)) },
    { INT32_C( 1439279097),
      simde_mm256_set_epi32(INT32_C( 1439279097), INT32_C( 1439279097), INT32_C( 1439279097), INT32_C( 1439279097),
                            INT32_C( 1439279097), INT32_C( 1439279097), INT32_C( 1439279097), INT32_C( 1439279097)) },
    { INT32_C( -102725779),
      simde_mm256_set_epi32(INT32_C( -102725779), INT32_C( -102725779), INT32_C( -102725779), INT32_C( -102725779),
                            INT32_C( -102725779), INT32_C( -102725779), INT32_C( -102725779), INT32_C( -102725779)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256i r = simde_mm256_set1_epi32(test_vec[i].a);
    simde_assert_m256i_i32(r, ==, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_set1_epi64x(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    int64_t a;
    simde__m256i r;
  } test_vec[8] = {
    { INT64_C( 5105791061004147197),
      simde_mm256_set_epi64x(INT64_C( 5105791061004147197), INT64_C( 5105791061004147197),
                             INT64_C( 5105791061004147197), INT64_C( 5105791061004147197)) },
    { INT64_C(-2078502026959165134),
      simde_mm256_set_epi64x(INT64_C(-2078502026959165134), INT64_C(-2078502026959165134),
                             INT64_C(-2078502026959165134), INT64_C(-2078502026959165134)) },
    { INT64_C( 3468007801991671414),
      simde_mm256_set_epi64x(INT64_C( 3468007801991671414), INT64_C( 3468007801991671414),
                             INT64_C( 3468007801991671414), INT64_C( 3468007801991671414)) },
    { INT64_C(-1026830878024479084),
      simde_mm256_set_epi64x(INT64_C(-1026830878024479084), INT64_C(-1026830878024479084),
                             INT64_C(-1026830878024479084), INT64_C(-1026830878024479084)) },
    { INT64_C(-5815393469667065909),
      simde_mm256_set_epi64x(INT64_C(-5815393469667065909), INT64_C(-5815393469667065909),
                             INT64_C(-5815393469667065909), INT64_C(-5815393469667065909)) },
    { INT64_C(-1858841878581774308),
      simde_mm256_set_epi64x(INT64_C(-1858841878581774308), INT64_C(-1858841878581774308),
                             INT64_C(-1858841878581774308), INT64_C(-1858841878581774308)) },
    { INT64_C( 6272125310275044670),
      simde_mm256_set_epi64x(INT64_C( 6272125310275044670), INT64_C( 6272125310275044670),
                             INT64_C( 6272125310275044670), INT64_C( 6272125310275044670)) },
    { INT64_C( 6393396529564376044),
      simde_mm256_set_epi64x(INT64_C( 6393396529564376044), INT64_C( 6393396529564376044),
                             INT64_C( 6393396529564376044), INT64_C( 6393396529564376044)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256i r = simde_mm256_set1_epi64x(test_vec[i].a);
    simde_assert_m256i_i64(r, ==, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_set1_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde_float32 a;
    simde__m256 r;
  } test_vec[8] = {
    { SIMDE_FLOAT32_C(  -73.91),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  -73.91), SIMDE_FLOAT32_C(  -73.91),
                         SIMDE_FLOAT32_C(  -73.91), SIMDE_FLOAT32_C(  -73.91),
                         SIMDE_FLOAT32_C(  -73.91), SIMDE_FLOAT32_C(  -73.91),
                         SIMDE_FLOAT32_C(  -73.91), SIMDE_FLOAT32_C(  -73.91)) },
    { SIMDE_FLOAT32_C(  953.36),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  953.36), SIMDE_FLOAT32_C(  953.36),
                         SIMDE_FLOAT32_C(  953.36), SIMDE_FLOAT32_C(  953.36),
                         SIMDE_FLOAT32_C(  953.36), SIMDE_FLOAT32_C(  953.36),
                         SIMDE_FLOAT32_C(  953.36), SIMDE_FLOAT32_C(  953.36)) },
    { SIMDE_FLOAT32_C(  888.18),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  888.18), SIMDE_FLOAT32_C(  888.18),
                         SIMDE_FLOAT32_C(  888.18), SIMDE_FLOAT32_C(  888.18),
                         SIMDE_FLOAT32_C(  888.18), SIMDE_FLOAT32_C(  888.18),
                         SIMDE_FLOAT32_C(  888.18), SIMDE_FLOAT32_C(  888.18)) },
    { SIMDE_FLOAT32_C(  232.71),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  232.71), SIMDE_FLOAT32_C(  232.71),
                         SIMDE_FLOAT32_C(  232.71), SIMDE_FLOAT32_C(  232.71),
                         SIMDE_FLOAT32_C(  232.71), SIMDE_FLOAT32_C(  232.71),
                         SIMDE_FLOAT32_C(  232.71), SIMDE_FLOAT32_C(  232.71)) },
    { SIMDE_FLOAT32_C( -598.38),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -598.38), SIMDE_FLOAT32_C( -598.38),
                         SIMDE_FLOAT32_C( -598.38), SIMDE_FLOAT32_C( -598.38),
                         SIMDE_FLOAT32_C( -598.38), SIMDE_FLOAT32_C( -598.38),
                         SIMDE_FLOAT32_C( -598.38), SIMDE_FLOAT32_C( -598.38)) },
    { SIMDE_FLOAT32_C(  762.88),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  762.88), SIMDE_FLOAT32_C(  762.88),
                         SIMDE_FLOAT32_C(  762.88), SIMDE_FLOAT32_C(  762.88),
                         SIMDE_FLOAT32_C(  762.88), SIMDE_FLOAT32_C(  762.88),
                         SIMDE_FLOAT32_C(  762.88), SIMDE_FLOAT32_C(  762.88)) },
    { SIMDE_FLOAT32_C( -225.89),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -225.89), SIMDE_FLOAT32_C( -225.89),
                         SIMDE_FLOAT32_C( -225.89), SIMDE_FLOAT32_C( -225.89),
                         SIMDE_FLOAT32_C( -225.89), SIMDE_FLOAT32_C( -225.89),
                         SIMDE_FLOAT32_C( -225.89), SIMDE_FLOAT32_C( -225.89)) },
    { SIMDE_FLOAT32_C( -115.32),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -115.32), SIMDE_FLOAT32_C( -115.32),
                         SIMDE_FLOAT32_C( -115.32), SIMDE_FLOAT32_C( -115.32),
                         SIMDE_FLOAT32_C( -115.32), SIMDE_FLOAT32_C( -115.32),
                         SIMDE_FLOAT32_C( -115.32), SIMDE_FLOAT32_C( -115.32)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256 r = simde_mm256_set1_ps(test_vec[i].a);
    simde_assert_m256_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_set1_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde_float64 a;
    simde__m256d r;
  } test_vec[8] = {
    { SIMDE_FLOAT64_C( -494.25),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -494.25), SIMDE_FLOAT64_C( -494.25),
                         SIMDE_FLOAT64_C( -494.25), SIMDE_FLOAT64_C( -494.25)) },
    { SIMDE_FLOAT64_C(  610.20),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  610.20), SIMDE_FLOAT64_C(  610.20),
                         SIMDE_FLOAT64_C(  610.20), SIMDE_FLOAT64_C(  610.20)) },
    { SIMDE_FLOAT64_C( -471.35),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -471.35), SIMDE_FLOAT64_C( -471.35),
                         SIMDE_FLOAT64_C( -471.35), SIMDE_FLOAT64_C( -471.35)) },
    { SIMDE_FLOAT64_C( -211.28),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -211.28), SIMDE_FLOAT64_C( -211.28),
                         SIMDE_FLOAT64_C( -211.28), SIMDE_FLOAT64_C( -211.28)) },
    { SIMDE_FLOAT64_C(  -27.80),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  -27.80), SIMDE_FLOAT64_C(  -27.80),
                         SIMDE_FLOAT64_C(  -27.80), SIMDE_FLOAT64_C(  -27.80)) },
    { SIMDE_FLOAT64_C(  866.02),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  866.02), SIMDE_FLOAT64_C(  866.02),
                         SIMDE_FLOAT64_C(  866.02), SIMDE_FLOAT64_C(  866.02)) },
    { SIMDE_FLOAT64_C( -278.22),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -278.22), SIMDE_FLOAT64_C( -278.22),
                         SIMDE_FLOAT64_C( -278.22), SIMDE_FLOAT64_C( -278.22)) },
    { SIMDE_FLOAT64_C(  868.90),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  868.90), SIMDE_FLOAT64_C(  868.90),
                         SIMDE_FLOAT64_C(  868.90), SIMDE_FLOAT64_C(  868.90)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256d r = simde_mm256_set1_pd(test_vec[i].a);
    simde_assert_m256d_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_x_mm256_deinterleaveeven_epi16 (SIMDE_MUNIT_TEST_ARGS) {
  static const struct {
    const int16_t a[16];
    const int16_t b[16];
    const int16_t r[16];
  } test_vec[] = {
    { { -INT16_C( 29098),  INT16_C( 21049),  INT16_C( 28104),  INT16_C(  2629), -INT16_C( 20812), -INT16_C(  9859), -INT16_C( 24603), -INT16_C( 22056),
        -INT16_C(  6828),  INT16_C(  2737),  INT16_C( 22872), -INT16_C(   974), -INT16_C( 27405),  INT16_C( 22221),  INT16_C(  1092), -INT16_C( 26097) },
      {  INT16_C( 18834),  INT16_C( 23277),  INT16_C( 12982),  INT16_C( 27236), -INT16_C(  7711), -INT16_C( 14781),  INT16_C(  7040), -INT16_C( 10896),
         INT16_C(  8448),  INT16_C( 23007),  INT16_C(  4731),  INT16_C( 28245),  INT16_C(  8870), -INT16_C(  5436), -INT16_C( 11226), -INT16_C( 18300) },
      { -INT16_C( 29098),  INT16_C( 28104), -INT16_C( 20812), -INT16_C( 24603),  INT16_C( 18834),  INT16_C( 12982), -INT16_C(  7711),  INT16_C(  7040),
        -INT16_C(  6828),  INT16_C( 22872), -INT16_C( 27405),  INT16_C(  1092),  INT16_C(  8448),  INT16_C(  4731),  INT16_C(  8870), -INT16_C( 11226) } },
    { {  INT16_C( 28957), -INT16_C( 11502),  INT16_C( 30372), -INT16_C( 31427), -INT16_C( 32425), -INT16_C( 10165), -INT16_C( 17508), -INT16_C( 25171),
        -INT16_C( 29475),  INT16_C( 22774),  INT16_C( 19358),  INT16_C( 17606), -INT16_C( 30099), -INT16_C( 27602), -INT16_C( 19618),  INT16_C( 31564) },
      {  INT16_C( 24356), -INT16_C( 14258), -INT16_C( 29483),  INT16_C( 11597), -INT16_C( 26355), -INT16_C( 22267), -INT16_C( 19884),  INT16_C( 12614),
         INT16_C( 15422), -INT16_C(  8823),  INT16_C( 20359), -INT16_C(  2783),  INT16_C( 20698),  INT16_C( 14473), -INT16_C( 11005),  INT16_C( 10164) },
      {  INT16_C( 28957),  INT16_C( 30372), -INT16_C( 32425), -INT16_C( 17508),  INT16_C( 24356), -INT16_C( 29483), -INT16_C( 26355), -INT16_C( 19884),
        -INT16_C( 29475),  INT16_C( 19358), -INT16_C( 30099), -INT16_C( 19618),  INT16_C( 15422),  INT16_C( 20359),  INT16_C( 20698), -INT16_C( 11005) } },
    { {  INT16_C(   564),  INT16_C(  2800),  INT16_C( 15758), -INT16_C( 25801),  INT16_C( 15574),  INT16_C( 11077), -INT16_C( 29714),  INT16_C( 11356),
        -INT16_C(  6456),  INT16_C( 20233),  INT16_C( 11061),  INT16_C(  3908), -INT16_C( 12933),  INT16_C( 32328), -INT16_C(   861), -INT16_C( 10331) },
      { -INT16_C( 27138), -INT16_C( 29215),  INT16_C(  6355), -INT16_C( 22232),  INT16_C( 27988),  INT16_C( 17108),  INT16_C( 12793), -INT16_C( 16017),
         INT16_C( 30743),  INT16_C( 19472),  INT16_C( 21923),  INT16_C(  7772), -INT16_C( 23518), -INT16_C( 14948),  INT16_C( 17056), -INT16_C( 24931) },
      {  INT16_C(   564),  INT16_C( 15758),  INT16_C( 15574), -INT16_C( 29714), -INT16_C( 27138),  INT16_C(  6355),  INT16_C( 27988),  INT16_C( 12793),
        -INT16_C(  6456),  INT16_C( 11061), -INT16_C( 12933), -INT16_C(   861),  INT16_C( 30743),  INT16_C( 21923), -INT16_C( 23518),  INT16_C( 17056) } },
    { {  INT16_C( 32471), -INT16_C( 21973),  INT16_C( 21655), -INT16_C(  5292),  INT16_C( 10433), -INT16_C( 17874), -INT16_C( 25255),  INT16_C( 28795),
        -INT16_C( 29675), -INT16_C( 17987),  INT16_C(  6625),  INT16_C(   983),  INT16_C( 29885),  INT16_C( 24009),  INT16_C( 26294), -INT16_C( 29189) },
      {  INT16_C( 10212),  INT16_C( 31544), -INT16_C( 29573),  INT16_C( 15463), -INT16_C( 27212),  INT16_C(  3831),  INT16_C( 29234),  INT16_C( 18302),
         INT16_C( 15358), -INT16_C(  8448), -INT16_C( 10156),  INT16_C(  4579), -INT16_C( 21428),  INT16_C(   622),  INT16_C( 27154), -INT16_C(  2417) },
      {  INT16_C( 32471),  INT16_C( 21655),  INT16_C( 10433), -INT16_C( 25255),  INT16_C( 10212), -INT16_C( 29573), -INT16_C( 27212),  INT16_C( 29234),
        -INT16_C( 29675),  INT16_C(  6625),  INT16_C( 29885),  INT16_C( 26294),  INT16_C( 15358), -INT16_C( 10156), -INT16_C( 21428),  INT16_C( 27154) } },
    { { -INT16_C( 14447),  INT16_C(  3186), -INT16_C(  9901),  INT16_C(  2120),  INT16_C( 16238), -INT16_C( 24554), -INT16_C( 27470), -INT16_C( 20249),
        -INT16_C(  5936),  INT16_C(  9360),  INT16_C( 29632),  INT16_C(  3126), -INT16_C( 23521),  INT16_C( 12558), -INT16_C( 25330), -INT16_C( 24793) },
      { -INT16_C( 26267), -INT16_C( 18261), -INT16_C(  2958), -INT16_C(  8000), -INT16_C( 10701), -INT16_C(  6784),  INT16_C( 26731),  INT16_C( 15254),
         INT16_C(  9808),  INT16_C(  4191), -INT16_C( 27239), -INT16_C( 18404),  INT16_C( 10810),  INT16_C( 18665),  INT16_C(  4295),  INT16_C( 11496) },
      { -INT16_C( 14447), -INT16_C(  9901),  INT16_C( 16238), -INT16_C( 27470), -INT16_C( 26267), -INT16_C(  2958), -INT16_C( 10701),  INT16_C( 26731),
        -INT16_C(  5936),  INT16_C( 29632), -INT16_C( 23521), -INT16_C( 25330),  INT16_C(  9808), -INT16_C( 27239),  INT16_C( 10810),  INT16_C(  4295) } },
    { { -INT16_C( 27734),  INT16_C(  7397), -INT16_C( 23161), -INT16_C( 17411),  INT16_C( 32124), -INT16_C(  6240),  INT16_C( 14053),  INT16_C( 13602),
        -INT16_C( 32420), -INT16_C(  2747),  INT16_C( 24855),  INT16_C( 20909), -INT16_C( 26997),  INT16_C( 21401), -INT16_C( 32345),  INT16_C( 20863) },
      {  INT16_C( 25621), -INT16_C( 25491),  INT16_C( 27146), -INT16_C( 31145), -INT16_C(  1816), -INT16_C( 12947), -INT16_C( 28882), -INT16_C( 29949),
         INT16_C( 18448),  INT16_C( 10112),  INT16_C( 11946),  INT16_C( 13688),  INT16_C(  4804),  INT16_C( 27528),  INT16_C(  2195), -INT16_C( 22340) },
      { -INT16_C( 27734), -INT16_C( 23161),  INT16_C( 32124),  INT16_C( 14053),  INT16_C( 25621),  INT16_C( 27146), -INT16_C(  1816), -INT16_C( 28882),
        -INT16_C( 32420),  INT16_C( 24855), -INT16_C( 26997), -INT16_C( 32345),  INT16_C( 18448),  INT16_C( 11946),  INT16_C(  4804),  INT16_C(  2195) } },
    { {  INT16_C( 10860),  INT16_C( 30277), -INT16_C( 25452),  INT16_C( 31996),  INT16_C( 27028), -INT16_C( 15542),  INT16_C( 19960),  INT16_C(  2382),
        -INT16_C( 12651),  INT16_C( 16176), -INT16_C( 22020), -INT16_C( 16011), -INT16_C(   581),  INT16_C( 20012), -INT16_C(  5883),  INT16_C( 29431) },
      {  INT16_C( 15379), -INT16_C( 22552), -INT16_C(  6696),  INT16_C( 27940),  INT16_C( 28238),  INT16_C( 18224),  INT16_C( 32443),  INT16_C( 20560),
        -INT16_C( 32692),  INT16_C( 18832),  INT16_C(  1321), -INT16_C(  7158),  INT16_C( 13826),  INT16_C(  2099),  INT16_C( 10783),  INT16_C( 12922) },
      {  INT16_C( 10860), -INT16_C( 25452),  INT16_C( 27028),  INT16_C( 19960),  INT16_C( 15379), -INT16_C(  6696),  INT16_C( 28238),  INT16_C( 32443),
        -INT16_C( 12651), -INT16_C( 22020), -INT16_C(   581), -INT16_C(  5883), -INT16_C( 32692),  INT16_C(  1321),  INT16_C( 13826),  INT16_C( 10783) } },
    { {  INT16_C( 25190),  INT16_C( 16090), -INT16_C(   441), -INT16_C( 26965), -INT16_C(  9364),  INT16_C( 10205),  INT16_C( 11609), -INT16_C( 22921),
         INT16_C(  1965), -INT16_C( 10257), -INT16_C(  1780),  INT16_C(  4027), -INT16_C(  4561),  INT16_C( 20247), -INT16_C( 28392),  INT16_C( 32385) },
      {  INT16_C( 23539),  INT16_C( 15293),  INT16_C( 26713), -INT16_C( 14895), -INT16_C( 20924), -INT16_C( 25108),  INT16_C( 25819), -INT16_C( 30653),
         INT16_C( 12907),  INT16_C( 30815),  INT16_C(  6955),  INT16_C( 23431), -INT16_C( 25079),  INT16_C(  8874),  INT16_C( 11055),  INT16_C(  8864) },
      {  INT16_C( 25190), -INT16_C(   441), -INT16_C(  9364),  INT16_C( 11609),  INT16_C( 23539),  INT16_C( 26713), -INT16_C( 20924),  INT16_C( 25819),
         INT16_C(  1965), -INT16_C(  1780), -INT16_C(  4561), -INT16_C( 28392),  INT16_C( 12907),  INT16_C(  6955), -INT16_C( 25079),  INT16_C( 11055) } }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde__m256i a = simde_x_mm256_loadu_epi16(test_vec[i].a);
    simde__m256i b = simde_x_mm256_loadu_epi16(test_vec[i].b);
    simde__m256i r = simde_x_mm256_deinterleaveeven_epi16(a, b);
    simde_test_x86_assert_equal_i16x16(r, simde_x_mm256_loadu_epi16(test_vec[i].r));
  }

  return 0;
}

static int
test_simde_x_mm256_deinterleaveodd_epi16 (SIMDE_MUNIT_TEST_ARGS) {
  static const struct {
    const int16_t a[16];
    const int16_t b[16];
    const int16_t r[16];
  } test_vec[] = {
    { {  INT16_C( 15247), -INT16_C( 26208), -INT16_C( 25489),  INT16_C( 16456), -INT16_C( 16003),  INT16_C( 13526),  INT16_C( 13559), -INT16_C( 25115),
        -INT16_C(  9262),  INT16_C(  3203), -INT16_C( 31835),  INT16_C(   158),  INT16_C( 13038), -INT16_C( 14959), -INT16_C( 10715), -INT16_C( 19425) },
      { -INT16_C( 16623), -INT16_C( 32435), -INT16_C( 27301), -INT16_C( 10047), -INT16_C( 26538),  INT16_C( 19725), -INT16_C(  3380), -INT16_C( 24854),
         INT16_C( 28110),  INT16_C( 29610),  INT16_C( 18929), -INT16_C(  8333),  INT16_C(  1147), -INT16_C( 24412), -INT16_C( 15398), -INT16_C(  5292) },
      { -INT16_C( 26208),  INT16_C( 16456),  INT16_C( 13526), -INT16_C( 25115), -INT16_C( 32435), -INT16_C( 10047),  INT16_C( 19725), -INT16_C( 24854),
         INT16_C(  3203),  INT16_C(   158), -INT16_C( 14959), -INT16_C( 19425),  INT16_C( 29610), -INT16_C(  8333), -INT16_C( 24412), -INT16_C(  5292) } },
    { { -INT16_C( 24190), -INT16_C(  8852),  INT16_C( 11830), -INT16_C( 29258), -INT16_C( 15418), -INT16_C( 27942), -INT16_C( 14923), -INT16_C( 31952),
        -INT16_C(  9678),  INT16_C(  9206),  INT16_C( 26915), -INT16_C( 24829), -INT16_C( 22675),  INT16_C( 18239), -INT16_C( 27541), -INT16_C(  4813) },
      { -INT16_C( 24779),  INT16_C( 27851), -INT16_C( 32307), -INT16_C( 27655), -INT16_C( 11452), -INT16_C(  1755),  INT16_C( 21912), -INT16_C( 13443),
         INT16_C( 29488),  INT16_C( 21486), -INT16_C(  3619),  INT16_C( 19186),  INT16_C( 12953),  INT16_C(  1170), -INT16_C( 14906), -INT16_C(  1039) },
      { -INT16_C(  8852), -INT16_C( 29258), -INT16_C( 27942), -INT16_C( 31952),  INT16_C( 27851), -INT16_C( 27655), -INT16_C(  1755), -INT16_C( 13443),
         INT16_C(  9206), -INT16_C( 24829),  INT16_C( 18239), -INT16_C(  4813),  INT16_C( 21486),  INT16_C( 19186),  INT16_C(  1170), -INT16_C(  1039) } },
    { { -INT16_C( 17308),  INT16_C( 12903),  INT16_C( 24637), -INT16_C( 32315), -INT16_C(  5324), -INT16_C( 13189), -INT16_C(  1984),  INT16_C( 28823),
        -INT16_C( 31125),  INT16_C( 18628), -INT16_C( 18825),  INT16_C(  4243),  INT16_C(  9704), -INT16_C( 20972),  INT16_C(  1770),  INT16_C( 20138) },
      {  INT16_C(  4546),  INT16_C(   128),  INT16_C( 18034), -INT16_C( 22911), -INT16_C(   975),  INT16_C( 29042),  INT16_C(  2804),  INT16_C( 24802),
        -INT16_C( 22896),  INT16_C(  1960),  INT16_C( 15196),  INT16_C( 17688),  INT16_C( 11360),  INT16_C( 19187), -INT16_C( 25294), -INT16_C(  2663) },
      {  INT16_C( 12903), -INT16_C( 32315), -INT16_C( 13189),  INT16_C( 28823),  INT16_C(   128), -INT16_C( 22911),  INT16_C( 29042),  INT16_C( 24802),
         INT16_C( 18628),  INT16_C(  4243), -INT16_C( 20972),  INT16_C( 20138),  INT16_C(  1960),  INT16_C( 17688),  INT16_C( 19187), -INT16_C(  2663) } },
    { {  INT16_C(  6575),  INT16_C(  8693),  INT16_C( 30303), -INT16_C( 28473),  INT16_C( 14707),  INT16_C( 26370), -INT16_C(  7101), -INT16_C( 11321),
         INT16_C( 28810), -INT16_C(  6437), -INT16_C(  3157),  INT16_C(  3115),  INT16_C(  7967),  INT16_C( 21078), -INT16_C(  4164),  INT16_C( 27463) },
      {  INT16_C( 15369),  INT16_C( 26764),  INT16_C( 21426),  INT16_C(  9721), -INT16_C(  1139), -INT16_C( 12147),  INT16_C( 21727),  INT16_C( 27044),
         INT16_C( 32708),  INT16_C( 28751),  INT16_C( 31602), -INT16_C( 28292), -INT16_C( 11622),  INT16_C( 22243),  INT16_C( 10946), -INT16_C( 13374) },
      {  INT16_C(  8693), -INT16_C( 28473),  INT16_C( 26370), -INT16_C( 11321),  INT16_C( 26764),  INT16_C(  9721), -INT16_C( 12147),  INT16_C( 27044),
        -INT16_C(  6437),  INT16_C(  3115),  INT16_C( 21078),  INT16_C( 27463),  INT16_C( 28751), -INT16_C( 28292),  INT16_C( 22243), -INT16_C( 13374) } },
    { {  INT16_C( 20070),  INT16_C(  6451),  INT16_C( 11426),  INT16_C( 12094), -INT16_C( 13529),  INT16_C(  1791), -INT16_C( 23776), -INT16_C(  7057),
        -INT16_C( 16606), -INT16_C( 27564), -INT16_C( 12230), -INT16_C( 11226),  INT16_C(  2467),  INT16_C( 25898), -INT16_C(  5068), -INT16_C( 26064) },
      {  INT16_C( 25403), -INT16_C(  8781), -INT16_C(  3440), -INT16_C( 18676),  INT16_C(  3005), -INT16_C(  8770),  INT16_C( 11695), -INT16_C( 11838),
         INT16_C(  5868),  INT16_C(  9830), -INT16_C( 29465), -INT16_C( 29958),  INT16_C(  9621), -INT16_C( 13841),  INT16_C(  7953),  INT16_C( 19556) },
      {  INT16_C(  6451),  INT16_C( 12094),  INT16_C(  1791), -INT16_C(  7057), -INT16_C(  8781), -INT16_C( 18676), -INT16_C(  8770), -INT16_C( 11838),
        -INT16_C( 27564), -INT16_C( 11226),  INT16_C( 25898), -INT16_C( 26064),  INT16_C(  9830), -INT16_C( 29958), -INT16_C( 13841),  INT16_C( 19556) } },
    { {  INT16_C(  6018),  INT16_C(  4649),  INT16_C( 13577), -INT16_C( 14390), -INT16_C( 30655), -INT16_C(  3932),  INT16_C( 26293), -INT16_C( 23871),
         INT16_C( 10109),  INT16_C( 25800), -INT16_C( 15437),  INT16_C( 18926), -INT16_C(  8728), -INT16_C(  1774),  INT16_C( 30460),  INT16_C( 32326) },
      {  INT16_C( 28558), -INT16_C( 26735),  INT16_C( 23461), -INT16_C(  6562),  INT16_C(   995), -INT16_C( 26410), -INT16_C( 26775), -INT16_C(  6598),
         INT16_C(   959),  INT16_C( 29258),  INT16_C( 14534), -INT16_C( 20805), -INT16_C( 12779),  INT16_C(  4519), -INT16_C(  4796), -INT16_C( 11632) },
      {  INT16_C(  4649), -INT16_C( 14390), -INT16_C(  3932), -INT16_C( 23871), -INT16_C( 26735), -INT16_C(  6562), -INT16_C( 26410), -INT16_C(  6598),
         INT16_C( 25800),  INT16_C( 18926), -INT16_C(  1774),  INT16_C( 32326),  INT16_C( 29258), -INT16_C( 20805),  INT16_C(  4519), -INT16_C( 11632) } },
    { {  INT16_C(  8541),  INT16_C(   618), -INT16_C( 14212),  INT16_C( 24552), -INT16_C( 16693),  INT16_C( 13815),  INT16_C( 12885),  INT16_C(  5147),
         INT16_C( 26165), -INT16_C(  1145),  INT16_C( 17054), -INT16_C( 19287),  INT16_C( 20496),  INT16_C( 21957),  INT16_C( 21822), -INT16_C( 25817) },
      { -INT16_C( 28298), -INT16_C(  3427), -INT16_C( 31398),  INT16_C(  9553),  INT16_C( 18755), -INT16_C( 26534),  INT16_C( 30331), -INT16_C( 20307),
         INT16_C( 13532),  INT16_C( 31403),  INT16_C( 21622), -INT16_C( 30930), -INT16_C(  2908), -INT16_C(  7460),  INT16_C(   841), -INT16_C( 16259) },
      {  INT16_C(   618),  INT16_C( 24552),  INT16_C( 13815),  INT16_C(  5147), -INT16_C(  3427),  INT16_C(  9553), -INT16_C( 26534), -INT16_C( 20307),
        -INT16_C(  1145), -INT16_C( 19287),  INT16_C( 21957), -INT16_C( 25817),  INT16_C( 31403), -INT16_C( 30930), -INT16_C(  7460), -INT16_C( 16259) } },
    { {  INT16_C(  6805), -INT16_C(  4174),  INT16_C(  1183), -INT16_C(  7660),  INT16_C( 28493), -INT16_C( 14213),  INT16_C( 10469), -INT16_C( 16008),
         INT16_C(  9052), -INT16_C( 11717),  INT16_C( 27255),  INT16_C(  7001),  INT16_C( 13662), -INT16_C( 22530),  INT16_C( 31545), -INT16_C( 12697) },
      {  INT16_C(  6806),  INT16_C( 13757), -INT16_C( 12002),  INT16_C( 27416), -INT16_C( 27840),  INT16_C(  9523), -INT16_C( 21573),  INT16_C(  6118),
         INT16_C(  8910),  INT16_C( 17897),  INT16_C( 17292), -INT16_C(  5536),  INT16_C( 24184), -INT16_C( 20079), -INT16_C(  1574),  INT16_C( 28799) },
      { -INT16_C(  4174), -INT16_C(  7660), -INT16_C( 14213), -INT16_C( 16008),  INT16_C( 13757),  INT16_C( 27416),  INT16_C(  9523),  INT16_C(  6118),
        -INT16_C( 11717),  INT16_C(  7001), -INT16_C( 22530), -INT16_C( 12697),  INT16_C( 17897), -INT16_C(  5536), -INT16_C( 20079),  INT16_C( 28799) } }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde__m256i a = simde_x_mm256_loadu_epi16(test_vec[i].a);
    simde__m256i b = simde_x_mm256_loadu_epi16(test_vec[i].b);
    simde__m256i r = simde_x_mm256_deinterleaveodd_epi16(a, b);
    simde_test_x86_assert_equal_i16x16(r, simde_x_mm256_loadu_epi16(test_vec[i].r));
  }

  return 0;
}

static int
test_simde_x_mm256_deinterleaveeven_epi32 (SIMDE_MUNIT_TEST_ARGS) {
  static const struct {
    const int32_t a[8];
    const int32_t b[8];
    const int32_t r[8];
  } test_vec[] = {
    { {  INT32_C(   504841746), -INT32_C(   184668304),  INT32_C(  2075750092), -INT32_C(  1750132198), -INT32_C(  1448517056), -INT32_C(   409880474), -INT32_C(  1199547026),  INT32_C(   732426777) },
      { -INT32_C(  1454784967), -INT32_C(  1164097298), -INT32_C(   785033546), -INT32_C(  1318525839), -INT32_C(  1386606010),  INT32_C(   949283786),  INT32_C(  1643124040),  INT32_C(  1082955783) },
      {  INT32_C(   504841746),  INT32_C(  2075750092), -INT32_C(  1454784967), -INT32_C(   785033546), -INT32_C(  1448517056), -INT32_C(  1199547026), -INT32_C(  1386606010),  INT32_C(  1643124040) } },
    { {  INT32_C(  1156240982), -INT32_C(   721516770),  INT32_C(  1336226782),  INT32_C(  1577061911), -INT32_C(   368354784), -INT32_C(  1927045307), -INT32_C(  1125182540),  INT32_C(    50101163) },
      {  INT32_C(  1866917457),  INT32_C(  1279542638), -INT32_C(  1868830344),  INT32_C(   401513463),  INT32_C(   973273589),  INT32_C(  1304896920), -INT32_C(   469125576), -INT32_C(  2082077390) },
      {  INT32_C(  1156240982),  INT32_C(  1336226782),  INT32_C(  1866917457), -INT32_C(  1868830344), -INT32_C(   368354784), -INT32_C(  1125182540),  INT32_C(   973273589), -INT32_C(   469125576) } },
    { {  INT32_C(  1525886188), -INT32_C(   358205583),  INT32_C(   410665248), -INT32_C(   785422116), -INT32_C(   116706975), -INT32_C(  1891184042), -INT32_C(  1150070903),  INT32_C(  1094605141) },
      { -INT32_C(   140824187), -INT32_C(  1981726360),  INT32_C(  1587633026),  INT32_C(   607113411),  INT32_C(  1478310402), -INT32_C(  1779997684),  INT32_C(   139483827),  INT32_C(   961122227) },
      {  INT32_C(  1525886188),  INT32_C(   410665248), -INT32_C(   140824187),  INT32_C(  1587633026), -INT32_C(   116706975), -INT32_C(  1150070903),  INT32_C(  1478310402),  INT32_C(   139483827) } },
    { {  INT32_C(   691070144), -INT32_C(  1481502427),  INT32_C(   788878188),  INT32_C(   626209827),  INT32_C(  2071883886), -INT32_C(  2012191276),  INT32_C(  1938842048), -INT32_C(  1330849040) },
      { -INT32_C(   455484226),  INT32_C(  1502317549),  INT32_C(    42504670),  INT32_C(   875027397),  INT32_C(   548382028), -INT32_C(   878133493),  INT32_C(   272513312), -INT32_C(   775820525) },
      {  INT32_C(   691070144),  INT32_C(   788878188), -INT32_C(   455484226),  INT32_C(    42504670),  INT32_C(  2071883886),  INT32_C(  1938842048),  INT32_C(   548382028),  INT32_C(   272513312) } },
    { { -INT32_C(  1246389561),  INT32_C(    68043046), -INT32_C(  1761175598), -INT32_C(  1093980558), -INT32_C(   555779373),  INT32_C(  1521059642), -INT32_C(   747902784), -INT32_C(  1700451117) },
      { -INT32_C(   330343738),  INT32_C(  1844534939),  INT32_C(  1728444405), -INT32_C(   114896859), -INT32_C(  2049505973),  INT32_C(  1306493324),  INT32_C(  1008749161),  INT32_C(  1037485430) },
      { -INT32_C(  1246389561), -INT32_C(  1761175598), -INT32_C(   330343738),  INT32_C(  1728444405), -INT32_C(   555779373), -INT32_C(   747902784), -INT32_C(  2049505973),  INT32_C(  1008749161) } },
    { { -INT32_C(  1154931168),  INT32_C(  2032736900),  INT32_C(   937438738),  INT32_C(  1227884286), -INT32_C(  1731327989), -INT32_C(   219828599),  INT32_C(  1865287160), -INT32_C(   341048117) },
      { -INT32_C(  1364798166),  INT32_C(    36163568), -INT32_C(    63371011),  INT32_C(   440756750), -INT32_C(    72215438), -INT32_C(  1158834238),  INT32_C(  1730747292),  INT32_C(  1246942495) },
      { -INT32_C(  1154931168),  INT32_C(   937438738), -INT32_C(  1364798166), -INT32_C(    63371011), -INT32_C(  1731327989),  INT32_C(  1865287160), -INT32_C(    72215438),  INT32_C(  1730747292) } },
    { { -INT32_C(  1678181973), -INT32_C(   962780984),  INT32_C(   918738472), -INT32_C(  1303378112), -INT32_C(   575864293),  INT32_C(   915970713), -INT32_C(   711081547),  INT32_C(  1109389463) },
      { -INT32_C(  1310910487),  INT32_C(  1601665591), -INT32_C(  1852425904),  INT32_C(  1547953729), -INT32_C(  2110066199),  INT32_C(  1102631563),  INT32_C(   706107027),  INT32_C(   795620678) },
      { -INT32_C(  1678181973),  INT32_C(   918738472), -INT32_C(  1310910487), -INT32_C(  1852425904), -INT32_C(   575864293), -INT32_C(   711081547), -INT32_C(  2110066199),  INT32_C(   706107027) } },
    { { -INT32_C(  2065675956),  INT32_C(   350443715), -INT32_C(   760907375),  INT32_C(  1227876448),  INT32_C(  1707829721), -INT32_C(   827947973),  INT32_C(   553237722),  INT32_C(  1028613617) },
      {  INT32_C(  1925263279),  INT32_C(   428254599),  INT32_C(  2129341214), -INT32_C(   305718764), -INT32_C(  1101884541), -INT32_C(   242354153), -INT32_C(  1525578060), -INT32_C(  1696374549) },
      { -INT32_C(  2065675956), -INT32_C(   760907375),  INT32_C(  1925263279),  INT32_C(  2129341214),  INT32_C(  1707829721),  INT32_C(   553237722), -INT32_C(  1101884541), -INT32_C(  1525578060) } }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde__m256i a = simde_x_mm256_loadu_epi32(test_vec[i].a);
    simde__m256i b = simde_x_mm256_loadu_epi32(test_vec[i].b);
    simde__m256i r = simde_x_mm256_deinterleaveeven_epi32(a, b);
    simde_test_x86_assert_equal_i32x8(r, simde_x_mm256_loadu_epi32(test_vec[i].r));
  }

  return 0;
}

static int
test_simde_x_mm256_deinterleaveodd_epi32 (SIMDE_MUNIT_TEST_ARGS) {
  static const struct {
    const int32_t a[8];
    const int32_t b[8];
    const int32_t r[8];
  } test_vec[] = {
    { {  INT32_C(  1074233397),  INT32_C(   226594984), -INT32_C(  1186849467),  INT32_C(  1628384119), -INT32_C(   330208028),  INT32_C(  1002695508),  INT32_C(  1501784430), -INT32_C(   932890733) },
      {  INT32_C(  1611230648),  INT32_C(  1114540797),  INT32_C(   536588456), -INT32_C(  1082061861), -INT32_C(   877931913),  INT32_C(   738619069),  INT32_C(  1803913944),  INT32_C(  2033511361) },
      {  INT32_C(   226594984),  INT32_C(  1628384119),  INT32_C(  1114540797), -INT32_C(  1082061861),  INT32_C(  1002695508), -INT32_C(   932890733),  INT32_C(   738619069),  INT32_C(  2033511361) } },
    { {  INT32_C(  1440365912),  INT32_C(  1872251079), -INT32_C(   745565192),  INT32_C(   378671262), -INT32_C(  1595851294), -INT32_C(  2066945876),  INT32_C(   871321970), -INT32_C(  1800592580) },
      {  INT32_C(   686458720), -INT32_C(   946371889), -INT32_C(  1264966123),  INT32_C(   432679990),  INT32_C(   364489577),  INT32_C(    93947283),  INT32_C(   322537942),  INT32_C(   229107372) },
      {  INT32_C(  1872251079),  INT32_C(   378671262), -INT32_C(   946371889),  INT32_C(   432679990), -INT32_C(  2066945876), -INT32_C(  1800592580),  INT32_C(    93947283),  INT32_C(   229107372) } },
    { {  INT32_C(  1010143597),  INT32_C(   688114707),  INT32_C(   702389747),  INT32_C(   843229129), -INT32_C(   431424686),  INT32_C(  1475076480),  INT32_C(   392832106),  INT32_C(  1998852362) },
      { -INT32_C(  1229760093),  INT32_C(   417314341),  INT32_C(   474135635), -INT32_C(  1236302749),  INT32_C(    10262400), -INT32_C(   480802952), -INT32_C(  1225080404),  INT32_C(  1982734035) },
      {  INT32_C(   688114707),  INT32_C(   843229129),  INT32_C(   417314341), -INT32_C(  1236302749),  INT32_C(  1475076480),  INT32_C(  1998852362), -INT32_C(   480802952),  INT32_C(  1982734035) } },
    { { -INT32_C(  1674780297), -INT32_C(   340456296),  INT32_C(   738785224), -INT32_C(    69052549),  INT32_C(  1727823598), -INT32_C(  1320594683), -INT32_C(   395820267), -INT32_C(   664889759) },
      {  INT32_C(   259361399),  INT32_C(  1610295958), -INT32_C(  1668611295),  INT32_C(  1217949018), -INT32_C(   256994069), -INT32_C(    56428313), -INT32_C(  1645999557),  INT32_C(   393560736) },
      { -INT32_C(   340456296), -INT32_C(    69052549),  INT32_C(  1610295958),  INT32_C(  1217949018), -INT32_C(  1320594683), -INT32_C(   664889759), -INT32_C(    56428313),  INT32_C(   393560736) } },
    { {  INT32_C(  1663560397),  INT32_C(   901915156),  INT32_C(  2144488741), -INT32_C(  1513657670), -INT32_C(   443124226), -INT32_C(  1444792211), -INT32_C(   498678206), -INT32_C(   688276727) },
      { -INT32_C(  1170661210),  INT32_C(  1743846466),  INT32_C(    82231881),  INT32_C(   715762988), -INT32_C(  1878048989), -INT32_C(  1187384969), -INT32_C(  1046773832), -INT32_C(   510159557) },
      {  INT32_C(   901915156), -INT32_C(  1513657670),  INT32_C(  1743846466),  INT32_C(   715762988), -INT32_C(  1444792211), -INT32_C(   688276727), -INT32_C(  1187384969), -INT32_C(   510159557) } },
    { { -INT32_C(   124006219),  INT32_C(   375360460),  INT32_C(  2031765069),  INT32_C(   379831283),  INT32_C(  2057810691),  INT32_C(  1546969252), -INT32_C(  1692545184),  INT32_C(   444380260) },
      {  INT32_C(  1360140165), -INT32_C(   261656157), -INT32_C(  1419083337),  INT32_C(  1220611397),  INT32_C(  1707239616), -INT32_C(  1446906295),  INT32_C(   709156806),  INT32_C(   407158931) },
      {  INT32_C(   375360460),  INT32_C(   379831283), -INT32_C(   261656157),  INT32_C(  1220611397),  INT32_C(  1546969252),  INT32_C(   444380260), -INT32_C(  1446906295),  INT32_C(   407158931) } },
    { {  INT32_C(  2053789399),  INT32_C(  2137772488), -INT32_C(  1742023341), -INT32_C(  1545540382), -INT32_C(  1660378540),  INT32_C(  1598474649),  INT32_C(  1015646888),  INT32_C(   575983178) },
      { -INT32_C(   325272028), -INT32_C(   479459440), -INT32_C(  1082419492), -INT32_C(   681419902), -INT32_C(  1770755331), -INT32_C(   587875533), -INT32_C(  1877442747),  INT32_C(  1907518541) },
      {  INT32_C(  2137772488), -INT32_C(  1545540382), -INT32_C(   479459440), -INT32_C(   681419902),  INT32_C(  1598474649),  INT32_C(   575983178), -INT32_C(   587875533),  INT32_C(  1907518541) } },
    { { -INT32_C(  1151447509),  INT32_C(   849267286), -INT32_C(   470738592),  INT32_C(  1908036468), -INT32_C(   251121987),  INT32_C(   802029033), -INT32_C(   910170756),  INT32_C(  2084270417) },
      {  INT32_C(   355965375), -INT32_C(  1018636957),  INT32_C(  1655060974),  INT32_C(  1255432333),  INT32_C(  2017189007),  INT32_C(  1453787353),  INT32_C(  1059022573), -INT32_C(  1749329193) },
      {  INT32_C(   849267286),  INT32_C(  1908036468), -INT32_C(  1018636957),  INT32_C(  1255432333),  INT32_C(   802029033),  INT32_C(  2084270417),  INT32_C(  1453787353), -INT32_C(  1749329193) } }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde__m256i a = simde_x_mm256_loadu_epi32(test_vec[i].a);
    simde__m256i b = simde_x_mm256_loadu_epi32(test_vec[i].b);
    simde__m256i r = simde_x_mm256_deinterleaveodd_epi32(a, b);
    simde_test_x86_assert_equal_i32x8(r, simde_x_mm256_loadu_epi32(test_vec[i].r));
  }

  return 0;
}

static int
test_simde_x_mm256_deinterleaveeven_ps (SIMDE_MUNIT_TEST_ARGS) {
  static const struct {
    const simde_float32 a[8];
    const simde_float32 b[8];
    const simde_float32 r[8];
  } test_vec[] = {
    { { SIMDE_FLOAT32_C(  -685.40), SIMDE_FLOAT32_C(   -82.27), SIMDE_FLOAT32_C(  -652.43), SIMDE_FLOAT32_C(   401.52),
        SIMDE_FLOAT32_C(   925.39), SIMDE_FLOAT32_C(  -588.47), SIMDE_FLOAT32_C(  -408.21), SIMDE_FLOAT32_C(   201.70) },
      { SIMDE_FLOAT32_C(    -2.27), SIMDE_FLOAT32_C(  -451.03), SIMDE_FLOAT32_C(   989.34), SIMDE_FLOAT32_C(  -840.15),
        SIMDE_FLOAT32_C(   879.25), SIMDE_FLOAT32_C(   -69.37), SIMDE_FLOAT32_C(   209.43), SIMDE_FLOAT32_C(  -340.80) },
      { SIMDE_FLOAT32_C(  -685.40), SIMDE_FLOAT32_C(  -652.43), SIMDE_FLOAT32_C(    -2.27), SIMDE_FLOAT32_C(   989.34),
        SIMDE_FLOAT32_C(   925.39), SIMDE_FLOAT32_C(  -408.21), SIMDE_FLOAT32_C(   879.25), SIMDE_FLOAT32_C(   209.43) } },
    { { SIMDE_FLOAT32_C(  -774.02), SIMDE_FLOAT32_C(   172.30), SIMDE_FLOAT32_C(  -637.75), SIMDE_FLOAT32_C(   965.23),
        SIMDE_FLOAT32_C(   366.44), SIMDE_FLOAT32_C(   -40.30), SIMDE_FLOAT32_C(   124.64), SIMDE_FLOAT32_C(  -125.21) },
      { SIMDE_FLOAT32_C(   935.91), SIMDE_FLOAT32_C(   798.97), SIMDE_FLOAT32_C(  -165.02), SIMDE_FLOAT32_C(   726.84),
        SIMDE_FLOAT32_C(   834.23), SIMDE_FLOAT32_C(   584.97), SIMDE_FLOAT32_C(   734.98), SIMDE_FLOAT32_C(  -851.17) },
      { SIMDE_FLOAT32_C(  -774.02), SIMDE_FLOAT32_C(  -637.75), SIMDE_FLOAT32_C(   935.91), SIMDE_FLOAT32_C(  -165.02),
        SIMDE_FLOAT32_C(   366.44), SIMDE_FLOAT32_C(   124.64), SIMDE_FLOAT32_C(   834.23), SIMDE_FLOAT32_C(   734.98) } },
    { { SIMDE_FLOAT32_C(  -497.30), SIMDE_FLOAT32_C(  -917.45), SIMDE_FLOAT32_C(   550.35), SIMDE_FLOAT32_C(  -571.91),
        SIMDE_FLOAT32_C(  -505.92), SIMDE_FLOAT32_C(  -857.86), SIMDE_FLOAT32_C(   629.79), SIMDE_FLOAT32_C(   491.80) },
      { SIMDE_FLOAT32_C(  -308.89), SIMDE_FLOAT32_C(   619.14), SIMDE_FLOAT32_C(   651.65), SIMDE_FLOAT32_C(  -429.64),
        SIMDE_FLOAT32_C(  -450.24), SIMDE_FLOAT32_C(  -138.92), SIMDE_FLOAT32_C(   229.56), SIMDE_FLOAT32_C(  -224.25) },
      { SIMDE_FLOAT32_C(  -497.30), SIMDE_FLOAT32_C(   550.35), SIMDE_FLOAT32_C(  -308.89), SIMDE_FLOAT32_C(   651.65),
        SIMDE_FLOAT32_C(  -505.92), SIMDE_FLOAT32_C(   629.79), SIMDE_FLOAT32_C(  -450.24), SIMDE_FLOAT32_C(   229.56) } },
    { { SIMDE_FLOAT32_C(  -966.62), SIMDE_FLOAT32_C(   591.82), SIMDE_FLOAT32_C(  -259.02), SIMDE_FLOAT32_C(   399.82),
        SIMDE_FLOAT32_C(  -448.49), SIMDE_FLOAT32_C(   865.62), SIMDE_FLOAT32_C(  -725.39), SIMDE_FLOAT32_C(  -512.58) },
      { SIMDE_FLOAT32_C(   664.59), SIMDE_FLOAT32_C(   109.59), SIMDE_FLOAT32_C(  -785.74), SIMDE_FLOAT32_C(   498.82),
        SIMDE_FLOAT32_C(  -305.44), SIMDE_FLOAT32_C(   949.24), SIMDE_FLOAT32_C(   647.65), SIMDE_FLOAT32_C(   197.26) },
      { SIMDE_FLOAT32_C(  -966.62), SIMDE_FLOAT32_C(  -259.02), SIMDE_FLOAT32_C(   664.59), SIMDE_FLOAT32_C(  -785.74),
        SIMDE_FLOAT32_C(  -448.49), SIMDE_FLOAT32_C(  -725.39), SIMDE_FLOAT32_C(  -305.44), SIMDE_FLOAT32_C(   647.65) } },
    { { SIMDE_FLOAT32_C(  -968.21), SIMDE_FLOAT32_C(   198.01), SIMDE_FLOAT32_C(   625.35), SIMDE_FLOAT32_C(  -474.13),
        SIMDE_FLOAT32_C(   340.14), SIMDE_FLOAT32_C(   255.15), SIMDE_FLOAT32_C(  -982.32), SIMDE_FLOAT32_C(  -968.75) },
      { SIMDE_FLOAT32_C(  -125.72), SIMDE_FLOAT32_C(   669.33), SIMDE_FLOAT32_C(  -398.39), SIMDE_FLOAT32_C(   424.05),
        SIMDE_FLOAT32_C(  -469.59), SIMDE_FLOAT32_C(   831.17), SIMDE_FLOAT32_C(  -800.21), SIMDE_FLOAT32_C(  -436.21) },
      { SIMDE_FLOAT32_C(  -968.21), SIMDE_FLOAT32_C(   625.35), SIMDE_FLOAT32_C(  -125.72), SIMDE_FLOAT32_C(  -398.39),
        SIMDE_FLOAT32_C(   340.14), SIMDE_FLOAT32_C(  -982.32), SIMDE_FLOAT32_C(  -469.59), SIMDE_FLOAT32_C(  -800.21) } },
    { { SIMDE_FLOAT32_C(   422.99), SIMDE_FLOAT32_C(   -59.23), SIMDE_FLOAT32_C(   963.60), SIMDE_FLOAT32_C(   974.50),
        SIMDE_FLOAT32_C(  -193.61), SIMDE_FLOAT32_C(  -761.79), SIMDE_FLOAT32_C(  -538.08), SIMDE_FLOAT32_C(  -529.01) },
      { SIMDE_FLOAT32_C(   347.80), SIMDE_FLOAT32_C(  -323.81), SIMDE_FLOAT32_C(   969.81), SIMDE_FLOAT32_C(  -957.64),
        SIMDE_FLOAT32_C(  -374.57), SIMDE_FLOAT32_C(   617.46), SIMDE_FLOAT32_C(   239.62), SIMDE_FLOAT32_C(  -342.78) },
      { SIMDE_FLOAT32_C(   422.99), SIMDE_FLOAT32_C(   963.60), SIMDE_FLOAT32_C(   347.80), SIMDE_FLOAT32_C(   969.81),
        SIMDE_FLOAT32_C(  -193.61), SIMDE_FLOAT32_C(  -538.08), SIMDE_FLOAT32_C(  -374.57), SIMDE_FLOAT32_C(   239.62) } },
    { { SIMDE_FLOAT32_C(  -184.53), SIMDE_FLOAT32_C(  -135.02), SIMDE_FLOAT32_C(   183.10), SIMDE_FLOAT32_C(  -844.38),
        SIMDE_FLOAT32_C(  -879.88), SIMDE_FLOAT32_C(   200.77), SIMDE_FLOAT32_C(  -813.13), SIMDE_FLOAT32_C(    -5.59) },
      { SIMDE_FLOAT32_C(  -129.90), SIMDE_FLOAT32_C(  -211.52), SIMDE_FLOAT32_C(  -581.55), SIMDE_FLOAT32_C(   400.51),
        SIMDE_FLOAT32_C(  -380.35), SIMDE_FLOAT32_C(  -381.75), SIMDE_FLOAT32_C(   964.30), SIMDE_FLOAT32_C(  -957.36) },
      { SIMDE_FLOAT32_C(  -184.53), SIMDE_FLOAT32_C(   183.10), SIMDE_FLOAT32_C(  -129.90), SIMDE_FLOAT32_C(  -581.55),
        SIMDE_FLOAT32_C(  -879.88), SIMDE_FLOAT32_C(  -813.13), SIMDE_FLOAT32_C(  -380.35), SIMDE_FLOAT32_C(   964.30) } },
    { { SIMDE_FLOAT32_C(   559.02), SIMDE_FLOAT32_C(   927.90), SIMDE_FLOAT32_C(  -982.86), SIMDE_FLOAT32_C(  -634.59),
        SIMDE_FLOAT32_C(  -833.88), SIMDE_FLOAT32_C(  -520.93), SIMDE_FLOAT32_C(  -163.60), SIMDE_FLOAT32_C(   513.91) },
      { SIMDE_FLOAT32_C(   155.25), SIMDE_FLOAT32_C(  -193.79), SIMDE_FLOAT32_C(   556.27), SIMDE_FLOAT32_C(   780.68),
        SIMDE_FLOAT32_C(  -576.33), SIMDE_FLOAT32_C(  -204.10), SIMDE_FLOAT32_C(  -562.10), SIMDE_FLOAT32_C(   239.14) },
      { SIMDE_FLOAT32_C(   559.02), SIMDE_FLOAT32_C(  -982.86), SIMDE_FLOAT32_C(   155.25), SIMDE_FLOAT32_C(   556.27),
        SIMDE_FLOAT32_C(  -833.88), SIMDE_FLOAT32_C(  -163.60), SIMDE_FLOAT32_C(  -576.33), SIMDE_FLOAT32_C(  -562.10) } }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde__m256 a = simde_mm256_loadu_ps(test_vec[i].a);
    simde__m256 b = simde_mm256_loadu_ps(test_vec[i].b);
    simde__m256 r = simde_x_mm256_deinterleaveeven_ps(a, b);
    simde_test_x86_assert_equal_f32x8(r, simde_mm256_loadu_ps(test_vec[i].r), 1);
  }

  return 0;
}

static int
test_simde_x_mm256_deinterleaveodd_ps (SIMDE_MUNIT_TEST_ARGS) {
  static const struct {
    const simde_float32 a[8];
    const simde_float32 b[8];
    const simde_float32 r[8];
  } test_vec[] = {
    { { SIMDE_FLOAT32_C(   646.61), SIMDE_FLOAT32_C(   356.61), SIMDE_FLOAT32_C(    18.50), SIMDE_FLOAT32_C(   854.67),
        SIMDE_FLOAT32_C(   135.33), SIMDE_FLOAT32_C(   893.27), SIMDE_FLOAT32_C(  -572.24), SIMDE_FLOAT32_C(  -566.66) },
      { SIMDE_FLOAT32_C(    44.03), SIMDE_FLOAT32_C(   606.85), SIMDE_FLOAT32_C(   868.96), SIMDE_FLOAT32_C(  -267.27),
        SIMDE_FLOAT32_C(   902.13), SIMDE_FLOAT32_C(  -607.89), SIMDE_FLOAT32_C(  -775.37), SIMDE_FLOAT32_C(   704.62) },
      { SIMDE_FLOAT32_C(   356.61), SIMDE_FLOAT32_C(   854.67), SIMDE_FLOAT32_C(   606.85), SIMDE_FLOAT32_C(  -267.27),
        SIMDE_FLOAT32_C(   893.27), SIMDE_FLOAT32_C(  -566.66), SIMDE_FLOAT32_C(  -607.89), SIMDE_FLOAT32_C(   704.62) } },
    { { SIMDE_FLOAT32_C(  -749.05), SIMDE_FLOAT32_C(   899.25), SIMDE_FLOAT32_C(  -160.48), SIMDE_FLOAT32_C(  -536.81),
        SIMDE_FLOAT32_C(  -788.17), SIMDE_FLOAT32_C(   841.08), SIMDE_FLOAT32_C(  -487.56), SIMDE_FLOAT32_C(     7.91) },
      { SIMDE_FLOAT32_C(  -727.94), SIMDE_FLOAT32_C(  -117.44), SIMDE_FLOAT32_C(   410.25), SIMDE_FLOAT32_C(   324.46),
        SIMDE_FLOAT32_C(   559.11), SIMDE_FLOAT32_C(   628.63), SIMDE_FLOAT32_C(  -801.85), SIMDE_FLOAT32_C(   205.72) },
      { SIMDE_FLOAT32_C(   899.25), SIMDE_FLOAT32_C(  -536.81), SIMDE_FLOAT32_C(  -117.44), SIMDE_FLOAT32_C(   324.46),
        SIMDE_FLOAT32_C(   841.08), SIMDE_FLOAT32_C(     7.91), SIMDE_FLOAT32_C(   628.63), SIMDE_FLOAT32_C(   205.72) } },
    { { SIMDE_FLOAT32_C(   -14.76), SIMDE_FLOAT32_C(   216.65), SIMDE_FLOAT32_C(    60.39), SIMDE_FLOAT32_C(  -879.43),
        SIMDE_FLOAT32_C(   109.91), SIMDE_FLOAT32_C(   488.15), SIMDE_FLOAT32_C(  -446.09), SIMDE_FLOAT32_C(  -846.06) },
      { SIMDE_FLOAT32_C(    95.01), SIMDE_FLOAT32_C(  -577.14), SIMDE_FLOAT32_C(  -113.32), SIMDE_FLOAT32_C(    -2.87),
        SIMDE_FLOAT32_C(  -185.03), SIMDE_FLOAT32_C(   111.30), SIMDE_FLOAT32_C(  -298.24), SIMDE_FLOAT32_C(    65.92) },
      { SIMDE_FLOAT32_C(   216.65), SIMDE_FLOAT32_C(  -879.43), SIMDE_FLOAT32_C(  -577.14), SIMDE_FLOAT32_C(    -2.87),
        SIMDE_FLOAT32_C(   488.15), SIMDE_FLOAT32_C(  -846.06), SIMDE_FLOAT32_C(   111.30), SIMDE_FLOAT32_C(    65.92) } },
    { { SIMDE_FLOAT32_C(    10.55), SIMDE_FLOAT32_C(   541.28), SIMDE_FLOAT32_C(   529.11), SIMDE_FLOAT32_C(   222.38),
        SIMDE_FLOAT32_C(   382.36), SIMDE_FLOAT32_C(  -958.44), SIMDE_FLOAT32_C(  -769.71), SIMDE_FLOAT32_C(   654.42) },
      { SIMDE_FLOAT32_C(   -75.88), SIMDE_FLOAT32_C(   640.54), SIMDE_FLOAT32_C(   -21.12), SIMDE_FLOAT32_C(  -516.77),
        SIMDE_FLOAT32_C(   269.17), SIMDE_FLOAT32_C(   177.02), SIMDE_FLOAT32_C(   688.96), SIMDE_FLOAT32_C(  -745.60) },
      { SIMDE_FLOAT32_C(   541.28), SIMDE_FLOAT32_C(   222.38), SIMDE_FLOAT32_C(   640.54), SIMDE_FLOAT32_C(  -516.77),
        SIMDE_FLOAT32_C(  -958.44), SIMDE_FLOAT32_C(   654.42), SIMDE_FLOAT32_C(   177.02), SIMDE_FLOAT32_C(  -745.60) } },
    { { SIMDE_FLOAT32_C(  -606.33), SIMDE_FLOAT32_C(  -250.65), SIMDE_FLOAT32_C(  -625.03), SIMDE_FLOAT32_C(   503.58),
        SIMDE_FLOAT32_C(  -762.50), SIMDE_FLOAT32_C(   -71.12), SIMDE_FLOAT32_C(   657.53), SIMDE_FLOAT32_C(   332.51) },
      { SIMDE_FLOAT32_C(   351.74), SIMDE_FLOAT32_C(  -455.80), SIMDE_FLOAT32_C(  -670.36), SIMDE_FLOAT32_C(  -833.29),
        SIMDE_FLOAT32_C(   655.50), SIMDE_FLOAT32_C(    31.40), SIMDE_FLOAT32_C(   232.63), SIMDE_FLOAT32_C(  -333.95) },
      { SIMDE_FLOAT32_C(  -250.65), SIMDE_FLOAT32_C(   503.58), SIMDE_FLOAT32_C(  -455.80), SIMDE_FLOAT32_C(  -833.29),
        SIMDE_FLOAT32_C(   -71.12), SIMDE_FLOAT32_C(   332.51), SIMDE_FLOAT32_C(    31.40), SIMDE_FLOAT32_C(  -333.95) } },
    { { SIMDE_FLOAT32_C(  -427.32), SIMDE_FLOAT32_C(  -238.26), SIMDE_FLOAT32_C(   888.43), SIMDE_FLOAT32_C(   955.03),
        SIMDE_FLOAT32_C(  -196.70), SIMDE_FLOAT32_C(  -881.28), SIMDE_FLOAT32_C(   609.45), SIMDE_FLOAT32_C(   727.42) },
      { SIMDE_FLOAT32_C(   759.26), SIMDE_FLOAT32_C(  -411.67), SIMDE_FLOAT32_C(  -789.35), SIMDE_FLOAT32_C(    28.42),
        SIMDE_FLOAT32_C(   765.35), SIMDE_FLOAT32_C(   899.61), SIMDE_FLOAT32_C(   282.83), SIMDE_FLOAT32_C(  -840.98) },
      { SIMDE_FLOAT32_C(  -238.26), SIMDE_FLOAT32_C(   955.03), SIMDE_FLOAT32_C(  -411.67), SIMDE_FLOAT32_C(    28.42),
        SIMDE_FLOAT32_C(  -881.28), SIMDE_FLOAT32_C(   727.42), SIMDE_FLOAT32_C(   899.61), SIMDE_FLOAT32_C(  -840.98) } },
    { { SIMDE_FLOAT32_C(  -351.05), SIMDE_FLOAT32_C(   657.80), SIMDE_FLOAT32_C(   662.60), SIMDE_FLOAT32_C(  -113.55),
        SIMDE_FLOAT32_C(  -413.32), SIMDE_FLOAT32_C(   320.13), SIMDE_FLOAT32_C(  -781.04), SIMDE_FLOAT32_C(   938.42) },
      { SIMDE_FLOAT32_C(   864.33), SIMDE_FLOAT32_C(  -451.40), SIMDE_FLOAT32_C(  -894.87), SIMDE_FLOAT32_C(   519.84),
        SIMDE_FLOAT32_C(   580.00), SIMDE_FLOAT32_C(   337.76), SIMDE_FLOAT32_C(  -814.11), SIMDE_FLOAT32_C(  -847.32) },
      { SIMDE_FLOAT32_C(   657.80), SIMDE_FLOAT32_C(  -113.55), SIMDE_FLOAT32_C(  -451.40), SIMDE_FLOAT32_C(   519.84),
        SIMDE_FLOAT32_C(   320.13), SIMDE_FLOAT32_C(   938.42), SIMDE_FLOAT32_C(   337.76), SIMDE_FLOAT32_C(  -847.32) } },
    { { SIMDE_FLOAT32_C(  -900.50), SIMDE_FLOAT32_C(  -925.68), SIMDE_FLOAT32_C(  -892.29), SIMDE_FLOAT32_C(   -97.20),
        SIMDE_FLOAT32_C(  -806.96), SIMDE_FLOAT32_C(   717.16), SIMDE_FLOAT32_C(  -369.78), SIMDE_FLOAT32_C(   952.30) },
      { SIMDE_FLOAT32_C(  -694.51), SIMDE_FLOAT32_C(  -159.13), SIMDE_FLOAT32_C(   -19.28), SIMDE_FLOAT32_C(  -929.16),
        SIMDE_FLOAT32_C(  -259.52), SIMDE_FLOAT32_C(  -736.45), SIMDE_FLOAT32_C(  -770.14), SIMDE_FLOAT32_C(   389.43) },
      { SIMDE_FLOAT32_C(  -925.68), SIMDE_FLOAT32_C(   -97.20), SIMDE_FLOAT32_C(  -159.13), SIMDE_FLOAT32_C(  -929.16),
        SIMDE_FLOAT32_C(   717.16), SIMDE_FLOAT32_C(   952.30), SIMDE_FLOAT32_C(  -736.45), SIMDE_FLOAT32_C(   389.43) } }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde__m256 a = simde_mm256_loadu_ps(test_vec[i].a);
    simde__m256 b = simde_mm256_loadu_ps(test_vec[i].b);
    simde__m256 r = simde_x_mm256_deinterleaveodd_ps(a, b);
    simde_test_x86_assert_equal_f32x8(r, simde_mm256_loadu_ps(test_vec[i].r), 1);
  }

  return 0;
}

static int
test_simde_x_mm256_deinterleaveeven_pd (SIMDE_MUNIT_TEST_ARGS) {
  static const struct {
    const simde_float64 a[4];
    const simde_float64 b[4];
    const simde_float64 r[4];
  } test_vec[] = {
    { { SIMDE_FLOAT64_C(  -917.73), SIMDE_FLOAT64_C(  -652.52), SIMDE_FLOAT64_C(   938.00), SIMDE_FLOAT64_C(   628.32) },
      { SIMDE_FLOAT64_C(  -379.39), SIMDE_FLOAT64_C(  -366.67), SIMDE_FLOAT64_C(    60.53), SIMDE_FLOAT64_C(   -36.15) },
      { SIMDE_FLOAT64_C(  -917.73), SIMDE_FLOAT64_C(  -379.39), SIMDE_FLOAT64_C(   938.00), SIMDE_FLOAT64_C(    60.53) } },
    { { SIMDE_FLOAT64_C(   719.20), SIMDE_FLOAT64_C(   657.85), SIMDE_FLOAT64_C(   649.12), SIMDE_FLOAT64_C(  -199.69) },
      { SIMDE_FLOAT64_C(  -297.79), SIMDE_FLOAT64_C(  -137.86), SIMDE_FLOAT64_C(  -554.27), SIMDE_FLOAT64_C(  -359.22) },
      { SIMDE_FLOAT64_C(   719.20), SIMDE_FLOAT64_C(  -297.79), SIMDE_FLOAT64_C(   649.12), SIMDE_FLOAT64_C(  -554.27) } },
    { { SIMDE_FLOAT64_C(  -704.27), SIMDE_FLOAT64_C(  -704.53), SIMDE_FLOAT64_C(   753.64), SIMDE_FLOAT64_C(   -12.36) },
      { SIMDE_FLOAT64_C(  -714.88), SIMDE_FLOAT64_C(   976.56), SIMDE_FLOAT64_C(  -603.38), SIMDE_FLOAT64_C(   193.76) },
      { SIMDE_FLOAT64_C(  -704.27), SIMDE_FLOAT64_C(  -714.88), SIMDE_FLOAT64_C(   753.64), SIMDE_FLOAT64_C(  -603.38) } },
    { { SIMDE_FLOAT64_C(  -307.02), SIMDE_FLOAT64_C(   740.87), SIMDE_FLOAT64_C(  -356.03), SIMDE_FLOAT64_C(   819.67) },
      { SIMDE_FLOAT64_C(  -962.98), SIMDE_FLOAT64_C(   552.09), SIMDE_FLOAT64_C(  -784.02), SIMDE_FLOAT64_C(  -880.71) },
      { SIMDE_FLOAT64_C(  -307.02), SIMDE_FLOAT64_C(  -962.98), SIMDE_FLOAT64_C(  -356.03), SIMDE_FLOAT64_C(  -784.02) } },
    { { SIMDE_FLOAT64_C(   899.57), SIMDE_FLOAT64_C(  -846.01), SIMDE_FLOAT64_C(   747.61), SIMDE_FLOAT64_C(  -479.82) },
      { SIMDE_FLOAT64_C(  -212.68), SIMDE_FLOAT64_C(  -191.86), SIMDE_FLOAT64_C(   484.03), SIMDE_FLOAT64_C(  -493.48) },
      { SIMDE_FLOAT64_C(   899.57), SIMDE_FLOAT64_C(  -212.68), SIMDE_FLOAT64_C(   747.61), SIMDE_FLOAT64_C(   484.03) } },
    { { SIMDE_FLOAT64_C(  -534.01), SIMDE_FLOAT64_C(   133.14), SIMDE_FLOAT64_C(   306.83), SIMDE_FLOAT64_C(   168.20) },
      { SIMDE_FLOAT64_C(   995.29), SIMDE_FLOAT64_C(   752.56), SIMDE_FLOAT64_C(   808.98), SIMDE_FLOAT64_C(  -708.99) },
      { SIMDE_FLOAT64_C(  -534.01), SIMDE_FLOAT64_C(   995.29), SIMDE_FLOAT64_C(   306.83), SIMDE_FLOAT64_C(   808.98) } },
    { { SIMDE_FLOAT64_C(  -951.97), SIMDE_FLOAT64_C(   562.62), SIMDE_FLOAT64_C(   278.66), SIMDE_FLOAT64_C(  -666.85) },
      { SIMDE_FLOAT64_C(   539.18), SIMDE_FLOAT64_C(   675.28), SIMDE_FLOAT64_C(   526.91), SIMDE_FLOAT64_C(  -767.85) },
      { SIMDE_FLOAT64_C(  -951.97), SIMDE_FLOAT64_C(   539.18), SIMDE_FLOAT64_C(   278.66), SIMDE_FLOAT64_C(   526.91) } },
    { { SIMDE_FLOAT64_C(   416.15), SIMDE_FLOAT64_C(  -829.13), SIMDE_FLOAT64_C(  -948.18), SIMDE_FLOAT64_C(   453.17) },
      { SIMDE_FLOAT64_C(   722.96), SIMDE_FLOAT64_C(  -732.19), SIMDE_FLOAT64_C(   572.46), SIMDE_FLOAT64_C(   622.53) },
      { SIMDE_FLOAT64_C(   416.15), SIMDE_FLOAT64_C(   722.96), SIMDE_FLOAT64_C(  -948.18), SIMDE_FLOAT64_C(   572.46) } }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde__m256d a = simde_mm256_loadu_pd(test_vec[i].a);
    simde__m256d b = simde_mm256_loadu_pd(test_vec[i].b);
    simde__m256d r = simde_x_mm256_deinterleaveeven_pd(a, b);
    simde_test_x86_assert_equal_f64x4(r, simde_mm256_loadu_pd(test_vec[i].r), 1);
  }

  return 0;
}

static int
test_simde_x_mm256_deinterleaveodd_pd (SIMDE_MUNIT_TEST_ARGS) {
  static const struct {
    const simde_float64 a[4];
    const simde_float64 b[4];
    const simde_float64 r[4];
  } test_vec[] = {
    { { SIMDE_FLOAT64_C(  -648.87), SIMDE_FLOAT64_C(  -409.81), SIMDE_FLOAT64_C(   258.85), SIMDE_FLOAT64_C(   552.93) },
      { SIMDE_FLOAT64_C(   522.44), SIMDE_FLOAT64_C(   561.99), SIMDE_FLOAT64_C(   622.89), SIMDE_FLOAT64_C(  -995.80) },
      { SIMDE_FLOAT64_C(  -409.81), SIMDE_FLOAT64_C(   561.99), SIMDE_FLOAT64_C(   552.93), SIMDE_FLOAT64_C(  -995.80) } },
    { { SIMDE_FLOAT64_C(  -482.94), SIMDE_FLOAT64_C(  -355.20), SIMDE_FLOAT64_C(   567.28), SIMDE_FLOAT64_C(   592.90) },
      { SIMDE_FLOAT64_C(   321.96), SIMDE_FLOAT64_C(  -278.34), SIMDE_FLOAT64_C(   707.76), SIMDE_FLOAT64_C(  -993.72) },
      { SIMDE_FLOAT64_C(  -355.20), SIMDE_FLOAT64_C(  -278.34), SIMDE_FLOAT64_C(   592.90), SIMDE_FLOAT64_C(  -993.72) } },
    { { SIMDE_FLOAT64_C(    24.59), SIMDE_FLOAT64_C(   115.17), SIMDE_FLOAT64_C(  -487.45), SIMDE_FLOAT64_C(  -271.65) },
      { SIMDE_FLOAT64_C(   637.48), SIMDE_FLOAT64_C(  -438.22), SIMDE_FLOAT64_C(   252.23), SIMDE_FLOAT64_C(  -247.08) },
      { SIMDE_FLOAT64_C(   115.17), SIMDE_FLOAT64_C(  -438.22), SIMDE_FLOAT64_C(  -271.65), SIMDE_FLOAT64_C(  -247.08) } },
    { { SIMDE_FLOAT64_C(   513.68), SIMDE_FLOAT64_C(   -28.49), SIMDE_FLOAT64_C(  -561.16), SIMDE_FLOAT64_C(  -840.08) },
      { SIMDE_FLOAT64_C(   486.66), SIMDE_FLOAT64_C(   -58.51), SIMDE_FLOAT64_C(  -788.82), SIMDE_FLOAT64_C(   837.79) },
      { SIMDE_FLOAT64_C(   -28.49), SIMDE_FLOAT64_C(   -58.51), SIMDE_FLOAT64_C(  -840.08), SIMDE_FLOAT64_C(   837.79) } },
    { { SIMDE_FLOAT64_C(   531.68), SIMDE_FLOAT64_C(   470.03), SIMDE_FLOAT64_C(   390.72), SIMDE_FLOAT64_C(    54.12) },
      { SIMDE_FLOAT64_C(    32.02), SIMDE_FLOAT64_C(    13.61), SIMDE_FLOAT64_C(    58.32), SIMDE_FLOAT64_C(   549.08) },
      { SIMDE_FLOAT64_C(   470.03), SIMDE_FLOAT64_C(    13.61), SIMDE_FLOAT64_C(    54.12), SIMDE_FLOAT64_C(   549.08) } },
    { { SIMDE_FLOAT64_C(   658.41), SIMDE_FLOAT64_C(  -374.40), SIMDE_FLOAT64_C(   141.98), SIMDE_FLOAT64_C(   -19.63) },
      { SIMDE_FLOAT64_C(   347.26), SIMDE_FLOAT64_C(  -150.25), SIMDE_FLOAT64_C(   -13.34), SIMDE_FLOAT64_C(  -628.15) },
      { SIMDE_FLOAT64_C(  -374.40), SIMDE_FLOAT64_C(  -150.25), SIMDE_FLOAT64_C(   -19.63), SIMDE_FLOAT64_C(  -628.15) } },
    { { SIMDE_FLOAT64_C(   964.92), SIMDE_FLOAT64_C(   499.21), SIMDE_FLOAT64_C(   100.21), SIMDE_FLOAT64_C(   602.40) },
      { SIMDE_FLOAT64_C(  -939.01), SIMDE_FLOAT64_C(  -647.56), SIMDE_FLOAT64_C(  -644.68), SIMDE_FLOAT64_C(   574.67) },
      { SIMDE_FLOAT64_C(   499.21), SIMDE_FLOAT64_C(  -647.56), SIMDE_FLOAT64_C(   602.40), SIMDE_FLOAT64_C(   574.67) } },
    { { SIMDE_FLOAT64_C(   323.95), SIMDE_FLOAT64_C(  -205.84), SIMDE_FLOAT64_C(   734.60), SIMDE_FLOAT64_C(  -189.39) },
      { SIMDE_FLOAT64_C(   735.65), SIMDE_FLOAT64_C(   945.77), SIMDE_FLOAT64_C(  -351.60), SIMDE_FLOAT64_C(   267.33) },
      { SIMDE_FLOAT64_C(  -205.84), SIMDE_FLOAT64_C(   945.77), SIMDE_FLOAT64_C(  -189.39), SIMDE_FLOAT64_C(   267.33) } }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde__m256d a = simde_mm256_loadu_pd(test_vec[i].a);
    simde__m256d b = simde_mm256_loadu_pd(test_vec[i].b);
    simde__m256d r = simde_x_mm256_deinterleaveodd_pd(a, b);
    simde_test_x86_assert_equal_f64x4(r, simde_mm256_loadu_pd(test_vec[i].r), 1);
  }

  return 0;
}

static int
test_simde_mm256_add_ps (SIMDE_MUNIT_TEST_ARGS) {
  struct {
    simde_float32 a[8];
    simde_float32 b[8];
    simde_float32 r[8];
  } test_vec[] = {
    { { SIMDE_FLOAT32_C(   593.61), SIMDE_FLOAT32_C(  -557.89), SIMDE_FLOAT32_C(   791.53), SIMDE_FLOAT32_C(   154.11),
        SIMDE_FLOAT32_C(  -737.14), SIMDE_FLOAT32_C(   771.63), SIMDE_FLOAT32_C(  -560.40), SIMDE_FLOAT32_C(   722.01) },
      { SIMDE_FLOAT32_C(   419.25), SIMDE_FLOAT32_C(   900.75), SIMDE_FLOAT32_C(    -9.61), SIMDE_FLOAT32_C(  -733.53),
        SIMDE_FLOAT32_C(  -182.34), SIMDE_FLOAT32_C(  -977.20), SIMDE_FLOAT32_C(    52.09), SIMDE_FLOAT32_C(  -330.07) },
      { SIMDE_FLOAT32_C(  1012.86), SIMDE_FLOAT32_C(   342.86), SIMDE_FLOAT32_C(   781.92), SIMDE_FLOAT32_C(  -579.42),
        SIMDE_FLOAT32_C(  -919.48), SIMDE_FLOAT32_C(  -205.56), SIMDE_FLOAT32_C(  -508.31), SIMDE_FLOAT32_C(   391.94) } },
    { { SIMDE_FLOAT32_C(   931.06), SIMDE_FLOAT32_C(  -653.59), SIMDE_FLOAT32_C(   236.39), SIMDE_FLOAT32_C(  -464.67),
        SIMDE_FLOAT32_C(   290.33), SIMDE_FLOAT32_C(   742.49), SIMDE_FLOAT32_C(  -756.45), SIMDE_FLOAT32_C(   594.08) },
      { SIMDE_FLOAT32_C(  -246.91), SIMDE_FLOAT32_C(   947.78), SIMDE_FLOAT32_C(  -474.92), SIMDE_FLOAT32_C(  -744.97),
        SIMDE_FLOAT32_C(   488.25), SIMDE_FLOAT32_C(   386.30), SIMDE_FLOAT32_C(   828.81), SIMDE_FLOAT32_C(    81.87) },
      { SIMDE_FLOAT32_C(   684.15), SIMDE_FLOAT32_C(   294.20), SIMDE_FLOAT32_C(  -238.53), SIMDE_FLOAT32_C( -1209.65),
        SIMDE_FLOAT32_C(   778.59), SIMDE_FLOAT32_C(  1128.78), SIMDE_FLOAT32_C(    72.36), SIMDE_FLOAT32_C(   675.95) } },
    { { SIMDE_FLOAT32_C(   828.40), SIMDE_FLOAT32_C(   620.34), SIMDE_FLOAT32_C(  -764.02), SIMDE_FLOAT32_C(  -908.74),
        SIMDE_FLOAT32_C(   391.97), SIMDE_FLOAT32_C(  -324.42), SIMDE_FLOAT32_C(   813.27), SIMDE_FLOAT32_C(  -188.78) },
      { SIMDE_FLOAT32_C(  -423.67), SIMDE_FLOAT32_C(  -196.34), SIMDE_FLOAT32_C(    77.69), SIMDE_FLOAT32_C(   393.99),
        SIMDE_FLOAT32_C(  -173.54), SIMDE_FLOAT32_C(  -870.22), SIMDE_FLOAT32_C(  -936.08), SIMDE_FLOAT32_C(  -242.47) },
      { SIMDE_FLOAT32_C(   404.74), SIMDE_FLOAT32_C(   424.00), SIMDE_FLOAT32_C(  -686.33), SIMDE_FLOAT32_C(  -514.74),
        SIMDE_FLOAT32_C(   218.44), SIMDE_FLOAT32_C( -1194.64), SIMDE_FLOAT32_C(  -122.81), SIMDE_FLOAT32_C(  -431.25) } },
    { { SIMDE_FLOAT32_C(  -523.81), SIMDE_FLOAT32_C(   300.32), SIMDE_FLOAT32_C(   292.85), SIMDE_FLOAT32_C(   766.52),
        SIMDE_FLOAT32_C(    42.80), SIMDE_FLOAT32_C(   536.40), SIMDE_FLOAT32_C(   360.60), SIMDE_FLOAT32_C(   795.89) },
      { SIMDE_FLOAT32_C(   484.18), SIMDE_FLOAT32_C(   885.68), SIMDE_FLOAT32_C(  -949.08), SIMDE_FLOAT32_C(   -27.56),
        SIMDE_FLOAT32_C(   271.98), SIMDE_FLOAT32_C(   879.73), SIMDE_FLOAT32_C(  -945.69), SIMDE_FLOAT32_C(   100.38) },
      { SIMDE_FLOAT32_C(   -39.63), SIMDE_FLOAT32_C(  1186.00), SIMDE_FLOAT32_C(  -656.23), SIMDE_FLOAT32_C(   738.96),
        SIMDE_FLOAT32_C(   314.78), SIMDE_FLOAT32_C(  1416.13), SIMDE_FLOAT32_C(  -585.09), SIMDE_FLOAT32_C(   896.27) } },
    { { SIMDE_FLOAT32_C(   500.07), SIMDE_FLOAT32_C(  -709.71), SIMDE_FLOAT32_C(   191.65), SIMDE_FLOAT32_C(  -107.96),
        SIMDE_FLOAT32_C(   -34.13), SIMDE_FLOAT32_C(     4.92), SIMDE_FLOAT32_C(   703.26), SIMDE_FLOAT32_C(   542.20) },
      { SIMDE_FLOAT32_C(   808.58), SIMDE_FLOAT32_C(  -219.05), SIMDE_FLOAT32_C(   -63.81), SIMDE_FLOAT32_C(  -364.96),
        SIMDE_FLOAT32_C(   -89.27), SIMDE_FLOAT32_C(     0.12), SIMDE_FLOAT32_C(   392.56), SIMDE_FLOAT32_C(   386.92) },
      { SIMDE_FLOAT32_C(  1308.64), SIMDE_FLOAT32_C(  -928.76), SIMDE_FLOAT32_C(   127.84), SIMDE_FLOAT32_C(  -472.92),
        SIMDE_FLOAT32_C(  -123.40), SIMDE_FLOAT32_C(     5.03), SIMDE_FLOAT32_C(  1095.83), SIMDE_FLOAT32_C(   929.12) } },
    { { SIMDE_FLOAT32_C(  -699.57), SIMDE_FLOAT32_C(  -314.58), SIMDE_FLOAT32_C(   153.44), SIMDE_FLOAT32_C(   343.24),
        SIMDE_FLOAT32_C(  -778.18), SIMDE_FLOAT32_C(  -485.96), SIMDE_FLOAT32_C(   139.13), SIMDE_FLOAT32_C(   706.00) },
      { SIMDE_FLOAT32_C(  -600.28), SIMDE_FLOAT32_C(   190.04), SIMDE_FLOAT32_C(  -321.56), SIMDE_FLOAT32_C(   671.70),
        SIMDE_FLOAT32_C(    69.77), SIMDE_FLOAT32_C(  -267.25), SIMDE_FLOAT32_C(  -227.92), SIMDE_FLOAT32_C(  -430.16) },
      { SIMDE_FLOAT32_C( -1299.84), SIMDE_FLOAT32_C(  -124.54), SIMDE_FLOAT32_C(  -168.11), SIMDE_FLOAT32_C(  1014.94),
        SIMDE_FLOAT32_C(  -708.41), SIMDE_FLOAT32_C(  -753.20), SIMDE_FLOAT32_C(   -88.79), SIMDE_FLOAT32_C(   275.85) } },
    { { SIMDE_FLOAT32_C(    23.04), SIMDE_FLOAT32_C(   963.73), SIMDE_FLOAT32_C(   461.88), SIMDE_FLOAT32_C(   988.91),
        SIMDE_FLOAT32_C(   -31.35), SIMDE_FLOAT32_C(   165.15), SIMDE_FLOAT32_C(   531.11), SIMDE_FLOAT32_C(  -222.78) },
      { SIMDE_FLOAT32_C(   946.10), SIMDE_FLOAT32_C(  -532.70), SIMDE_FLOAT32_C(   412.26), SIMDE_FLOAT32_C(  -143.17),
        SIMDE_FLOAT32_C(   467.42), SIMDE_FLOAT32_C(  -195.17), SIMDE_FLOAT32_C(  -756.25), SIMDE_FLOAT32_C(   767.85) },
      { SIMDE_FLOAT32_C(   969.14), SIMDE_FLOAT32_C(   431.03), SIMDE_FLOAT32_C(   874.15), SIMDE_FLOAT32_C(   845.74),
        SIMDE_FLOAT32_C(   436.06), SIMDE_FLOAT32_C(   -30.03), SIMDE_FLOAT32_C(  -225.14), SIMDE_FLOAT32_C(   545.07) } },
    { { SIMDE_FLOAT32_C(   490.24), SIMDE_FLOAT32_C(   397.20), SIMDE_FLOAT32_C(   111.09), SIMDE_FLOAT32_C(   712.06),
        SIMDE_FLOAT32_C(   911.24), SIMDE_FLOAT32_C(  -749.78), SIMDE_FLOAT32_C(   418.07), SIMDE_FLOAT32_C(  -689.03) },
      { SIMDE_FLOAT32_C(   440.26), SIMDE_FLOAT32_C(  -903.49), SIMDE_FLOAT32_C(   982.67), SIMDE_FLOAT32_C(  -489.97),
        SIMDE_FLOAT32_C(  -170.74), SIMDE_FLOAT32_C(  -245.25), SIMDE_FLOAT32_C(    79.87), SIMDE_FLOAT32_C(   852.30) },
      { SIMDE_FLOAT32_C(   930.50), SIMDE_FLOAT32_C(  -506.29), SIMDE_FLOAT32_C(  1093.75), SIMDE_FLOAT32_C(   222.09),
        SIMDE_FLOAT32_C(   740.50), SIMDE_FLOAT32_C(  -995.03), SIMDE_FLOAT32_C(   497.94), SIMDE_FLOAT32_C(   163.27) } }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde__m256 a = simde_mm256_loadu_ps(test_vec[i].a);
    simde__m256 b = simde_mm256_loadu_ps(test_vec[i].b);
    simde__m256 r = simde_mm256_add_ps(a, b);
    simde_test_x86_assert_equal_f32x8(r, simde_mm256_loadu_ps(test_vec[i].r), 1);
  }

  return 0;
}

static int
test_simde_mm256_add_pd (SIMDE_MUNIT_TEST_ARGS) {
  struct {
    simde_float64 a[4];
    simde_float64 b[4];
    simde_float64 r[4];
  } test_vec[] = {
    { { SIMDE_FLOAT64_C(   664.30), SIMDE_FLOAT64_C(   577.46), SIMDE_FLOAT64_C(   740.89), SIMDE_FLOAT64_C(  -918.31) },
      { SIMDE_FLOAT64_C(  -427.81), SIMDE_FLOAT64_C(   139.30), SIMDE_FLOAT64_C(   658.39), SIMDE_FLOAT64_C(   247.77) },
      { SIMDE_FLOAT64_C(   236.49), SIMDE_FLOAT64_C(   716.76), SIMDE_FLOAT64_C(  1399.29), SIMDE_FLOAT64_C(  -670.54) } },
    { { SIMDE_FLOAT64_C(  -470.94), SIMDE_FLOAT64_C(  -355.75), SIMDE_FLOAT64_C(   525.85), SIMDE_FLOAT64_C(   336.05) },
      { SIMDE_FLOAT64_C(  -706.73), SIMDE_FLOAT64_C(   -71.41), SIMDE_FLOAT64_C(   586.58), SIMDE_FLOAT64_C(  -587.59) },
      { SIMDE_FLOAT64_C( -1177.66), SIMDE_FLOAT64_C(  -427.15), SIMDE_FLOAT64_C(  1112.44), SIMDE_FLOAT64_C(  -251.54) } },
    { { SIMDE_FLOAT64_C(   109.20), SIMDE_FLOAT64_C(  -848.44), SIMDE_FLOAT64_C(  -937.49), SIMDE_FLOAT64_C(  -391.24) },
      { SIMDE_FLOAT64_C(   350.57), SIMDE_FLOAT64_C(  -211.87), SIMDE_FLOAT64_C(   614.09), SIMDE_FLOAT64_C(   386.98) },
      { SIMDE_FLOAT64_C(   459.78), SIMDE_FLOAT64_C( -1060.32), SIMDE_FLOAT64_C(  -323.40), SIMDE_FLOAT64_C(    -4.26) } },
    { { SIMDE_FLOAT64_C(  -377.97), SIMDE_FLOAT64_C(   804.63), SIMDE_FLOAT64_C(  -715.40), SIMDE_FLOAT64_C(  -782.75) },
      { SIMDE_FLOAT64_C(  -311.74), SIMDE_FLOAT64_C(   976.76), SIMDE_FLOAT64_C(   342.71), SIMDE_FLOAT64_C(  -647.44) },
      { SIMDE_FLOAT64_C(  -689.71), SIMDE_FLOAT64_C(  1781.39), SIMDE_FLOAT64_C(  -372.68), SIMDE_FLOAT64_C( -1430.19) } },
    { { SIMDE_FLOAT64_C(   554.22), SIMDE_FLOAT64_C(    83.61), SIMDE_FLOAT64_C(  -565.75), SIMDE_FLOAT64_C(  -873.59) },
      { SIMDE_FLOAT64_C(  -777.09), SIMDE_FLOAT64_C(  -907.36), SIMDE_FLOAT64_C(   374.18), SIMDE_FLOAT64_C(  -248.03) },
      { SIMDE_FLOAT64_C(  -222.87), SIMDE_FLOAT64_C(  -823.75), SIMDE_FLOAT64_C(  -191.57), SIMDE_FLOAT64_C( -1121.62) } },
    { { SIMDE_FLOAT64_C(  -263.10), SIMDE_FLOAT64_C(   -99.97), SIMDE_FLOAT64_C(  -911.97), SIMDE_FLOAT64_C(    30.17) },
      { SIMDE_FLOAT64_C(   828.63), SIMDE_FLOAT64_C(   674.61), SIMDE_FLOAT64_C(   442.58), SIMDE_FLOAT64_C(   -62.17) },
      { SIMDE_FLOAT64_C(   565.52), SIMDE_FLOAT64_C(   574.64), SIMDE_FLOAT64_C(  -469.39), SIMDE_FLOAT64_C(   -32.00) } },
    { { SIMDE_FLOAT64_C(   826.16), SIMDE_FLOAT64_C(   505.09), SIMDE_FLOAT64_C(   546.59), SIMDE_FLOAT64_C(   176.74) },
      { SIMDE_FLOAT64_C(  -706.78), SIMDE_FLOAT64_C(   160.68), SIMDE_FLOAT64_C(  -436.28), SIMDE_FLOAT64_C(   -84.75) },
      { SIMDE_FLOAT64_C(   119.38), SIMDE_FLOAT64_C(   665.77), SIMDE_FLOAT64_C(   110.30), SIMDE_FLOAT64_C(    91.98) } },
    { { SIMDE_FLOAT64_C(   -34.70), SIMDE_FLOAT64_C(  -151.68), SIMDE_FLOAT64_C(   132.50), SIMDE_FLOAT64_C(   653.56) },
      { SIMDE_FLOAT64_C(  -174.92), SIMDE_FLOAT64_C(  -524.79), SIMDE_FLOAT64_C(  -993.87), SIMDE_FLOAT64_C(  -620.70) },
      { SIMDE_FLOAT64_C(  -209.61), SIMDE_FLOAT64_C(  -676.47), SIMDE_FLOAT64_C(  -861.38), SIMDE_FLOAT64_C(    32.86) } }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde__m256d a = simde_mm256_loadu_pd(test_vec[i].a);
    simde__m256d b = simde_mm256_loadu_pd(test_vec[i].b);
    simde__m256d r = simde_mm256_add_pd(a, b);
    simde_test_x86_assert_equal_f64x4(r, simde_mm256_loadu_pd(test_vec[i].r), 1);
  }

  return 0;
}

static int
test_simde_mm256_addsub_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde__m256 b;
    simde__m256 r;
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -665.97), SIMDE_FLOAT32_C( -119.17),
                         SIMDE_FLOAT32_C(   98.44), SIMDE_FLOAT32_C( -870.79),
                         SIMDE_FLOAT32_C(  715.06), SIMDE_FLOAT32_C(  168.23),
                         SIMDE_FLOAT32_C(  291.85), SIMDE_FLOAT32_C(  803.77)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  437.26), SIMDE_FLOAT32_C(  621.28),
                         SIMDE_FLOAT32_C(  727.27), SIMDE_FLOAT32_C( -902.73),
                         SIMDE_FLOAT32_C( -279.74), SIMDE_FLOAT32_C(  960.47),
                         SIMDE_FLOAT32_C( -437.81), SIMDE_FLOAT32_C(  516.31)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -228.71), SIMDE_FLOAT32_C( -740.45),
                         SIMDE_FLOAT32_C(  825.71), SIMDE_FLOAT32_C(   31.94),
                         SIMDE_FLOAT32_C(  435.32), SIMDE_FLOAT32_C( -792.24),
                         SIMDE_FLOAT32_C( -145.96), SIMDE_FLOAT32_C(  287.46)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -441.72), SIMDE_FLOAT32_C(  881.45),
                         SIMDE_FLOAT32_C(  512.79), SIMDE_FLOAT32_C( -201.00),
                         SIMDE_FLOAT32_C(  709.10), SIMDE_FLOAT32_C(  130.51),
                         SIMDE_FLOAT32_C( -836.20), SIMDE_FLOAT32_C(  276.45)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -410.67), SIMDE_FLOAT32_C(  408.11),
                         SIMDE_FLOAT32_C( -371.59), SIMDE_FLOAT32_C( -135.76),
                         SIMDE_FLOAT32_C( -896.75), SIMDE_FLOAT32_C( -185.21),
                         SIMDE_FLOAT32_C( -154.35), SIMDE_FLOAT32_C( -995.14)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -852.39), SIMDE_FLOAT32_C(  473.34),
                         SIMDE_FLOAT32_C(  141.20), SIMDE_FLOAT32_C(  -65.24),
                         SIMDE_FLOAT32_C( -187.65), SIMDE_FLOAT32_C(  315.72),
                         SIMDE_FLOAT32_C( -990.55), SIMDE_FLOAT32_C( 1271.59)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  792.33), SIMDE_FLOAT32_C( -677.48),
                         SIMDE_FLOAT32_C(  -78.97), SIMDE_FLOAT32_C(  595.95),
                         SIMDE_FLOAT32_C(  441.86), SIMDE_FLOAT32_C(  221.91),
                         SIMDE_FLOAT32_C(  688.66), SIMDE_FLOAT32_C( -937.21)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  615.36), SIMDE_FLOAT32_C( -858.28),
                         SIMDE_FLOAT32_C(  102.87), SIMDE_FLOAT32_C( -380.97),
                         SIMDE_FLOAT32_C( -155.81), SIMDE_FLOAT32_C( -426.12),
                         SIMDE_FLOAT32_C( -862.23), SIMDE_FLOAT32_C( -891.31)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( 1407.69), SIMDE_FLOAT32_C(  180.80),
                         SIMDE_FLOAT32_C(   23.90), SIMDE_FLOAT32_C(  976.92),
                         SIMDE_FLOAT32_C(  286.05), SIMDE_FLOAT32_C(  648.03),
                         SIMDE_FLOAT32_C( -173.57), SIMDE_FLOAT32_C(  -45.90)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -493.40), SIMDE_FLOAT32_C( -257.06),
                         SIMDE_FLOAT32_C( -968.46), SIMDE_FLOAT32_C(  634.36),
                         SIMDE_FLOAT32_C( -600.69), SIMDE_FLOAT32_C( -769.31),
                         SIMDE_FLOAT32_C(  230.22), SIMDE_FLOAT32_C( -863.68)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -678.13), SIMDE_FLOAT32_C(  166.99),
                         SIMDE_FLOAT32_C(  125.37), SIMDE_FLOAT32_C( -846.30),
                         SIMDE_FLOAT32_C(  414.00), SIMDE_FLOAT32_C( -144.57),
                         SIMDE_FLOAT32_C(  -43.08), SIMDE_FLOAT32_C(  287.75)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(-1171.53), SIMDE_FLOAT32_C( -424.05),
                         SIMDE_FLOAT32_C( -843.09), SIMDE_FLOAT32_C( 1480.66),
                         SIMDE_FLOAT32_C( -186.69), SIMDE_FLOAT32_C( -624.74),
                         SIMDE_FLOAT32_C(  187.14), SIMDE_FLOAT32_C(-1151.43)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -449.73), SIMDE_FLOAT32_C( -350.27),
                         SIMDE_FLOAT32_C( -591.20), SIMDE_FLOAT32_C(  571.44),
                         SIMDE_FLOAT32_C(  787.95), SIMDE_FLOAT32_C(  514.78),
                         SIMDE_FLOAT32_C( -355.32), SIMDE_FLOAT32_C(  545.86)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  341.77), SIMDE_FLOAT32_C( -839.01),
                         SIMDE_FLOAT32_C(   -9.88), SIMDE_FLOAT32_C(  193.01),
                         SIMDE_FLOAT32_C(  871.45), SIMDE_FLOAT32_C( -840.06),
                         SIMDE_FLOAT32_C(  689.52), SIMDE_FLOAT32_C( -902.32)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -107.96), SIMDE_FLOAT32_C(  488.74),
                         SIMDE_FLOAT32_C( -601.08), SIMDE_FLOAT32_C(  378.43),
                         SIMDE_FLOAT32_C( 1659.40), SIMDE_FLOAT32_C( 1354.84),
                         SIMDE_FLOAT32_C(  334.20), SIMDE_FLOAT32_C( 1448.18)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -336.63), SIMDE_FLOAT32_C(  960.76),
                         SIMDE_FLOAT32_C(  657.64), SIMDE_FLOAT32_C( -548.45),
                         SIMDE_FLOAT32_C( -101.48), SIMDE_FLOAT32_C( -271.70),
                         SIMDE_FLOAT32_C(   23.46), SIMDE_FLOAT32_C(  562.46)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -564.95), SIMDE_FLOAT32_C( -418.72),
                         SIMDE_FLOAT32_C( -693.90), SIMDE_FLOAT32_C( -314.48),
                         SIMDE_FLOAT32_C( -760.76), SIMDE_FLOAT32_C(    7.61),
                         SIMDE_FLOAT32_C(  228.32), SIMDE_FLOAT32_C( -230.31)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -901.58), SIMDE_FLOAT32_C( 1379.48),
                         SIMDE_FLOAT32_C(  -36.26), SIMDE_FLOAT32_C( -233.97),
                         SIMDE_FLOAT32_C( -862.24), SIMDE_FLOAT32_C( -279.31),
                         SIMDE_FLOAT32_C(  251.78), SIMDE_FLOAT32_C(  792.77)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -451.91), SIMDE_FLOAT32_C( -184.14),
                         SIMDE_FLOAT32_C( -772.77), SIMDE_FLOAT32_C( -278.00),
                         SIMDE_FLOAT32_C( -640.89), SIMDE_FLOAT32_C(  -35.35),
                         SIMDE_FLOAT32_C( -518.18), SIMDE_FLOAT32_C( -851.69)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -152.24), SIMDE_FLOAT32_C(  636.58),
                         SIMDE_FLOAT32_C( -808.67), SIMDE_FLOAT32_C(  166.94),
                         SIMDE_FLOAT32_C( -359.45), SIMDE_FLOAT32_C( -888.48),
                         SIMDE_FLOAT32_C( -553.07), SIMDE_FLOAT32_C( -570.58)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -604.15), SIMDE_FLOAT32_C( -820.72),
                         SIMDE_FLOAT32_C(-1581.44), SIMDE_FLOAT32_C( -444.94),
                         SIMDE_FLOAT32_C(-1000.34), SIMDE_FLOAT32_C(  853.13),
                         SIMDE_FLOAT32_C(-1071.25), SIMDE_FLOAT32_C( -281.11)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   -3.71), SIMDE_FLOAT32_C( -782.28),
                         SIMDE_FLOAT32_C(  533.36), SIMDE_FLOAT32_C(  848.42),
                         SIMDE_FLOAT32_C(  345.49), SIMDE_FLOAT32_C( -110.04),
                         SIMDE_FLOAT32_C( -550.91), SIMDE_FLOAT32_C(   -5.89)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  186.13), SIMDE_FLOAT32_C( -310.95),
                         SIMDE_FLOAT32_C(  742.56), SIMDE_FLOAT32_C( -943.39),
                         SIMDE_FLOAT32_C( -294.98), SIMDE_FLOAT32_C( -455.35),
                         SIMDE_FLOAT32_C(  262.46), SIMDE_FLOAT32_C(  299.17)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  182.42), SIMDE_FLOAT32_C( -471.33),
                         SIMDE_FLOAT32_C( 1275.92), SIMDE_FLOAT32_C( 1791.81),
                         SIMDE_FLOAT32_C(   50.51), SIMDE_FLOAT32_C(  345.31),
                         SIMDE_FLOAT32_C( -288.45), SIMDE_FLOAT32_C( -305.06)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256 r = simde_mm256_addsub_ps(test_vec[i].a, test_vec[i].b);
    simde_assert_m256_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_addsub_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256d a;
    simde__m256d b;
    simde__m256d r;
  } test_vec[8] = {
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  715.06), SIMDE_FLOAT64_C(  168.23),
                         SIMDE_FLOAT64_C(  291.85), SIMDE_FLOAT64_C(  803.77)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -279.74), SIMDE_FLOAT64_C(  960.47),
                         SIMDE_FLOAT64_C( -437.81), SIMDE_FLOAT64_C(  516.31)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  435.32), SIMDE_FLOAT64_C( -792.24),
                         SIMDE_FLOAT64_C( -145.96), SIMDE_FLOAT64_C(  287.46)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -665.97), SIMDE_FLOAT64_C( -119.17),
                         SIMDE_FLOAT64_C(   98.44), SIMDE_FLOAT64_C( -870.79)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  437.26), SIMDE_FLOAT64_C(  621.28),
                         SIMDE_FLOAT64_C(  727.27), SIMDE_FLOAT64_C( -902.73)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -228.71), SIMDE_FLOAT64_C( -740.45),
                         SIMDE_FLOAT64_C(  825.71), SIMDE_FLOAT64_C(   31.94)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  709.10), SIMDE_FLOAT64_C(  130.51),
                         SIMDE_FLOAT64_C( -836.20), SIMDE_FLOAT64_C(  276.45)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -896.75), SIMDE_FLOAT64_C( -185.21),
                         SIMDE_FLOAT64_C( -154.35), SIMDE_FLOAT64_C( -995.14)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -187.65), SIMDE_FLOAT64_C(  315.72),
                         SIMDE_FLOAT64_C( -990.55), SIMDE_FLOAT64_C( 1271.59)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -441.72), SIMDE_FLOAT64_C(  881.45),
                         SIMDE_FLOAT64_C(  512.79), SIMDE_FLOAT64_C( -201.00)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -410.67), SIMDE_FLOAT64_C(  408.11),
                         SIMDE_FLOAT64_C( -371.59), SIMDE_FLOAT64_C( -135.76)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -852.39), SIMDE_FLOAT64_C(  473.34),
                         SIMDE_FLOAT64_C(  141.20), SIMDE_FLOAT64_C(  -65.24)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  441.86), SIMDE_FLOAT64_C(  221.91),
                         SIMDE_FLOAT64_C(  688.66), SIMDE_FLOAT64_C( -937.21)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -155.81), SIMDE_FLOAT64_C( -426.12),
                         SIMDE_FLOAT64_C( -862.23), SIMDE_FLOAT64_C( -891.31)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  286.05), SIMDE_FLOAT64_C(  648.03),
                         SIMDE_FLOAT64_C( -173.57), SIMDE_FLOAT64_C(  -45.90)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  792.33), SIMDE_FLOAT64_C( -677.48),
                         SIMDE_FLOAT64_C(  -78.97), SIMDE_FLOAT64_C(  595.95)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  615.36), SIMDE_FLOAT64_C( -858.28),
                         SIMDE_FLOAT64_C(  102.87), SIMDE_FLOAT64_C( -380.97)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( 1407.69), SIMDE_FLOAT64_C(  180.80),
                         SIMDE_FLOAT64_C(   23.90), SIMDE_FLOAT64_C(  976.92)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -600.69), SIMDE_FLOAT64_C( -769.31),
                         SIMDE_FLOAT64_C(  230.22), SIMDE_FLOAT64_C( -863.68)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  414.00), SIMDE_FLOAT64_C( -144.57),
                         SIMDE_FLOAT64_C(  -43.08), SIMDE_FLOAT64_C(  287.75)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -186.69), SIMDE_FLOAT64_C( -624.74),
                         SIMDE_FLOAT64_C(  187.14), SIMDE_FLOAT64_C(-1151.43)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -493.40), SIMDE_FLOAT64_C( -257.06),
                         SIMDE_FLOAT64_C( -968.46), SIMDE_FLOAT64_C(  634.36)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -678.13), SIMDE_FLOAT64_C(  166.99),
                         SIMDE_FLOAT64_C(  125.37), SIMDE_FLOAT64_C( -846.30)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(-1171.53), SIMDE_FLOAT64_C( -424.05),
                         SIMDE_FLOAT64_C( -843.09), SIMDE_FLOAT64_C( 1480.66)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256d r = simde_mm256_addsub_pd(test_vec[i].a, test_vec[i].b);
    simde_assert_m256d_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_and_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde__m256 b;
    simde__m256 r;
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -927.26), SIMDE_FLOAT32_C( -802.03),
                         SIMDE_FLOAT32_C( -266.41), SIMDE_FLOAT32_C(  -50.41),
                         SIMDE_FLOAT32_C( -309.19), SIMDE_FLOAT32_C( -707.19),
                         SIMDE_FLOAT32_C( -220.07), SIMDE_FLOAT32_C(  127.67)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -205.91), SIMDE_FLOAT32_C( -275.07),
                         SIMDE_FLOAT32_C(  -13.57), SIMDE_FLOAT32_C(  990.91),
                         SIMDE_FLOAT32_C( -167.84), SIMDE_FLOAT32_C(  346.85),
                         SIMDE_FLOAT32_C(  124.29), SIMDE_FLOAT32_C(  759.96)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   -3.09), SIMDE_FLOAT32_C(   -2.13),
                         SIMDE_FLOAT32_C(   -8.07), SIMDE_FLOAT32_C(    3.03),
                         SIMDE_FLOAT32_C( -130.56), SIMDE_FLOAT32_C(    2.50),
                         SIMDE_FLOAT32_C(   54.02), SIMDE_FLOAT32_C(    2.96)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  -39.85), SIMDE_FLOAT32_C(  325.28),
                         SIMDE_FLOAT32_C(  658.09), SIMDE_FLOAT32_C(  797.01),
                         SIMDE_FLOAT32_C( -512.38), SIMDE_FLOAT32_C( -352.93),
                         SIMDE_FLOAT32_C( -357.04), SIMDE_FLOAT32_C( -456.94)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -802.91), SIMDE_FLOAT32_C(  574.48),
                         SIMDE_FLOAT32_C( -277.42), SIMDE_FLOAT32_C(  470.68),
                         SIMDE_FLOAT32_C( -575.30), SIMDE_FLOAT32_C(  -85.17),
                         SIMDE_FLOAT32_C(  928.67), SIMDE_FLOAT32_C(  878.11)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   -2.13), SIMDE_FLOAT32_C(    2.04),
                         SIMDE_FLOAT32_C(    2.01), SIMDE_FLOAT32_C(    3.05),
                         SIMDE_FLOAT32_C( -512.25), SIMDE_FLOAT32_C(  -80.17),
                         SIMDE_FLOAT32_C(    2.50), SIMDE_FLOAT32_C(    3.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  758.85), SIMDE_FLOAT32_C(  749.41),
                         SIMDE_FLOAT32_C(  129.33), SIMDE_FLOAT32_C( -389.28),
                         SIMDE_FLOAT32_C( -248.13), SIMDE_FLOAT32_C(  236.41),
                         SIMDE_FLOAT32_C(  416.63), SIMDE_FLOAT32_C( -413.79)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -615.54), SIMDE_FLOAT32_C(  496.18),
                         SIMDE_FLOAT32_C( -485.54), SIMDE_FLOAT32_C( -818.26),
                         SIMDE_FLOAT32_C( -139.14), SIMDE_FLOAT32_C(  955.99),
                         SIMDE_FLOAT32_C(  356.33), SIMDE_FLOAT32_C( -498.79)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  614.53), SIMDE_FLOAT32_C(    2.88),
                         SIMDE_FLOAT32_C(  128.27), SIMDE_FLOAT32_C(   -3.01),
                         SIMDE_FLOAT32_C( -136.13), SIMDE_FLOAT32_C(    3.69),
                         SIMDE_FLOAT32_C(  288.00), SIMDE_FLOAT32_C( -400.79)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -131.10), SIMDE_FLOAT32_C( -368.55),
                         SIMDE_FLOAT32_C(  657.24), SIMDE_FLOAT32_C(  939.62),
                         SIMDE_FLOAT32_C(  -50.98), SIMDE_FLOAT32_C(  313.56),
                         SIMDE_FLOAT32_C( -914.58), SIMDE_FLOAT32_C(  -29.59)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -195.92), SIMDE_FLOAT32_C( -475.65),
                         SIMDE_FLOAT32_C( -524.29), SIMDE_FLOAT32_C(  537.04),
                         SIMDE_FLOAT32_C( -280.43), SIMDE_FLOAT32_C(  379.54),
                         SIMDE_FLOAT32_C(  -38.50), SIMDE_FLOAT32_C( -188.05)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -131.04), SIMDE_FLOAT32_C( -336.52),
                         SIMDE_FLOAT32_C(  512.03), SIMDE_FLOAT32_C(  521.04),
                         SIMDE_FLOAT32_C(  -34.03), SIMDE_FLOAT32_C(  313.54),
                         SIMDE_FLOAT32_C(   -2.00), SIMDE_FLOAT32_C(  -10.75)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  159.88), SIMDE_FLOAT32_C( -559.41),
                         SIMDE_FLOAT32_C(  -99.24), SIMDE_FLOAT32_C( -420.50),
                         SIMDE_FLOAT32_C( -953.72), SIMDE_FLOAT32_C(  849.74),
                         SIMDE_FLOAT32_C(   80.27), SIMDE_FLOAT32_C(  -41.97)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  457.08), SIMDE_FLOAT32_C( -505.60),
                         SIMDE_FLOAT32_C( -390.51), SIMDE_FLOAT32_C( -524.68),
                         SIMDE_FLOAT32_C( -419.12), SIMDE_FLOAT32_C(  955.42),
                         SIMDE_FLOAT32_C(  180.08), SIMDE_FLOAT32_C(   33.67)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  132.50), SIMDE_FLOAT32_C(   -2.14),
                         SIMDE_FLOAT32_C(  -97.13), SIMDE_FLOAT32_C(   -2.03),
                         SIMDE_FLOAT32_C(   -3.00), SIMDE_FLOAT32_C(  785.16),
                         SIMDE_FLOAT32_C(   40.00), SIMDE_FLOAT32_C(   33.66)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  157.14), SIMDE_FLOAT32_C( -391.25),
                         SIMDE_FLOAT32_C( -362.22), SIMDE_FLOAT32_C( -137.98),
                         SIMDE_FLOAT32_C( -303.90), SIMDE_FLOAT32_C(  545.52),
                         SIMDE_FLOAT32_C( -383.06), SIMDE_FLOAT32_C(  973.73)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -973.80), SIMDE_FLOAT32_C(  457.53),
                         SIMDE_FLOAT32_C( -199.04), SIMDE_FLOAT32_C(  856.68),
                         SIMDE_FLOAT32_C( -830.67), SIMDE_FLOAT32_C( -121.42),
                         SIMDE_FLOAT32_C(  772.32), SIMDE_FLOAT32_C(  704.39)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(    2.27), SIMDE_FLOAT32_C(  385.00),
                         SIMDE_FLOAT32_C( -133.03), SIMDE_FLOAT32_C(    2.00),
                         SIMDE_FLOAT32_C(   -2.12), SIMDE_FLOAT32_C(    2.00),
                         SIMDE_FLOAT32_C(    2.02), SIMDE_FLOAT32_C(  704.14)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  942.14), SIMDE_FLOAT32_C(  176.96),
                         SIMDE_FLOAT32_C(  525.37), SIMDE_FLOAT32_C(  924.18),
                         SIMDE_FLOAT32_C( -300.50), SIMDE_FLOAT32_C( -450.02),
                         SIMDE_FLOAT32_C(  708.11), SIMDE_FLOAT32_C(  742.76)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  647.68), SIMDE_FLOAT32_C(  632.57),
                         SIMDE_FLOAT32_C( -972.04), SIMDE_FLOAT32_C( -483.76),
                         SIMDE_FLOAT32_C(  274.26), SIMDE_FLOAT32_C(  570.79),
                         SIMDE_FLOAT32_C( -945.60), SIMDE_FLOAT32_C( -519.05)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  646.13), SIMDE_FLOAT32_C(    2.25),
                         SIMDE_FLOAT32_C(  524.04), SIMDE_FLOAT32_C(    3.52),
                         SIMDE_FLOAT32_C(  256.00), SIMDE_FLOAT32_C(    2.00),
                         SIMDE_FLOAT32_C(  640.09), SIMDE_FLOAT32_C(  518.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  361.93), SIMDE_FLOAT32_C( -223.38),
                         SIMDE_FLOAT32_C(  -51.19), SIMDE_FLOAT32_C( -300.56),
                         SIMDE_FLOAT32_C(  363.29), SIMDE_FLOAT32_C(  804.04),
                         SIMDE_FLOAT32_C(   99.54), SIMDE_FLOAT32_C( -622.58)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  446.79), SIMDE_FLOAT32_C(  300.89),
                         SIMDE_FLOAT32_C(  727.13), SIMDE_FLOAT32_C( -671.93),
                         SIMDE_FLOAT32_C(  708.76), SIMDE_FLOAT32_C( -834.24),
                         SIMDE_FLOAT32_C( -881.82), SIMDE_FLOAT32_C(  430.54)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  296.79), SIMDE_FLOAT32_C(  150.38),
                         SIMDE_FLOAT32_C(    2.07), SIMDE_FLOAT32_C(   -2.10),
                         SIMDE_FLOAT32_C(    2.77), SIMDE_FLOAT32_C(  768.03),
                         SIMDE_FLOAT32_C(    3.06), SIMDE_FLOAT32_C(    2.30)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256 r = simde_mm256_and_ps(test_vec[i].a, test_vec[i].b);
    simde_assert_m256_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_and_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256d a;
    simde__m256d b;
    simde__m256d r;
  } test_vec[8] = {
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -309.19), SIMDE_FLOAT64_C( -707.19),
                         SIMDE_FLOAT64_C( -220.07), SIMDE_FLOAT64_C(  127.67)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -167.84), SIMDE_FLOAT64_C(  346.85),
                         SIMDE_FLOAT64_C(  124.29), SIMDE_FLOAT64_C(  759.96)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -130.56), SIMDE_FLOAT64_C(    2.50),
                         SIMDE_FLOAT64_C(   54.02), SIMDE_FLOAT64_C(    2.96)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -927.26), SIMDE_FLOAT64_C( -802.03),
                         SIMDE_FLOAT64_C( -266.41), SIMDE_FLOAT64_C(  -50.41)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -205.91), SIMDE_FLOAT64_C( -275.07),
                         SIMDE_FLOAT64_C(  -13.57), SIMDE_FLOAT64_C(  990.91)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   -3.09), SIMDE_FLOAT64_C(   -2.13),
                         SIMDE_FLOAT64_C(   -8.07), SIMDE_FLOAT64_C(    3.03)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -512.38), SIMDE_FLOAT64_C( -352.93),
                         SIMDE_FLOAT64_C( -357.04), SIMDE_FLOAT64_C( -456.94)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -575.30), SIMDE_FLOAT64_C(  -85.17),
                         SIMDE_FLOAT64_C(  928.67), SIMDE_FLOAT64_C(  878.11)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -512.25), SIMDE_FLOAT64_C(  -80.17),
                         SIMDE_FLOAT64_C(    2.50), SIMDE_FLOAT64_C(    3.00)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  -39.85), SIMDE_FLOAT64_C(  325.28),
                         SIMDE_FLOAT64_C(  658.09), SIMDE_FLOAT64_C(  797.01)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -802.91), SIMDE_FLOAT64_C(  574.48),
                         SIMDE_FLOAT64_C( -277.42), SIMDE_FLOAT64_C(  470.68)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   -2.13), SIMDE_FLOAT64_C(    2.04),
                         SIMDE_FLOAT64_C(    2.01), SIMDE_FLOAT64_C(    3.05)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -248.13), SIMDE_FLOAT64_C(  236.41),
                         SIMDE_FLOAT64_C(  416.63), SIMDE_FLOAT64_C( -413.79)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -139.14), SIMDE_FLOAT64_C(  955.99),
                         SIMDE_FLOAT64_C(  356.33), SIMDE_FLOAT64_C( -498.79)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -136.13), SIMDE_FLOAT64_C(    3.69),
                         SIMDE_FLOAT64_C(  288.00), SIMDE_FLOAT64_C( -400.79)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  758.85), SIMDE_FLOAT64_C(  749.41),
                         SIMDE_FLOAT64_C(  129.33), SIMDE_FLOAT64_C( -389.28)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -615.54), SIMDE_FLOAT64_C(  496.18),
                         SIMDE_FLOAT64_C( -485.54), SIMDE_FLOAT64_C( -818.26)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  614.53), SIMDE_FLOAT64_C(    2.88),
                         SIMDE_FLOAT64_C(  128.27), SIMDE_FLOAT64_C(   -3.01)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  -50.98), SIMDE_FLOAT64_C(  313.56),
                         SIMDE_FLOAT64_C( -914.58), SIMDE_FLOAT64_C(  -29.59)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -280.43), SIMDE_FLOAT64_C(  379.54),
                         SIMDE_FLOAT64_C(  -38.50), SIMDE_FLOAT64_C( -188.05)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  -34.03), SIMDE_FLOAT64_C(  313.54),
                         SIMDE_FLOAT64_C(   -2.00), SIMDE_FLOAT64_C(  -10.75)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -131.10), SIMDE_FLOAT64_C( -368.55),
                         SIMDE_FLOAT64_C(  657.24), SIMDE_FLOAT64_C(  939.62)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -195.92), SIMDE_FLOAT64_C( -475.65),
                         SIMDE_FLOAT64_C( -524.29), SIMDE_FLOAT64_C(  537.04)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -131.04), SIMDE_FLOAT64_C( -336.52),
                         SIMDE_FLOAT64_C(  512.03), SIMDE_FLOAT64_C(  521.04)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256d r = simde_mm256_and_pd(test_vec[i].a, test_vec[i].b);
    simde_assert_m256d_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_andnot_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256i a;
    simde__m256i b;
    simde__m256i r;
  } test_vec[8] = {
    { simde_mm256_set_epi32(INT32_C(-1269691626), INT32_C(-1170050076), INT32_C( -309781764), INT32_C( -576457271),
                            INT32_C( -634907762), INT32_C( 2098123667), INT32_C( -562209537), INT32_C(    5131913)),
      simde_mm256_set_epi32(INT32_C( 1938996560), INT32_C( -950945230), INT32_C( 1149254280), INT32_C(   44378753),
                            INT32_C( 2057504516), INT32_C( -993118301), INT32_C( 1739559582), INT32_C( -627102775)),
      simde_mm256_set_epi32(INT32_C( 1132508224), INT32_C( 1158776850), INT32_C(       8192), INT32_C(   33819136),
                            INT32_C(  545457152), INT32_C(-2134891488), INT32_C(  562201088), INT32_C( -628022976)) },
    { simde_mm256_set_epi32(INT32_C( 1623231278), INT32_C( 1012862807), INT32_C(-1490329263), INT32_C( -978121763),
                            INT32_C( 1155479170), INT32_C( 1443672525), INT32_C(-2006927873), INT32_C(-1659310326)),
      simde_mm256_set_epi32(INT32_C( 1899349789), INT32_C( -971300838), INT32_C(-1615418151), INT32_C( 1727488659),
                            INT32_C( -760518716), INT32_C( -855193027), INT32_C(-1052461502), INT32_C( 1027044741)),
      simde_mm256_set_epi32(INT32_C(  288703505), INT32_C(-1040179192), INT32_C(  412388488), INT32_C(  574906370),
                            INT32_C(-1843379900), INT32_C(-1996338640), INT32_C( 1090781696), INT32_C(  539431045)) },
    { simde_mm256_set_epi32(INT32_C(-2122027976), INT32_C( -148145974), INT32_C(    -727916), INT32_C(  -26694351),
                            INT32_C(-1526957699), INT32_C( -878651731), INT32_C( 1530541127), INT32_C(-1559858122)),
      simde_mm256_set_epi32(INT32_C( -534865702), INT32_C(-2025680665), INT32_C(  838358535), INT32_C( 1081018378),
                            INT32_C(-1920205149), INT32_C( -965251235), INT32_C(  386054154), INT32_C(-2050252028)),
      simde_mm256_set_epi32(INT32_C( 1612353730), INT32_C(    4227109), INT32_C(     528899), INT32_C(     458762),
                            INT32_C(  151225986), INT32_C(   72821072), INT32_C(   67143688), INT32_C(   80315136)) },
    { simde_mm256_set_epi32(INT32_C(  677275617), INT32_C(-1590450048), INT32_C( 1228022027), INT32_C(-1869880241),
                            INT32_C( -606167369), INT32_C( 1388808224), INT32_C(  759425545), INT32_C(  885944499)),
      simde_mm256_set_epi32(INT32_C(  148370019), INT32_C(    1263704), INT32_C( -153021241), INT32_C( 1201345211),
                            INT32_C( 1277824171), INT32_C(-1597492935), INT32_C(  875204555), INT32_C(  494146139)),
      simde_mm256_set_epi32(INT32_C(    8491010), INT32_C(      16472), INT32_C(-1228860220), INT32_C( 1192235696),
                            INT32_C(   69206024), INT32_C(-1610075879), INT32_C(  271058370), INT32_C(  154141256)) },
    { simde_mm256_set_epi32(INT32_C(-1186629793), INT32_C(-1939451012), INT32_C( 1901741359), INT32_C(  320110090),
                            INT32_C(  759094695), INT32_C(-2033042315), INT32_C(-1537152402), INT32_C( -430790655)),
      simde_mm256_set_epi32(INT32_C(-1742460754), INT32_C(  244002796), INT32_C( 1060007632), INT32_C( 2113362450),
                            INT32_C( 1987282511), INT32_C(-1021964277), INT32_C(  124383649), INT32_C( -826572412)),
      simde_mm256_set_epi32(INT32_C(    2099360), INT32_C(   42544256), INT32_C(  237251280), INT32_C( 1826816016),
                            INT32_C( 1379992136), INT32_C( 1090781194), INT32_C(   50925953), INT32_C(  145293700)) },
    { simde_mm256_set_epi32(INT32_C( 1671320788), INT32_C(   16189529), INT32_C(-1485817573), INT32_C(  275783232),
                            INT32_C( -537268511), INT32_C(-1218162385), INT32_C(  832178136), INT32_C(-1011542055)),
      simde_mm256_set_epi32(INT32_C( 1761443736), INT32_C(   53908736), INT32_C(-1387734476), INT32_C(  460708168),
                            INT32_C( 1701279267), INT32_C( 1520265677), INT32_C(-1733909786), INT32_C(  106810720)),
      simde_mm256_set_epi32(INT32_C(  140585736), INT32_C(   50369792), INT32_C(  134791716), INT32_C(  184926472),
                            INT32_C(  537268226), INT32_C( 1217996992), INT32_C(-2010865626), INT32_C(   71878688)) },
    { simde_mm256_set_epi32(INT32_C( 1589201791), INT32_C(-1842375346), INT32_C(-2000660080), INT32_C( -325292371),
                            INT32_C(  507717673), INT32_C(-1795722597), INT32_C( -367442910), INT32_C(  -52157671)),
      simde_mm256_set_epi32(INT32_C(  948353791), INT32_C( -947869222), INT32_C( 1848909924), INT32_C( 1620600148),
                            INT32_C(-1789584398), INT32_C(-1352425263), INT32_C( 1123687286), INT32_C( -367624963)),
      simde_mm256_set_epi32(INT32_C(  537309312), INT32_C( 1166026896), INT32_C( 1714692196), INT32_C(        336),
                            INT32_C(-2129390638), INT32_C(  721453120), INT32_C(   14818132), INT32_C(   34757860)) },
    { simde_mm256_set_epi32(INT32_C(  296819835), INT32_C(  519012224), INT32_C( 1292929763), INT32_C( 1826612612),
                            INT32_C(-1166644367), INT32_C(-1218677893), INT32_C( 1596508105), INT32_C(  479196973)),
      simde_mm256_set_epi32(INT32_C(-1798100031), INT32_C( 1081570687), INT32_C( -734752872), INT32_C( 1848654589),
                            INT32_C(-1212254773), INT32_C( 1838985430), INT32_C( 1056167509), INT32_C(-1850230510)),
      simde_mm256_set_epi32(INT32_C(-2076040320), INT32_C( 1074790527), INT32_C(-1876687592), INT32_C(   35658361),
                            INT32_C(   92804234), INT32_C( 1216381060), INT32_C(  550703124), INT32_C(-2127558638)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256i r = simde_mm256_castps_si256(simde_mm256_andnot_ps(simde_mm256_castsi256_ps(test_vec[i].a), simde_mm256_castsi256_ps(test_vec[i].b)));
    simde_assert_m256i_i32(r, ==, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_andnot_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256i a;
    simde__m256i b;
    simde__m256i r;
  } test_vec[8] = {
    { simde_mm256_set_epi64x(INT64_C(-8439082616481350053), INT64_C(-1591722586538286382),
                             INT64_C( 1596940992066035921), INT64_C( 7218980746644065590)),
      simde_mm256_set_epi64x(INT64_C(-2889835723484335944), INT64_C( 5702037989414933855),
                             INT64_C(-7588441850660451968), INT64_C( 5622786757188964496)),
      simde_mm256_set_epi64x(INT64_C( 6126343173960302752), INT64_C(  432527267492795661),
                             INT64_C(-9182839637781772032), INT64_C(  720582821084942464)) },
    { simde_mm256_set_epi64x(INT64_C(-3971123103425330466), INT64_C(  247751845170013697),
                             INT64_C( 5585328925838094706), INT64_C(  530115277368604043)),
      simde_mm256_set_epi64x(INT64_C( 4478919331480512906), INT64_C( 7586040465456902581),
                             INT64_C(-3267189003236240754), INT64_C( 4065656935289916932)),
      simde_mm256_set_epi64x(INT64_C( 3893433775916460288), INT64_C( 7495967802570838452),
                             INT64_C(-7914921412211473780), INT64_C( 4045363244402936324)) },
    { simde_mm256_set_epi64x(INT64_C(-3585412687111992497), INT64_C( 6297904517919445636),
                             INT64_C( 3051626993143041669), INT64_C( 4507652791803794073)),
      simde_mm256_set_epi64x(INT64_C( 7790656180790731512), INT64_C(-2238278921609140434),
                             INT64_C(-3659407193774134076), INT64_C(-7376863833910103250)),
      simde_mm256_set_epi64x(INT64_C( 2306388938282574000), INT64_C(-6876986580769954518),
                             INT64_C(-4240666768871972800), INT64_C(-9142279579591991002)) },
    { simde_mm256_set_epi64x(INT64_C( 7999698065344811916), INT64_C(-7341244500866629440),
                             INT64_C(-7328850488568705697), INT64_C(-2323514350316525032)),
      simde_mm256_set_epi64x(INT64_C( -107804005911866164), INT64_C(  111123727598973975),
                             INT64_C(-1111380546027591655), INT64_C( 4764066650640007854)),
      simde_mm256_set_epi64x(INT64_C(-8034139356564159424), INT64_C(  108159439879631895),
                             INT64_C( 6958347297832099840), INT64_C(    7957580804685990)) },
    { simde_mm256_set_epi64x(INT64_C( 3459048579714364836), INT64_C(-3973289916381214951),
                             INT64_C(-7209230353107463172), INT64_C( 2930204184482970329)),
      simde_mm256_set_epi64x(INT64_C( 3010733025435453292), INT64_C( -745749005863907277),
                             INT64_C(-3524732567674843907), INT64_C(-5826758923945327044)),
      simde_mm256_set_epi64x(INT64_C(  704889912361353800), INT64_C( 3828781103108395042),
                             INT64_C( 4901042599637093377), INT64_C(-8718669257106881500)) },
    { simde_mm256_set_epi64x(INT64_C(-7592832401699875339), INT64_C(-8023654109997292762),
                             INT64_C(-2771476036962446296), INT64_C( 9102393041728593835)),
      simde_mm256_set_epi64x(INT64_C( 8663885080599503900), INT64_C(-7386785027439544145),
                             INT64_C( 8164489019718037552), INT64_C(  750237314916317106)),
      simde_mm256_set_epi64x(INT64_C( 7501880507188158472), INT64_C(  673462032523630729),
                             INT64_C( 2325549012813766672), INT64_C(   11611668710957072)) },
    { simde_mm256_set_epi64x(INT64_C(  845408412650914951), INT64_C(-8878005092884591737),
                             INT64_C( 8700006383250628168), INT64_C( 5164616504794613874)),
      simde_mm256_set_epi64x(INT64_C(-8091532354365363750), INT64_C(-8752462265867882388),
                             INT64_C( 4660987830245455204), INT64_C(-5583031631743087362)),
      simde_mm256_set_epi64x(INT64_C(-8934015756479190696), INT64_C(  144397281535078504),
                             INT64_C(     851058845950244), INT64_C(-5764308427349687156)) },
    { simde_mm256_set_epi64x(INT64_C( 2555908784249146521), INT64_C(-8475938792743727314),
                             INT64_C( 2225136272678261710), INT64_C( -363869634240011329)),
      simde_mm256_set_epi64x(INT64_C(-1884165091148513154), INT64_C(-7810796383227036924),
                             INT64_C(-3384871664970291123), INT64_C( 3413049808639883718)),
      simde_mm256_set_epi64x(INT64_C(-4286845753352634266), INT64_C( 1261025490606501888),
                             INT64_C(-4537798832575469567), INT64_C(  363824553704642624)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256i r = simde_mm256_castpd_si256(simde_mm256_andnot_pd(simde_mm256_castsi256_pd(test_vec[i].a), simde_mm256_castsi256_pd(test_vec[i].b)));
    simde_assert_m256i_i64(r, ==, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_castps_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde__m256 r;
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(    17.89), SIMDE_FLOAT32_C(  -439.16),
                         SIMDE_FLOAT32_C(   198.42), SIMDE_FLOAT32_C(   352.58),
                         SIMDE_FLOAT32_C(   461.89), SIMDE_FLOAT32_C(  -105.28),
                         SIMDE_FLOAT32_C(   143.68), SIMDE_FLOAT32_C(   337.71)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(    17.89), SIMDE_FLOAT32_C(  -439.16),
                         SIMDE_FLOAT32_C(   198.42), SIMDE_FLOAT32_C(   352.58),
                         SIMDE_FLOAT32_C(   461.89), SIMDE_FLOAT32_C(  -105.28),
                         SIMDE_FLOAT32_C(   143.68), SIMDE_FLOAT32_C(   337.71)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   104.39), SIMDE_FLOAT32_C(    34.20),
                         SIMDE_FLOAT32_C(   868.43), SIMDE_FLOAT32_C(  -354.71),
                         SIMDE_FLOAT32_C(    71.91), SIMDE_FLOAT32_C(  -620.66),
                         SIMDE_FLOAT32_C(  -727.46), SIMDE_FLOAT32_C(   516.70)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   104.39), SIMDE_FLOAT32_C(    34.20),
                         SIMDE_FLOAT32_C(   868.43), SIMDE_FLOAT32_C(  -354.71),
                         SIMDE_FLOAT32_C(    71.91), SIMDE_FLOAT32_C(  -620.66),
                         SIMDE_FLOAT32_C(  -727.46), SIMDE_FLOAT32_C(   516.70)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(    57.24), SIMDE_FLOAT32_C(  -937.39),
                         SIMDE_FLOAT32_C(  -902.27), SIMDE_FLOAT32_C(  -540.76),
                         SIMDE_FLOAT32_C(  -319.95), SIMDE_FLOAT32_C(   472.57),
                         SIMDE_FLOAT32_C(  -514.05), SIMDE_FLOAT32_C(  -395.89)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(    57.24), SIMDE_FLOAT32_C(  -937.39),
                         SIMDE_FLOAT32_C(  -902.27), SIMDE_FLOAT32_C(  -540.76),
                         SIMDE_FLOAT32_C(  -319.95), SIMDE_FLOAT32_C(   472.57),
                         SIMDE_FLOAT32_C(  -514.05), SIMDE_FLOAT32_C(  -395.89)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  -289.46), SIMDE_FLOAT32_C(  -292.09),
                         SIMDE_FLOAT32_C(   300.75), SIMDE_FLOAT32_C(   515.47),
                         SIMDE_FLOAT32_C(  -443.08), SIMDE_FLOAT32_C(   738.56),
                         SIMDE_FLOAT32_C(   388.31), SIMDE_FLOAT32_C(  -979.02)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  -289.46), SIMDE_FLOAT32_C(  -292.09),
                         SIMDE_FLOAT32_C(   300.75), SIMDE_FLOAT32_C(   515.47),
                         SIMDE_FLOAT32_C(  -443.08), SIMDE_FLOAT32_C(   738.56),
                         SIMDE_FLOAT32_C(   388.31), SIMDE_FLOAT32_C(  -979.02)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  -416.84), SIMDE_FLOAT32_C(  -145.54),
                         SIMDE_FLOAT32_C(   814.92), SIMDE_FLOAT32_C(  -389.04),
                         SIMDE_FLOAT32_C(   271.28), SIMDE_FLOAT32_C(   795.75),
                         SIMDE_FLOAT32_C(   715.64), SIMDE_FLOAT32_C(  -282.83)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  -416.84), SIMDE_FLOAT32_C(  -145.54),
                         SIMDE_FLOAT32_C(   814.92), SIMDE_FLOAT32_C(  -389.04),
                         SIMDE_FLOAT32_C(   271.28), SIMDE_FLOAT32_C(   795.75),
                         SIMDE_FLOAT32_C(   715.64), SIMDE_FLOAT32_C(  -282.83)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(    36.85), SIMDE_FLOAT32_C(   358.48),
                         SIMDE_FLOAT32_C(  -119.62), SIMDE_FLOAT32_C(   444.11),
                         SIMDE_FLOAT32_C(   221.60), SIMDE_FLOAT32_C(  -300.30),
                         SIMDE_FLOAT32_C(   -48.26), SIMDE_FLOAT32_C(   969.79)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(    36.85), SIMDE_FLOAT32_C(   358.48),
                         SIMDE_FLOAT32_C(  -119.62), SIMDE_FLOAT32_C(   444.11),
                         SIMDE_FLOAT32_C(   221.60), SIMDE_FLOAT32_C(  -300.30),
                         SIMDE_FLOAT32_C(   -48.26), SIMDE_FLOAT32_C(   969.79)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  -242.13), SIMDE_FLOAT32_C(  -172.63),
                         SIMDE_FLOAT32_C(  -556.49), SIMDE_FLOAT32_C(  -637.53),
                         SIMDE_FLOAT32_C(    39.04), SIMDE_FLOAT32_C(  -822.45),
                         SIMDE_FLOAT32_C(  -881.86), SIMDE_FLOAT32_C(   639.51)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  -242.13), SIMDE_FLOAT32_C(  -172.63),
                         SIMDE_FLOAT32_C(  -556.49), SIMDE_FLOAT32_C(  -637.53),
                         SIMDE_FLOAT32_C(    39.04), SIMDE_FLOAT32_C(  -822.45),
                         SIMDE_FLOAT32_C(  -881.86), SIMDE_FLOAT32_C(   639.51)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   262.21), SIMDE_FLOAT32_C(   189.91),
                         SIMDE_FLOAT32_C(  -147.18), SIMDE_FLOAT32_C(  -378.37),
                         SIMDE_FLOAT32_C(  -474.15), SIMDE_FLOAT32_C(   728.93),
                         SIMDE_FLOAT32_C(  -779.84), SIMDE_FLOAT32_C(  -836.44)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   262.21), SIMDE_FLOAT32_C(   189.91),
                         SIMDE_FLOAT32_C(  -147.18), SIMDE_FLOAT32_C(  -378.37),
                         SIMDE_FLOAT32_C(  -474.15), SIMDE_FLOAT32_C(   728.93),
                         SIMDE_FLOAT32_C(  -779.84), SIMDE_FLOAT32_C(  -836.44)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256 r = simde_mm256_castpd_ps(simde_mm256_castps_pd(test_vec[i].a));
    simde_assert_m256_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_castpd_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256d a;
    simde__m256d r;
  } test_vec[8] = {
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  866.38), SIMDE_FLOAT64_C( -294.05),
                         SIMDE_FLOAT64_C( -595.07), SIMDE_FLOAT64_C(   30.82)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  866.38), SIMDE_FLOAT64_C( -294.05),
                         SIMDE_FLOAT64_C( -595.07), SIMDE_FLOAT64_C(   30.82)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  967.90), SIMDE_FLOAT64_C(  598.86),
                         SIMDE_FLOAT64_C( -336.28), SIMDE_FLOAT64_C(  771.72)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  967.90), SIMDE_FLOAT64_C(  598.86),
                         SIMDE_FLOAT64_C( -336.28), SIMDE_FLOAT64_C(  771.72)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -949.57), SIMDE_FLOAT64_C( -900.42),
                         SIMDE_FLOAT64_C(  702.02), SIMDE_FLOAT64_C( -980.34)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -949.57), SIMDE_FLOAT64_C( -900.42),
                         SIMDE_FLOAT64_C(  702.02), SIMDE_FLOAT64_C( -980.34)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  969.39), SIMDE_FLOAT64_C(  513.49),
                         SIMDE_FLOAT64_C(  950.16), SIMDE_FLOAT64_C( -812.08)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  969.39), SIMDE_FLOAT64_C(  513.49),
                         SIMDE_FLOAT64_C(  950.16), SIMDE_FLOAT64_C( -812.08)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -507.62), SIMDE_FLOAT64_C( -207.64),
                         SIMDE_FLOAT64_C(  179.82), SIMDE_FLOAT64_C(   43.82)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -507.62), SIMDE_FLOAT64_C( -207.64),
                         SIMDE_FLOAT64_C(  179.82), SIMDE_FLOAT64_C(   43.82)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  461.29), SIMDE_FLOAT64_C(  530.93),
                         SIMDE_FLOAT64_C(   26.40), SIMDE_FLOAT64_C( -295.00)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  461.29), SIMDE_FLOAT64_C(  530.93),
                         SIMDE_FLOAT64_C(   26.40), SIMDE_FLOAT64_C( -295.00)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  195.05), SIMDE_FLOAT64_C( -631.18),
                         SIMDE_FLOAT64_C( -125.11), SIMDE_FLOAT64_C( -657.02)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  195.05), SIMDE_FLOAT64_C( -631.18),
                         SIMDE_FLOAT64_C( -125.11), SIMDE_FLOAT64_C( -657.02)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  839.46), SIMDE_FLOAT64_C( -787.94),
                         SIMDE_FLOAT64_C( -273.33), SIMDE_FLOAT64_C( -261.67)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  839.46), SIMDE_FLOAT64_C( -787.94),
                         SIMDE_FLOAT64_C( -273.33), SIMDE_FLOAT64_C( -261.67)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256d r = simde_mm256_castps_pd(simde_mm256_castpd_ps(test_vec[i].a));
    simde_assert_m256d_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_castps128_ps256(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m128 a;
    simde__m256 r;
  } test_vec[8] = {
    { simde_mm_set_ps(SIMDE_FLOAT32_C(   351.31), SIMDE_FLOAT32_C(   331.36), SIMDE_FLOAT32_C(   112.22), SIMDE_FLOAT32_C(   -15.48)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(   351.31), SIMDE_FLOAT32_C(   331.36),
                         SIMDE_FLOAT32_C(   112.22), SIMDE_FLOAT32_C(   -15.48)) },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(   905.42), SIMDE_FLOAT32_C(  -224.21), SIMDE_FLOAT32_C(   -76.15), SIMDE_FLOAT32_C(   663.18)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(   905.42), SIMDE_FLOAT32_C(  -224.21),
                         SIMDE_FLOAT32_C(   -76.15), SIMDE_FLOAT32_C(   663.18)) },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(   830.23), SIMDE_FLOAT32_C(    -5.95), SIMDE_FLOAT32_C(   918.64), SIMDE_FLOAT32_C(   777.19)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(   830.23), SIMDE_FLOAT32_C(    -5.95),
                         SIMDE_FLOAT32_C(   918.64), SIMDE_FLOAT32_C(   777.19)) },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(  -168.85), SIMDE_FLOAT32_C(  -871.57), SIMDE_FLOAT32_C(    40.10), SIMDE_FLOAT32_C(  -558.27)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(  -168.85), SIMDE_FLOAT32_C(  -871.57),
                         SIMDE_FLOAT32_C(    40.10), SIMDE_FLOAT32_C(  -558.27)) },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(  -791.93), SIMDE_FLOAT32_C(   293.41), SIMDE_FLOAT32_C(   390.85), SIMDE_FLOAT32_C(   476.42)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(  -791.93), SIMDE_FLOAT32_C(   293.41),
                         SIMDE_FLOAT32_C(   390.85), SIMDE_FLOAT32_C(   476.42)) },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(   481.03), SIMDE_FLOAT32_C(  -319.83), SIMDE_FLOAT32_C(  -437.10), SIMDE_FLOAT32_C(  -775.98)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(   481.03), SIMDE_FLOAT32_C(  -319.83),
                         SIMDE_FLOAT32_C(  -437.10), SIMDE_FLOAT32_C(  -775.98)) },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(   193.26), SIMDE_FLOAT32_C(   702.14), SIMDE_FLOAT32_C(  -820.75), SIMDE_FLOAT32_C(  -158.78)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(   193.26), SIMDE_FLOAT32_C(   702.14),
                         SIMDE_FLOAT32_C(  -820.75), SIMDE_FLOAT32_C(  -158.78)) },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(  -995.99), SIMDE_FLOAT32_C(   290.31), SIMDE_FLOAT32_C(  -219.12), SIMDE_FLOAT32_C(  -837.21)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(  -995.99), SIMDE_FLOAT32_C(   290.31),
                         SIMDE_FLOAT32_C(  -219.12), SIMDE_FLOAT32_C(  -837.21)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256_private r = simde__m256_to_private(simde_mm256_castps128_ps256(test_vec[i].a));
    simde__m256_private expected = simde__m256_to_private(test_vec[i].r);
    simde_assert_m128_equal(r.m128[0], expected.m128[0]);
  }

  return 0;
}

static int
test_simde_mm256_castps256_ps128(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde__m128 r;
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  -556.83), SIMDE_FLOAT32_C(   534.45),
                         SIMDE_FLOAT32_C(   421.40), SIMDE_FLOAT32_C(   932.30),
                         SIMDE_FLOAT32_C(   169.92), SIMDE_FLOAT32_C(   399.10),
                         SIMDE_FLOAT32_C(  -742.08), SIMDE_FLOAT32_C(  -830.66)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(   169.92), SIMDE_FLOAT32_C(   399.10), SIMDE_FLOAT32_C(  -742.08), SIMDE_FLOAT32_C(  -830.66)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   802.82), SIMDE_FLOAT32_C(   -21.64),
                         SIMDE_FLOAT32_C(  -298.77), SIMDE_FLOAT32_C(  -723.27),
                         SIMDE_FLOAT32_C(    42.85), SIMDE_FLOAT32_C(  -154.70),
                         SIMDE_FLOAT32_C(  -285.18), SIMDE_FLOAT32_C(  -881.89)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(    42.85), SIMDE_FLOAT32_C(  -154.70), SIMDE_FLOAT32_C(  -285.18), SIMDE_FLOAT32_C(  -881.89)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   606.40), SIMDE_FLOAT32_C(   978.13),
                         SIMDE_FLOAT32_C(   281.04), SIMDE_FLOAT32_C(   316.13),
                         SIMDE_FLOAT32_C(     8.74), SIMDE_FLOAT32_C(  -824.14),
                         SIMDE_FLOAT32_C(  -338.77), SIMDE_FLOAT32_C(  -977.64)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(     8.74), SIMDE_FLOAT32_C(  -824.14), SIMDE_FLOAT32_C(  -338.77), SIMDE_FLOAT32_C(  -977.64)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   500.38), SIMDE_FLOAT32_C(  -378.47),
                         SIMDE_FLOAT32_C(  -151.95), SIMDE_FLOAT32_C(  -513.15),
                         SIMDE_FLOAT32_C(  -509.66), SIMDE_FLOAT32_C(   542.95),
                         SIMDE_FLOAT32_C(  -511.97), SIMDE_FLOAT32_C(   606.72)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  -509.66), SIMDE_FLOAT32_C(   542.95), SIMDE_FLOAT32_C(  -511.97), SIMDE_FLOAT32_C(   606.72)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  -156.57), SIMDE_FLOAT32_C(  -909.62),
                         SIMDE_FLOAT32_C(   457.12), SIMDE_FLOAT32_C(  -549.96),
                         SIMDE_FLOAT32_C(   250.75), SIMDE_FLOAT32_C(  -503.56),
                         SIMDE_FLOAT32_C(  -397.59), SIMDE_FLOAT32_C(   644.59)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(   250.75), SIMDE_FLOAT32_C(  -503.56), SIMDE_FLOAT32_C(  -397.59), SIMDE_FLOAT32_C(   644.59)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   692.42), SIMDE_FLOAT32_C(   776.78),
                         SIMDE_FLOAT32_C(  -240.36), SIMDE_FLOAT32_C(  -615.28),
                         SIMDE_FLOAT32_C(  -428.59), SIMDE_FLOAT32_C(   807.96),
                         SIMDE_FLOAT32_C(  -867.86), SIMDE_FLOAT32_C(   511.34)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  -428.59), SIMDE_FLOAT32_C(   807.96), SIMDE_FLOAT32_C(  -867.86), SIMDE_FLOAT32_C(   511.34)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   115.07), SIMDE_FLOAT32_C(  -200.05),
                         SIMDE_FLOAT32_C(  -278.17), SIMDE_FLOAT32_C(   321.78),
                         SIMDE_FLOAT32_C(   793.85), SIMDE_FLOAT32_C(   416.18),
                         SIMDE_FLOAT32_C(  -935.48), SIMDE_FLOAT32_C(  -637.83)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(   793.85), SIMDE_FLOAT32_C(   416.18), SIMDE_FLOAT32_C(  -935.48), SIMDE_FLOAT32_C(  -637.83)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   951.45), SIMDE_FLOAT32_C(   803.49),
                         SIMDE_FLOAT32_C(  -646.03), SIMDE_FLOAT32_C(  -379.68),
                         SIMDE_FLOAT32_C(   433.22), SIMDE_FLOAT32_C(   128.68),
                         SIMDE_FLOAT32_C(   589.03), SIMDE_FLOAT32_C(   956.87)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(   433.22), SIMDE_FLOAT32_C(   128.68), SIMDE_FLOAT32_C(   589.03), SIMDE_FLOAT32_C(   956.87)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m128 r = simde_mm256_castps256_ps128(test_vec[i].a);
    simde_assert_m128_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_castps_si256(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256i a;
    simde__m256i r;
  } test_vec[8] = {
    { simde_mm256_set_epi32(INT32_C(-1649031696), INT32_C(  834872153), INT32_C(  230986620), INT32_C( -480324866),
                            INT32_C( 1237553077), INT32_C(  596539913), INT32_C( -724550399), INT32_C( -685617130)),
      simde_mm256_set_epi32(INT32_C(-1649031696), INT32_C(  834872153), INT32_C(  230986620), INT32_C( -480324866),
                            INT32_C( 1237553077), INT32_C(  596539913), INT32_C( -724550399), INT32_C( -685617130)) },
    { simde_mm256_set_epi32(INT32_C( 2090398598), INT32_C( 2109187943), INT32_C( 2052808539), INT32_C(  748311192),
                            INT32_C( -177311449), INT32_C(  358911508), INT32_C( 1754057382), INT32_C(-1724435543)),
      simde_mm256_set_epi32(INT32_C( 2090398598), INT32_C( 2109187943), INT32_C( 2052808539), INT32_C(  748311192),
                            INT32_C( -177311449), INT32_C(  358911508), INT32_C( 1754057382), INT32_C(-1724435543)) },
    { simde_mm256_set_epi32(INT32_C(-1888707460), INT32_C(  492300795), INT32_C(-1881516103), INT32_C( 1522261816),
                            INT32_C(  516271628), INT32_C( 1619360533), INT32_C(  585952460), INT32_C(-1270838330)),
      simde_mm256_set_epi32(INT32_C(-1888707460), INT32_C(  492300795), INT32_C(-1881516103), INT32_C( 1522261816),
                            INT32_C(  516271628), INT32_C( 1619360533), INT32_C(  585952460), INT32_C(-1270838330)) },
    { simde_mm256_set_epi32(INT32_C(-1165169384), INT32_C(-2002996511), INT32_C(-1387036009), INT32_C(  730682044),
                            INT32_C( -504180431), INT32_C(-1682623046), INT32_C( 1968017036), INT32_C(  283253644)),
      simde_mm256_set_epi32(INT32_C(-1165169384), INT32_C(-2002996511), INT32_C(-1387036009), INT32_C(  730682044),
                            INT32_C( -504180431), INT32_C(-1682623046), INT32_C( 1968017036), INT32_C(  283253644)) },
    { simde_mm256_set_epi32(INT32_C( 1949666143), INT32_C( -888451700), INT32_C(  605916520), INT32_C(-1265057380),
                            INT32_C( 1158984758), INT32_C(  710723273), INT32_C( -342604717), INT32_C(-1218392316)),
      simde_mm256_set_epi32(INT32_C( 1949666143), INT32_C( -888451700), INT32_C(  605916520), INT32_C(-1265057380),
                            INT32_C( 1158984758), INT32_C(  710723273), INT32_C( -342604717), INT32_C(-1218392316)) },
    { simde_mm256_set_epi32(INT32_C(-1870151604), INT32_C(-2002713920), INT32_C(-1131057702), INT32_C(-1611852985),
                            INT32_C( 1725575775), INT32_C( -263968835), INT32_C(   26802813), INT32_C( -641556710)),
      simde_mm256_set_epi32(INT32_C(-1870151604), INT32_C(-2002713920), INT32_C(-1131057702), INT32_C(-1611852985),
                            INT32_C( 1725575775), INT32_C( -263968835), INT32_C(   26802813), INT32_C( -641556710)) },
    { simde_mm256_set_epi32(INT32_C(  938077299), INT32_C(    4161792), INT32_C( 1718084645), INT32_C( 1391219860),
                            INT32_C( 1311036795), INT32_C(  132407700), INT32_C(-1161361885), INT32_C( -462662147)),
      simde_mm256_set_epi32(INT32_C(  938077299), INT32_C(    4161792), INT32_C( 1718084645), INT32_C( 1391219860),
                            INT32_C( 1311036795), INT32_C(  132407700), INT32_C(-1161361885), INT32_C( -462662147)) },
    { simde_mm256_set_epi32(INT32_C(  987097256), INT32_C( -835194619), INT32_C(-1566547652), INT32_C(-1345603026),
                            INT32_C(  138933650), INT32_C(-1430090796), INT32_C(-1310267132), INT32_C( 1931451372)),
      simde_mm256_set_epi32(INT32_C(  987097256), INT32_C( -835194619), INT32_C(-1566547652), INT32_C(-1345603026),
                            INT32_C(  138933650), INT32_C(-1430090796), INT32_C(-1310267132), INT32_C( 1931451372)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256i r = simde_mm256_castps_si256(simde_mm256_castsi256_ps(test_vec[i].a));
    simde_assert_m256i_i32(r, ==, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_castpd_si256(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256i a;
    simde__m256i r;
  } test_vec[8] = {
    { simde_mm256_set_epi64x(INT64_C(-6436426043624243132), INT64_C( 2719911931068686329),
                             INT64_C(-3355851641471628446), INT64_C(-4058286728495258453)),
      simde_mm256_set_epi64x(INT64_C(-6436426043624243132), INT64_C( 2719911931068686329),
                             INT64_C(-3355851641471628446), INT64_C(-4058286728495258453)) },
    { simde_mm256_set_epi64x(INT64_C(-6993645949082966147), INT64_C( 4041637144880323460),
                             INT64_C( 2966258866008904789), INT64_C( 2735372768247448487)),
      simde_mm256_set_epi64x(INT64_C(-6993645949082966147), INT64_C( 4041637144880323460),
                             INT64_C( 2966258866008904789), INT64_C( 2735372768247448487)) },
    { simde_mm256_set_epi64x(INT64_C(-6467543300276167050), INT64_C(-7030233167547396539),
                             INT64_C(-5268215840490095714), INT64_C( 8140300440770855984)),
      simde_mm256_set_epi64x(INT64_C(-6467543300276167050), INT64_C(-7030233167547396539),
                             INT64_C(-5268215840490095714), INT64_C( 8140300440770855984)) },
    { simde_mm256_set_epi64x(INT64_C(-3250744318785917277), INT64_C( 2545355707516900387),
                             INT64_C( 2404409761557662509), INT64_C( 3863384403090649322)),
      simde_mm256_set_epi64x(INT64_C(-3250744318785917277), INT64_C( 2545355707516900387),
                             INT64_C( 2404409761557662509), INT64_C( 3863384403090649322)) },
    { simde_mm256_set_epi64x(INT64_C(-4992649395117694343), INT64_C( 2252708120662783492),
                             INT64_C(-3886485865609467666), INT64_C( 4133517733748490879)),
      simde_mm256_set_epi64x(INT64_C(-4992649395117694343), INT64_C( 2252708120662783492),
                             INT64_C(-3886485865609467666), INT64_C( 4133517733748490879)) },
    { simde_mm256_set_epi64x(INT64_C(-7084284413768371436), INT64_C(  727608602759940145),
                             INT64_C( 5594257850626695037), INT64_C(-7304190896383027628)),
      simde_mm256_set_epi64x(INT64_C(-7084284413768371436), INT64_C(  727608602759940145),
                             INT64_C( 5594257850626695037), INT64_C(-7304190896383027628)) },
    { simde_mm256_set_epi64x(INT64_C(-1886107943195258905), INT64_C(-7906247581446835510),
                             INT64_C( 9068725184054777835), INT64_C( 3330105325701476873)),
      simde_mm256_set_epi64x(INT64_C(-1886107943195258905), INT64_C(-7906247581446835510),
                             INT64_C( 9068725184054777835), INT64_C( 3330105325701476873)) },
    { simde_mm256_set_epi64x(INT64_C( 1390912152688035821), INT64_C(-4783191750990221778),
                             INT64_C(-4829331002619468971), INT64_C( 2643188978129753257)),
      simde_mm256_set_epi64x(INT64_C( 1390912152688035821), INT64_C(-4783191750990221778),
                             INT64_C(-4829331002619468971), INT64_C( 2643188978129753257)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256i r = simde_mm256_castpd_si256(simde_mm256_castsi256_pd(test_vec[i].a));
    simde_assert_m256i_i64(r, ==, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_castsi128_si256(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m128i a;
    simde__m256i r;
  } test_vec[8] = {
    { simde_mm_set_epi32(INT32_C( 1176995756), INT32_C(-1870675232), INT32_C(  996429243), INT32_C(  550488102)),
      simde_mm256_set_epi32(INT32_C(          0), INT32_C(          0), INT32_C(          0), INT32_C(          0),
                            INT32_C( 1176995756), INT32_C(-1870675232), INT32_C(  996429243), INT32_C(  550488102)) },
    { simde_mm_set_epi32(INT32_C( 1022574086), INT32_C( -246750524), INT32_C(-1886376341), INT32_C(-1870907175)),
      simde_mm256_set_epi32(INT32_C(          0), INT32_C(          0), INT32_C(          0), INT32_C(          0),
                            INT32_C( 1022574086), INT32_C( -246750524), INT32_C(-1886376341), INT32_C(-1870907175)) },
    { simde_mm_set_epi32(INT32_C( 1399644059), INT32_C(-2062431582), INT32_C(  861056404), INT32_C(-1456249685)),
      simde_mm256_set_epi32(INT32_C(          0), INT32_C(          0), INT32_C(          0), INT32_C(          0),
                            INT32_C( 1399644059), INT32_C(-2062431582), INT32_C(  861056404), INT32_C(-1456249685)) },
    { simde_mm_set_epi32(INT32_C(-1357701315), INT32_C( -200201270), INT32_C(-2128732965), INT32_C( -971656840)),
      simde_mm256_set_epi32(INT32_C(          0), INT32_C(          0), INT32_C(          0), INT32_C(          0),
                            INT32_C(-1357701315), INT32_C( -200201270), INT32_C(-2128732965), INT32_C( -971656840)) },
    { simde_mm_set_epi32(INT32_C( 1758025228), INT32_C(   19121992), INT32_C( 1973849856), INT32_C( -609470236)),
      simde_mm256_set_epi32(INT32_C(          0), INT32_C(          0), INT32_C(          0), INT32_C(          0),
                            INT32_C( 1758025228), INT32_C(   19121992), INT32_C( 1973849856), INT32_C( -609470236)) },
    { simde_mm_set_epi32(INT32_C(-1315323340), INT32_C( 1995350243), INT32_C(-1725897434), INT32_C(  791183816)),
      simde_mm256_set_epi32(INT32_C(          0), INT32_C(          0), INT32_C(          0), INT32_C(          0),
                            INT32_C(-1315323340), INT32_C( 1995350243), INT32_C(-1725897434), INT32_C(  791183816)) },
    { simde_mm_set_epi32(INT32_C(-2046705493), INT32_C(  441938624), INT32_C(  -46886380), INT32_C(  606821245)),
      simde_mm256_set_epi32(INT32_C(          0), INT32_C(          0), INT32_C(          0), INT32_C(          0),
                            INT32_C(-2046705493), INT32_C(  441938624), INT32_C(  -46886380), INT32_C(  606821245)) },
    { simde_mm_set_epi32(INT32_C( 1167221394), INT32_C(  739794596), INT32_C(  187704590), INT32_C( 1165304892)),
      simde_mm256_set_epi32(INT32_C(          0), INT32_C(          0), INT32_C(          0), INT32_C(          0),
                            INT32_C( 1167221394), INT32_C(  739794596), INT32_C(  187704590), INT32_C( 1165304892)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m128i r = simde_mm256_extractf128_si256(simde_mm256_castsi128_si256(test_vec[i].a), 0);
    simde__m128i e = simde_mm256_extractf128_si256(test_vec[i].r, 0);
    simde_assert_m128i_equal(r, e);
  }

  return 0;
}

static int
test_simde_mm256_castsi256_si128(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256i a;
    simde__m128i r;
  } test_vec[8] = {
    { simde_mm256_set_epi32(INT32_C( 1033968789), INT32_C(  712909368), INT32_C(  -15382203), INT32_C(  726776461),
                            INT32_C( 1212968394), INT32_C( -910350077), INT32_C(-1401880553), INT32_C(-1640064659)),
      simde_mm_set_epi32(INT32_C( 1212968394), INT32_C( -910350077), INT32_C(-1401880553), INT32_C(-1640064659)) },
    { simde_mm256_set_epi32(INT32_C( -244971373), INT32_C( -839397474), INT32_C(-1281097070), INT32_C( 1259688200),
                            INT32_C(-1678523239), INT32_C(-1335997395), INT32_C( 1104214719), INT32_C(-1646552356)),
      simde_mm_set_epi32(INT32_C(-1678523239), INT32_C(-1335997395), INT32_C( 1104214719), INT32_C(-1646552356)) },
    { simde_mm256_set_epi32(INT32_C( 1339422473), INT32_C( -532071515), INT32_C(-1679156122), INT32_C( -104726847),
                            INT32_C( -189233938), INT32_C(-1476384511), INT32_C(   59015981), INT32_C( -574854746)),
      simde_mm_set_epi32(INT32_C( -189233938), INT32_C(-1476384511), INT32_C(   59015981), INT32_C( -574854746)) },
    { simde_mm256_set_epi32(INT32_C(  104804994), INT32_C(-1602912924), INT32_C(-1184587502), INT32_C( -929055139),
                            INT32_C(-1913020666), INT32_C( 1485870300), INT32_C( -930325282), INT32_C(  971511935)),
      simde_mm_set_epi32(INT32_C(-1913020666), INT32_C( 1485870300), INT32_C( -930325282), INT32_C(  971511935)) },
    { simde_mm256_set_epi32(INT32_C( -640493670), INT32_C( -513373085), INT32_C(  396752088), INT32_C( 1774159809),
                            INT32_C(-1068197323), INT32_C( -727216092), INT32_C( 2046795601), INT32_C( -954579053)),
      simde_mm_set_epi32(INT32_C(-1068197323), INT32_C( -727216092), INT32_C( 2046795601), INT32_C( -954579053)) },
    { simde_mm256_set_epi32(INT32_C(  968938230), INT32_C(  324986947), INT32_C( 1563795037), INT32_C( 1925209729),
                            INT32_C(-1635044296), INT32_C(  685246103), INT32_C( 1765586923), INT32_C( -978308891)),
      simde_mm_set_epi32(INT32_C(-1635044296), INT32_C(  685246103), INT32_C( 1765586923), INT32_C( -978308891)) },
    { simde_mm256_set_epi32(INT32_C(-1695851306), INT32_C(-2116140969), INT32_C(  146847367), INT32_C( -593023293),
                            INT32_C( 1573776318), INT32_C(-1046034616), INT32_C( -645014018), INT32_C( 1014255016)),
      simde_mm_set_epi32(INT32_C( 1573776318), INT32_C(-1046034616), INT32_C( -645014018), INT32_C( 1014255016)) },
    { simde_mm256_set_epi32(INT32_C( 1123223298), INT32_C( 1981751223), INT32_C( 1306799664), INT32_C(-1888445770),
                            INT32_C( 1502796782), INT32_C( 1707347280), INT32_C(  760982117), INT32_C( 1124914897)),
      simde_mm_set_epi32(INT32_C( 1502796782), INT32_C( 1707347280), INT32_C(  760982117), INT32_C( 1124914897)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m128i r = simde_mm256_castsi256_si128(test_vec[i].a);
    simde_assert_m128i_i32(r, ==, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_castsi256_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256i a;
    simde__m256i r;
  } test_vec[8] = {
    { simde_mm256_set_epi32(INT32_C(-1649031696), INT32_C(  834872153), INT32_C(  230986620), INT32_C( -480324866),
                            INT32_C( 1237553077), INT32_C(  596539913), INT32_C( -724550399), INT32_C( -685617130)),
      simde_mm256_set_epi32(INT32_C(-1649031696), INT32_C(  834872153), INT32_C(  230986620), INT32_C( -480324866),
                            INT32_C( 1237553077), INT32_C(  596539913), INT32_C( -724550399), INT32_C( -685617130)) },
    { simde_mm256_set_epi32(INT32_C( 2090398598), INT32_C( 2109187943), INT32_C( 2052808539), INT32_C(  748311192),
                            INT32_C( -177311449), INT32_C(  358911508), INT32_C( 1754057382), INT32_C(-1724435543)),
      simde_mm256_set_epi32(INT32_C( 2090398598), INT32_C( 2109187943), INT32_C( 2052808539), INT32_C(  748311192),
                            INT32_C( -177311449), INT32_C(  358911508), INT32_C( 1754057382), INT32_C(-1724435543)) },
    { simde_mm256_set_epi32(INT32_C(-1888707460), INT32_C(  492300795), INT32_C(-1881516103), INT32_C( 1522261816),
                            INT32_C(  516271628), INT32_C( 1619360533), INT32_C(  585952460), INT32_C(-1270838330)),
      simde_mm256_set_epi32(INT32_C(-1888707460), INT32_C(  492300795), INT32_C(-1881516103), INT32_C( 1522261816),
                            INT32_C(  516271628), INT32_C( 1619360533), INT32_C(  585952460), INT32_C(-1270838330)) },
    { simde_mm256_set_epi32(INT32_C(-1165169384), INT32_C(-2002996511), INT32_C(-1387036009), INT32_C(  730682044),
                            INT32_C( -504180431), INT32_C(-1682623046), INT32_C( 1968017036), INT32_C(  283253644)),
      simde_mm256_set_epi32(INT32_C(-1165169384), INT32_C(-2002996511), INT32_C(-1387036009), INT32_C(  730682044),
                            INT32_C( -504180431), INT32_C(-1682623046), INT32_C( 1968017036), INT32_C(  283253644)) },
    { simde_mm256_set_epi32(INT32_C( 1949666143), INT32_C( -888451700), INT32_C(  605916520), INT32_C(-1265057380),
                            INT32_C( 1158984758), INT32_C(  710723273), INT32_C( -342604717), INT32_C(-1218392316)),
      simde_mm256_set_epi32(INT32_C( 1949666143), INT32_C( -888451700), INT32_C(  605916520), INT32_C(-1265057380),
                            INT32_C( 1158984758), INT32_C(  710723273), INT32_C( -342604717), INT32_C(-1218392316)) },
    { simde_mm256_set_epi32(INT32_C(-1870151604), INT32_C(-2002713920), INT32_C(-1131057702), INT32_C(-1611852985),
                            INT32_C( 1725575775), INT32_C( -263968835), INT32_C(   26802813), INT32_C( -641556710)),
      simde_mm256_set_epi32(INT32_C(-1870151604), INT32_C(-2002713920), INT32_C(-1131057702), INT32_C(-1611852985),
                            INT32_C( 1725575775), INT32_C( -263968835), INT32_C(   26802813), INT32_C( -641556710)) },
    { simde_mm256_set_epi32(INT32_C(  938077299), INT32_C(    4161792), INT32_C( 1718084645), INT32_C( 1391219860),
                            INT32_C( 1311036795), INT32_C(  132407700), INT32_C(-1161361885), INT32_C( -462662147)),
      simde_mm256_set_epi32(INT32_C(  938077299), INT32_C(    4161792), INT32_C( 1718084645), INT32_C( 1391219860),
                            INT32_C( 1311036795), INT32_C(  132407700), INT32_C(-1161361885), INT32_C( -462662147)) },
    { simde_mm256_set_epi32(INT32_C(  987097256), INT32_C( -835194619), INT32_C(-1566547652), INT32_C(-1345603026),
                            INT32_C(  138933650), INT32_C(-1430090796), INT32_C(-1310267132), INT32_C( 1931451372)),
      simde_mm256_set_epi32(INT32_C(  987097256), INT32_C( -835194619), INT32_C(-1566547652), INT32_C(-1345603026),
                            INT32_C(  138933650), INT32_C(-1430090796), INT32_C(-1310267132), INT32_C( 1931451372)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256i r = simde_mm256_castps_si256(simde_mm256_castsi256_ps(test_vec[i].a));
    simde_assert_m256i_i32(r, ==, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_castsi256_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256i a;
    simde__m256i r;
  } test_vec[8] = {
    { simde_mm256_set_epi64x(INT64_C(-6436426043624243132), INT64_C( 2719911931068686329),
                             INT64_C(-3355851641471628446), INT64_C(-4058286728495258453)),
      simde_mm256_set_epi64x(INT64_C(-6436426043624243132), INT64_C( 2719911931068686329),
                             INT64_C(-3355851641471628446), INT64_C(-4058286728495258453)) },
    { simde_mm256_set_epi64x(INT64_C(-6993645949082966147), INT64_C( 4041637144880323460),
                             INT64_C( 2966258866008904789), INT64_C( 2735372768247448487)),
      simde_mm256_set_epi64x(INT64_C(-6993645949082966147), INT64_C( 4041637144880323460),
                             INT64_C( 2966258866008904789), INT64_C( 2735372768247448487)) },
    { simde_mm256_set_epi64x(INT64_C(-6467543300276167050), INT64_C(-7030233167547396539),
                             INT64_C(-5268215840490095714), INT64_C( 8140300440770855984)),
      simde_mm256_set_epi64x(INT64_C(-6467543300276167050), INT64_C(-7030233167547396539),
                             INT64_C(-5268215840490095714), INT64_C( 8140300440770855984)) },
    { simde_mm256_set_epi64x(INT64_C(-3250744318785917277), INT64_C( 2545355707516900387),
                             INT64_C( 2404409761557662509), INT64_C( 3863384403090649322)),
      simde_mm256_set_epi64x(INT64_C(-3250744318785917277), INT64_C( 2545355707516900387),
                             INT64_C( 2404409761557662509), INT64_C( 3863384403090649322)) },
    { simde_mm256_set_epi64x(INT64_C(-4992649395117694343), INT64_C( 2252708120662783492),
                             INT64_C(-3886485865609467666), INT64_C( 4133517733748490879)),
      simde_mm256_set_epi64x(INT64_C(-4992649395117694343), INT64_C( 2252708120662783492),
                             INT64_C(-3886485865609467666), INT64_C( 4133517733748490879)) },
    { simde_mm256_set_epi64x(INT64_C(-7084284413768371436), INT64_C(  727608602759940145),
                             INT64_C( 5594257850626695037), INT64_C(-7304190896383027628)),
      simde_mm256_set_epi64x(INT64_C(-7084284413768371436), INT64_C(  727608602759940145),
                             INT64_C( 5594257850626695037), INT64_C(-7304190896383027628)) },
    { simde_mm256_set_epi64x(INT64_C(-1886107943195258905), INT64_C(-7906247581446835510),
                             INT64_C( 9068725184054777835), INT64_C( 3330105325701476873)),
      simde_mm256_set_epi64x(INT64_C(-1886107943195258905), INT64_C(-7906247581446835510),
                             INT64_C( 9068725184054777835), INT64_C( 3330105325701476873)) },
    { simde_mm256_set_epi64x(INT64_C( 1390912152688035821), INT64_C(-4783191750990221778),
                             INT64_C(-4829331002619468971), INT64_C( 2643188978129753257)),
      simde_mm256_set_epi64x(INT64_C( 1390912152688035821), INT64_C(-4783191750990221778),
                             INT64_C(-4829331002619468971), INT64_C( 2643188978129753257)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256i r = simde_mm256_castpd_si256(simde_mm256_castsi256_pd(test_vec[i].a));
    simde_assert_m256i_i64(r, ==, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_blend_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde__m256 b;
    simde__m256 r;
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   61.35), SIMDE_FLOAT32_C(  540.33),
                         SIMDE_FLOAT32_C( -888.48), SIMDE_FLOAT32_C(  570.09),
                         SIMDE_FLOAT32_C(  312.02), SIMDE_FLOAT32_C( -960.46),
                         SIMDE_FLOAT32_C( -440.55), SIMDE_FLOAT32_C( -796.55)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -286.42), SIMDE_FLOAT32_C( -835.51),
                         SIMDE_FLOAT32_C(  177.42), SIMDE_FLOAT32_C(  142.03),
                         SIMDE_FLOAT32_C(  501.36), SIMDE_FLOAT32_C( -894.74),
                         SIMDE_FLOAT32_C( -798.77), SIMDE_FLOAT32_C(  511.25)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   61.35), SIMDE_FLOAT32_C(  540.33),
                         SIMDE_FLOAT32_C( -888.48), SIMDE_FLOAT32_C(  570.09),
                         SIMDE_FLOAT32_C(  501.36), SIMDE_FLOAT32_C( -894.74),
                         SIMDE_FLOAT32_C( -440.55), SIMDE_FLOAT32_C(  511.25)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  783.21), SIMDE_FLOAT32_C(  251.09),
                         SIMDE_FLOAT32_C( -929.85), SIMDE_FLOAT32_C( -378.97),
                         SIMDE_FLOAT32_C(  496.83), SIMDE_FLOAT32_C( -643.84),
                         SIMDE_FLOAT32_C( -785.45), SIMDE_FLOAT32_C( -676.85)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  375.42), SIMDE_FLOAT32_C( -689.69),
                         SIMDE_FLOAT32_C(  240.54), SIMDE_FLOAT32_C( -955.13),
                         SIMDE_FLOAT32_C(   82.52), SIMDE_FLOAT32_C(  210.36),
                         SIMDE_FLOAT32_C(  621.75), SIMDE_FLOAT32_C( -780.72)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  783.21), SIMDE_FLOAT32_C(  251.09),
                         SIMDE_FLOAT32_C( -929.85), SIMDE_FLOAT32_C( -378.97),
                         SIMDE_FLOAT32_C(   82.52), SIMDE_FLOAT32_C(  210.36),
                         SIMDE_FLOAT32_C( -785.45), SIMDE_FLOAT32_C( -780.72)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -747.80), SIMDE_FLOAT32_C( -376.86),
                         SIMDE_FLOAT32_C(  238.38), SIMDE_FLOAT32_C( -668.84),
                         SIMDE_FLOAT32_C(  238.09), SIMDE_FLOAT32_C(  936.53),
                         SIMDE_FLOAT32_C( -693.41), SIMDE_FLOAT32_C( -381.56)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   83.85), SIMDE_FLOAT32_C(  559.24),
                         SIMDE_FLOAT32_C( -896.35), SIMDE_FLOAT32_C(  225.46),
                         SIMDE_FLOAT32_C( -243.15), SIMDE_FLOAT32_C( -714.74),
                         SIMDE_FLOAT32_C(  388.91), SIMDE_FLOAT32_C(  608.15)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -747.80), SIMDE_FLOAT32_C( -376.86),
                         SIMDE_FLOAT32_C(  238.38), SIMDE_FLOAT32_C( -668.84),
                         SIMDE_FLOAT32_C( -243.15), SIMDE_FLOAT32_C( -714.74),
                         SIMDE_FLOAT32_C( -693.41), SIMDE_FLOAT32_C(  608.15)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(    1.67), SIMDE_FLOAT32_C( -361.23),
                         SIMDE_FLOAT32_C(  362.97), SIMDE_FLOAT32_C( -860.62),
                         SIMDE_FLOAT32_C(  518.00), SIMDE_FLOAT32_C(  985.53),
                         SIMDE_FLOAT32_C(  -40.74), SIMDE_FLOAT32_C(  246.28)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  236.67), SIMDE_FLOAT32_C( -133.38),
                         SIMDE_FLOAT32_C( -240.09), SIMDE_FLOAT32_C(  681.13),
                         SIMDE_FLOAT32_C( -437.53), SIMDE_FLOAT32_C(  645.53),
                         SIMDE_FLOAT32_C(  472.51), SIMDE_FLOAT32_C(   30.02)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(    1.67), SIMDE_FLOAT32_C( -361.23),
                         SIMDE_FLOAT32_C(  362.97), SIMDE_FLOAT32_C( -860.62),
                         SIMDE_FLOAT32_C( -437.53), SIMDE_FLOAT32_C(  645.53),
                         SIMDE_FLOAT32_C(  -40.74), SIMDE_FLOAT32_C(   30.02)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -759.07), SIMDE_FLOAT32_C(  240.96),
                         SIMDE_FLOAT32_C( -743.41), SIMDE_FLOAT32_C( -766.95),
                         SIMDE_FLOAT32_C( -733.55), SIMDE_FLOAT32_C( -798.68),
                         SIMDE_FLOAT32_C( -189.75), SIMDE_FLOAT32_C( -424.58)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -396.91), SIMDE_FLOAT32_C(  509.13),
                         SIMDE_FLOAT32_C(  462.02), SIMDE_FLOAT32_C(  520.45),
                         SIMDE_FLOAT32_C(  948.24), SIMDE_FLOAT32_C(  730.18),
                         SIMDE_FLOAT32_C( -709.02), SIMDE_FLOAT32_C( -858.64)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -759.07), SIMDE_FLOAT32_C(  240.96),
                         SIMDE_FLOAT32_C( -743.41), SIMDE_FLOAT32_C( -766.95),
                         SIMDE_FLOAT32_C(  948.24), SIMDE_FLOAT32_C(  730.18),
                         SIMDE_FLOAT32_C( -189.75), SIMDE_FLOAT32_C( -858.64)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  624.31), SIMDE_FLOAT32_C(  375.12),
                         SIMDE_FLOAT32_C(  629.27), SIMDE_FLOAT32_C(  901.24),
                         SIMDE_FLOAT32_C( -896.96), SIMDE_FLOAT32_C( -769.47),
                         SIMDE_FLOAT32_C(  452.93), SIMDE_FLOAT32_C( -251.17)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -148.06), SIMDE_FLOAT32_C( -474.61),
                         SIMDE_FLOAT32_C( -146.01), SIMDE_FLOAT32_C( -955.67),
                         SIMDE_FLOAT32_C(  931.60), SIMDE_FLOAT32_C( -773.07),
                         SIMDE_FLOAT32_C(  626.99), SIMDE_FLOAT32_C(  431.72)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  624.31), SIMDE_FLOAT32_C(  375.12),
                         SIMDE_FLOAT32_C(  629.27), SIMDE_FLOAT32_C(  901.24),
                         SIMDE_FLOAT32_C(  931.60), SIMDE_FLOAT32_C( -773.07),
                         SIMDE_FLOAT32_C(  452.93), SIMDE_FLOAT32_C(  431.72)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -812.40), SIMDE_FLOAT32_C( -551.18),
                         SIMDE_FLOAT32_C(  389.71), SIMDE_FLOAT32_C(  667.74),
                         SIMDE_FLOAT32_C(   -2.37), SIMDE_FLOAT32_C( -129.53),
                         SIMDE_FLOAT32_C(  860.16), SIMDE_FLOAT32_C(  760.95)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -172.95), SIMDE_FLOAT32_C( -591.71),
                         SIMDE_FLOAT32_C( -137.29), SIMDE_FLOAT32_C( -689.63),
                         SIMDE_FLOAT32_C(  644.48), SIMDE_FLOAT32_C(  859.03),
                         SIMDE_FLOAT32_C( -963.16), SIMDE_FLOAT32_C( -158.52)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -812.40), SIMDE_FLOAT32_C( -551.18),
                         SIMDE_FLOAT32_C(  389.71), SIMDE_FLOAT32_C(  667.74),
                         SIMDE_FLOAT32_C(  644.48), SIMDE_FLOAT32_C(  859.03),
                         SIMDE_FLOAT32_C(  860.16), SIMDE_FLOAT32_C( -158.52)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   53.03), SIMDE_FLOAT32_C( -493.76),
                         SIMDE_FLOAT32_C(  623.37), SIMDE_FLOAT32_C(  296.00),
                         SIMDE_FLOAT32_C( -416.71), SIMDE_FLOAT32_C( -539.89),
                         SIMDE_FLOAT32_C(  210.88), SIMDE_FLOAT32_C(  585.18)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  -34.37), SIMDE_FLOAT32_C( -267.21),
                         SIMDE_FLOAT32_C(  411.37), SIMDE_FLOAT32_C( -265.51),
                         SIMDE_FLOAT32_C(  345.42), SIMDE_FLOAT32_C(  252.46),
                         SIMDE_FLOAT32_C(  286.48), SIMDE_FLOAT32_C( -858.99)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   53.03), SIMDE_FLOAT32_C( -493.76),
                         SIMDE_FLOAT32_C(  623.37), SIMDE_FLOAT32_C(  296.00),
                         SIMDE_FLOAT32_C(  345.42), SIMDE_FLOAT32_C(  252.46),
                         SIMDE_FLOAT32_C(  210.88), SIMDE_FLOAT32_C( -858.99)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256 r = simde_mm256_blend_ps(test_vec[i].a, test_vec[i].b, 13);
    simde_assert_m256_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_blend_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256d a;
    simde__m256d b;
    simde__m256d r;
  } test_vec[8] = {
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  983.61), SIMDE_FLOAT64_C(  -51.56),
                         SIMDE_FLOAT64_C(  561.13), SIMDE_FLOAT64_C( -977.17)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  311.03), SIMDE_FLOAT64_C( -876.87),
                         SIMDE_FLOAT64_C(   15.56), SIMDE_FLOAT64_C(  821.58)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  311.03), SIMDE_FLOAT64_C( -876.87),
                         SIMDE_FLOAT64_C(  561.13), SIMDE_FLOAT64_C(  821.58)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  486.15), SIMDE_FLOAT64_C( -809.80),
                         SIMDE_FLOAT64_C( -134.49), SIMDE_FLOAT64_C( -709.30)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -588.52), SIMDE_FLOAT64_C( -823.37),
                         SIMDE_FLOAT64_C( -436.62), SIMDE_FLOAT64_C( -938.83)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -588.52), SIMDE_FLOAT64_C( -823.37),
                         SIMDE_FLOAT64_C( -134.49), SIMDE_FLOAT64_C( -938.83)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(   10.97), SIMDE_FLOAT64_C( -837.09),
                         SIMDE_FLOAT64_C( -238.93), SIMDE_FLOAT64_C( -927.62)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -150.59), SIMDE_FLOAT64_C(  428.13),
                         SIMDE_FLOAT64_C(  655.11), SIMDE_FLOAT64_C(  -28.81)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -150.59), SIMDE_FLOAT64_C(  428.13),
                         SIMDE_FLOAT64_C( -238.93), SIMDE_FLOAT64_C(  -28.81)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -691.52), SIMDE_FLOAT64_C( -756.72),
                         SIMDE_FLOAT64_C(   69.02), SIMDE_FLOAT64_C( -249.34)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -857.57), SIMDE_FLOAT64_C( -720.61),
                         SIMDE_FLOAT64_C(  529.12), SIMDE_FLOAT64_C(  813.95)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -857.57), SIMDE_FLOAT64_C( -720.61),
                         SIMDE_FLOAT64_C(   69.02), SIMDE_FLOAT64_C(  813.95)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  743.57), SIMDE_FLOAT64_C(  671.72),
                         SIMDE_FLOAT64_C(  747.66), SIMDE_FLOAT64_C(  592.11)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -559.29), SIMDE_FLOAT64_C(  529.63),
                         SIMDE_FLOAT64_C(  121.55), SIMDE_FLOAT64_C( -352.32)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -559.29), SIMDE_FLOAT64_C(  529.63),
                         SIMDE_FLOAT64_C(  747.66), SIMDE_FLOAT64_C( -352.32)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -466.05), SIMDE_FLOAT64_C( -621.64),
                         SIMDE_FLOAT64_C(  113.70), SIMDE_FLOAT64_C( -906.12)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -919.48), SIMDE_FLOAT64_C(  972.84),
                         SIMDE_FLOAT64_C(  378.79), SIMDE_FLOAT64_C( -196.68)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -919.48), SIMDE_FLOAT64_C(  972.84),
                         SIMDE_FLOAT64_C(  113.70), SIMDE_FLOAT64_C( -196.68)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -749.13), SIMDE_FLOAT64_C(   30.92),
                         SIMDE_FLOAT64_C(  753.62), SIMDE_FLOAT64_C( -864.28)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -997.13), SIMDE_FLOAT64_C(  675.64),
                         SIMDE_FLOAT64_C( -135.93), SIMDE_FLOAT64_C( -647.89)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -997.13), SIMDE_FLOAT64_C(  675.64),
                         SIMDE_FLOAT64_C(  753.62), SIMDE_FLOAT64_C( -647.89)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  757.64), SIMDE_FLOAT64_C(  119.62),
                         SIMDE_FLOAT64_C(  682.14), SIMDE_FLOAT64_C( -348.74)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  467.61), SIMDE_FLOAT64_C(  532.40),
                         SIMDE_FLOAT64_C(  959.59), SIMDE_FLOAT64_C( -392.58)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  467.61), SIMDE_FLOAT64_C(  532.40),
                         SIMDE_FLOAT64_C(  682.14), SIMDE_FLOAT64_C( -392.58)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256d r = simde_mm256_blend_pd(test_vec[i].a, test_vec[i].b, 13);
    simde_assert_m256d_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_blendv_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde__m256 b;
    simde__m256 mask;
    simde__m256 r;
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -169.19), SIMDE_FLOAT32_C( -303.51),
                         SIMDE_FLOAT32_C(  280.62), SIMDE_FLOAT32_C(  971.56),
                         SIMDE_FLOAT32_C(  558.62), SIMDE_FLOAT32_C(  244.31),
                         SIMDE_FLOAT32_C( -482.20), SIMDE_FLOAT32_C(  526.92)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  779.01), SIMDE_FLOAT32_C( -628.61),
                         SIMDE_FLOAT32_C( -781.26), SIMDE_FLOAT32_C( -923.79),
                         SIMDE_FLOAT32_C( -624.75), SIMDE_FLOAT32_C( -481.19),
                         SIMDE_FLOAT32_C(  750.60), SIMDE_FLOAT32_C(  693.30)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  392.97), SIMDE_FLOAT32_C(  752.07),
                         SIMDE_FLOAT32_C(  -74.68), SIMDE_FLOAT32_C( -769.29),
                         SIMDE_FLOAT32_C(  600.30), SIMDE_FLOAT32_C( -577.83),
                         SIMDE_FLOAT32_C(  257.89), SIMDE_FLOAT32_C( -759.37)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -169.19), SIMDE_FLOAT32_C( -303.51),
                         SIMDE_FLOAT32_C( -781.26), SIMDE_FLOAT32_C( -923.79),
                         SIMDE_FLOAT32_C(  558.62), SIMDE_FLOAT32_C( -481.19),
                         SIMDE_FLOAT32_C( -482.20), SIMDE_FLOAT32_C(  693.30)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  436.77), SIMDE_FLOAT32_C(  265.17),
                         SIMDE_FLOAT32_C( -598.85), SIMDE_FLOAT32_C( -424.56),
                         SIMDE_FLOAT32_C(  -24.79), SIMDE_FLOAT32_C( -558.99),
                         SIMDE_FLOAT32_C( -299.03), SIMDE_FLOAT32_C( -367.92)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  434.09), SIMDE_FLOAT32_C(   46.59),
                         SIMDE_FLOAT32_C(   85.98), SIMDE_FLOAT32_C( -164.97),
                         SIMDE_FLOAT32_C(   72.68), SIMDE_FLOAT32_C( -140.26),
                         SIMDE_FLOAT32_C(  458.69), SIMDE_FLOAT32_C(  804.02)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  696.57), SIMDE_FLOAT32_C(  799.50),
                         SIMDE_FLOAT32_C(  216.00), SIMDE_FLOAT32_C(  812.94),
                         SIMDE_FLOAT32_C(  321.91), SIMDE_FLOAT32_C(  497.67),
                         SIMDE_FLOAT32_C( -321.87), SIMDE_FLOAT32_C(  -96.28)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  436.77), SIMDE_FLOAT32_C(  265.17),
                         SIMDE_FLOAT32_C( -598.85), SIMDE_FLOAT32_C( -424.56),
                         SIMDE_FLOAT32_C(  -24.79), SIMDE_FLOAT32_C( -558.99),
                         SIMDE_FLOAT32_C(  458.69), SIMDE_FLOAT32_C(  804.02)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  593.15), SIMDE_FLOAT32_C(  822.85),
                         SIMDE_FLOAT32_C( -843.43), SIMDE_FLOAT32_C( -486.43),
                         SIMDE_FLOAT32_C(  259.42), SIMDE_FLOAT32_C( -708.30),
                         SIMDE_FLOAT32_C( -398.61), SIMDE_FLOAT32_C(  689.88)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -402.96), SIMDE_FLOAT32_C(  346.21),
                         SIMDE_FLOAT32_C( -865.06), SIMDE_FLOAT32_C(  330.41),
                         SIMDE_FLOAT32_C(  355.72), SIMDE_FLOAT32_C( -380.53),
                         SIMDE_FLOAT32_C(  702.28), SIMDE_FLOAT32_C(    6.18)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -441.80), SIMDE_FLOAT32_C(  453.07),
                         SIMDE_FLOAT32_C( -312.81), SIMDE_FLOAT32_C(  655.80),
                         SIMDE_FLOAT32_C( -443.61), SIMDE_FLOAT32_C( -292.20),
                         SIMDE_FLOAT32_C( -429.77), SIMDE_FLOAT32_C(  815.31)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -402.96), SIMDE_FLOAT32_C(  822.85),
                         SIMDE_FLOAT32_C( -865.06), SIMDE_FLOAT32_C( -486.43),
                         SIMDE_FLOAT32_C(  355.72), SIMDE_FLOAT32_C( -380.53),
                         SIMDE_FLOAT32_C(  702.28), SIMDE_FLOAT32_C(  689.88)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  627.12), SIMDE_FLOAT32_C( -903.61),
                         SIMDE_FLOAT32_C(  802.66), SIMDE_FLOAT32_C(  393.79),
                         SIMDE_FLOAT32_C( -634.24), SIMDE_FLOAT32_C(  782.19),
                         SIMDE_FLOAT32_C(  964.94), SIMDE_FLOAT32_C( -554.43)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -249.23), SIMDE_FLOAT32_C( -358.11),
                         SIMDE_FLOAT32_C(   69.71), SIMDE_FLOAT32_C(  774.95),
                         SIMDE_FLOAT32_C( -447.84), SIMDE_FLOAT32_C( -947.94),
                         SIMDE_FLOAT32_C( -908.85), SIMDE_FLOAT32_C(  -21.47)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  241.23), SIMDE_FLOAT32_C(   27.04),
                         SIMDE_FLOAT32_C(  341.47), SIMDE_FLOAT32_C(  482.33),
                         SIMDE_FLOAT32_C(  411.77), SIMDE_FLOAT32_C( -282.69),
                         SIMDE_FLOAT32_C(  915.57), SIMDE_FLOAT32_C( -213.96)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  627.12), SIMDE_FLOAT32_C( -903.61),
                         SIMDE_FLOAT32_C(  802.66), SIMDE_FLOAT32_C(  393.79),
                         SIMDE_FLOAT32_C( -634.24), SIMDE_FLOAT32_C( -947.94),
                         SIMDE_FLOAT32_C(  964.94), SIMDE_FLOAT32_C(  -21.47)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  365.56), SIMDE_FLOAT32_C(  297.70),
                         SIMDE_FLOAT32_C( -723.56), SIMDE_FLOAT32_C(  -52.07),
                         SIMDE_FLOAT32_C(  692.93), SIMDE_FLOAT32_C( -882.05),
                         SIMDE_FLOAT32_C( -424.36), SIMDE_FLOAT32_C( -366.57)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  744.52), SIMDE_FLOAT32_C(  387.36),
                         SIMDE_FLOAT32_C( -311.40), SIMDE_FLOAT32_C( -280.68),
                         SIMDE_FLOAT32_C(  556.91), SIMDE_FLOAT32_C(  703.77),
                         SIMDE_FLOAT32_C( -828.92), SIMDE_FLOAT32_C(  893.13)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -152.86), SIMDE_FLOAT32_C(  793.25),
                         SIMDE_FLOAT32_C(  667.69), SIMDE_FLOAT32_C(  940.95),
                         SIMDE_FLOAT32_C( -273.21), SIMDE_FLOAT32_C(  148.61),
                         SIMDE_FLOAT32_C(  420.18), SIMDE_FLOAT32_C(    4.30)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  744.52), SIMDE_FLOAT32_C(  297.70),
                         SIMDE_FLOAT32_C( -723.56), SIMDE_FLOAT32_C(  -52.07),
                         SIMDE_FLOAT32_C(  556.91), SIMDE_FLOAT32_C( -882.05),
                         SIMDE_FLOAT32_C( -424.36), SIMDE_FLOAT32_C( -366.57)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  806.04), SIMDE_FLOAT32_C(  998.56),
                         SIMDE_FLOAT32_C(  954.81), SIMDE_FLOAT32_C( -105.93),
                         SIMDE_FLOAT32_C(  810.39), SIMDE_FLOAT32_C( -451.40),
                         SIMDE_FLOAT32_C( -991.41), SIMDE_FLOAT32_C(   24.70)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   69.57), SIMDE_FLOAT32_C(  -71.31),
                         SIMDE_FLOAT32_C( -379.77), SIMDE_FLOAT32_C( -507.58),
                         SIMDE_FLOAT32_C( -931.37), SIMDE_FLOAT32_C( -271.48),
                         SIMDE_FLOAT32_C(  709.92), SIMDE_FLOAT32_C( -442.85)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -608.56), SIMDE_FLOAT32_C( -319.60),
                         SIMDE_FLOAT32_C( -930.98), SIMDE_FLOAT32_C( -628.59),
                         SIMDE_FLOAT32_C(  898.10), SIMDE_FLOAT32_C( -782.18),
                         SIMDE_FLOAT32_C( -846.42), SIMDE_FLOAT32_C(  513.23)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   69.57), SIMDE_FLOAT32_C(  -71.31),
                         SIMDE_FLOAT32_C( -379.77), SIMDE_FLOAT32_C( -507.58),
                         SIMDE_FLOAT32_C(  810.39), SIMDE_FLOAT32_C( -271.48),
                         SIMDE_FLOAT32_C(  709.92), SIMDE_FLOAT32_C(   24.70)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -598.65), SIMDE_FLOAT32_C( -864.46),
                         SIMDE_FLOAT32_C( -182.16), SIMDE_FLOAT32_C(  855.39),
                         SIMDE_FLOAT32_C( -689.66), SIMDE_FLOAT32_C(  116.31),
                         SIMDE_FLOAT32_C( -552.00), SIMDE_FLOAT32_C(  962.19)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(    2.01), SIMDE_FLOAT32_C(  601.06),
                         SIMDE_FLOAT32_C(  276.21), SIMDE_FLOAT32_C( -129.29),
                         SIMDE_FLOAT32_C( -199.59), SIMDE_FLOAT32_C( -345.44),
                         SIMDE_FLOAT32_C( -185.67), SIMDE_FLOAT32_C(  900.58)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  857.48), SIMDE_FLOAT32_C( -480.62),
                         SIMDE_FLOAT32_C( -406.99), SIMDE_FLOAT32_C( -422.80),
                         SIMDE_FLOAT32_C(    1.49), SIMDE_FLOAT32_C(  102.14),
                         SIMDE_FLOAT32_C(  113.98), SIMDE_FLOAT32_C( -405.64)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -598.65), SIMDE_FLOAT32_C(  601.06),
                         SIMDE_FLOAT32_C(  276.21), SIMDE_FLOAT32_C( -129.29),
                         SIMDE_FLOAT32_C( -689.66), SIMDE_FLOAT32_C(  116.31),
                         SIMDE_FLOAT32_C( -552.00), SIMDE_FLOAT32_C(  900.58)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  890.83), SIMDE_FLOAT32_C(  201.56),
                         SIMDE_FLOAT32_C(  104.24), SIMDE_FLOAT32_C(  496.38),
                         SIMDE_FLOAT32_C(  607.57), SIMDE_FLOAT32_C(  285.01),
                         SIMDE_FLOAT32_C(  501.29), SIMDE_FLOAT32_C( -590.78)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -643.60), SIMDE_FLOAT32_C(  256.83),
                         SIMDE_FLOAT32_C(  140.60), SIMDE_FLOAT32_C(  204.90),
                         SIMDE_FLOAT32_C(  371.07), SIMDE_FLOAT32_C( -744.00),
                         SIMDE_FLOAT32_C(  751.14), SIMDE_FLOAT32_C(  233.26)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -384.25), SIMDE_FLOAT32_C( -588.66),
                         SIMDE_FLOAT32_C( -531.19), SIMDE_FLOAT32_C( -520.11),
                         SIMDE_FLOAT32_C(  648.35), SIMDE_FLOAT32_C( -584.03),
                         SIMDE_FLOAT32_C(  700.38), SIMDE_FLOAT32_C(   21.17)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -643.60), SIMDE_FLOAT32_C(  256.83),
                         SIMDE_FLOAT32_C(  140.60), SIMDE_FLOAT32_C(  204.90),
                         SIMDE_FLOAT32_C(  607.57), SIMDE_FLOAT32_C( -744.00),
                         SIMDE_FLOAT32_C(  501.29), SIMDE_FLOAT32_C( -590.78)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256 r = simde_mm256_blendv_ps(test_vec[i].a, test_vec[i].b, test_vec[i].mask);
    simde_assert_m256_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_blendv_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256d a;
    simde__m256d b;
    simde__m256d mask;
    simde__m256d r;
  } test_vec[8] = {
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -587.29), SIMDE_FLOAT64_C(  745.99),
                         SIMDE_FLOAT64_C(  660.01), SIMDE_FLOAT64_C(  -72.44)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  307.98), SIMDE_FLOAT64_C(  879.25),
                         SIMDE_FLOAT64_C(  340.44), SIMDE_FLOAT64_C( -338.42)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -599.03), SIMDE_FLOAT64_C(  269.37),
                         SIMDE_FLOAT64_C( -940.99), SIMDE_FLOAT64_C( -383.55)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  307.98), SIMDE_FLOAT64_C(  745.99),
                         SIMDE_FLOAT64_C(  340.44), SIMDE_FLOAT64_C( -338.42)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -369.37), SIMDE_FLOAT64_C(  888.66),
                         SIMDE_FLOAT64_C( -159.55), SIMDE_FLOAT64_C( -869.53)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  649.46), SIMDE_FLOAT64_C(  886.19),
                         SIMDE_FLOAT64_C(  926.89), SIMDE_FLOAT64_C( -697.40)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -515.74), SIMDE_FLOAT64_C( -918.64),
                         SIMDE_FLOAT64_C(  131.75), SIMDE_FLOAT64_C(  581.75)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  649.46), SIMDE_FLOAT64_C(  886.19),
                         SIMDE_FLOAT64_C( -159.55), SIMDE_FLOAT64_C( -869.53)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -900.47), SIMDE_FLOAT64_C(  409.14),
                         SIMDE_FLOAT64_C( -799.12), SIMDE_FLOAT64_C( -260.50)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  -10.16), SIMDE_FLOAT64_C(  623.74),
                         SIMDE_FLOAT64_C( -915.24), SIMDE_FLOAT64_C( -491.31)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  804.78), SIMDE_FLOAT64_C( -317.20),
                         SIMDE_FLOAT64_C( -335.85), SIMDE_FLOAT64_C( -779.77)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -900.47), SIMDE_FLOAT64_C(  623.74),
                         SIMDE_FLOAT64_C( -915.24), SIMDE_FLOAT64_C( -491.31)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  -87.84), SIMDE_FLOAT64_C(  244.36),
                         SIMDE_FLOAT64_C(  -17.33), SIMDE_FLOAT64_C(  496.74)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  176.35), SIMDE_FLOAT64_C(  303.26),
                         SIMDE_FLOAT64_C( -414.16), SIMDE_FLOAT64_C(  -98.44)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -385.65), SIMDE_FLOAT64_C( -192.42),
                         SIMDE_FLOAT64_C(  392.65), SIMDE_FLOAT64_C( -902.76)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  176.35), SIMDE_FLOAT64_C(  303.26),
                         SIMDE_FLOAT64_C(  -17.33), SIMDE_FLOAT64_C(  -98.44)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -793.35), SIMDE_FLOAT64_C(    6.53),
                         SIMDE_FLOAT64_C(  858.41), SIMDE_FLOAT64_C(  175.72)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  376.10), SIMDE_FLOAT64_C( -410.32),
                         SIMDE_FLOAT64_C(  -49.60), SIMDE_FLOAT64_C( -434.06)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -290.24), SIMDE_FLOAT64_C(  223.04),
                         SIMDE_FLOAT64_C(  738.63), SIMDE_FLOAT64_C( -193.43)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  376.10), SIMDE_FLOAT64_C(    6.53),
                         SIMDE_FLOAT64_C(  858.41), SIMDE_FLOAT64_C( -434.06)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -894.04), SIMDE_FLOAT64_C( -968.20),
                         SIMDE_FLOAT64_C(  146.09), SIMDE_FLOAT64_C( -741.36)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -570.76), SIMDE_FLOAT64_C( -340.64),
                         SIMDE_FLOAT64_C(  593.54), SIMDE_FLOAT64_C( -684.62)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  155.79), SIMDE_FLOAT64_C(  975.56),
                         SIMDE_FLOAT64_C(  939.33), SIMDE_FLOAT64_C(  615.78)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -894.04), SIMDE_FLOAT64_C( -968.20),
                         SIMDE_FLOAT64_C(  146.09), SIMDE_FLOAT64_C( -741.36)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -512.44), SIMDE_FLOAT64_C(  657.99),
                         SIMDE_FLOAT64_C(  888.55), SIMDE_FLOAT64_C(  863.80)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  344.43), SIMDE_FLOAT64_C(  994.17),
                         SIMDE_FLOAT64_C( -142.41), SIMDE_FLOAT64_C( -388.31)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -738.41), SIMDE_FLOAT64_C(  935.62),
                         SIMDE_FLOAT64_C( -743.51), SIMDE_FLOAT64_C(  -41.25)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  344.43), SIMDE_FLOAT64_C(  657.99),
                         SIMDE_FLOAT64_C( -142.41), SIMDE_FLOAT64_C( -388.31)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -178.00), SIMDE_FLOAT64_C( -981.39),
                         SIMDE_FLOAT64_C( -631.33), SIMDE_FLOAT64_C(  518.52)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  592.14), SIMDE_FLOAT64_C(  -27.22),
                         SIMDE_FLOAT64_C(  736.38), SIMDE_FLOAT64_C(  579.20)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  893.09), SIMDE_FLOAT64_C(  120.96),
                         SIMDE_FLOAT64_C(  910.10), SIMDE_FLOAT64_C( -128.61)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -178.00), SIMDE_FLOAT64_C( -981.39),
                         SIMDE_FLOAT64_C( -631.33), SIMDE_FLOAT64_C(  579.20)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256d r = simde_mm256_blendv_pd(test_vec[i].a, test_vec[i].b, test_vec[i].mask);
    simde_assert_m256d_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_broadcast_ps (SIMDE_MUNIT_TEST_ARGS) {
  static const struct {
    const simde_float32 a[8];
    const simde_float32 r[8];
  } test_vec[] = {
    { { SIMDE_FLOAT32_C(   430.96), SIMDE_FLOAT32_C(   742.21), SIMDE_FLOAT32_C(    80.10), SIMDE_FLOAT32_C(  -808.38) },
      { SIMDE_FLOAT32_C(   430.96), SIMDE_FLOAT32_C(   742.21), SIMDE_FLOAT32_C(    80.10), SIMDE_FLOAT32_C(  -808.38),
        SIMDE_FLOAT32_C(   430.96), SIMDE_FLOAT32_C(   742.21), SIMDE_FLOAT32_C(    80.10), SIMDE_FLOAT32_C(  -808.38) } },
    { { SIMDE_FLOAT32_C(   -52.11), SIMDE_FLOAT32_C(  -124.82), SIMDE_FLOAT32_C(   257.00), SIMDE_FLOAT32_C(   583.90) },
      { SIMDE_FLOAT32_C(   -52.11), SIMDE_FLOAT32_C(  -124.82), SIMDE_FLOAT32_C(   257.00), SIMDE_FLOAT32_C(   583.90),
        SIMDE_FLOAT32_C(   -52.11), SIMDE_FLOAT32_C(  -124.82), SIMDE_FLOAT32_C(   257.00), SIMDE_FLOAT32_C(   583.90) } },
    { { SIMDE_FLOAT32_C(  -353.01), SIMDE_FLOAT32_C(   791.63), SIMDE_FLOAT32_C(   304.14), SIMDE_FLOAT32_C(  -431.18) },
      { SIMDE_FLOAT32_C(  -353.01), SIMDE_FLOAT32_C(   791.63), SIMDE_FLOAT32_C(   304.14), SIMDE_FLOAT32_C(  -431.18),
        SIMDE_FLOAT32_C(  -353.01), SIMDE_FLOAT32_C(   791.63), SIMDE_FLOAT32_C(   304.14), SIMDE_FLOAT32_C(  -431.18) } },
    { { SIMDE_FLOAT32_C(   839.02), SIMDE_FLOAT32_C(  -532.53), SIMDE_FLOAT32_C(    12.86), SIMDE_FLOAT32_C(  -518.51) },
      { SIMDE_FLOAT32_C(   839.02), SIMDE_FLOAT32_C(  -532.53), SIMDE_FLOAT32_C(    12.86), SIMDE_FLOAT32_C(  -518.51),
        SIMDE_FLOAT32_C(   839.02), SIMDE_FLOAT32_C(  -532.53), SIMDE_FLOAT32_C(    12.86), SIMDE_FLOAT32_C(  -518.51) } },
    { { SIMDE_FLOAT32_C(   815.19), SIMDE_FLOAT32_C(   919.67), SIMDE_FLOAT32_C(  -404.62), SIMDE_FLOAT32_C(  -140.25) },
      { SIMDE_FLOAT32_C(   815.19), SIMDE_FLOAT32_C(   919.67), SIMDE_FLOAT32_C(  -404.62), SIMDE_FLOAT32_C(  -140.25),
        SIMDE_FLOAT32_C(   815.19), SIMDE_FLOAT32_C(   919.67), SIMDE_FLOAT32_C(  -404.62), SIMDE_FLOAT32_C(  -140.25) } },
    { { SIMDE_FLOAT32_C(   487.65), SIMDE_FLOAT32_C(  -341.39), SIMDE_FLOAT32_C(  -448.94), SIMDE_FLOAT32_C(  -588.75) },
      { SIMDE_FLOAT32_C(   487.65), SIMDE_FLOAT32_C(  -341.39), SIMDE_FLOAT32_C(  -448.94), SIMDE_FLOAT32_C(  -588.75),
        SIMDE_FLOAT32_C(   487.65), SIMDE_FLOAT32_C(  -341.39), SIMDE_FLOAT32_C(  -448.94), SIMDE_FLOAT32_C(  -588.75) } },
    { { SIMDE_FLOAT32_C(    22.82), SIMDE_FLOAT32_C(  -871.28), SIMDE_FLOAT32_C(   241.67), SIMDE_FLOAT32_C(   474.50) },
      { SIMDE_FLOAT32_C(    22.82), SIMDE_FLOAT32_C(  -871.28), SIMDE_FLOAT32_C(   241.67), SIMDE_FLOAT32_C(   474.50),
        SIMDE_FLOAT32_C(    22.82), SIMDE_FLOAT32_C(  -871.28), SIMDE_FLOAT32_C(   241.67), SIMDE_FLOAT32_C(   474.50) } },
    { { SIMDE_FLOAT32_C(  -594.42), SIMDE_FLOAT32_C(  -935.66), SIMDE_FLOAT32_C(  -297.52), SIMDE_FLOAT32_C(   836.54) },
      { SIMDE_FLOAT32_C(  -594.42), SIMDE_FLOAT32_C(  -935.66), SIMDE_FLOAT32_C(  -297.52), SIMDE_FLOAT32_C(   836.54),
        SIMDE_FLOAT32_C(  -594.42), SIMDE_FLOAT32_C(  -935.66), SIMDE_FLOAT32_C(  -297.52), SIMDE_FLOAT32_C(   836.54) } }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde__m128 const* a_ = SIMDE_ALIGN_CAST(simde__m128 const*, test_vec[i].a);
    simde__m256 r = simde_mm256_broadcast_ps(a_);
    simde_test_x86_assert_equal_f32x8(r, simde_mm256_loadu_ps(test_vec[i].r), 1);
  }

  return 0;
}

static int
test_simde_mm256_broadcast_pd (SIMDE_MUNIT_TEST_ARGS) {
  static const struct {
    const simde_float64 a[2];
    const simde_float64 r[4];
  } test_vec[] = {
    { { SIMDE_FLOAT64_C(  -644.23), SIMDE_FLOAT64_C(   202.59) },
      { SIMDE_FLOAT64_C(  -644.23), SIMDE_FLOAT64_C(   202.59), SIMDE_FLOAT64_C(  -644.23), SIMDE_FLOAT64_C(   202.59) } },
    { { SIMDE_FLOAT64_C(    46.64), SIMDE_FLOAT64_C(  -251.29) },
      { SIMDE_FLOAT64_C(    46.64), SIMDE_FLOAT64_C(  -251.29), SIMDE_FLOAT64_C(    46.64), SIMDE_FLOAT64_C(  -251.29) } },
    { { SIMDE_FLOAT64_C(  -358.76), SIMDE_FLOAT64_C(  -455.49) },
      { SIMDE_FLOAT64_C(  -358.76), SIMDE_FLOAT64_C(  -455.49), SIMDE_FLOAT64_C(  -358.76), SIMDE_FLOAT64_C(  -455.49) } },
    { { SIMDE_FLOAT64_C(   621.72), SIMDE_FLOAT64_C(  -738.99) },
      { SIMDE_FLOAT64_C(   621.72), SIMDE_FLOAT64_C(  -738.99), SIMDE_FLOAT64_C(   621.72), SIMDE_FLOAT64_C(  -738.99) } },
    { { SIMDE_FLOAT64_C(   354.14), SIMDE_FLOAT64_C(  -365.61) },
      { SIMDE_FLOAT64_C(   354.14), SIMDE_FLOAT64_C(  -365.61), SIMDE_FLOAT64_C(   354.14), SIMDE_FLOAT64_C(  -365.61) } },
    { { SIMDE_FLOAT64_C(     5.77), SIMDE_FLOAT64_C(  -199.92) },
      { SIMDE_FLOAT64_C(     5.77), SIMDE_FLOAT64_C(  -199.92), SIMDE_FLOAT64_C(     5.77), SIMDE_FLOAT64_C(  -199.92) } },
    { { SIMDE_FLOAT64_C(   814.08), SIMDE_FLOAT64_C(  -186.66) },
      { SIMDE_FLOAT64_C(   814.08), SIMDE_FLOAT64_C(  -186.66), SIMDE_FLOAT64_C(   814.08), SIMDE_FLOAT64_C(  -186.66) } },
    { { SIMDE_FLOAT64_C(  -805.67), SIMDE_FLOAT64_C(  -248.07) },
      { SIMDE_FLOAT64_C(  -805.67), SIMDE_FLOAT64_C(  -248.07), SIMDE_FLOAT64_C(  -805.67), SIMDE_FLOAT64_C(  -248.07) } }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde__m256d r = simde_mm256_broadcast_pd(SIMDE_ALIGN_CAST(const simde__m128d*, test_vec[i].a));
    simde_test_x86_assert_equal_f64x4(r, simde_mm256_loadu_pd(test_vec[i].r), 1);
  }

  return 0;
}

static int
test_simde_mm256_broadcast_sd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde_float64 a;
    simde__m256d r;
  } test_vec[8] = {
    { SIMDE_FLOAT64_C(  800.84),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  800.84), SIMDE_FLOAT64_C(  800.84),
                         SIMDE_FLOAT64_C(  800.84), SIMDE_FLOAT64_C(  800.84)) },
    { SIMDE_FLOAT64_C(  700.06),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  700.06), SIMDE_FLOAT64_C(  700.06),
                         SIMDE_FLOAT64_C(  700.06), SIMDE_FLOAT64_C(  700.06)) },
    { SIMDE_FLOAT64_C( -801.66),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -801.66), SIMDE_FLOAT64_C( -801.66),
                         SIMDE_FLOAT64_C( -801.66), SIMDE_FLOAT64_C( -801.66)) },
    { SIMDE_FLOAT64_C( -941.38),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -941.38), SIMDE_FLOAT64_C( -941.38),
                         SIMDE_FLOAT64_C( -941.38), SIMDE_FLOAT64_C( -941.38)) },
    { SIMDE_FLOAT64_C( -346.77),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -346.77), SIMDE_FLOAT64_C( -346.77),
                         SIMDE_FLOAT64_C( -346.77), SIMDE_FLOAT64_C( -346.77)) },
    { SIMDE_FLOAT64_C( -833.73),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -833.73), SIMDE_FLOAT64_C( -833.73),
                         SIMDE_FLOAT64_C( -833.73), SIMDE_FLOAT64_C( -833.73)) },
    { SIMDE_FLOAT64_C(  315.88),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  315.88), SIMDE_FLOAT64_C(  315.88),
                         SIMDE_FLOAT64_C(  315.88), SIMDE_FLOAT64_C(  315.88)) },
    { SIMDE_FLOAT64_C( -868.73),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -868.73), SIMDE_FLOAT64_C( -868.73),
                         SIMDE_FLOAT64_C( -868.73), SIMDE_FLOAT64_C( -868.73)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256d r = simde_mm256_broadcast_sd(&(test_vec[i].a));
    simde_assert_m256d_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm_broadcast_ss(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde_float32 a;
    simde__m128 r;
  } test_vec[8] = {
    { SIMDE_FLOAT32_C(  137.82),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  137.82), SIMDE_FLOAT32_C(  137.82), SIMDE_FLOAT32_C(  137.82), SIMDE_FLOAT32_C(  137.82)) },
    { SIMDE_FLOAT32_C( -118.58),
      simde_mm_set_ps(SIMDE_FLOAT32_C( -118.58), SIMDE_FLOAT32_C( -118.58), SIMDE_FLOAT32_C( -118.58), SIMDE_FLOAT32_C( -118.58)) },
    { SIMDE_FLOAT32_C(  963.02),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  963.02), SIMDE_FLOAT32_C(  963.02), SIMDE_FLOAT32_C(  963.02), SIMDE_FLOAT32_C(  963.02)) },
    { SIMDE_FLOAT32_C(  515.85),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  515.85), SIMDE_FLOAT32_C(  515.85), SIMDE_FLOAT32_C(  515.85), SIMDE_FLOAT32_C(  515.85)) },
    { SIMDE_FLOAT32_C(  110.78),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  110.78), SIMDE_FLOAT32_C(  110.78), SIMDE_FLOAT32_C(  110.78), SIMDE_FLOAT32_C(  110.78)) },
    { SIMDE_FLOAT32_C( -190.98),
      simde_mm_set_ps(SIMDE_FLOAT32_C( -190.98), SIMDE_FLOAT32_C( -190.98), SIMDE_FLOAT32_C( -190.98), SIMDE_FLOAT32_C( -190.98)) },
    { SIMDE_FLOAT32_C( -429.63),
      simde_mm_set_ps(SIMDE_FLOAT32_C( -429.63), SIMDE_FLOAT32_C( -429.63), SIMDE_FLOAT32_C( -429.63), SIMDE_FLOAT32_C( -429.63)) },
    { SIMDE_FLOAT32_C( -924.63),
      simde_mm_set_ps(SIMDE_FLOAT32_C( -924.63), SIMDE_FLOAT32_C( -924.63), SIMDE_FLOAT32_C( -924.63), SIMDE_FLOAT32_C( -924.63)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m128 r = simde_mm_broadcast_ss(&(test_vec[i].a));
    simde_assert_m128_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_broadcast_ss(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde_float32 a;
    simde__m256 r;
  } test_vec[8] = {
    { SIMDE_FLOAT32_C( -970.00),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -970.00), SIMDE_FLOAT32_C( -970.00),
                         SIMDE_FLOAT32_C( -970.00), SIMDE_FLOAT32_C( -970.00),
                         SIMDE_FLOAT32_C( -970.00), SIMDE_FLOAT32_C( -970.00),
                         SIMDE_FLOAT32_C( -970.00), SIMDE_FLOAT32_C( -970.00)) },
    { SIMDE_FLOAT32_C(  425.08),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  425.08), SIMDE_FLOAT32_C(  425.08),
                         SIMDE_FLOAT32_C(  425.08), SIMDE_FLOAT32_C(  425.08),
                         SIMDE_FLOAT32_C(  425.08), SIMDE_FLOAT32_C(  425.08),
                         SIMDE_FLOAT32_C(  425.08), SIMDE_FLOAT32_C(  425.08)) },
    { SIMDE_FLOAT32_C(  814.32),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  814.32), SIMDE_FLOAT32_C(  814.32),
                         SIMDE_FLOAT32_C(  814.32), SIMDE_FLOAT32_C(  814.32),
                         SIMDE_FLOAT32_C(  814.32), SIMDE_FLOAT32_C(  814.32),
                         SIMDE_FLOAT32_C(  814.32), SIMDE_FLOAT32_C(  814.32)) },
    { SIMDE_FLOAT32_C(  309.83),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  309.83), SIMDE_FLOAT32_C(  309.83),
                         SIMDE_FLOAT32_C(  309.83), SIMDE_FLOAT32_C(  309.83),
                         SIMDE_FLOAT32_C(  309.83), SIMDE_FLOAT32_C(  309.83),
                         SIMDE_FLOAT32_C(  309.83), SIMDE_FLOAT32_C(  309.83)) },
    { SIMDE_FLOAT32_C( -410.17),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -410.17), SIMDE_FLOAT32_C( -410.17),
                         SIMDE_FLOAT32_C( -410.17), SIMDE_FLOAT32_C( -410.17),
                         SIMDE_FLOAT32_C( -410.17), SIMDE_FLOAT32_C( -410.17),
                         SIMDE_FLOAT32_C( -410.17), SIMDE_FLOAT32_C( -410.17)) },
    { SIMDE_FLOAT32_C( -592.37),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -592.37), SIMDE_FLOAT32_C( -592.37),
                         SIMDE_FLOAT32_C( -592.37), SIMDE_FLOAT32_C( -592.37),
                         SIMDE_FLOAT32_C( -592.37), SIMDE_FLOAT32_C( -592.37),
                         SIMDE_FLOAT32_C( -592.37), SIMDE_FLOAT32_C( -592.37)) },
    { SIMDE_FLOAT32_C(  297.30),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  297.30), SIMDE_FLOAT32_C(  297.30),
                         SIMDE_FLOAT32_C(  297.30), SIMDE_FLOAT32_C(  297.30),
                         SIMDE_FLOAT32_C(  297.30), SIMDE_FLOAT32_C(  297.30),
                         SIMDE_FLOAT32_C(  297.30), SIMDE_FLOAT32_C(  297.30)) },
    { SIMDE_FLOAT32_C( -549.85),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -549.85), SIMDE_FLOAT32_C( -549.85),
                         SIMDE_FLOAT32_C( -549.85), SIMDE_FLOAT32_C( -549.85),
                         SIMDE_FLOAT32_C( -549.85), SIMDE_FLOAT32_C( -549.85),
                         SIMDE_FLOAT32_C( -549.85), SIMDE_FLOAT32_C( -549.85)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256 r = simde_mm256_broadcast_ss(&(test_vec[i].a));
    simde_assert_m256_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_castpd128_pd256(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m128d a;
    simde__m256d r;
  } test_vec[8] = {
    { simde_mm_set_pd(SIMDE_FLOAT64_C( -698.37), SIMDE_FLOAT64_C(  516.77)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C( -698.37), SIMDE_FLOAT64_C(  516.77)) },
    { simde_mm_set_pd(SIMDE_FLOAT64_C( -509.42), SIMDE_FLOAT64_C( -285.35)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C( -509.42), SIMDE_FLOAT64_C( -285.35)) },
    { simde_mm_set_pd(SIMDE_FLOAT64_C( -919.57), SIMDE_FLOAT64_C(  938.94)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C( -919.57), SIMDE_FLOAT64_C(  938.94)) },
    { simde_mm_set_pd(SIMDE_FLOAT64_C(   39.71), SIMDE_FLOAT64_C(  227.66)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C(   39.71), SIMDE_FLOAT64_C(  227.66)) },
    { simde_mm_set_pd(SIMDE_FLOAT64_C(  548.32), SIMDE_FLOAT64_C( -120.08)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C(  548.32), SIMDE_FLOAT64_C( -120.08)) },
    { simde_mm_set_pd(SIMDE_FLOAT64_C( -962.85), SIMDE_FLOAT64_C(  234.42)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C( -962.85), SIMDE_FLOAT64_C(  234.42)) },
    { simde_mm_set_pd(SIMDE_FLOAT64_C( -939.16), SIMDE_FLOAT64_C( -985.25)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C( -939.16), SIMDE_FLOAT64_C( -985.25)) },
    { simde_mm_set_pd(SIMDE_FLOAT64_C(  302.61), SIMDE_FLOAT64_C(  350.72)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C(  302.61), SIMDE_FLOAT64_C(  350.72)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256d_private r = simde__m256d_to_private(simde_mm256_castpd128_pd256(test_vec[i].a));
    simde__m256d_private expected = simde__m256d_to_private(test_vec[i].r);
    simde_assert_m128d_equal(r.m128d[0], expected.m128d[0]);
  }

  return 0;
}

static int
test_simde_mm256_castpd256_pd128(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256d a;
    simde__m128d r;
  } test_vec[8] = {
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -956.85), SIMDE_FLOAT64_C(  625.41),
                         SIMDE_FLOAT64_C(  728.85), SIMDE_FLOAT64_C(  239.74)),
      simde_mm_set_pd(SIMDE_FLOAT64_C(  728.85), SIMDE_FLOAT64_C(  239.74)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -642.31), SIMDE_FLOAT64_C( -953.04),
                         SIMDE_FLOAT64_C( -288.66), SIMDE_FLOAT64_C(  999.01)),
      simde_mm_set_pd(SIMDE_FLOAT64_C( -288.66), SIMDE_FLOAT64_C(  999.01)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -330.74), SIMDE_FLOAT64_C(  875.72),
                         SIMDE_FLOAT64_C( -137.28), SIMDE_FLOAT64_C( -787.08)),
      simde_mm_set_pd(SIMDE_FLOAT64_C( -137.28), SIMDE_FLOAT64_C( -787.08)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -616.04), SIMDE_FLOAT64_C( -762.33),
                         SIMDE_FLOAT64_C(  806.25), SIMDE_FLOAT64_C( -621.65)),
      simde_mm_set_pd(SIMDE_FLOAT64_C(  806.25), SIMDE_FLOAT64_C( -621.65)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  -28.93), SIMDE_FLOAT64_C(  468.91),
                         SIMDE_FLOAT64_C(  242.39), SIMDE_FLOAT64_C(   -4.32)),
      simde_mm_set_pd(SIMDE_FLOAT64_C(  242.39), SIMDE_FLOAT64_C(   -4.32)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -635.10), SIMDE_FLOAT64_C( -479.80),
                         SIMDE_FLOAT64_C(  479.34), SIMDE_FLOAT64_C(  994.78)),
      simde_mm_set_pd(SIMDE_FLOAT64_C(  479.34), SIMDE_FLOAT64_C(  994.78)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  839.27), SIMDE_FLOAT64_C( -846.55),
                         SIMDE_FLOAT64_C( -287.23), SIMDE_FLOAT64_C(  498.33)),
      simde_mm_set_pd(SIMDE_FLOAT64_C( -287.23), SIMDE_FLOAT64_C(  498.33)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  -68.67), SIMDE_FLOAT64_C(  956.25),
                         SIMDE_FLOAT64_C(  462.89), SIMDE_FLOAT64_C( -555.47)),
      simde_mm_set_pd(SIMDE_FLOAT64_C(  462.89), SIMDE_FLOAT64_C( -555.47)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m128d r = simde_mm256_castpd256_pd128(test_vec[i].a);
    simde_assert_m128i_equal(simde_mm_castpd_si128(r), simde_mm_castpd_si128(test_vec[i].r));
  }

  return 0;
}

static int
test_simde_mm256_ceil_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256d a;
    simde__m256d r;
  } test_vec[8] = {
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -242.41), SIMDE_FLOAT64_C( -377.59),
                         SIMDE_FLOAT64_C(  787.73), SIMDE_FLOAT64_C(  903.22)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -242.00), SIMDE_FLOAT64_C( -377.00),
                         SIMDE_FLOAT64_C(  788.00), SIMDE_FLOAT64_C(  904.00)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -851.63), SIMDE_FLOAT64_C( -168.29),
                         SIMDE_FLOAT64_C(  -47.72), SIMDE_FLOAT64_C( -227.89)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -851.00), SIMDE_FLOAT64_C( -168.00),
                         SIMDE_FLOAT64_C(  -47.00), SIMDE_FLOAT64_C( -227.00)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  922.71), SIMDE_FLOAT64_C( -494.40),
                         SIMDE_FLOAT64_C( -263.96), SIMDE_FLOAT64_C( -353.64)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  923.00), SIMDE_FLOAT64_C( -494.00),
                         SIMDE_FLOAT64_C( -263.00), SIMDE_FLOAT64_C( -353.00)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -611.84), SIMDE_FLOAT64_C(  512.63),
                         SIMDE_FLOAT64_C( -238.35), SIMDE_FLOAT64_C( -170.16)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -611.00), SIMDE_FLOAT64_C(  513.00),
                         SIMDE_FLOAT64_C( -238.00), SIMDE_FLOAT64_C( -170.00)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  816.43), SIMDE_FLOAT64_C(  815.17),
                         SIMDE_FLOAT64_C(  214.52), SIMDE_FLOAT64_C( -660.09)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  817.00), SIMDE_FLOAT64_C(  816.00),
                         SIMDE_FLOAT64_C(  215.00), SIMDE_FLOAT64_C( -660.00)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  434.90), SIMDE_FLOAT64_C(   54.02),
                         SIMDE_FLOAT64_C( -447.58), SIMDE_FLOAT64_C(  766.46)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  435.00), SIMDE_FLOAT64_C(   55.00),
                         SIMDE_FLOAT64_C( -447.00), SIMDE_FLOAT64_C(  767.00)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  372.78), SIMDE_FLOAT64_C( -135.62),
                         SIMDE_FLOAT64_C(  715.18), SIMDE_FLOAT64_C( -737.69)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  373.00), SIMDE_FLOAT64_C( -135.00),
                         SIMDE_FLOAT64_C(  716.00), SIMDE_FLOAT64_C( -737.00)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  491.75), SIMDE_FLOAT64_C(  481.14),
                         SIMDE_FLOAT64_C(  571.31), SIMDE_FLOAT64_C(  426.99)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  492.00), SIMDE_FLOAT64_C(  482.00),
                         SIMDE_FLOAT64_C(  572.00), SIMDE_FLOAT64_C(  427.00)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256d r = simde_mm256_ceil_pd(test_vec[i].a);
    simde_assert_m256d_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_ceil_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde__m256 r;
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  719.50), SIMDE_FLOAT32_C(  423.42),
                         SIMDE_FLOAT32_C( -325.80), SIMDE_FLOAT32_C(   -7.65),
                         SIMDE_FLOAT32_C(  549.35), SIMDE_FLOAT32_C(   88.23),
                         SIMDE_FLOAT32_C(  442.11), SIMDE_FLOAT32_C(  103.18)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  720.00), SIMDE_FLOAT32_C(  424.00),
                         SIMDE_FLOAT32_C( -325.00), SIMDE_FLOAT32_C(   -7.00),
                         SIMDE_FLOAT32_C(  550.00), SIMDE_FLOAT32_C(   89.00),
                         SIMDE_FLOAT32_C(  443.00), SIMDE_FLOAT32_C(  104.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  295.26), SIMDE_FLOAT32_C(  174.52),
                         SIMDE_FLOAT32_C(  976.35), SIMDE_FLOAT32_C( -556.97),
                         SIMDE_FLOAT32_C( -188.36), SIMDE_FLOAT32_C( -888.83),
                         SIMDE_FLOAT32_C(  -89.34), SIMDE_FLOAT32_C(  743.04)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  296.00), SIMDE_FLOAT32_C(  175.00),
                         SIMDE_FLOAT32_C(  977.00), SIMDE_FLOAT32_C( -556.00),
                         SIMDE_FLOAT32_C( -188.00), SIMDE_FLOAT32_C( -888.00),
                         SIMDE_FLOAT32_C(  -89.00), SIMDE_FLOAT32_C(  744.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -846.44), SIMDE_FLOAT32_C(  768.02),
                         SIMDE_FLOAT32_C(  217.87), SIMDE_FLOAT32_C(  724.14),
                         SIMDE_FLOAT32_C( -751.28), SIMDE_FLOAT32_C(  377.99),
                         SIMDE_FLOAT32_C( -892.77), SIMDE_FLOAT32_C( -779.41)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -846.00), SIMDE_FLOAT32_C(  769.00),
                         SIMDE_FLOAT32_C(  218.00), SIMDE_FLOAT32_C(  725.00),
                         SIMDE_FLOAT32_C( -751.00), SIMDE_FLOAT32_C(  378.00),
                         SIMDE_FLOAT32_C( -892.00), SIMDE_FLOAT32_C( -779.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -291.21), SIMDE_FLOAT32_C( -433.62),
                         SIMDE_FLOAT32_C(  331.96), SIMDE_FLOAT32_C(   13.15),
                         SIMDE_FLOAT32_C(   -6.69), SIMDE_FLOAT32_C( -467.28),
                         SIMDE_FLOAT32_C( -722.45), SIMDE_FLOAT32_C( -121.36)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -291.00), SIMDE_FLOAT32_C( -433.00),
                         SIMDE_FLOAT32_C(  332.00), SIMDE_FLOAT32_C(   14.00),
                         SIMDE_FLOAT32_C(   -6.00), SIMDE_FLOAT32_C( -467.00),
                         SIMDE_FLOAT32_C( -722.00), SIMDE_FLOAT32_C( -121.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  337.66), SIMDE_FLOAT32_C(  332.63),
                         SIMDE_FLOAT32_C(  164.76), SIMDE_FLOAT32_C(  401.70),
                         SIMDE_FLOAT32_C( -359.22), SIMDE_FLOAT32_C( -704.77),
                         SIMDE_FLOAT32_C(  780.49), SIMDE_FLOAT32_C( -605.11)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  338.00), SIMDE_FLOAT32_C(  333.00),
                         SIMDE_FLOAT32_C(  165.00), SIMDE_FLOAT32_C(  402.00),
                         SIMDE_FLOAT32_C( -359.00), SIMDE_FLOAT32_C( -704.00),
                         SIMDE_FLOAT32_C(  781.00), SIMDE_FLOAT32_C( -605.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -670.88), SIMDE_FLOAT32_C(  812.79),
                         SIMDE_FLOAT32_C( -668.93), SIMDE_FLOAT32_C(  476.98),
                         SIMDE_FLOAT32_C(  590.12), SIMDE_FLOAT32_C(    1.22),
                         SIMDE_FLOAT32_C( -683.68), SIMDE_FLOAT32_C( -789.77)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -670.00), SIMDE_FLOAT32_C(  813.00),
                         SIMDE_FLOAT32_C( -668.00), SIMDE_FLOAT32_C(  477.00),
                         SIMDE_FLOAT32_C(  591.00), SIMDE_FLOAT32_C(    2.00),
                         SIMDE_FLOAT32_C( -683.00), SIMDE_FLOAT32_C( -789.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -872.42), SIMDE_FLOAT32_C(  -77.05),
                         SIMDE_FLOAT32_C( -381.51), SIMDE_FLOAT32_C( -862.58),
                         SIMDE_FLOAT32_C( -846.15), SIMDE_FLOAT32_C( -734.49),
                         SIMDE_FLOAT32_C(  -50.68), SIMDE_FLOAT32_C(  512.52)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -872.00), SIMDE_FLOAT32_C(  -77.00),
                         SIMDE_FLOAT32_C( -381.00), SIMDE_FLOAT32_C( -862.00),
                         SIMDE_FLOAT32_C( -846.00), SIMDE_FLOAT32_C( -734.00),
                         SIMDE_FLOAT32_C(  -50.00), SIMDE_FLOAT32_C(  513.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -195.22), SIMDE_FLOAT32_C(  -18.78),
                         SIMDE_FLOAT32_C(  479.49), SIMDE_FLOAT32_C(  552.41),
                         SIMDE_FLOAT32_C(  445.93), SIMDE_FLOAT32_C(  -70.46),
                         SIMDE_FLOAT32_C( -477.54), SIMDE_FLOAT32_C(  557.19)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -195.00), SIMDE_FLOAT32_C(  -18.00),
                         SIMDE_FLOAT32_C(  480.00), SIMDE_FLOAT32_C(  553.00),
                         SIMDE_FLOAT32_C(  446.00), SIMDE_FLOAT32_C(  -70.00),
                         SIMDE_FLOAT32_C( -477.00), SIMDE_FLOAT32_C(  558.00)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256 r = simde_mm256_ceil_ps(test_vec[i].a);
    simde_assert_m256_close(r, test_vec[i].r, 1);
  }

  return 0;
}

#if !defined(SIMDE_FAST_MATH)
// Could be re-enabled if test cases without NAN arguments or results are added
// But will need to make sure only those NAN-less tests are run in FAST_MATH mode

#define SIMDE_F64_ALL_SET (u64_to_f64(~UINT64_C(0)))

static int
test_simde_mm_cmp_pd (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    const simde_float64 a[2];
    const simde_float64 b[2];
    const int64_t r[2];
  } test_vec[] = {
    { {             SIMDE_MATH_NAN,             SIMDE_MATH_NAN },
      { SIMDE_FLOAT64_C(   164.71),             SIMDE_MATH_NAN },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { { SIMDE_FLOAT64_C(   882.73), SIMDE_FLOAT64_C(  -344.73) },
      {             SIMDE_MATH_NAN, SIMDE_FLOAT64_C(  -800.96) },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { { SIMDE_FLOAT64_C(   243.90), SIMDE_FLOAT64_C(  -564.72) },
      { SIMDE_FLOAT64_C(   243.90), SIMDE_FLOAT64_C(  -564.72) },
      { -INT64_C(                   1), -INT64_C(                   1) } },
    { {             SIMDE_MATH_NAN,             SIMDE_MATH_NAN },
      { SIMDE_FLOAT64_C(   549.90),             SIMDE_MATH_NAN },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { { SIMDE_FLOAT64_C(  -694.78), SIMDE_FLOAT64_C(  -529.80) },
      {             SIMDE_MATH_NAN, SIMDE_FLOAT64_C(  -529.80) },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { { SIMDE_FLOAT64_C(   371.38), SIMDE_FLOAT64_C(   419.05) },
      { SIMDE_FLOAT64_C(   -26.85), SIMDE_FLOAT64_C(   419.05) },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { {             SIMDE_MATH_NAN,             SIMDE_MATH_NAN },
      { SIMDE_FLOAT64_C(   291.86),             SIMDE_MATH_NAN },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { { SIMDE_FLOAT64_C(  -600.70), SIMDE_FLOAT64_C(  -543.43) },
      {             SIMDE_MATH_NAN, SIMDE_FLOAT64_C(  -717.97) },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { { SIMDE_FLOAT64_C(  -518.93), SIMDE_FLOAT64_C(   604.78) },
      { SIMDE_FLOAT64_C(   -63.79), SIMDE_FLOAT64_C(   604.78) },
      { -INT64_C(                   1), -INT64_C(                   1) } },
    { {             SIMDE_MATH_NAN,             SIMDE_MATH_NAN },
      { SIMDE_FLOAT64_C(  -796.62),             SIMDE_MATH_NAN },
      { -INT64_C(                   1), -INT64_C(                   1) } },
    { { SIMDE_FLOAT64_C(  -619.43), SIMDE_FLOAT64_C(   753.28) },
      {             SIMDE_MATH_NAN, SIMDE_FLOAT64_C(   753.28) },
      { -INT64_C(                   1),  INT64_C(                   0) } },
    { { SIMDE_FLOAT64_C(   939.97), SIMDE_FLOAT64_C(   777.74) },
      { SIMDE_FLOAT64_C(   939.97), SIMDE_FLOAT64_C(   777.74) },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { {             SIMDE_MATH_NAN,             SIMDE_MATH_NAN },
      { SIMDE_FLOAT64_C(   269.88),             SIMDE_MATH_NAN },
      { -INT64_C(                   1), -INT64_C(                   1) } },
    { { SIMDE_FLOAT64_C(   -40.49), SIMDE_FLOAT64_C(  -438.25) },
      {             SIMDE_MATH_NAN, SIMDE_FLOAT64_C(   358.81) },
      { -INT64_C(                   1), -INT64_C(                   1) } },
    { { SIMDE_FLOAT64_C(   640.83), SIMDE_FLOAT64_C(  -869.84) },
      { SIMDE_FLOAT64_C(   640.83), SIMDE_FLOAT64_C(  -878.10) },
      {  INT64_C(                   0), -INT64_C(                   1) } },
    { {             SIMDE_MATH_NAN,             SIMDE_MATH_NAN },
      { SIMDE_FLOAT64_C(   846.86),             SIMDE_MATH_NAN },
      { -INT64_C(                   1), -INT64_C(                   1) } },
    { { SIMDE_FLOAT64_C(   393.99), SIMDE_FLOAT64_C(  -949.75) },
      {             SIMDE_MATH_NAN, SIMDE_FLOAT64_C(  -949.75) },
      { -INT64_C(                   1), -INT64_C(                   1) } },
    { { SIMDE_FLOAT64_C(  -539.66), SIMDE_FLOAT64_C(  -972.99) },
      { SIMDE_FLOAT64_C(  -539.66), SIMDE_FLOAT64_C(  -599.69) },
      { -INT64_C(                   1),  INT64_C(                   0) } },
    { {             SIMDE_MATH_NAN,             SIMDE_MATH_NAN },
      { SIMDE_FLOAT64_C(   711.66),             SIMDE_MATH_NAN },
      { -INT64_C(                   1), -INT64_C(                   1) } },
    { { SIMDE_FLOAT64_C(   926.28), SIMDE_FLOAT64_C(   -18.45) },
      {             SIMDE_MATH_NAN, SIMDE_FLOAT64_C(  -114.21) },
      { -INT64_C(                   1), -INT64_C(                   1) } },
    { { SIMDE_FLOAT64_C(  -755.40), SIMDE_FLOAT64_C(  -438.38) },
      { SIMDE_FLOAT64_C(  -108.46), SIMDE_FLOAT64_C(   885.43) },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { {             SIMDE_MATH_NAN,             SIMDE_MATH_NAN },
      { SIMDE_FLOAT64_C(  -992.67),             SIMDE_MATH_NAN },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { { SIMDE_FLOAT64_C(  -521.45), SIMDE_FLOAT64_C(   854.19) },
      {             SIMDE_MATH_NAN, SIMDE_FLOAT64_C(   854.19) },
      {  INT64_C(                   0), -INT64_C(                   1) } },
    { { SIMDE_FLOAT64_C(   647.10), SIMDE_FLOAT64_C(   707.97) },
      { SIMDE_FLOAT64_C(   647.10), SIMDE_FLOAT64_C(   707.97) },
      { -INT64_C(                   1), -INT64_C(                   1) } },
    { {             SIMDE_MATH_NAN,             SIMDE_MATH_NAN },
      { SIMDE_FLOAT64_C(  -492.25),             SIMDE_MATH_NAN },
      { -INT64_C(                   1), -INT64_C(                   1) } },
    { { SIMDE_FLOAT64_C(   789.40), SIMDE_FLOAT64_C(  -780.59) },
      {             SIMDE_MATH_NAN, SIMDE_FLOAT64_C(  -780.59) },
      { -INT64_C(                   1), -INT64_C(                   1) } },
    { { SIMDE_FLOAT64_C(  -398.53), SIMDE_FLOAT64_C(  -255.74) },
      { SIMDE_FLOAT64_C(  -398.53), SIMDE_FLOAT64_C(  -153.93) },
      { -INT64_C(                   1),  INT64_C(                   0) } },
    { {             SIMDE_MATH_NAN,             SIMDE_MATH_NAN },
      { SIMDE_FLOAT64_C(  -268.50),             SIMDE_MATH_NAN },
      { -INT64_C(                   1), -INT64_C(                   1) } },
    { { SIMDE_FLOAT64_C(    71.15), SIMDE_FLOAT64_C(  -261.18) },
      {             SIMDE_MATH_NAN, SIMDE_FLOAT64_C(   549.71) },
      { -INT64_C(                   1), -INT64_C(                   1) } },
    { { SIMDE_FLOAT64_C(   422.25), SIMDE_FLOAT64_C(  -502.55) },
      { SIMDE_FLOAT64_C(   762.12), SIMDE_FLOAT64_C(    69.35) },
      { -INT64_C(                   1), -INT64_C(                   1) } },
    { {             SIMDE_MATH_NAN,             SIMDE_MATH_NAN },
      { SIMDE_FLOAT64_C(   176.79),             SIMDE_MATH_NAN },
      { -INT64_C(                   1), -INT64_C(                   1) } },
    { { SIMDE_FLOAT64_C(  -760.86), SIMDE_FLOAT64_C(   684.54) },
      {             SIMDE_MATH_NAN, SIMDE_FLOAT64_C(  -971.46) },
      { -INT64_C(                   1),  INT64_C(                   0) } },
    { { SIMDE_FLOAT64_C(   744.23), SIMDE_FLOAT64_C(   104.92) },
      { SIMDE_FLOAT64_C(   744.23), SIMDE_FLOAT64_C(   104.92) },
      { -INT64_C(                   1), -INT64_C(                   1) } },
    { {             SIMDE_MATH_NAN,             SIMDE_MATH_NAN },
      { SIMDE_FLOAT64_C(   191.77),             SIMDE_MATH_NAN },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { { SIMDE_FLOAT64_C(  -429.74), SIMDE_FLOAT64_C(   923.27) },
      {             SIMDE_MATH_NAN, SIMDE_FLOAT64_C(   923.27) },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { { SIMDE_FLOAT64_C(   191.12), SIMDE_FLOAT64_C(   255.10) },
      { SIMDE_FLOAT64_C(   191.12), SIMDE_FLOAT64_C(   255.10) },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { {             SIMDE_MATH_NAN,             SIMDE_MATH_NAN },
      { SIMDE_FLOAT64_C(   682.72),             SIMDE_MATH_NAN },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { { SIMDE_FLOAT64_C(  -571.20), SIMDE_FLOAT64_C(  -140.49) },
      {             SIMDE_MATH_NAN, SIMDE_FLOAT64_C(  -140.49) },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { { SIMDE_FLOAT64_C(  -303.52), SIMDE_FLOAT64_C(  -551.99) },
      { SIMDE_FLOAT64_C(  -303.52), SIMDE_FLOAT64_C(  -551.99) },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { {             SIMDE_MATH_NAN,             SIMDE_MATH_NAN },
      { SIMDE_FLOAT64_C(  -213.59),             SIMDE_MATH_NAN },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { { SIMDE_FLOAT64_C(  -130.74), SIMDE_FLOAT64_C(   978.19) },
      {             SIMDE_MATH_NAN, SIMDE_FLOAT64_C(   978.19) },
      {  INT64_C(                   0), -INT64_C(                   1) } },
    { { SIMDE_FLOAT64_C(    80.92), SIMDE_FLOAT64_C(  -436.46) },
      { SIMDE_FLOAT64_C(    80.92), SIMDE_FLOAT64_C(  -436.46) },
      { -INT64_C(                   1), -INT64_C(                   1) } },
    { {             SIMDE_MATH_NAN,             SIMDE_MATH_NAN },
      { SIMDE_FLOAT64_C(  -114.58),             SIMDE_MATH_NAN },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { { SIMDE_FLOAT64_C(   455.52), SIMDE_FLOAT64_C(  -431.86) },
      {             SIMDE_MATH_NAN, SIMDE_FLOAT64_C(  -431.86) },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { { SIMDE_FLOAT64_C(  -447.74), SIMDE_FLOAT64_C(   971.71) },
      { SIMDE_FLOAT64_C(  -194.02), SIMDE_FLOAT64_C(   248.74) },
      {  INT64_C(                   0), -INT64_C(                   1) } },
    { {             SIMDE_MATH_NAN,             SIMDE_MATH_NAN },
      { SIMDE_FLOAT64_C(   689.45),             SIMDE_MATH_NAN },
      { -INT64_C(                   1), -INT64_C(                   1) } },
    { { SIMDE_FLOAT64_C(   359.04), SIMDE_FLOAT64_C(  -524.13) },
      {             SIMDE_MATH_NAN, SIMDE_FLOAT64_C(  -524.13) },
      { -INT64_C(                   1), -INT64_C(                   1) } },
    { { SIMDE_FLOAT64_C(   667.81), SIMDE_FLOAT64_C(  -644.49) },
      { SIMDE_FLOAT64_C(   641.82), SIMDE_FLOAT64_C(  -251.27) },
      { -INT64_C(                   1), -INT64_C(                   1) } },
    { {             SIMDE_MATH_NAN,             SIMDE_MATH_NAN },
      { SIMDE_FLOAT64_C(    20.77),             SIMDE_MATH_NAN },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { { SIMDE_FLOAT64_C(  -581.01), SIMDE_FLOAT64_C(   906.19) },
      {             SIMDE_MATH_NAN, SIMDE_FLOAT64_C(   906.19) },
      {  INT64_C(                   0), -INT64_C(                   1) } },
    { { SIMDE_FLOAT64_C(   758.83), SIMDE_FLOAT64_C(   901.99) },
      { SIMDE_FLOAT64_C(   758.83), SIMDE_FLOAT64_C(  -688.91) },
      { -INT64_C(                   1),  INT64_C(                   0) } },
    { {             SIMDE_MATH_NAN,             SIMDE_MATH_NAN },
      { SIMDE_FLOAT64_C(   559.83),             SIMDE_MATH_NAN },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { { SIMDE_FLOAT64_C(  -722.67), SIMDE_FLOAT64_C(   249.29) },
      {             SIMDE_MATH_NAN, SIMDE_FLOAT64_C(   249.29) },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { { SIMDE_FLOAT64_C(   864.66), SIMDE_FLOAT64_C(  -820.79) },
      { SIMDE_FLOAT64_C(   572.75), SIMDE_FLOAT64_C(  -820.79) },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { {             SIMDE_MATH_NAN,             SIMDE_MATH_NAN },
      { SIMDE_FLOAT64_C(  -718.81),             SIMDE_MATH_NAN },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { { SIMDE_FLOAT64_C(  -856.64), SIMDE_FLOAT64_C(   301.97) },
      {             SIMDE_MATH_NAN, SIMDE_FLOAT64_C(  -437.64) },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { { SIMDE_FLOAT64_C(  -563.13), SIMDE_FLOAT64_C(   682.49) },
      { SIMDE_FLOAT64_C(  -563.13), SIMDE_FLOAT64_C(   682.49) },
      { -INT64_C(                   1), -INT64_C(                   1) } },
    { {             SIMDE_MATH_NAN,             SIMDE_MATH_NAN },
      { SIMDE_FLOAT64_C(  -493.20),             SIMDE_MATH_NAN },
      { -INT64_C(                   1), -INT64_C(                   1) } },
    { { SIMDE_FLOAT64_C(   675.38), SIMDE_FLOAT64_C(  -933.37) },
      {             SIMDE_MATH_NAN, SIMDE_FLOAT64_C(   952.71) },
      { -INT64_C(                   1),  INT64_C(                   0) } },
    { { SIMDE_FLOAT64_C(   589.07), SIMDE_FLOAT64_C(    41.08) },
      { SIMDE_FLOAT64_C(   589.07), SIMDE_FLOAT64_C(    41.08) },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { {             SIMDE_MATH_NAN,             SIMDE_MATH_NAN },
      { SIMDE_FLOAT64_C(   -13.81),             SIMDE_MATH_NAN },
      { -INT64_C(                   1), -INT64_C(                   1) } },
    { { SIMDE_FLOAT64_C(  -554.21), SIMDE_FLOAT64_C(   267.39) },
      {             SIMDE_MATH_NAN, SIMDE_FLOAT64_C(   267.39) },
      { -INT64_C(                   1),  INT64_C(                   0) } },
    { { SIMDE_FLOAT64_C(   151.51), SIMDE_FLOAT64_C(   777.51) },
      { SIMDE_FLOAT64_C(   151.51), SIMDE_FLOAT64_C(   588.38) },
      {  INT64_C(                   0), -INT64_C(                   1) } },
    { {             SIMDE_MATH_NAN,             SIMDE_MATH_NAN },
      { SIMDE_FLOAT64_C(   784.09),             SIMDE_MATH_NAN },
      { -INT64_C(                   1), -INT64_C(                   1) } },
    { { SIMDE_FLOAT64_C(   842.80), SIMDE_FLOAT64_C(  -709.11) },
      {             SIMDE_MATH_NAN, SIMDE_FLOAT64_C(   518.19) },
      { -INT64_C(                   1),  INT64_C(                   0) } },
    { { SIMDE_FLOAT64_C(   470.90), SIMDE_FLOAT64_C(   673.44) },
      { SIMDE_FLOAT64_C(  -728.10), SIMDE_FLOAT64_C(   673.44) },
      { -INT64_C(                   1), -INT64_C(                   1) } },
    { {             SIMDE_MATH_NAN,             SIMDE_MATH_NAN },
      { SIMDE_FLOAT64_C(  -486.30),             SIMDE_MATH_NAN },
      { -INT64_C(                   1), -INT64_C(                   1) } },
    { { SIMDE_FLOAT64_C(   161.60), SIMDE_FLOAT64_C(   499.90) },
      {             SIMDE_MATH_NAN, SIMDE_FLOAT64_C(   607.39) },
      { -INT64_C(                   1),  INT64_C(                   0) } },
    { { SIMDE_FLOAT64_C(  -803.46), SIMDE_FLOAT64_C(   336.63) },
      { SIMDE_FLOAT64_C(  -803.46), SIMDE_FLOAT64_C(   348.05) },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { {             SIMDE_MATH_NAN,             SIMDE_MATH_NAN },
      { SIMDE_FLOAT64_C(   -63.57),             SIMDE_MATH_NAN },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { { SIMDE_FLOAT64_C(  -561.66), SIMDE_FLOAT64_C(  -279.48) },
      {             SIMDE_MATH_NAN, SIMDE_FLOAT64_C(  -718.86) },
      {  INT64_C(                   0), -INT64_C(                   1) } },
    { { SIMDE_FLOAT64_C(   799.33), SIMDE_FLOAT64_C(   368.93) },
      { SIMDE_FLOAT64_C(   799.33), SIMDE_FLOAT64_C(   270.23) },
      { -INT64_C(                   1), -INT64_C(                   1) } },
    { {             SIMDE_MATH_NAN,             SIMDE_MATH_NAN },
      { SIMDE_FLOAT64_C(  -669.80),             SIMDE_MATH_NAN },
      { -INT64_C(                   1), -INT64_C(                   1) } },
    { { SIMDE_FLOAT64_C(  -422.21), SIMDE_FLOAT64_C(  -156.10) },
      {             SIMDE_MATH_NAN, SIMDE_FLOAT64_C(  -156.10) },
      { -INT64_C(                   1), -INT64_C(                   1) } },
    { { SIMDE_FLOAT64_C(   346.78), SIMDE_FLOAT64_C(   111.08) },
      { SIMDE_FLOAT64_C(  -719.85), SIMDE_FLOAT64_C(   543.32) },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { {             SIMDE_MATH_NAN,             SIMDE_MATH_NAN },
      { SIMDE_FLOAT64_C(  -108.63),             SIMDE_MATH_NAN },
      { -INT64_C(                   1), -INT64_C(                   1) } },
    { { SIMDE_FLOAT64_C(  -221.58), SIMDE_FLOAT64_C(   827.80) },
      {             SIMDE_MATH_NAN, SIMDE_FLOAT64_C(   827.80) },
      { -INT64_C(                   1),  INT64_C(                   0) } },
    { { SIMDE_FLOAT64_C(   497.90), SIMDE_FLOAT64_C(   559.73) },
      { SIMDE_FLOAT64_C(   875.87), SIMDE_FLOAT64_C(   297.23) },
      { -INT64_C(                   1),  INT64_C(                   0) } },
    { {             SIMDE_MATH_NAN,             SIMDE_MATH_NAN },
      { SIMDE_FLOAT64_C(  -432.54),             SIMDE_MATH_NAN },
      { -INT64_C(                   1), -INT64_C(                   1) } },
    { { SIMDE_FLOAT64_C(  -101.22), SIMDE_FLOAT64_C(  -102.34) },
      {             SIMDE_MATH_NAN, SIMDE_FLOAT64_C(  -102.34) },
      { -INT64_C(                   1), -INT64_C(                   1) } },
    { { SIMDE_FLOAT64_C(   215.96), SIMDE_FLOAT64_C(  -914.64) },
      { SIMDE_FLOAT64_C(   215.96), SIMDE_FLOAT64_C(  -914.64) },
      { -INT64_C(                   1), -INT64_C(                   1) } },
    { {             SIMDE_MATH_NAN,             SIMDE_MATH_NAN },
      { SIMDE_FLOAT64_C(  -893.94),             SIMDE_MATH_NAN },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { { SIMDE_FLOAT64_C(   660.33), SIMDE_FLOAT64_C(    -2.57) },
      {             SIMDE_MATH_NAN, SIMDE_FLOAT64_C(    -2.57) },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { { SIMDE_FLOAT64_C(   655.50), SIMDE_FLOAT64_C(   373.55) },
      { SIMDE_FLOAT64_C(    96.60), SIMDE_FLOAT64_C(   153.39) },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { {             SIMDE_MATH_NAN,             SIMDE_MATH_NAN },
      { SIMDE_FLOAT64_C(  -549.37),             SIMDE_MATH_NAN },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { { SIMDE_FLOAT64_C(   223.84), SIMDE_FLOAT64_C(    18.09) },
      {             SIMDE_MATH_NAN, SIMDE_FLOAT64_C(    18.09) },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { { SIMDE_FLOAT64_C(   599.19), SIMDE_FLOAT64_C(   657.31) },
      { SIMDE_FLOAT64_C(   599.19), SIMDE_FLOAT64_C(   657.31) },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { {             SIMDE_MATH_NAN,             SIMDE_MATH_NAN },
      { SIMDE_FLOAT64_C(   377.88),             SIMDE_MATH_NAN },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { { SIMDE_FLOAT64_C(  -136.97), SIMDE_FLOAT64_C(   483.94) },
      {             SIMDE_MATH_NAN, SIMDE_FLOAT64_C(   483.94) },
      {  INT64_C(                   0), -INT64_C(                   1) } },
    { { SIMDE_FLOAT64_C(   -37.90), SIMDE_FLOAT64_C(   306.60) },
      { SIMDE_FLOAT64_C(   131.24), SIMDE_FLOAT64_C(  -382.41) },
      {  INT64_C(                   0), -INT64_C(                   1) } },
    { {             SIMDE_MATH_NAN,             SIMDE_MATH_NAN },
      { SIMDE_FLOAT64_C(   770.99),             SIMDE_MATH_NAN },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { { SIMDE_FLOAT64_C(   200.30), SIMDE_FLOAT64_C(  -778.38) },
      {             SIMDE_MATH_NAN, SIMDE_FLOAT64_C(  -778.38) },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { { SIMDE_FLOAT64_C(  -453.24), SIMDE_FLOAT64_C(   155.45) },
      { SIMDE_FLOAT64_C(  -130.76), SIMDE_FLOAT64_C(   155.45) },
      {  INT64_C(                   0),  INT64_C(                   0) } },
    { {             SIMDE_MATH_NAN,             SIMDE_MATH_NAN },
      { SIMDE_FLOAT64_C(   -38.91),             SIMDE_MATH_NAN },
      { -INT64_C(                   1), -INT64_C(                   1) } },
    { { SIMDE_FLOAT64_C(   631.48), SIMDE_FLOAT64_C(  -661.03) },
      {             SIMDE_MATH_NAN, SIMDE_FLOAT64_C(  -505.49) },
      { -INT64_C(                   1), -INT64_C(                   1) } },
    { { SIMDE_FLOAT64_C(    17.87), SIMDE_FLOAT64_C(  -695.71) },
      { SIMDE_FLOAT64_C(    17.87), SIMDE_FLOAT64_C(   979.97) },
      { -INT64_C(                   1), -INT64_C(                   1) } }
  };

  simde__m128d a, b;
  simde__m128i r;

  a = simde_mm_loadu_pd(test_vec[(0 * 3) + 0].a);
  b = simde_mm_loadu_pd(test_vec[(0 * 3) + 0].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_EQ_OQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(0 * 3) + 0].r));
  a = simde_mm_loadu_pd(test_vec[(0 * 3) + 1].a);
  b = simde_mm_loadu_pd(test_vec[(0 * 3) + 1].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_EQ_OQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(0 * 3) + 1].r));
  a = simde_mm_loadu_pd(test_vec[(0 * 3) + 2].a);
  b = simde_mm_loadu_pd(test_vec[(0 * 3) + 2].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_EQ_OQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(0 * 3) + 2].r));

  a = simde_mm_loadu_pd(test_vec[(1 * 3) + 0].a);
  b = simde_mm_loadu_pd(test_vec[(1 * 3) + 0].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_LT_OS));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(1 * 3) + 0].r));
  a = simde_mm_loadu_pd(test_vec[(1 * 3) + 1].a);
  b = simde_mm_loadu_pd(test_vec[(1 * 3) + 1].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_LT_OS));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(1 * 3) + 1].r));
  a = simde_mm_loadu_pd(test_vec[(1 * 3) + 2].a);
  b = simde_mm_loadu_pd(test_vec[(1 * 3) + 2].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_LT_OS));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(1 * 3) + 2].r));

  a = simde_mm_loadu_pd(test_vec[(2 * 3) + 0].a);
  b = simde_mm_loadu_pd(test_vec[(2 * 3) + 0].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_LE_OS));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(2 * 3) + 0].r));
  a = simde_mm_loadu_pd(test_vec[(2 * 3) + 1].a);
  b = simde_mm_loadu_pd(test_vec[(2 * 3) + 1].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_LE_OS));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(2 * 3) + 1].r));
  a = simde_mm_loadu_pd(test_vec[(2 * 3) + 2].a);
  b = simde_mm_loadu_pd(test_vec[(2 * 3) + 2].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_LE_OS));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(2 * 3) + 2].r));

  a = simde_mm_loadu_pd(test_vec[(3 * 3) + 0].a);
  b = simde_mm_loadu_pd(test_vec[(3 * 3) + 0].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_UNORD_Q));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(3 * 3) + 0].r));
  a = simde_mm_loadu_pd(test_vec[(3 * 3) + 1].a);
  b = simde_mm_loadu_pd(test_vec[(3 * 3) + 1].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_UNORD_Q));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(3 * 3) + 1].r));
  a = simde_mm_loadu_pd(test_vec[(3 * 3) + 2].a);
  b = simde_mm_loadu_pd(test_vec[(3 * 3) + 2].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_UNORD_Q));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(3 * 3) + 2].r));

  a = simde_mm_loadu_pd(test_vec[(4 * 3) + 0].a);
  b = simde_mm_loadu_pd(test_vec[(4 * 3) + 0].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NEQ_UQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(4 * 3) + 0].r));
  a = simde_mm_loadu_pd(test_vec[(4 * 3) + 1].a);
  b = simde_mm_loadu_pd(test_vec[(4 * 3) + 1].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NEQ_UQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(4 * 3) + 1].r));
  a = simde_mm_loadu_pd(test_vec[(4 * 3) + 2].a);
  b = simde_mm_loadu_pd(test_vec[(4 * 3) + 2].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NEQ_UQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(4 * 3) + 2].r));

  a = simde_mm_loadu_pd(test_vec[(5 * 3) + 0].a);
  b = simde_mm_loadu_pd(test_vec[(5 * 3) + 0].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NLT_US));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(5 * 3) + 0].r));
  a = simde_mm_loadu_pd(test_vec[(5 * 3) + 1].a);
  b = simde_mm_loadu_pd(test_vec[(5 * 3) + 1].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NLT_US));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(5 * 3) + 1].r));
  a = simde_mm_loadu_pd(test_vec[(5 * 3) + 2].a);
  b = simde_mm_loadu_pd(test_vec[(5 * 3) + 2].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NLT_US));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(5 * 3) + 2].r));

  a = simde_mm_loadu_pd(test_vec[(6 * 3) + 0].a);
  b = simde_mm_loadu_pd(test_vec[(6 * 3) + 0].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NLE_US));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(6 * 3) + 0].r));
  a = simde_mm_loadu_pd(test_vec[(6 * 3) + 1].a);
  b = simde_mm_loadu_pd(test_vec[(6 * 3) + 1].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NLE_US));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(6 * 3) + 1].r));
  a = simde_mm_loadu_pd(test_vec[(6 * 3) + 2].a);
  b = simde_mm_loadu_pd(test_vec[(6 * 3) + 2].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NLE_US));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(6 * 3) + 2].r));

  a = simde_mm_loadu_pd(test_vec[(7 * 3) + 0].a);
  b = simde_mm_loadu_pd(test_vec[(7 * 3) + 0].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_ORD_Q));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(7 * 3) + 0].r));
  a = simde_mm_loadu_pd(test_vec[(7 * 3) + 1].a);
  b = simde_mm_loadu_pd(test_vec[(7 * 3) + 1].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_ORD_Q));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(7 * 3) + 1].r));
  a = simde_mm_loadu_pd(test_vec[(7 * 3) + 2].a);
  b = simde_mm_loadu_pd(test_vec[(7 * 3) + 2].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_ORD_Q));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(7 * 3) + 2].r));

  a = simde_mm_loadu_pd(test_vec[(8 * 3) + 0].a);
  b = simde_mm_loadu_pd(test_vec[(8 * 3) + 0].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_EQ_UQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(8 * 3) + 0].r));
  a = simde_mm_loadu_pd(test_vec[(8 * 3) + 1].a);
  b = simde_mm_loadu_pd(test_vec[(8 * 3) + 1].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_EQ_UQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(8 * 3) + 1].r));
  a = simde_mm_loadu_pd(test_vec[(8 * 3) + 2].a);
  b = simde_mm_loadu_pd(test_vec[(8 * 3) + 2].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_EQ_UQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(8 * 3) + 2].r));

  a = simde_mm_loadu_pd(test_vec[(9 * 3) + 0].a);
  b = simde_mm_loadu_pd(test_vec[(9 * 3) + 0].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NGE_US));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(9 * 3) + 0].r));
  a = simde_mm_loadu_pd(test_vec[(9 * 3) + 1].a);
  b = simde_mm_loadu_pd(test_vec[(9 * 3) + 1].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NGE_US));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(9 * 3) + 1].r));
  a = simde_mm_loadu_pd(test_vec[(9 * 3) + 2].a);
  b = simde_mm_loadu_pd(test_vec[(9 * 3) + 2].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NGE_US));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(9 * 3) + 2].r));

  a = simde_mm_loadu_pd(test_vec[(10 * 3) + 0].a);
  b = simde_mm_loadu_pd(test_vec[(10 * 3) + 0].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NGT_US));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(10 * 3) + 0].r));
  a = simde_mm_loadu_pd(test_vec[(10 * 3) + 1].a);
  b = simde_mm_loadu_pd(test_vec[(10 * 3) + 1].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NGT_US));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(10 * 3) + 1].r));
  a = simde_mm_loadu_pd(test_vec[(10 * 3) + 2].a);
  b = simde_mm_loadu_pd(test_vec[(10 * 3) + 2].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NGT_US));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(10 * 3) + 2].r));

  a = simde_mm_loadu_pd(test_vec[(11 * 3) + 0].a);
  b = simde_mm_loadu_pd(test_vec[(11 * 3) + 0].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_FALSE_OQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(11 * 3) + 0].r));
  a = simde_mm_loadu_pd(test_vec[(11 * 3) + 1].a);
  b = simde_mm_loadu_pd(test_vec[(11 * 3) + 1].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_FALSE_OQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(11 * 3) + 1].r));
  a = simde_mm_loadu_pd(test_vec[(11 * 3) + 2].a);
  b = simde_mm_loadu_pd(test_vec[(11 * 3) + 2].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_FALSE_OQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(11 * 3) + 2].r));

  a = simde_mm_loadu_pd(test_vec[(12 * 3) + 0].a);
  b = simde_mm_loadu_pd(test_vec[(12 * 3) + 0].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NEQ_OQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(12 * 3) + 0].r));
  a = simde_mm_loadu_pd(test_vec[(12 * 3) + 1].a);
  b = simde_mm_loadu_pd(test_vec[(12 * 3) + 1].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NEQ_OQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(12 * 3) + 1].r));
  a = simde_mm_loadu_pd(test_vec[(12 * 3) + 2].a);
  b = simde_mm_loadu_pd(test_vec[(12 * 3) + 2].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NEQ_OQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(12 * 3) + 2].r));

  a = simde_mm_loadu_pd(test_vec[(13 * 3) + 0].a);
  b = simde_mm_loadu_pd(test_vec[(13 * 3) + 0].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_GE_OS));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(13 * 3) + 0].r));
  a = simde_mm_loadu_pd(test_vec[(13 * 3) + 1].a);
  b = simde_mm_loadu_pd(test_vec[(13 * 3) + 1].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_GE_OS));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(13 * 3) + 1].r));
  a = simde_mm_loadu_pd(test_vec[(13 * 3) + 2].a);
  b = simde_mm_loadu_pd(test_vec[(13 * 3) + 2].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_GE_OS));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(13 * 3) + 2].r));

  a = simde_mm_loadu_pd(test_vec[(14 * 3) + 0].a);
  b = simde_mm_loadu_pd(test_vec[(14 * 3) + 0].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_GT_OS));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(14 * 3) + 0].r));
  a = simde_mm_loadu_pd(test_vec[(14 * 3) + 1].a);
  b = simde_mm_loadu_pd(test_vec[(14 * 3) + 1].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_GT_OS));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(14 * 3) + 1].r));
  a = simde_mm_loadu_pd(test_vec[(14 * 3) + 2].a);
  b = simde_mm_loadu_pd(test_vec[(14 * 3) + 2].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_GT_OS));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(14 * 3) + 2].r));

  a = simde_mm_loadu_pd(test_vec[(15 * 3) + 0].a);
  b = simde_mm_loadu_pd(test_vec[(15 * 3) + 0].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_TRUE_UQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(15 * 3) + 0].r));
  a = simde_mm_loadu_pd(test_vec[(15 * 3) + 1].a);
  b = simde_mm_loadu_pd(test_vec[(15 * 3) + 1].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_TRUE_UQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(15 * 3) + 1].r));
  a = simde_mm_loadu_pd(test_vec[(15 * 3) + 2].a);
  b = simde_mm_loadu_pd(test_vec[(15 * 3) + 2].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_TRUE_UQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(15 * 3) + 2].r));

  a = simde_mm_loadu_pd(test_vec[(16 * 3) + 0].a);
  b = simde_mm_loadu_pd(test_vec[(16 * 3) + 0].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_EQ_OS));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(16 * 3) + 0].r));
  a = simde_mm_loadu_pd(test_vec[(16 * 3) + 1].a);
  b = simde_mm_loadu_pd(test_vec[(16 * 3) + 1].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_EQ_OS));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(16 * 3) + 1].r));
  a = simde_mm_loadu_pd(test_vec[(16 * 3) + 2].a);
  b = simde_mm_loadu_pd(test_vec[(16 * 3) + 2].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_EQ_OS));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(16 * 3) + 2].r));

  a = simde_mm_loadu_pd(test_vec[(17 * 3) + 0].a);
  b = simde_mm_loadu_pd(test_vec[(17 * 3) + 0].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_LT_OQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(17 * 3) + 0].r));
  a = simde_mm_loadu_pd(test_vec[(17 * 3) + 1].a);
  b = simde_mm_loadu_pd(test_vec[(17 * 3) + 1].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_LT_OQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(17 * 3) + 1].r));
  a = simde_mm_loadu_pd(test_vec[(17 * 3) + 2].a);
  b = simde_mm_loadu_pd(test_vec[(17 * 3) + 2].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_LT_OQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(17 * 3) + 2].r));

  a = simde_mm_loadu_pd(test_vec[(18 * 3) + 0].a);
  b = simde_mm_loadu_pd(test_vec[(18 * 3) + 0].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_LE_OQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(18 * 3) + 0].r));
  a = simde_mm_loadu_pd(test_vec[(18 * 3) + 1].a);
  b = simde_mm_loadu_pd(test_vec[(18 * 3) + 1].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_LE_OQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(18 * 3) + 1].r));
  a = simde_mm_loadu_pd(test_vec[(18 * 3) + 2].a);
  b = simde_mm_loadu_pd(test_vec[(18 * 3) + 2].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_LE_OQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(18 * 3) + 2].r));

  a = simde_mm_loadu_pd(test_vec[(19 * 3) + 0].a);
  b = simde_mm_loadu_pd(test_vec[(19 * 3) + 0].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_UNORD_S));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(19 * 3) + 0].r));
  a = simde_mm_loadu_pd(test_vec[(19 * 3) + 1].a);
  b = simde_mm_loadu_pd(test_vec[(19 * 3) + 1].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_UNORD_S));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(19 * 3) + 1].r));
  a = simde_mm_loadu_pd(test_vec[(19 * 3) + 2].a);
  b = simde_mm_loadu_pd(test_vec[(19 * 3) + 2].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_UNORD_S));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(19 * 3) + 2].r));

  a = simde_mm_loadu_pd(test_vec[(20 * 3) + 0].a);
  b = simde_mm_loadu_pd(test_vec[(20 * 3) + 0].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NEQ_US));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(20 * 3) + 0].r));
  a = simde_mm_loadu_pd(test_vec[(20 * 3) + 1].a);
  b = simde_mm_loadu_pd(test_vec[(20 * 3) + 1].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NEQ_US));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(20 * 3) + 1].r));
  a = simde_mm_loadu_pd(test_vec[(20 * 3) + 2].a);
  b = simde_mm_loadu_pd(test_vec[(20 * 3) + 2].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NEQ_US));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(20 * 3) + 2].r));

  a = simde_mm_loadu_pd(test_vec[(21 * 3) + 0].a);
  b = simde_mm_loadu_pd(test_vec[(21 * 3) + 0].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NLT_UQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(21 * 3) + 0].r));
  a = simde_mm_loadu_pd(test_vec[(21 * 3) + 1].a);
  b = simde_mm_loadu_pd(test_vec[(21 * 3) + 1].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NLT_UQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(21 * 3) + 1].r));
  a = simde_mm_loadu_pd(test_vec[(21 * 3) + 2].a);
  b = simde_mm_loadu_pd(test_vec[(21 * 3) + 2].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NLT_UQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(21 * 3) + 2].r));

  a = simde_mm_loadu_pd(test_vec[(22 * 3) + 0].a);
  b = simde_mm_loadu_pd(test_vec[(22 * 3) + 0].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NLE_UQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(22 * 3) + 0].r));
  a = simde_mm_loadu_pd(test_vec[(22 * 3) + 1].a);
  b = simde_mm_loadu_pd(test_vec[(22 * 3) + 1].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NLE_UQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(22 * 3) + 1].r));
  a = simde_mm_loadu_pd(test_vec[(22 * 3) + 2].a);
  b = simde_mm_loadu_pd(test_vec[(22 * 3) + 2].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NLE_UQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(22 * 3) + 2].r));

  a = simde_mm_loadu_pd(test_vec[(23 * 3) + 0].a);
  b = simde_mm_loadu_pd(test_vec[(23 * 3) + 0].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_ORD_S));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(23 * 3) + 0].r));
  a = simde_mm_loadu_pd(test_vec[(23 * 3) + 1].a);
  b = simde_mm_loadu_pd(test_vec[(23 * 3) + 1].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_ORD_S));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(23 * 3) + 1].r));
  a = simde_mm_loadu_pd(test_vec[(23 * 3) + 2].a);
  b = simde_mm_loadu_pd(test_vec[(23 * 3) + 2].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_ORD_S));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(23 * 3) + 2].r));

  a = simde_mm_loadu_pd(test_vec[(24 * 3) + 0].a);
  b = simde_mm_loadu_pd(test_vec[(24 * 3) + 0].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_EQ_US));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(24 * 3) + 0].r));
  a = simde_mm_loadu_pd(test_vec[(24 * 3) + 1].a);
  b = simde_mm_loadu_pd(test_vec[(24 * 3) + 1].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_EQ_US));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(24 * 3) + 1].r));
  a = simde_mm_loadu_pd(test_vec[(24 * 3) + 2].a);
  b = simde_mm_loadu_pd(test_vec[(24 * 3) + 2].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_EQ_US));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(24 * 3) + 2].r));

  a = simde_mm_loadu_pd(test_vec[(25 * 3) + 0].a);
  b = simde_mm_loadu_pd(test_vec[(25 * 3) + 0].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NGE_UQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(25 * 3) + 0].r));
  a = simde_mm_loadu_pd(test_vec[(25 * 3) + 1].a);
  b = simde_mm_loadu_pd(test_vec[(25 * 3) + 1].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NGE_UQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(25 * 3) + 1].r));
  a = simde_mm_loadu_pd(test_vec[(25 * 3) + 2].a);
  b = simde_mm_loadu_pd(test_vec[(25 * 3) + 2].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NGE_UQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(25 * 3) + 2].r));

  a = simde_mm_loadu_pd(test_vec[(26 * 3) + 0].a);
  b = simde_mm_loadu_pd(test_vec[(26 * 3) + 0].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NGT_UQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(26 * 3) + 0].r));
  a = simde_mm_loadu_pd(test_vec[(26 * 3) + 1].a);
  b = simde_mm_loadu_pd(test_vec[(26 * 3) + 1].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NGT_UQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(26 * 3) + 1].r));
  a = simde_mm_loadu_pd(test_vec[(26 * 3) + 2].a);
  b = simde_mm_loadu_pd(test_vec[(26 * 3) + 2].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NGT_UQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(26 * 3) + 2].r));

  a = simde_mm_loadu_pd(test_vec[(27 * 3) + 0].a);
  b = simde_mm_loadu_pd(test_vec[(27 * 3) + 0].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_FALSE_OS));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(27 * 3) + 0].r));
  a = simde_mm_loadu_pd(test_vec[(27 * 3) + 1].a);
  b = simde_mm_loadu_pd(test_vec[(27 * 3) + 1].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_FALSE_OS));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(27 * 3) + 1].r));
  a = simde_mm_loadu_pd(test_vec[(27 * 3) + 2].a);
  b = simde_mm_loadu_pd(test_vec[(27 * 3) + 2].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_FALSE_OS));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(27 * 3) + 2].r));

  a = simde_mm_loadu_pd(test_vec[(28 * 3) + 0].a);
  b = simde_mm_loadu_pd(test_vec[(28 * 3) + 0].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NEQ_OS));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(28 * 3) + 0].r));
  a = simde_mm_loadu_pd(test_vec[(28 * 3) + 1].a);
  b = simde_mm_loadu_pd(test_vec[(28 * 3) + 1].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NEQ_OS));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(28 * 3) + 1].r));
  a = simde_mm_loadu_pd(test_vec[(28 * 3) + 2].a);
  b = simde_mm_loadu_pd(test_vec[(28 * 3) + 2].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NEQ_OS));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(28 * 3) + 2].r));

  a = simde_mm_loadu_pd(test_vec[(29 * 3) + 0].a);
  b = simde_mm_loadu_pd(test_vec[(29 * 3) + 0].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_GE_OQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(29 * 3) + 0].r));
  a = simde_mm_loadu_pd(test_vec[(29 * 3) + 1].a);
  b = simde_mm_loadu_pd(test_vec[(29 * 3) + 1].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_GE_OQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(29 * 3) + 1].r));
  a = simde_mm_loadu_pd(test_vec[(29 * 3) + 2].a);
  b = simde_mm_loadu_pd(test_vec[(29 * 3) + 2].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_GE_OQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(29 * 3) + 2].r));

  a = simde_mm_loadu_pd(test_vec[(30 * 3) + 0].a);
  b = simde_mm_loadu_pd(test_vec[(30 * 3) + 0].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_GT_OQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(30 * 3) + 0].r));
  a = simde_mm_loadu_pd(test_vec[(30 * 3) + 1].a);
  b = simde_mm_loadu_pd(test_vec[(30 * 3) + 1].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_GT_OQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(30 * 3) + 1].r));
  a = simde_mm_loadu_pd(test_vec[(30 * 3) + 2].a);
  b = simde_mm_loadu_pd(test_vec[(30 * 3) + 2].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_GT_OQ));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(30 * 3) + 2].r));

  a = simde_mm_loadu_pd(test_vec[(31 * 3) + 0].a);
  b = simde_mm_loadu_pd(test_vec[(31 * 3) + 0].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_TRUE_US));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(31 * 3) + 0].r));
  a = simde_mm_loadu_pd(test_vec[(31 * 3) + 1].a);
  b = simde_mm_loadu_pd(test_vec[(31 * 3) + 1].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_TRUE_US));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(31 * 3) + 1].r));
  a = simde_mm_loadu_pd(test_vec[(31 * 3) + 2].a);
  b = simde_mm_loadu_pd(test_vec[(31 * 3) + 2].b);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_TRUE_US));
  simde_test_x86_assert_equal_i64x2(r, simde_mm_loadu_epi64(test_vec[(31 * 3) + 2].r));

  return 0;
#else
  fputc('\n', stdout);

  const simde__m128d nanv = simde_mm_set1_pd(SIMDE_MATH_NAN);

  simde__m128d a, b;
  simde__m128i r;

  a = nanv;
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blend_pd(b, nanv, 2);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_EQ_OQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  b = simde_mm_blend_pd(b, nanv, 1);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_EQ_OQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_EQ_OQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = nanv;
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blend_pd(b, nanv, 2);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_LT_OS));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  b = simde_mm_blend_pd(b, nanv, 1);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_LT_OS));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_LT_OS));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = nanv;
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blend_pd(b, nanv, 2);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_LE_OS));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  b = simde_mm_blend_pd(b, nanv, 1);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_LE_OS));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_LE_OS));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = nanv;
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blend_pd(b, nanv, 2);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_UNORD_Q));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  b = simde_mm_blend_pd(b, nanv, 1);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_UNORD_Q));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_UNORD_Q));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = nanv;
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blend_pd(b, nanv, 2);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NEQ_UQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  b = simde_mm_blend_pd(b, nanv, 1);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NEQ_UQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NEQ_UQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = nanv;
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blend_pd(b, nanv, 2);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NLT_US));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  b = simde_mm_blend_pd(b, nanv, 1);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NLT_US));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NLT_US));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = nanv;
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blend_pd(b, nanv, 2);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NLE_US));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  b = simde_mm_blend_pd(b, nanv, 1);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NLE_US));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NLE_US));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = nanv;
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blend_pd(b, nanv, 2);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_ORD_Q));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  b = simde_mm_blend_pd(b, nanv, 1);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_ORD_Q));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_ORD_Q));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = nanv;
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blend_pd(b, nanv, 2);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_EQ_UQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  b = simde_mm_blend_pd(b, nanv, 1);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_EQ_UQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_EQ_UQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = nanv;
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blend_pd(b, nanv, 2);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NGE_US));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  b = simde_mm_blend_pd(b, nanv, 1);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NGE_US));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NGE_US));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = nanv;
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blend_pd(b, nanv, 2);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NGT_US));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  b = simde_mm_blend_pd(b, nanv, 1);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NGT_US));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NGT_US));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = nanv;
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blend_pd(b, nanv, 2);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_FALSE_OQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  b = simde_mm_blend_pd(b, nanv, 1);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_FALSE_OQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_FALSE_OQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = nanv;
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blend_pd(b, nanv, 2);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NEQ_OQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  b = simde_mm_blend_pd(b, nanv, 1);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NEQ_OQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NEQ_OQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = nanv;
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blend_pd(b, nanv, 2);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_GE_OS));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  b = simde_mm_blend_pd(b, nanv, 1);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_GE_OS));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_GE_OS));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = nanv;
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blend_pd(b, nanv, 2);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_GT_OS));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  b = simde_mm_blend_pd(b, nanv, 1);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_GT_OS));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_GT_OS));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = nanv;
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blend_pd(b, nanv, 2);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_TRUE_UQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  b = simde_mm_blend_pd(b, nanv, 1);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_TRUE_UQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_TRUE_UQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = nanv;
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blend_pd(b, nanv, 2);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_EQ_OS));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  b = simde_mm_blend_pd(b, nanv, 1);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_EQ_OS));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_EQ_OS));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = nanv;
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blend_pd(b, nanv, 2);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_LT_OQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  b = simde_mm_blend_pd(b, nanv, 1);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_LT_OQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_LT_OQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = nanv;
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blend_pd(b, nanv, 2);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_LE_OQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  b = simde_mm_blend_pd(b, nanv, 1);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_LE_OQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_LE_OQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = nanv;
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blend_pd(b, nanv, 2);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_UNORD_S));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  b = simde_mm_blend_pd(b, nanv, 1);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_UNORD_S));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_UNORD_S));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = nanv;
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blend_pd(b, nanv, 2);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NEQ_US));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  b = simde_mm_blend_pd(b, nanv, 1);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NEQ_US));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NEQ_US));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = nanv;
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blend_pd(b, nanv, 2);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NLT_UQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  b = simde_mm_blend_pd(b, nanv, 1);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NLT_UQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NLT_UQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = nanv;
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blend_pd(b, nanv, 2);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NLE_UQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  b = simde_mm_blend_pd(b, nanv, 1);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NLE_UQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NLE_UQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = nanv;
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blend_pd(b, nanv, 2);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_ORD_S));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  b = simde_mm_blend_pd(b, nanv, 1);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_ORD_S));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_ORD_S));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = nanv;
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blend_pd(b, nanv, 2);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_EQ_US));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  b = simde_mm_blend_pd(b, nanv, 1);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_EQ_US));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_EQ_US));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = nanv;
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blend_pd(b, nanv, 2);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NGE_UQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  b = simde_mm_blend_pd(b, nanv, 1);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NGE_UQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NGE_UQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = nanv;
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blend_pd(b, nanv, 2);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NGT_UQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  b = simde_mm_blend_pd(b, nanv, 1);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NGT_UQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NGT_UQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = nanv;
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blend_pd(b, nanv, 2);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_FALSE_OS));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  b = simde_mm_blend_pd(b, nanv, 1);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_FALSE_OS));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_FALSE_OS));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = nanv;
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blend_pd(b, nanv, 2);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NEQ_OS));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  b = simde_mm_blend_pd(b, nanv, 1);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NEQ_OS));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_NEQ_OS));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = nanv;
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blend_pd(b, nanv, 2);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_GE_OQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  b = simde_mm_blend_pd(b, nanv, 1);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_GE_OQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_GE_OQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = nanv;
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blend_pd(b, nanv, 2);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_GT_OQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  b = simde_mm_blend_pd(b, nanv, 1);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_GT_OQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_GT_OQ));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = nanv;
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blend_pd(b, nanv, 2);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_TRUE_US));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  b = simde_mm_blend_pd(b, nanv, 1);
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_TRUE_US));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_mm_blendv_pd(a, b, simde_mm_cmplt_pd(simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)), simde_mm_set1_pd(SIMDE_FLOAT64_C(0.0))));
  r = simde_mm_castpd_si128(simde_mm_cmp_pd(a, b, SIMDE_CMP_TRUE_US));
  simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);

  return 1;
#endif
}

static int
test_simde_mm_cmp_ps (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    const simde_float32 a[4];
    const simde_float32 b[4];
    const int32_t r[4];
  } test_vec[] = {
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -662.94), SIMDE_FLOAT32_C(  -757.48) },
      { SIMDE_FLOAT32_C(  -220.18),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   251.42) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0) } },
    { { SIMDE_FLOAT32_C(  -900.58), SIMDE_FLOAT32_C(    81.89), SIMDE_FLOAT32_C(  -267.28), SIMDE_FLOAT32_C(   661.06) },
      { SIMDE_FLOAT32_C(  -653.20), SIMDE_FLOAT32_C(   -78.79), SIMDE_FLOAT32_C(  -892.67), SIMDE_FLOAT32_C(  -584.84) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   297.65), SIMDE_FLOAT32_C(   487.28) },
      { SIMDE_FLOAT32_C(  -798.26),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   -18.44) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0) } },
    { { SIMDE_FLOAT32_C(  -401.27), SIMDE_FLOAT32_C(  -655.55), SIMDE_FLOAT32_C(   977.58), SIMDE_FLOAT32_C(  -975.82) },
      { SIMDE_FLOAT32_C(  -401.27), SIMDE_FLOAT32_C(  -655.55), SIMDE_FLOAT32_C(  -718.54), SIMDE_FLOAT32_C(  -975.82) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -933.61), SIMDE_FLOAT32_C(  -889.36) },
      { SIMDE_FLOAT32_C(     3.02),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -222.06) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1) } },
    { { SIMDE_FLOAT32_C(  -577.67), SIMDE_FLOAT32_C(  -111.59), SIMDE_FLOAT32_C(   576.86), SIMDE_FLOAT32_C(  -525.02) },
      { SIMDE_FLOAT32_C(  -577.67), SIMDE_FLOAT32_C(  -111.59), SIMDE_FLOAT32_C(   201.14), SIMDE_FLOAT32_C(  -552.62) },
      { -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   375.61), SIMDE_FLOAT32_C(  -294.32) },
      { SIMDE_FLOAT32_C(   401.26),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   702.59) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0) } },
    { { SIMDE_FLOAT32_C(  -331.47), SIMDE_FLOAT32_C(  -343.02), SIMDE_FLOAT32_C(   -84.35), SIMDE_FLOAT32_C(    62.09) },
      { SIMDE_FLOAT32_C(  -201.62), SIMDE_FLOAT32_C(  -343.02), SIMDE_FLOAT32_C(   -84.35), SIMDE_FLOAT32_C(    62.09) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -634.69), SIMDE_FLOAT32_C(   180.58) },
      { SIMDE_FLOAT32_C(  -964.81),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   180.58) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0) } },
    { { SIMDE_FLOAT32_C(   -31.54), SIMDE_FLOAT32_C(  -460.60), SIMDE_FLOAT32_C(    59.69), SIMDE_FLOAT32_C(  -896.85) },
      { SIMDE_FLOAT32_C(   -31.54), SIMDE_FLOAT32_C(  -460.60), SIMDE_FLOAT32_C(  -759.14), SIMDE_FLOAT32_C(   631.22) },
      {  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   549.00), SIMDE_FLOAT32_C(  -593.33) },
      { SIMDE_FLOAT32_C(   584.95),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   620.14) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0) } },
    { { SIMDE_FLOAT32_C(   526.79), SIMDE_FLOAT32_C(  -807.91), SIMDE_FLOAT32_C(   693.90), SIMDE_FLOAT32_C(   116.69) },
      { SIMDE_FLOAT32_C(   -40.92), SIMDE_FLOAT32_C(  -807.91), SIMDE_FLOAT32_C(  -526.22), SIMDE_FLOAT32_C(   116.69) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(     9.71), SIMDE_FLOAT32_C(   936.28) },
      { SIMDE_FLOAT32_C(   428.05),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   936.28) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0) } },
    { { SIMDE_FLOAT32_C(    58.26), SIMDE_FLOAT32_C(  -503.28), SIMDE_FLOAT32_C(   258.80), SIMDE_FLOAT32_C(   199.80) },
      { SIMDE_FLOAT32_C(   186.64), SIMDE_FLOAT32_C(  -503.28), SIMDE_FLOAT32_C(   258.80), SIMDE_FLOAT32_C(   199.80) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   138.23), SIMDE_FLOAT32_C(   402.97) },
      { SIMDE_FLOAT32_C(   -12.82),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -756.24) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1) } },
    { { SIMDE_FLOAT32_C(   494.19), SIMDE_FLOAT32_C(  -555.40), SIMDE_FLOAT32_C(  -366.05), SIMDE_FLOAT32_C(   547.91) },
      { SIMDE_FLOAT32_C(   494.19), SIMDE_FLOAT32_C(  -193.94), SIMDE_FLOAT32_C(   186.57), SIMDE_FLOAT32_C(   316.42) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   202.87), SIMDE_FLOAT32_C(  -243.49) },
      { SIMDE_FLOAT32_C(  -495.11),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -243.49) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1) } },
    { { SIMDE_FLOAT32_C(  -725.65), SIMDE_FLOAT32_C(  -784.49), SIMDE_FLOAT32_C(   418.04), SIMDE_FLOAT32_C(   714.81) },
      { SIMDE_FLOAT32_C(  -993.32), SIMDE_FLOAT32_C(  -784.49), SIMDE_FLOAT32_C(   418.04), SIMDE_FLOAT32_C(   500.87) },
      {  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   617.26), SIMDE_FLOAT32_C(   326.12) },
      { SIMDE_FLOAT32_C(  -319.28),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   326.12) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0) } },
    { { SIMDE_FLOAT32_C(  -948.58), SIMDE_FLOAT32_C(   909.32), SIMDE_FLOAT32_C(   141.54), SIMDE_FLOAT32_C(   388.32) },
      { SIMDE_FLOAT32_C(    14.75), SIMDE_FLOAT32_C(   909.32), SIMDE_FLOAT32_C(   141.54), SIMDE_FLOAT32_C(   289.10) },
      { -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -701.36), SIMDE_FLOAT32_C(   621.41) },
      { SIMDE_FLOAT32_C(   578.73),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -172.16) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0) } },
    { { SIMDE_FLOAT32_C(   672.99), SIMDE_FLOAT32_C(   969.52), SIMDE_FLOAT32_C(   449.08), SIMDE_FLOAT32_C(   739.56) },
      { SIMDE_FLOAT32_C(   672.99), SIMDE_FLOAT32_C(   969.52), SIMDE_FLOAT32_C(  -149.98), SIMDE_FLOAT32_C(    39.36) },
      { -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   604.38), SIMDE_FLOAT32_C(   358.23) },
      { SIMDE_FLOAT32_C(   -29.08),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   358.23) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0) } },
    { { SIMDE_FLOAT32_C(   802.05), SIMDE_FLOAT32_C(  -906.68), SIMDE_FLOAT32_C(   827.87), SIMDE_FLOAT32_C(   384.81) },
      { SIMDE_FLOAT32_C(   802.05), SIMDE_FLOAT32_C(  -906.68), SIMDE_FLOAT32_C(   827.87), SIMDE_FLOAT32_C(   305.82) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   978.65), SIMDE_FLOAT32_C(   789.10) },
      { SIMDE_FLOAT32_C(  -511.42),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -545.90) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1) } },
    { { SIMDE_FLOAT32_C(  -682.95), SIMDE_FLOAT32_C(   968.33), SIMDE_FLOAT32_C(   -82.82), SIMDE_FLOAT32_C(  -487.42) },
      { SIMDE_FLOAT32_C(  -682.95), SIMDE_FLOAT32_C(   968.33), SIMDE_FLOAT32_C(   -82.82), SIMDE_FLOAT32_C(  -774.97) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -879.80), SIMDE_FLOAT32_C(   273.68) },
      { SIMDE_FLOAT32_C(   322.33),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -155.92) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1) } },
    { { SIMDE_FLOAT32_C(  -402.06), SIMDE_FLOAT32_C(  -262.44), SIMDE_FLOAT32_C(   402.03), SIMDE_FLOAT32_C(   994.54) },
      { SIMDE_FLOAT32_C(  -402.06), SIMDE_FLOAT32_C(  -262.44), SIMDE_FLOAT32_C(   402.03), SIMDE_FLOAT32_C(   994.54) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   830.70), SIMDE_FLOAT32_C(   549.04) },
      { SIMDE_FLOAT32_C(  -870.94),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   549.04) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0) } },
    { { SIMDE_FLOAT32_C(   649.20), SIMDE_FLOAT32_C(   -61.96), SIMDE_FLOAT32_C(   898.25), SIMDE_FLOAT32_C(  -289.82) },
      { SIMDE_FLOAT32_C(   649.20), SIMDE_FLOAT32_C(   -61.96), SIMDE_FLOAT32_C(   898.25), SIMDE_FLOAT32_C(  -289.82) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -521.30), SIMDE_FLOAT32_C(   457.21) },
      { SIMDE_FLOAT32_C(   363.45),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   730.93) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1) } },
    { { SIMDE_FLOAT32_C(  -665.89), SIMDE_FLOAT32_C(   643.39), SIMDE_FLOAT32_C(  -876.32), SIMDE_FLOAT32_C(    32.78) },
      { SIMDE_FLOAT32_C(  -665.89), SIMDE_FLOAT32_C(   643.39), SIMDE_FLOAT32_C(  -913.05), SIMDE_FLOAT32_C(   776.22) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -355.97), SIMDE_FLOAT32_C(   785.63) },
      { SIMDE_FLOAT32_C(   204.67),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   785.63) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1) } },
    { { SIMDE_FLOAT32_C(   734.32), SIMDE_FLOAT32_C(   999.27), SIMDE_FLOAT32_C(   544.76), SIMDE_FLOAT32_C(  -722.45) },
      { SIMDE_FLOAT32_C(  -107.15), SIMDE_FLOAT32_C(   999.27), SIMDE_FLOAT32_C(   -50.17), SIMDE_FLOAT32_C(   226.96) },
      {  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -628.65), SIMDE_FLOAT32_C(   709.03) },
      { SIMDE_FLOAT32_C(   922.25),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -151.49) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0) } },
    { { SIMDE_FLOAT32_C(   635.67), SIMDE_FLOAT32_C(  -864.89), SIMDE_FLOAT32_C(   686.11), SIMDE_FLOAT32_C(  -913.95) },
      { SIMDE_FLOAT32_C(  -885.24), SIMDE_FLOAT32_C(  -864.89), SIMDE_FLOAT32_C(   899.88), SIMDE_FLOAT32_C(  -913.95) },
      {  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -258.42), SIMDE_FLOAT32_C(  -262.52) },
      { SIMDE_FLOAT32_C(  -730.63),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -262.52) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1) } },
    { { SIMDE_FLOAT32_C(  -438.30), SIMDE_FLOAT32_C(  -593.28), SIMDE_FLOAT32_C(  -471.62), SIMDE_FLOAT32_C(   563.96) },
      { SIMDE_FLOAT32_C(  -438.30), SIMDE_FLOAT32_C(  -593.28), SIMDE_FLOAT32_C(  -471.62), SIMDE_FLOAT32_C(   563.96) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   261.48), SIMDE_FLOAT32_C(  -298.71) },
      { SIMDE_FLOAT32_C(  -257.54),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(    11.83) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0) } },
    { { SIMDE_FLOAT32_C(   958.81), SIMDE_FLOAT32_C(    81.92), SIMDE_FLOAT32_C(  -313.24), SIMDE_FLOAT32_C(   306.80) },
      { SIMDE_FLOAT32_C(  -214.12), SIMDE_FLOAT32_C(    81.92), SIMDE_FLOAT32_C(   -13.33), SIMDE_FLOAT32_C(   347.58) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   862.86), SIMDE_FLOAT32_C(   975.22) },
      { SIMDE_FLOAT32_C(  -860.57),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   975.22) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0) } },
    { { SIMDE_FLOAT32_C(  -962.78), SIMDE_FLOAT32_C(   136.15), SIMDE_FLOAT32_C(  -687.08), SIMDE_FLOAT32_C(  -498.21) },
      { SIMDE_FLOAT32_C(  -962.78), SIMDE_FLOAT32_C(   136.15), SIMDE_FLOAT32_C(  -687.08), SIMDE_FLOAT32_C(  -498.21) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   277.62), SIMDE_FLOAT32_C(   145.85) },
      { SIMDE_FLOAT32_C(   860.99),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   145.85) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1) } },
    { { SIMDE_FLOAT32_C(  -179.51), SIMDE_FLOAT32_C(   901.42), SIMDE_FLOAT32_C(   229.97), SIMDE_FLOAT32_C(   379.12) },
      { SIMDE_FLOAT32_C(  -179.51), SIMDE_FLOAT32_C(  -849.80), SIMDE_FLOAT32_C(   229.97), SIMDE_FLOAT32_C(   379.12) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   432.45), SIMDE_FLOAT32_C(  -800.48) },
      { SIMDE_FLOAT32_C(    55.37),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -719.93) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0) } },
    { { SIMDE_FLOAT32_C(   596.33), SIMDE_FLOAT32_C(   122.73), SIMDE_FLOAT32_C(   537.20), SIMDE_FLOAT32_C(  -532.09) },
      { SIMDE_FLOAT32_C(   596.33), SIMDE_FLOAT32_C(  -949.00), SIMDE_FLOAT32_C(   478.94), SIMDE_FLOAT32_C(   502.89) },
      {  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(    90.71), SIMDE_FLOAT32_C(  -854.55) },
      { SIMDE_FLOAT32_C(  -444.65),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   610.72) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1) } },
    { { SIMDE_FLOAT32_C(   749.60), SIMDE_FLOAT32_C(   939.79), SIMDE_FLOAT32_C(  -324.86), SIMDE_FLOAT32_C(  -112.76) },
      { SIMDE_FLOAT32_C(   749.60), SIMDE_FLOAT32_C(   939.79), SIMDE_FLOAT32_C(  -324.86), SIMDE_FLOAT32_C(  -112.76) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   409.07), SIMDE_FLOAT32_C(   426.48) },
      { SIMDE_FLOAT32_C(   474.06),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -541.86) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0) } },
    { { SIMDE_FLOAT32_C(   200.39), SIMDE_FLOAT32_C(  -870.97), SIMDE_FLOAT32_C(  -980.63), SIMDE_FLOAT32_C(   586.50) },
      { SIMDE_FLOAT32_C(   200.39), SIMDE_FLOAT32_C(   829.61), SIMDE_FLOAT32_C(  -980.63), SIMDE_FLOAT32_C(   586.50) },
      { -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -940.36), SIMDE_FLOAT32_C(   981.56) },
      { SIMDE_FLOAT32_C(    32.67),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   981.56) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0) } },
    { { SIMDE_FLOAT32_C(   587.88), SIMDE_FLOAT32_C(   862.64), SIMDE_FLOAT32_C(  -581.86), SIMDE_FLOAT32_C(   441.17) },
      { SIMDE_FLOAT32_C(   587.88), SIMDE_FLOAT32_C(   862.64), SIMDE_FLOAT32_C(  -581.86), SIMDE_FLOAT32_C(  -916.84) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(    74.20), SIMDE_FLOAT32_C(   468.19) },
      { SIMDE_FLOAT32_C(  -692.04),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   468.19) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1) } },
    { { SIMDE_FLOAT32_C(  -884.98), SIMDE_FLOAT32_C(   -64.97), SIMDE_FLOAT32_C(   946.97), SIMDE_FLOAT32_C(  -524.01) },
      { SIMDE_FLOAT32_C(  -884.98), SIMDE_FLOAT32_C(   880.17), SIMDE_FLOAT32_C(   946.97), SIMDE_FLOAT32_C(   819.72) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -291.26), SIMDE_FLOAT32_C(    26.62) },
      { SIMDE_FLOAT32_C(   -20.09),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -321.30) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0) } },
    { { SIMDE_FLOAT32_C(   136.45), SIMDE_FLOAT32_C(  -268.56), SIMDE_FLOAT32_C(   403.33), SIMDE_FLOAT32_C(   544.01) },
      { SIMDE_FLOAT32_C(   136.45), SIMDE_FLOAT32_C(  -549.38), SIMDE_FLOAT32_C(   403.33), SIMDE_FLOAT32_C(   544.01) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   437.20), SIMDE_FLOAT32_C(  -445.80) },
      { SIMDE_FLOAT32_C(  -188.61),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   132.62) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1) } },
    { { SIMDE_FLOAT32_C(  -733.08), SIMDE_FLOAT32_C(   423.54), SIMDE_FLOAT32_C(   467.42), SIMDE_FLOAT32_C(  -703.44) },
      { SIMDE_FLOAT32_C(   762.03), SIMDE_FLOAT32_C(   614.31), SIMDE_FLOAT32_C(  -365.84), SIMDE_FLOAT32_C(  -703.44) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   212.03), SIMDE_FLOAT32_C(   873.75) },
      { SIMDE_FLOAT32_C(  -511.90),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   169.34) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1) } },
    { { SIMDE_FLOAT32_C(   626.53), SIMDE_FLOAT32_C(   -96.69), SIMDE_FLOAT32_C(   970.66), SIMDE_FLOAT32_C(   435.34) },
      { SIMDE_FLOAT32_C(   626.53), SIMDE_FLOAT32_C(   -96.69), SIMDE_FLOAT32_C(   970.66), SIMDE_FLOAT32_C(   435.34) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -786.07), SIMDE_FLOAT32_C(   651.55) },
      { SIMDE_FLOAT32_C(  -973.04),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -484.94) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1) } },
    { { SIMDE_FLOAT32_C(   763.63), SIMDE_FLOAT32_C(   880.05), SIMDE_FLOAT32_C(   610.45), SIMDE_FLOAT32_C(   344.92) },
      { SIMDE_FLOAT32_C(  -191.52), SIMDE_FLOAT32_C(   333.99), SIMDE_FLOAT32_C(   610.45), SIMDE_FLOAT32_C(   344.92) },
      { -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -912.11), SIMDE_FLOAT32_C(   836.93) },
      { SIMDE_FLOAT32_C(  -716.49),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   836.93) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1) } },
    { { SIMDE_FLOAT32_C(  -977.25), SIMDE_FLOAT32_C(  -883.83), SIMDE_FLOAT32_C(   974.68), SIMDE_FLOAT32_C(  -894.09) },
      { SIMDE_FLOAT32_C(  -298.87), SIMDE_FLOAT32_C(  -636.50), SIMDE_FLOAT32_C(   974.68), SIMDE_FLOAT32_C(  -894.09) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1) } }
  };

  simde__m128 a, b;
  simde__m128i r;

  a = simde_mm_loadu_ps(test_vec[(0 * 2) + 0].a);
  b = simde_mm_loadu_ps(test_vec[(0 * 2) + 0].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_EQ_OQ));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(0 * 2) + 0].r));

  a = simde_mm_loadu_ps(test_vec[(0 * 2) + 1].a);
  b = simde_mm_loadu_ps(test_vec[(0 * 2) + 1].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_EQ_OQ));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(0 * 2) + 1].r));

  a = simde_mm_loadu_ps(test_vec[(1 * 2) + 0].a);
  b = simde_mm_loadu_ps(test_vec[(1 * 2) + 0].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_LT_OS));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(0 * 2) + 0].r));

  a = simde_mm_loadu_ps(test_vec[(1 * 2) + 1].a);
  b = simde_mm_loadu_ps(test_vec[(1 * 2) + 1].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_LT_OS));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(1 * 2) + 1].r));

  a = simde_mm_loadu_ps(test_vec[(2 * 2) + 0].a);
  b = simde_mm_loadu_ps(test_vec[(2 * 2) + 0].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_LE_OS));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(2 * 2) + 0].r));

  a = simde_mm_loadu_ps(test_vec[(2 * 2) + 1].a);
  b = simde_mm_loadu_ps(test_vec[(2 * 2) + 1].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_LE_OS));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(2 * 2) + 1].r));

  a = simde_mm_loadu_ps(test_vec[(3 * 2) + 0].a);
  b = simde_mm_loadu_ps(test_vec[(3 * 2) + 0].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_UNORD_Q));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(3 * 2) + 0].r));

  a = simde_mm_loadu_ps(test_vec[(3 * 2) + 1].a);
  b = simde_mm_loadu_ps(test_vec[(3 * 2) + 1].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_UNORD_Q));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(3 * 2) + 1].r));

  a = simde_mm_loadu_ps(test_vec[(4 * 2) + 0].a);
  b = simde_mm_loadu_ps(test_vec[(4 * 2) + 0].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NEQ_UQ));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(4 * 2) + 0].r));

  a = simde_mm_loadu_ps(test_vec[(4 * 2) + 1].a);
  b = simde_mm_loadu_ps(test_vec[(4 * 2) + 1].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NEQ_UQ));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(4 * 2) + 1].r));

  a = simde_mm_loadu_ps(test_vec[(5 * 2) + 0].a);
  b = simde_mm_loadu_ps(test_vec[(5 * 2) + 0].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NLT_US));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(5 * 2) + 0].r));

  a = simde_mm_loadu_ps(test_vec[(5 * 2) + 1].a);
  b = simde_mm_loadu_ps(test_vec[(5 * 2) + 1].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NLT_US));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(5 * 2) + 1].r));

  a = simde_mm_loadu_ps(test_vec[(6 * 2) + 0].a);
  b = simde_mm_loadu_ps(test_vec[(6 * 2) + 0].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NLE_US));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(6 * 2) + 0].r));

  a = simde_mm_loadu_ps(test_vec[(6 * 2) + 1].a);
  b = simde_mm_loadu_ps(test_vec[(6 * 2) + 1].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NLE_US));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(6 * 2) + 1].r));

  a = simde_mm_loadu_ps(test_vec[(7 * 2) + 0].a);
  b = simde_mm_loadu_ps(test_vec[(7 * 2) + 0].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_ORD_Q));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(7 * 2) + 0].r));

  a = simde_mm_loadu_ps(test_vec[(7 * 2) + 1].a);
  b = simde_mm_loadu_ps(test_vec[(7 * 2) + 1].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_ORD_Q));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(7 * 2) + 1].r));

  a = simde_mm_loadu_ps(test_vec[(8 * 2) + 0].a);
  b = simde_mm_loadu_ps(test_vec[(8 * 2) + 0].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_EQ_UQ));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(8 * 2) + 0].r));

  a = simde_mm_loadu_ps(test_vec[(8 * 2) + 1].a);
  b = simde_mm_loadu_ps(test_vec[(8 * 2) + 1].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_EQ_UQ));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(8 * 2) + 1].r));

  a = simde_mm_loadu_ps(test_vec[(9 * 2) + 0].a);
  b = simde_mm_loadu_ps(test_vec[(9 * 2) + 0].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NGE_US));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(9 * 2) + 0].r));

  a = simde_mm_loadu_ps(test_vec[(9 * 2) + 1].a);
  b = simde_mm_loadu_ps(test_vec[(9 * 2) + 1].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NGE_US));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(9 * 2) + 1].r));

  a = simde_mm_loadu_ps(test_vec[(10 * 2) + 0].a);
  b = simde_mm_loadu_ps(test_vec[(10 * 2) + 0].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NGT_US));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(10 * 2) + 0].r));

  a = simde_mm_loadu_ps(test_vec[(10 * 2) + 1].a);
  b = simde_mm_loadu_ps(test_vec[(10 * 2) + 1].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NGT_US));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(10 * 2) + 1].r));

  a = simde_mm_loadu_ps(test_vec[(11 * 2) + 0].a);
  b = simde_mm_loadu_ps(test_vec[(11 * 2) + 0].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_FALSE_OQ));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(11 * 2) + 0].r));

  a = simde_mm_loadu_ps(test_vec[(11 * 2) + 1].a);
  b = simde_mm_loadu_ps(test_vec[(11 * 2) + 1].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_FALSE_OQ));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(11 * 2) + 1].r));

  a = simde_mm_loadu_ps(test_vec[(12 * 2) + 0].a);
  b = simde_mm_loadu_ps(test_vec[(12 * 2) + 0].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NEQ_OQ));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(12 * 2) + 0].r));

  a = simde_mm_loadu_ps(test_vec[(12 * 2) + 1].a);
  b = simde_mm_loadu_ps(test_vec[(12 * 2) + 1].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NEQ_OQ));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(12 * 2) + 1].r));

  a = simde_mm_loadu_ps(test_vec[(13 * 2) + 0].a);
  b = simde_mm_loadu_ps(test_vec[(13 * 2) + 0].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_GE_OS));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(13 * 2) + 0].r));

  a = simde_mm_loadu_ps(test_vec[(13 * 2) + 1].a);
  b = simde_mm_loadu_ps(test_vec[(13 * 2) + 1].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_GE_OS));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(13 * 2) + 1].r));

  a = simde_mm_loadu_ps(test_vec[(14 * 2) + 0].a);
  b = simde_mm_loadu_ps(test_vec[(14 * 2) + 0].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_GT_OS));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(14 * 2) + 0].r));

  a = simde_mm_loadu_ps(test_vec[(14 * 2) + 1].a);
  b = simde_mm_loadu_ps(test_vec[(14 * 2) + 1].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_GT_OS));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(14 * 2) + 1].r));

  a = simde_mm_loadu_ps(test_vec[(15 * 2) + 0].a);
  b = simde_mm_loadu_ps(test_vec[(15 * 2) + 0].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_TRUE_UQ));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(15 * 2) + 0].r));

  a = simde_mm_loadu_ps(test_vec[(15 * 2) + 1].a);
  b = simde_mm_loadu_ps(test_vec[(15 * 2) + 1].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_TRUE_UQ));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(15 * 2) + 1].r));

  a = simde_mm_loadu_ps(test_vec[(16 * 2) + 0].a);
  b = simde_mm_loadu_ps(test_vec[(16 * 2) + 0].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_EQ_OS));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(16 * 2) + 0].r));

  a = simde_mm_loadu_ps(test_vec[(16 * 2) + 1].a);
  b = simde_mm_loadu_ps(test_vec[(16 * 2) + 1].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_EQ_OS));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(16 * 2) + 1].r));

  a = simde_mm_loadu_ps(test_vec[(17 * 2) + 0].a);
  b = simde_mm_loadu_ps(test_vec[(17 * 2) + 0].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_LT_OQ));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(17 * 2) + 0].r));

  a = simde_mm_loadu_ps(test_vec[(17 * 2) + 1].a);
  b = simde_mm_loadu_ps(test_vec[(17 * 2) + 1].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_LT_OQ));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(17 * 2) + 1].r));

  a = simde_mm_loadu_ps(test_vec[(18 * 2) + 0].a);
  b = simde_mm_loadu_ps(test_vec[(18 * 2) + 0].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_LE_OQ));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(18 * 2) + 0].r));

  a = simde_mm_loadu_ps(test_vec[(18 * 2) + 1].a);
  b = simde_mm_loadu_ps(test_vec[(18 * 2) + 1].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_LE_OQ));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(18 * 2) + 1].r));

  a = simde_mm_loadu_ps(test_vec[(19 * 2) + 0].a);
  b = simde_mm_loadu_ps(test_vec[(19 * 2) + 0].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_UNORD_S));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(19 * 2) + 0].r));

  a = simde_mm_loadu_ps(test_vec[(19 * 2) + 1].a);
  b = simde_mm_loadu_ps(test_vec[(19 * 2) + 1].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_UNORD_S));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(19 * 2) + 1].r));

  a = simde_mm_loadu_ps(test_vec[(20 * 2) + 0].a);
  b = simde_mm_loadu_ps(test_vec[(20 * 2) + 0].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NEQ_US));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(20 * 2) + 0].r));

  a = simde_mm_loadu_ps(test_vec[(20 * 2) + 1].a);
  b = simde_mm_loadu_ps(test_vec[(20 * 2) + 1].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NEQ_US));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(20 * 2) + 1].r));

  a = simde_mm_loadu_ps(test_vec[(21 * 2) + 0].a);
  b = simde_mm_loadu_ps(test_vec[(21 * 2) + 0].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NLT_UQ));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(21 * 2) + 0].r));

  a = simde_mm_loadu_ps(test_vec[(21 * 2) + 1].a);
  b = simde_mm_loadu_ps(test_vec[(21 * 2) + 1].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NLT_UQ));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(21 * 2) + 1].r));

  a = simde_mm_loadu_ps(test_vec[(22 * 2) + 0].a);
  b = simde_mm_loadu_ps(test_vec[(22 * 2) + 0].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NLE_UQ));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(22 * 2) + 0].r));

  a = simde_mm_loadu_ps(test_vec[(22 * 2) + 1].a);
  b = simde_mm_loadu_ps(test_vec[(22 * 2) + 1].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NLE_UQ));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(22 * 2) + 1].r));

  a = simde_mm_loadu_ps(test_vec[(23 * 2) + 0].a);
  b = simde_mm_loadu_ps(test_vec[(23 * 2) + 0].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_ORD_S));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(23 * 2) + 0].r));

  a = simde_mm_loadu_ps(test_vec[(23 * 2) + 1].a);
  b = simde_mm_loadu_ps(test_vec[(23 * 2) + 1].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_ORD_S));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(23 * 2) + 1].r));

  a = simde_mm_loadu_ps(test_vec[(24 * 2) + 0].a);
  b = simde_mm_loadu_ps(test_vec[(24 * 2) + 0].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_EQ_US));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(24 * 2) + 0].r));

  a = simde_mm_loadu_ps(test_vec[(24 * 2) + 1].a);
  b = simde_mm_loadu_ps(test_vec[(24 * 2) + 1].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_EQ_US));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(24 * 2) + 1].r));

  a = simde_mm_loadu_ps(test_vec[(25 * 2) + 0].a);
  b = simde_mm_loadu_ps(test_vec[(25 * 2) + 0].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NGE_UQ));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(25 * 2) + 0].r));

  a = simde_mm_loadu_ps(test_vec[(25 * 2) + 1].a);
  b = simde_mm_loadu_ps(test_vec[(25 * 2) + 1].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NGE_UQ));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(25 * 2) + 1].r));

  a = simde_mm_loadu_ps(test_vec[(26 * 2) + 0].a);
  b = simde_mm_loadu_ps(test_vec[(26 * 2) + 0].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NGT_UQ));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(26 * 2) + 0].r));

  a = simde_mm_loadu_ps(test_vec[(26 * 2) + 1].a);
  b = simde_mm_loadu_ps(test_vec[(26 * 2) + 1].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NGT_UQ));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(26 * 2) + 1].r));

  a = simde_mm_loadu_ps(test_vec[(27 * 2) + 0].a);
  b = simde_mm_loadu_ps(test_vec[(27 * 2) + 0].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_FALSE_OS));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(27 * 2) + 0].r));

  a = simde_mm_loadu_ps(test_vec[(27 * 2) + 1].a);
  b = simde_mm_loadu_ps(test_vec[(27 * 2) + 1].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_FALSE_OS));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(27 * 2) + 1].r));

  a = simde_mm_loadu_ps(test_vec[(28 * 2) + 0].a);
  b = simde_mm_loadu_ps(test_vec[(28 * 2) + 0].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NEQ_OS));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(28 * 2) + 0].r));

  a = simde_mm_loadu_ps(test_vec[(28 * 2) + 1].a);
  b = simde_mm_loadu_ps(test_vec[(28 * 2) + 1].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NEQ_OS));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(28 * 2) + 1].r));

  a = simde_mm_loadu_ps(test_vec[(29 * 2) + 0].a);
  b = simde_mm_loadu_ps(test_vec[(29 * 2) + 0].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_GE_OQ));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(29 * 2) + 0].r));

  a = simde_mm_loadu_ps(test_vec[(29 * 2) + 1].a);
  b = simde_mm_loadu_ps(test_vec[(29 * 2) + 1].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_GE_OQ));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(29 * 2) + 1].r));

  a = simde_mm_loadu_ps(test_vec[(30 * 2) + 0].a);
  b = simde_mm_loadu_ps(test_vec[(30 * 2) + 0].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_GT_OQ));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(30 * 2) + 0].r));

  a = simde_mm_loadu_ps(test_vec[(30 * 2) + 1].a);
  b = simde_mm_loadu_ps(test_vec[(30 * 2) + 1].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_GT_OQ));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(30 * 2) + 1].r));

  a = simde_mm_loadu_ps(test_vec[(31 * 2) + 0].a);
  b = simde_mm_loadu_ps(test_vec[(31 * 2) + 0].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_TRUE_US));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(31 * 2) + 0].r));

  a = simde_mm_loadu_ps(test_vec[(31 * 2) + 1].a);
  b = simde_mm_loadu_ps(test_vec[(31 * 2) + 1].b);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_TRUE_US));
  simde_test_x86_assert_equal_i32x4(r, simde_mm_loadu_epi32(test_vec[(31 * 2) + 1].r));

  return 0;
#else
  fputc('\n', stdout);

  const simde__m128 nanv = simde_mm_set1_ps(SIMDE_MATH_NANF);

  simde__m128 a, b;
  simde__m128i r;

  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  a = simde_mm_blend_ps(a, nanv, 3);
  b = simde_mm_blend_ps(b, nanv, 6);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_EQ_OQ));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_EQ_OQ));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  a = simde_mm_blend_ps(a, nanv, 3);
  b = simde_mm_blend_ps(b, nanv, 6);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_LT_OS));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_LT_OS));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  a = simde_mm_blend_ps(a, nanv, 3);
  b = simde_mm_blend_ps(b, nanv, 6);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_LE_OS));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_LE_OS));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  a = simde_mm_blend_ps(a, nanv, 3);
  b = simde_mm_blend_ps(b, nanv, 6);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_UNORD_Q));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_UNORD_Q));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  a = simde_mm_blend_ps(a, nanv, 3);
  b = simde_mm_blend_ps(b, nanv, 6);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NEQ_UQ));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NEQ_UQ));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  a = simde_mm_blend_ps(a, nanv, 3);
  b = simde_mm_blend_ps(b, nanv, 6);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NLT_US));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NLT_US));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  a = simde_mm_blend_ps(a, nanv, 3);
  b = simde_mm_blend_ps(b, nanv, 6);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NLE_US));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NLE_US));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  a = simde_mm_blend_ps(a, nanv, 3);
  b = simde_mm_blend_ps(b, nanv, 6);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_ORD_Q));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_ORD_Q));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  a = simde_mm_blend_ps(a, nanv, 3);
  b = simde_mm_blend_ps(b, nanv, 6);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_EQ_UQ));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_EQ_UQ));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  a = simde_mm_blend_ps(a, nanv, 3);
  b = simde_mm_blend_ps(b, nanv, 6);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NGE_US));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NGE_US));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  a = simde_mm_blend_ps(a, nanv, 3);
  b = simde_mm_blend_ps(b, nanv, 6);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NGT_US));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NGT_US));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  a = simde_mm_blend_ps(a, nanv, 3);
  b = simde_mm_blend_ps(b, nanv, 6);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_FALSE_OQ));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_FALSE_OQ));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  a = simde_mm_blend_ps(a, nanv, 3);
  b = simde_mm_blend_ps(b, nanv, 6);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NEQ_OQ));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NEQ_OQ));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  a = simde_mm_blend_ps(a, nanv, 3);
  b = simde_mm_blend_ps(b, nanv, 6);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_GE_OS));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_GE_OS));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  a = simde_mm_blend_ps(a, nanv, 3);
  b = simde_mm_blend_ps(b, nanv, 6);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_GT_OS));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_GT_OS));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  a = simde_mm_blend_ps(a, nanv, 3);
  b = simde_mm_blend_ps(b, nanv, 6);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_TRUE_UQ));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_TRUE_UQ));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  a = simde_mm_blend_ps(a, nanv, 3);
  b = simde_mm_blend_ps(b, nanv, 6);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_EQ_OS));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_EQ_OS));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  a = simde_mm_blend_ps(a, nanv, 3);
  b = simde_mm_blend_ps(b, nanv, 6);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_LT_OQ));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_LT_OQ));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  a = simde_mm_blend_ps(a, nanv, 3);
  b = simde_mm_blend_ps(b, nanv, 6);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_LE_OQ));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_LE_OQ));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  a = simde_mm_blend_ps(a, nanv, 3);
  b = simde_mm_blend_ps(b, nanv, 6);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_UNORD_S));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_UNORD_S));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  a = simde_mm_blend_ps(a, nanv, 3);
  b = simde_mm_blend_ps(b, nanv, 6);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NEQ_US));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NEQ_US));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  a = simde_mm_blend_ps(a, nanv, 3);
  b = simde_mm_blend_ps(b, nanv, 6);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NLT_UQ));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NLT_UQ));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  a = simde_mm_blend_ps(a, nanv, 3);
  b = simde_mm_blend_ps(b, nanv, 6);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NLE_UQ));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NLE_UQ));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  a = simde_mm_blend_ps(a, nanv, 3);
  b = simde_mm_blend_ps(b, nanv, 6);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_ORD_S));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_ORD_S));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  a = simde_mm_blend_ps(a, nanv, 3);
  b = simde_mm_blend_ps(b, nanv, 6);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_EQ_US));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_EQ_US));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  a = simde_mm_blend_ps(a, nanv, 3);
  b = simde_mm_blend_ps(b, nanv, 6);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NGE_UQ));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NGE_UQ));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  a = simde_mm_blend_ps(a, nanv, 3);
  b = simde_mm_blend_ps(b, nanv, 6);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NGT_UQ));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NGT_UQ));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  a = simde_mm_blend_ps(a, nanv, 3);
  b = simde_mm_blend_ps(b, nanv, 6);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_FALSE_OS));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_FALSE_OS));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  a = simde_mm_blend_ps(a, nanv, 3);
  b = simde_mm_blend_ps(b, nanv, 6);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NEQ_OS));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_NEQ_OS));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  a = simde_mm_blend_ps(a, nanv, 3);
  b = simde_mm_blend_ps(b, nanv, 6);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_GE_OQ));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_GE_OQ));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  a = simde_mm_blend_ps(a, nanv, 3);
  b = simde_mm_blend_ps(b, nanv, 6);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_GT_OQ));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_GT_OQ));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  a = simde_mm_blend_ps(a, nanv, 3);
  b = simde_mm_blend_ps(b, nanv, 6);
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_TRUE_US));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm_blendv_ps(a, b, simde_mm_cmplt_ps(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm_set1_ps(SIMDE_FLOAT32_C(0.0))));
  r = simde_mm_castps_si128(simde_mm_cmp_ps(a, b, SIMDE_CMP_TRUE_US));
  simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  return 1;
#endif
}

static int
test_simde_mm_cmp_sd(SIMDE_MUNIT_TEST_ARGS) {
  simde__m128d a, b, r, e;

  a = simde_mm_set_pd(SIMDE_FLOAT64_C(  107.30), SIMDE_FLOAT64_C( -206.83));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C(  787.17), SIMDE_FLOAT64_C( -721.13));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C(  107.30), SIMDE_FLOAT64_C(    0.00));
  r = simde_mm_cmp_sd(a, b, 0);
  simde_assert_m128d_equal(r, e);

  a = simde_mm_set_pd(SIMDE_FLOAT64_C(   33.46), SIMDE_FLOAT64_C(  248.77));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C( -730.30), SIMDE_FLOAT64_C(  751.84));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C(   33.46), SIMDE_F64_ALL_SET);
  r = simde_mm_cmp_sd(a, b, 1);
  simde_assert_m128i_u64(simde_mm_castpd_si128(r), ==, simde_mm_castpd_si128(e));

  a = simde_mm_set_pd(SIMDE_FLOAT64_C(  -53.40), SIMDE_FLOAT64_C(   23.60));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C( -939.31), SIMDE_FLOAT64_C( -627.35));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C(  -53.40), SIMDE_FLOAT64_C(    0.00));
  r = simde_mm_cmp_sd(a, b, 2);
  simde_assert_m128i_u64(simde_mm_castpd_si128(r), ==, simde_mm_castpd_si128(e));

  a = simde_mm_set_pd(SIMDE_FLOAT64_C( -636.30), SIMDE_FLOAT64_C( -129.84));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C(  230.46), SIMDE_FLOAT64_C( -440.12));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C( -636.30), SIMDE_FLOAT64_C(    0.00));
  r = simde_mm_cmp_sd(a, b, 3);
  simde_assert_m128i_u64(simde_mm_castpd_si128(r), ==, simde_mm_castpd_si128(e));

  a = simde_mm_set_pd(SIMDE_FLOAT64_C(  961.48), SIMDE_FLOAT64_C(  556.89));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C(  374.50), SIMDE_FLOAT64_C(  904.56));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C(  961.48), SIMDE_F64_ALL_SET);
  r = simde_mm_cmp_sd(a, b, 4);
  simde_assert_m128i_u64(simde_mm_castpd_si128(r), ==, simde_mm_castpd_si128(e));

  a = simde_mm_set_pd(SIMDE_FLOAT64_C( -605.79), SIMDE_FLOAT64_C( -288.15));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C( -656.14), SIMDE_FLOAT64_C(  374.06));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C( -605.79), SIMDE_FLOAT64_C(    0.00));
  r = simde_mm_cmp_sd(a, b, 5);
  simde_assert_m128i_u64(simde_mm_castpd_si128(r), ==, simde_mm_castpd_si128(e));

  a = simde_mm_set_pd(SIMDE_FLOAT64_C( -592.25), SIMDE_FLOAT64_C( -155.18));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C( -130.80), SIMDE_FLOAT64_C(  432.83));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C( -592.25), SIMDE_FLOAT64_C(    0.00));
  r = simde_mm_cmp_sd(a, b, 6);
  simde_assert_m128i_u64(simde_mm_castpd_si128(r), ==, simde_mm_castpd_si128(e));

  a = simde_mm_set_pd(SIMDE_FLOAT64_C( -431.55), SIMDE_FLOAT64_C(  636.53));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C( -452.34), SIMDE_FLOAT64_C( -728.36));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C( -431.55), SIMDE_F64_ALL_SET);
  r = simde_mm_cmp_sd(a, b, 7);
  simde_assert_m128i_u64(simde_mm_castpd_si128(r), ==, simde_mm_castpd_si128(e));

  a = simde_mm_set_pd(SIMDE_FLOAT64_C( -183.31), SIMDE_FLOAT64_C( -243.73));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C(  442.30), SIMDE_FLOAT64_C(  450.60));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C( -183.31), SIMDE_FLOAT64_C(    0.00));
  r = simde_mm_cmp_sd(a, b, 8);
  simde_assert_m128i_u64(simde_mm_castpd_si128(r), ==, simde_mm_castpd_si128(e));

  a = simde_mm_set_pd(SIMDE_FLOAT64_C( -210.29), SIMDE_FLOAT64_C(  -50.46));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C( -734.21), SIMDE_FLOAT64_C(  273.75));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C( -210.29), SIMDE_F64_ALL_SET);
  r = simde_mm_cmp_sd(a, b, 9);
  simde_assert_m128i_u64(simde_mm_castpd_si128(r), ==, simde_mm_castpd_si128(e));

  a = simde_mm_set_pd(SIMDE_FLOAT64_C( -186.57), SIMDE_FLOAT64_C( -822.86));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C( -462.18), SIMDE_FLOAT64_C( -425.13));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C( -186.57), SIMDE_F64_ALL_SET);
  r = simde_mm_cmp_sd(a, b, 10);
  simde_assert_m128i_u64(simde_mm_castpd_si128(r), ==, simde_mm_castpd_si128(e));

  a = simde_mm_set_pd(SIMDE_FLOAT64_C(  968.62), SIMDE_FLOAT64_C( -745.37));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C( -464.28), SIMDE_FLOAT64_C(  713.42));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C(  968.62), SIMDE_FLOAT64_C(    0.00));
  r = simde_mm_cmp_sd(a, b, 11);
  simde_assert_m128i_u64(simde_mm_castpd_si128(r), ==, simde_mm_castpd_si128(e));

  a = simde_mm_set_pd(SIMDE_FLOAT64_C(  671.94), SIMDE_FLOAT64_C( -405.59));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C( -842.74), SIMDE_FLOAT64_C( -483.02));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C(  671.94), SIMDE_F64_ALL_SET);
  r = simde_mm_cmp_sd(a, b, 12);
  simde_assert_m128i_u64(simde_mm_castpd_si128(r), ==, simde_mm_castpd_si128(e));

  a = simde_mm_set_pd(SIMDE_FLOAT64_C( -228.63), SIMDE_FLOAT64_C(  298.91));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C( -708.14), SIMDE_FLOAT64_C(  189.31));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C( -228.63), SIMDE_F64_ALL_SET);
  r = simde_mm_cmp_sd(a, b, 13);
  simde_assert_m128i_u64(simde_mm_castpd_si128(r), ==, simde_mm_castpd_si128(e));

  a = simde_mm_set_pd(SIMDE_FLOAT64_C( -797.77), SIMDE_FLOAT64_C( -286.96));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C(  288.87), SIMDE_FLOAT64_C(  398.76));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C( -797.77), SIMDE_FLOAT64_C(    0.00));
  r = simde_mm_cmp_sd(a, b, 14);
  simde_assert_m128i_u64(simde_mm_castpd_si128(r), ==, simde_mm_castpd_si128(e));

  a = simde_mm_set_pd(SIMDE_FLOAT64_C( -248.44), SIMDE_FLOAT64_C(  191.43));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C(  602.04), SIMDE_FLOAT64_C(  999.35));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C( -248.44), SIMDE_F64_ALL_SET);
  r = simde_mm_cmp_sd(a, b, 15);
  simde_assert_m128i_u64(simde_mm_castpd_si128(r), ==, simde_mm_castpd_si128(e));

  a = simde_mm_set_pd(SIMDE_FLOAT64_C( -614.65), SIMDE_FLOAT64_C(  963.28));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C( -385.61), SIMDE_FLOAT64_C(  770.12));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C( -614.65), SIMDE_FLOAT64_C(    0.00));
  r = simde_mm_cmp_sd(a, b, 16);
  simde_assert_m128i_u64(simde_mm_castpd_si128(r), ==, simde_mm_castpd_si128(e));

  a = simde_mm_set_pd(SIMDE_FLOAT64_C( -717.70), SIMDE_FLOAT64_C(  750.92));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C(  618.97), SIMDE_FLOAT64_C(  676.03));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C( -717.70), SIMDE_FLOAT64_C(    0.00));
  r = simde_mm_cmp_sd(a, b, 17);
  simde_assert_m128i_u64(simde_mm_castpd_si128(r), ==, simde_mm_castpd_si128(e));

  a = simde_mm_set_pd(SIMDE_FLOAT64_C(  561.50), SIMDE_FLOAT64_C(  549.62));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C( -454.02), SIMDE_FLOAT64_C( -961.18));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C(  561.50), SIMDE_FLOAT64_C(    0.00));
  r = simde_mm_cmp_sd(a, b, 18);
  simde_assert_m128i_u64(simde_mm_castpd_si128(r), ==, simde_mm_castpd_si128(e));

  a = simde_mm_set_pd(SIMDE_FLOAT64_C( -480.89), SIMDE_FLOAT64_C(  -68.38));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C(  293.48), SIMDE_FLOAT64_C(  459.12));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C( -480.89), SIMDE_FLOAT64_C(    0.00));
  r = simde_mm_cmp_sd(a, b, 19);
  simde_assert_m128i_u64(simde_mm_castpd_si128(r), ==, simde_mm_castpd_si128(e));

  a = simde_mm_set_pd(SIMDE_FLOAT64_C( -600.32), SIMDE_FLOAT64_C( -105.54));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C( -623.63), SIMDE_FLOAT64_C(  235.12));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C( -600.32), SIMDE_F64_ALL_SET);
  r = simde_mm_cmp_sd(a, b, 20);
  simde_assert_m128i_u64(simde_mm_castpd_si128(r), ==, simde_mm_castpd_si128(e));

  a = simde_mm_set_pd(SIMDE_FLOAT64_C(  548.84), SIMDE_FLOAT64_C(  411.69));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C(  824.49), SIMDE_FLOAT64_C( -866.20));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C(  548.84), SIMDE_F64_ALL_SET);
  r = simde_mm_cmp_sd(a, b, 21);
  simde_assert_m128i_u64(simde_mm_castpd_si128(r), ==, simde_mm_castpd_si128(e));

  a = simde_mm_set_pd(SIMDE_FLOAT64_C(  201.44), SIMDE_FLOAT64_C(  276.75));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C( -301.93), SIMDE_FLOAT64_C( -238.56));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C(  201.44), SIMDE_F64_ALL_SET);
  r = simde_mm_cmp_sd(a, b, 22);
  simde_assert_m128i_u64(simde_mm_castpd_si128(r), ==, simde_mm_castpd_si128(e));

  a = simde_mm_set_pd(SIMDE_FLOAT64_C(  250.23), SIMDE_FLOAT64_C( -604.81));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C(  557.49), SIMDE_FLOAT64_C(  137.99));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C(  250.23), SIMDE_F64_ALL_SET);
  r = simde_mm_cmp_sd(a, b, 23);
  simde_assert_m128i_u64(simde_mm_castpd_si128(r), ==, simde_mm_castpd_si128(e));

  a = simde_mm_set_pd(SIMDE_FLOAT64_C( -235.15), SIMDE_FLOAT64_C( -121.76));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C( -394.35), SIMDE_FLOAT64_C(  272.69));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C( -235.15), SIMDE_FLOAT64_C(    0.00));
  r = simde_mm_cmp_sd(a, b, 24);
  simde_assert_m128i_u64(simde_mm_castpd_si128(r), ==, simde_mm_castpd_si128(e));

  a = simde_mm_set_pd(SIMDE_FLOAT64_C(  119.18), SIMDE_FLOAT64_C(  423.89));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C(  610.02), SIMDE_FLOAT64_C( -437.27));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C(  119.18), SIMDE_FLOAT64_C(    0.00));
  r = simde_mm_cmp_sd(a, b, 25);
  simde_assert_m128i_u64(simde_mm_castpd_si128(r), ==, simde_mm_castpd_si128(e));

  a = simde_mm_set_pd(SIMDE_FLOAT64_C( -156.34), SIMDE_FLOAT64_C( -571.13));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C( -665.54), SIMDE_FLOAT64_C(  -18.98));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C( -156.34), SIMDE_F64_ALL_SET);
  r = simde_mm_cmp_sd(a, b, 26);
  simde_assert_m128i_u64(simde_mm_castpd_si128(r), ==, simde_mm_castpd_si128(e));

  a = simde_mm_set_pd(SIMDE_FLOAT64_C(  685.87), SIMDE_FLOAT64_C( -600.86));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C( -804.08), SIMDE_FLOAT64_C( -631.16));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C(  685.87), SIMDE_FLOAT64_C(    0.00));
  r = simde_mm_cmp_sd(a, b, 27);
  simde_assert_m128i_u64(simde_mm_castpd_si128(r), ==, simde_mm_castpd_si128(e));

  a = simde_mm_set_pd(SIMDE_FLOAT64_C(  959.19), SIMDE_FLOAT64_C( -478.47));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C( -520.61), SIMDE_FLOAT64_C( -214.50));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C(  959.19), SIMDE_F64_ALL_SET);
  r = simde_mm_cmp_sd(a, b, 28);
  simde_assert_m128i_u64(simde_mm_castpd_si128(r), ==, simde_mm_castpd_si128(e));

  a = simde_mm_set_pd(SIMDE_FLOAT64_C( -527.73), SIMDE_FLOAT64_C( -211.69));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C(  356.74), SIMDE_FLOAT64_C(  955.71));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C( -527.73), SIMDE_FLOAT64_C(    0.00));
  r = simde_mm_cmp_sd(a, b, 29);
  simde_assert_m128i_u64(simde_mm_castpd_si128(r), ==, simde_mm_castpd_si128(e));

  a = simde_mm_set_pd(SIMDE_FLOAT64_C( -426.25), SIMDE_FLOAT64_C( -493.55));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C(  886.66), SIMDE_FLOAT64_C(  569.52));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C( -426.25), SIMDE_FLOAT64_C(    0.00));
  r = simde_mm_cmp_sd(a, b, 30);
  simde_assert_m128i_u64(simde_mm_castpd_si128(r), ==, simde_mm_castpd_si128(e));

  a = simde_mm_set_pd(SIMDE_FLOAT64_C(  981.35), SIMDE_FLOAT64_C( -586.10));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C(  775.81), SIMDE_FLOAT64_C(  631.37));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C(  981.35), SIMDE_F64_ALL_SET);
  r = simde_mm_cmp_sd(a, b, 31);
  simde_assert_m128i_u64(simde_mm_castpd_si128(r), ==, simde_mm_castpd_si128(e));

  return 0;
}

static int
test_simde_mm_cmp_ss(SIMDE_MUNIT_TEST_ARGS) {
  simde__m128 a, b, r, e;

  a = simde_mm_set_ps(SIMDE_FLOAT32_C(   29.86), SIMDE_FLOAT32_C( -506.56), SIMDE_FLOAT32_C(   52.70), SIMDE_FLOAT32_C( -451.19));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C( -773.77), SIMDE_FLOAT32_C(  947.93), SIMDE_FLOAT32_C( -234.67), SIMDE_FLOAT32_C( -847.97));
  e = simde_mm_move_ss(simde_mm_set_ps(SIMDE_FLOAT32_C(   29.86), SIMDE_FLOAT32_C( -506.56), SIMDE_FLOAT32_C(   52.70), SIMDE_FLOAT32_C(    0.00)), simde_mm_setzero_ps());
  r = simde_mm_cmp_ss(a, b, 0);
  simde_assert_m128i_u32(simde_mm_castps_si128(r), ==, simde_mm_castps_si128(e));

  a = simde_mm_set_ps(SIMDE_FLOAT32_C( -133.43), SIMDE_FLOAT32_C(  949.13), SIMDE_FLOAT32_C(  326.28), SIMDE_FLOAT32_C(  158.71));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C(  684.48), SIMDE_FLOAT32_C(  677.57), SIMDE_FLOAT32_C( -960.66), SIMDE_FLOAT32_C( -282.67));
  e = simde_mm_move_ss(simde_mm_set_ps(SIMDE_FLOAT32_C( -133.43), SIMDE_FLOAT32_C(  949.13), SIMDE_FLOAT32_C(  326.28), SIMDE_FLOAT32_C(    0.00)), simde_mm_setzero_ps());
  r = simde_mm_cmp_ss(a, b, 1);
  simde_assert_m128i_u32(simde_mm_castps_si128(r), ==, simde_mm_castps_si128(e));

  a = simde_mm_set_ps(SIMDE_FLOAT32_C(  193.40), SIMDE_FLOAT32_C(  779.62), SIMDE_FLOAT32_C( -982.70), SIMDE_FLOAT32_C(  733.89));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C(  820.93), SIMDE_FLOAT32_C(   29.11), SIMDE_FLOAT32_C( -999.26), SIMDE_FLOAT32_C(   78.74));
  e = simde_mm_move_ss(simde_mm_set_ps(SIMDE_FLOAT32_C(  193.40), SIMDE_FLOAT32_C(  779.62), SIMDE_FLOAT32_C( -982.70), SIMDE_FLOAT32_C(    0.00)), simde_mm_setzero_ps());
  r = simde_mm_cmp_ss(a, b, 2);
  simde_assert_m128i_u32(simde_mm_castps_si128(r), ==, simde_mm_castps_si128(e));

  a = simde_mm_set_ps(SIMDE_FLOAT32_C(  253.28), SIMDE_FLOAT32_C(  166.31), SIMDE_FLOAT32_C(  346.10), SIMDE_FLOAT32_C(  502.59));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C(  807.03), SIMDE_FLOAT32_C(  802.13), SIMDE_FLOAT32_C(  411.74), SIMDE_FLOAT32_C(  596.93));
  e = simde_mm_move_ss(simde_mm_set_ps(SIMDE_FLOAT32_C(  253.28), SIMDE_FLOAT32_C(  166.31), SIMDE_FLOAT32_C(  346.10), SIMDE_FLOAT32_C(    0.00)), simde_mm_setzero_ps());
  r = simde_mm_cmp_ss(a, b, 3);
  simde_assert_m128i_u32(simde_mm_castps_si128(r), ==, simde_mm_castps_si128(e));

  a = simde_mm_set_ps(SIMDE_FLOAT32_C(  820.59), SIMDE_FLOAT32_C(  257.56), SIMDE_FLOAT32_C( -468.51), SIMDE_FLOAT32_C( -573.74));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C( -952.67), SIMDE_FLOAT32_C( -547.39), SIMDE_FLOAT32_C(   82.21), SIMDE_FLOAT32_C(   55.32));
  e = simde_mm_move_ss(simde_mm_set_ps(SIMDE_FLOAT32_C(  820.59), SIMDE_FLOAT32_C(  257.56), SIMDE_FLOAT32_C( -468.51), SIMDE_FLOAT32_C( -573.74)), simde_x_mm_setone_ps());
  r = simde_mm_cmp_ss(a, b, 4);
  simde_assert_m128i_u32(simde_mm_castps_si128(r), ==, simde_mm_castps_si128(e));

  a = simde_mm_set_ps(SIMDE_FLOAT32_C( -856.96), SIMDE_FLOAT32_C(  380.95), SIMDE_FLOAT32_C(  354.16), SIMDE_FLOAT32_C(  933.34));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C(  937.78), SIMDE_FLOAT32_C( -846.91), SIMDE_FLOAT32_C(  481.96), SIMDE_FLOAT32_C( -401.55));
  e = simde_mm_move_ss(simde_mm_set_ps(SIMDE_FLOAT32_C( -856.96), SIMDE_FLOAT32_C(  380.95), SIMDE_FLOAT32_C(  354.16), SIMDE_FLOAT32_C(     0.0)), simde_x_mm_setone_ps());
  r = simde_mm_cmp_ss(a, b, 5);
  simde_assert_m128i_u32(simde_mm_castps_si128(r), ==, simde_mm_castps_si128(e));

  a = simde_mm_set_ps(SIMDE_FLOAT32_C(  701.49), SIMDE_FLOAT32_C(  203.70), SIMDE_FLOAT32_C( -473.49), SIMDE_FLOAT32_C(  919.68));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C(  917.48), SIMDE_FLOAT32_C(  496.48), SIMDE_FLOAT32_C( -380.99), SIMDE_FLOAT32_C( -612.04));
  e = simde_mm_move_ss(simde_mm_set_ps(SIMDE_FLOAT32_C(  701.49), SIMDE_FLOAT32_C(  203.70), SIMDE_FLOAT32_C( -473.49), SIMDE_FLOAT32_C(     0.0)), simde_x_mm_setone_ps());
  r = simde_mm_cmp_ss(a, b, 6);
  simde_assert_m128i_u32(simde_mm_castps_si128(r), ==, simde_mm_castps_si128(e));

  a = simde_mm_set_ps(SIMDE_FLOAT32_C( -495.27), SIMDE_FLOAT32_C(    2.61), SIMDE_FLOAT32_C(  190.46), SIMDE_FLOAT32_C( -489.47));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C(  733.40), SIMDE_FLOAT32_C( -262.53), SIMDE_FLOAT32_C( -250.54), SIMDE_FLOAT32_C(  753.56));
  e = simde_mm_move_ss(simde_mm_set_ps(SIMDE_FLOAT32_C( -495.27), SIMDE_FLOAT32_C(    2.61), SIMDE_FLOAT32_C(  190.46), SIMDE_FLOAT32_C(     0.0)), simde_x_mm_setone_ps());
  r = simde_mm_cmp_ss(a, b, 7);
  simde_assert_m128i_u32(simde_mm_castps_si128(r), ==, simde_mm_castps_si128(e));

  a = simde_mm_set_ps(SIMDE_FLOAT32_C( -295.58), SIMDE_FLOAT32_C(  686.48), SIMDE_FLOAT32_C( -715.68), SIMDE_FLOAT32_C( -678.55));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C(  -64.78), SIMDE_FLOAT32_C( -994.32), SIMDE_FLOAT32_C(  819.61), SIMDE_FLOAT32_C( -435.68));
  e = simde_mm_move_ss(simde_mm_set_ps(SIMDE_FLOAT32_C( -295.58), SIMDE_FLOAT32_C(  686.48), SIMDE_FLOAT32_C( -715.68), SIMDE_FLOAT32_C(    0.00)), simde_mm_setzero_ps());
  r = simde_mm_cmp_ss(a, b, 8);
  simde_assert_m128i_u32(simde_mm_castps_si128(r), ==, simde_mm_castps_si128(e));

  a = simde_mm_set_ps(SIMDE_FLOAT32_C( -446.36), SIMDE_FLOAT32_C( -630.25), SIMDE_FLOAT32_C(  895.61), SIMDE_FLOAT32_C( -359.83));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C( -712.74), SIMDE_FLOAT32_C( -683.20), SIMDE_FLOAT32_C( -684.03), SIMDE_FLOAT32_C(  476.51));
  e = simde_mm_move_ss(simde_mm_set_ps(SIMDE_FLOAT32_C( -446.36), SIMDE_FLOAT32_C( -630.25), SIMDE_FLOAT32_C(  895.61), SIMDE_FLOAT32_C(     0.0)), simde_x_mm_setone_ps());
  r = simde_mm_cmp_ss(a, b, 9);
  simde_assert_m128i_u32(simde_mm_castps_si128(r), ==, simde_mm_castps_si128(e));

  a = simde_mm_set_ps(SIMDE_FLOAT32_C(  453.59), SIMDE_FLOAT32_C( -704.68), SIMDE_FLOAT32_C(  968.54), SIMDE_FLOAT32_C(  -73.76));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C( -793.56), SIMDE_FLOAT32_C( -626.26), SIMDE_FLOAT32_C(  371.33), SIMDE_FLOAT32_C(  945.10));
  e = simde_mm_move_ss(simde_mm_set_ps(SIMDE_FLOAT32_C(  453.59), SIMDE_FLOAT32_C( -704.68), SIMDE_FLOAT32_C(  968.54), SIMDE_FLOAT32_C(     0.0)), simde_x_mm_setone_ps());
  r = simde_mm_cmp_ss(a, b, 10);
  simde_assert_m128i_u32(simde_mm_castps_si128(r), ==, simde_mm_castps_si128(e));

  a = simde_mm_set_ps(SIMDE_FLOAT32_C(  747.32), SIMDE_FLOAT32_C(  722.71), SIMDE_FLOAT32_C(   10.11), SIMDE_FLOAT32_C( -589.46));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C( -358.96), SIMDE_FLOAT32_C( -216.71), SIMDE_FLOAT32_C( -367.08), SIMDE_FLOAT32_C(  571.81));
  e = simde_mm_move_ss(simde_mm_set_ps(SIMDE_FLOAT32_C(  747.32), SIMDE_FLOAT32_C(  722.71), SIMDE_FLOAT32_C(   10.11), SIMDE_FLOAT32_C( -589.46)), simde_mm_setzero_ps());
  r = simde_mm_cmp_ss(a, b, 11);
  simde_assert_m128i_u32(simde_mm_castps_si128(r), ==, simde_mm_castps_si128(e));

  a = simde_mm_set_ps(SIMDE_FLOAT32_C( -393.04), SIMDE_FLOAT32_C( -521.21), SIMDE_FLOAT32_C(  315.85), SIMDE_FLOAT32_C(  101.30));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C( -254.13), SIMDE_FLOAT32_C(  380.76), SIMDE_FLOAT32_C(  862.95), SIMDE_FLOAT32_C( -994.97));
  e = simde_mm_move_ss(simde_mm_set_ps(SIMDE_FLOAT32_C( -393.04), SIMDE_FLOAT32_C( -521.21), SIMDE_FLOAT32_C(  315.85), SIMDE_FLOAT32_C(     0.0)), simde_x_mm_setone_ps());
  r = simde_mm_cmp_ss(a, b, 12);
  simde_assert_m128i_u32(simde_mm_castps_si128(r), ==, simde_mm_castps_si128(e));

  a = simde_mm_set_ps(SIMDE_FLOAT32_C( -429.51), SIMDE_FLOAT32_C(  950.04), SIMDE_FLOAT32_C(  770.94), SIMDE_FLOAT32_C( -853.08));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C(  178.64), SIMDE_FLOAT32_C(  -50.79), SIMDE_FLOAT32_C(  741.69), SIMDE_FLOAT32_C( -786.81));
  e = simde_mm_move_ss(simde_mm_set_ps(SIMDE_FLOAT32_C( -429.51), SIMDE_FLOAT32_C(  950.04), SIMDE_FLOAT32_C(  770.94), SIMDE_FLOAT32_C(    0.00)), simde_mm_setzero_ps());
  r = simde_mm_cmp_ss(a, b, 13);
  simde_assert_m128i_u32(simde_mm_castps_si128(r), ==, simde_mm_castps_si128(e));

  a = simde_mm_set_ps(SIMDE_FLOAT32_C(  499.30), SIMDE_FLOAT32_C(  807.95), SIMDE_FLOAT32_C( -410.68), SIMDE_FLOAT32_C(  505.23));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C( -114.66), SIMDE_FLOAT32_C(  865.01), SIMDE_FLOAT32_C( -665.39), SIMDE_FLOAT32_C(  342.00));
  e = simde_mm_move_ss(simde_mm_set_ps(SIMDE_FLOAT32_C(  499.30), SIMDE_FLOAT32_C(  807.95), SIMDE_FLOAT32_C( -410.68), SIMDE_FLOAT32_C(     0.0)), simde_x_mm_setone_ps());
  r = simde_mm_cmp_ss(a, b, 14);
  simde_assert_m128i_u32(simde_mm_castps_si128(r), ==, simde_mm_castps_si128(e));

  a = simde_mm_set_ps(SIMDE_FLOAT32_C(  744.11), SIMDE_FLOAT32_C(  103.80), SIMDE_FLOAT32_C(  230.08), SIMDE_FLOAT32_C( -784.93));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C( -640.30), SIMDE_FLOAT32_C(  690.88), SIMDE_FLOAT32_C( -782.01), SIMDE_FLOAT32_C( -779.01));
  e = simde_mm_move_ss(simde_mm_set_ps(SIMDE_FLOAT32_C(  744.11), SIMDE_FLOAT32_C(  103.80), SIMDE_FLOAT32_C(  230.08), SIMDE_FLOAT32_C(     0.0)), simde_x_mm_setone_ps());
  r = simde_mm_cmp_ss(a, b, 15);
  simde_assert_m128i_u32(simde_mm_castps_si128(r), ==, simde_mm_castps_si128(e));

  a = simde_mm_set_ps(SIMDE_FLOAT32_C(  937.00), SIMDE_FLOAT32_C( -237.56), SIMDE_FLOAT32_C(  614.04), SIMDE_FLOAT32_C( -552.02));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C(  636.71), SIMDE_FLOAT32_C(  821.24), SIMDE_FLOAT32_C(  385.34), SIMDE_FLOAT32_C( -655.54));
  e = simde_mm_move_ss(simde_mm_set_ps(SIMDE_FLOAT32_C(  937.00), SIMDE_FLOAT32_C( -237.56), SIMDE_FLOAT32_C(  614.04), SIMDE_FLOAT32_C(    0.00)), simde_mm_setzero_ps());
  r = simde_mm_cmp_ss(a, b, 16);
  simde_assert_m128i_u32(simde_mm_castps_si128(r), ==, simde_mm_castps_si128(e));

  a = simde_mm_set_ps(SIMDE_FLOAT32_C( -840.84), SIMDE_FLOAT32_C( -184.65), SIMDE_FLOAT32_C(  856.01), SIMDE_FLOAT32_C(  182.80));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C(  -54.26), SIMDE_FLOAT32_C(  831.01), SIMDE_FLOAT32_C( -693.60), SIMDE_FLOAT32_C( -149.67));
  e = simde_mm_move_ss(simde_mm_set_ps(SIMDE_FLOAT32_C( -840.84), SIMDE_FLOAT32_C( -184.65), SIMDE_FLOAT32_C(  856.01), SIMDE_FLOAT32_C(    0.00)), simde_mm_setzero_ps());
  r = simde_mm_cmp_ss(a, b, 17);
  simde_assert_m128i_u32(simde_mm_castps_si128(r), ==, simde_mm_castps_si128(e));

  a = simde_mm_set_ps(SIMDE_FLOAT32_C(  422.72), SIMDE_FLOAT32_C( -740.98), SIMDE_FLOAT32_C( -971.04), SIMDE_FLOAT32_C(   90.38));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C(  787.23), SIMDE_FLOAT32_C( -946.13), SIMDE_FLOAT32_C(  562.60), SIMDE_FLOAT32_C(   34.39));
  e = simde_mm_move_ss(simde_mm_set_ps(SIMDE_FLOAT32_C(  422.72), SIMDE_FLOAT32_C( -740.98), SIMDE_FLOAT32_C( -971.04), SIMDE_FLOAT32_C(    0.00)), simde_mm_setzero_ps());
  r = simde_mm_cmp_ss(a, b, 18);
  simde_assert_m128i_u32(simde_mm_castps_si128(r), ==, simde_mm_castps_si128(e));

  a = simde_mm_set_ps(SIMDE_FLOAT32_C(  379.97), SIMDE_FLOAT32_C(  252.47), SIMDE_FLOAT32_C(  573.41), SIMDE_FLOAT32_C(  371.64));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C(   86.67), SIMDE_FLOAT32_C(  230.06), SIMDE_FLOAT32_C(  816.36), SIMDE_FLOAT32_C( -574.41));
  e = simde_mm_move_ss(simde_mm_set_ps(SIMDE_FLOAT32_C(  379.97), SIMDE_FLOAT32_C(  252.47), SIMDE_FLOAT32_C(  573.41), SIMDE_FLOAT32_C(    0.00)), simde_mm_setzero_ps());
  r = simde_mm_cmp_ss(a, b, 19);
  simde_assert_m128i_u32(simde_mm_castps_si128(r), ==, simde_mm_castps_si128(e));

  a = simde_mm_set_ps(SIMDE_FLOAT32_C( -387.90), SIMDE_FLOAT32_C( -409.94), SIMDE_FLOAT32_C(  339.05), SIMDE_FLOAT32_C(  567.23));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C(  548.12), SIMDE_FLOAT32_C(  482.27), SIMDE_FLOAT32_C( -877.01), SIMDE_FLOAT32_C(  105.90));
  e = simde_mm_move_ss(simde_mm_set_ps(SIMDE_FLOAT32_C( -387.90), SIMDE_FLOAT32_C( -409.94), SIMDE_FLOAT32_C(  339.05), SIMDE_FLOAT32_C(     0.0)), simde_x_mm_setone_ps());
  r = simde_mm_cmp_ss(a, b, 20);
  simde_assert_m128i_u32(simde_mm_castps_si128(r), ==, simde_mm_castps_si128(e));

  a = simde_mm_set_ps(SIMDE_FLOAT32_C(  443.93), SIMDE_FLOAT32_C(  879.02), SIMDE_FLOAT32_C(  280.77), SIMDE_FLOAT32_C(  215.63));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C(  858.68), SIMDE_FLOAT32_C(  507.37), SIMDE_FLOAT32_C(  274.86), SIMDE_FLOAT32_C( -935.31));
  e = simde_mm_move_ss(simde_mm_set_ps(SIMDE_FLOAT32_C(  443.93), SIMDE_FLOAT32_C(  879.02), SIMDE_FLOAT32_C(  280.77), SIMDE_FLOAT32_C(     0.0)), simde_x_mm_setone_ps());
  r = simde_mm_cmp_ss(a, b, 21);
  simde_assert_m128i_u32(simde_mm_castps_si128(r), ==, simde_mm_castps_si128(e));

  a = simde_mm_set_ps(SIMDE_FLOAT32_C(  417.98), SIMDE_FLOAT32_C(  304.47), SIMDE_FLOAT32_C( -370.04), SIMDE_FLOAT32_C(  620.00));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C( -491.67), SIMDE_FLOAT32_C(  756.54), SIMDE_FLOAT32_C( -538.71), SIMDE_FLOAT32_C( -880.53));
  e = simde_mm_move_ss(simde_mm_set_ps(SIMDE_FLOAT32_C(  417.98), SIMDE_FLOAT32_C(  304.47), SIMDE_FLOAT32_C( -370.04), SIMDE_FLOAT32_C(     0.0)), simde_x_mm_setone_ps());
  r = simde_mm_cmp_ss(a, b, 22);
  simde_assert_m128i_u32(simde_mm_castps_si128(r), ==, simde_mm_castps_si128(e));

  a = simde_mm_set_ps(SIMDE_FLOAT32_C( -778.82), SIMDE_FLOAT32_C( -277.37), SIMDE_FLOAT32_C( -561.10), SIMDE_FLOAT32_C(  913.75));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C( -799.75), SIMDE_FLOAT32_C(  322.89), SIMDE_FLOAT32_C(  168.49), SIMDE_FLOAT32_C( -586.31));
  e = simde_mm_move_ss(simde_mm_set_ps(SIMDE_FLOAT32_C( -778.82), SIMDE_FLOAT32_C( -277.37), SIMDE_FLOAT32_C( -561.10), SIMDE_FLOAT32_C(     0.0)), simde_x_mm_setone_ps());
  r = simde_mm_cmp_ss(a, b, 23);
  simde_assert_m128i_u32(simde_mm_castps_si128(r), ==, simde_mm_castps_si128(e));

  a = simde_mm_set_ps(SIMDE_FLOAT32_C(   19.63), SIMDE_FLOAT32_C( -796.59), SIMDE_FLOAT32_C(  829.80), SIMDE_FLOAT32_C(  577.01));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C(  825.83), SIMDE_FLOAT32_C( -702.38), SIMDE_FLOAT32_C(  909.63), SIMDE_FLOAT32_C( -668.68));
  e = simde_mm_move_ss(simde_mm_set_ps(SIMDE_FLOAT32_C(   19.63), SIMDE_FLOAT32_C( -796.59), SIMDE_FLOAT32_C(  829.80), SIMDE_FLOAT32_C(    0.00)), simde_mm_setzero_ps());
  r = simde_mm_cmp_ss(a, b, 24);
  simde_assert_m128i_u32(simde_mm_castps_si128(r), ==, simde_mm_castps_si128(e));

  a = simde_mm_set_ps(SIMDE_FLOAT32_C( -935.55), SIMDE_FLOAT32_C( -906.06), SIMDE_FLOAT32_C(   23.18), SIMDE_FLOAT32_C( -374.29));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C(  903.69), SIMDE_FLOAT32_C( -930.74), SIMDE_FLOAT32_C( -354.90), SIMDE_FLOAT32_C( -304.33));
  e = simde_mm_move_ss(simde_mm_set_ps(SIMDE_FLOAT32_C( -935.55), SIMDE_FLOAT32_C( -906.06), SIMDE_FLOAT32_C(   23.18), SIMDE_FLOAT32_C(     0.0)), simde_x_mm_setone_ps());
  r = simde_mm_cmp_ss(a, b, 25);
  simde_assert_m128i_u32(simde_mm_castps_si128(r), ==, simde_mm_castps_si128(e));

  a = simde_mm_set_ps(SIMDE_FLOAT32_C( -730.13), SIMDE_FLOAT32_C( -258.50), SIMDE_FLOAT32_C( -873.85), SIMDE_FLOAT32_C( -348.94));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C(   29.53), SIMDE_FLOAT32_C(  827.18), SIMDE_FLOAT32_C(  334.24), SIMDE_FLOAT32_C( -491.97));
  e = simde_mm_move_ss(simde_mm_set_ps(SIMDE_FLOAT32_C( -730.13), SIMDE_FLOAT32_C( -258.50), SIMDE_FLOAT32_C( -873.85), SIMDE_FLOAT32_C(    0.00)), simde_mm_setzero_ps());
  r = simde_mm_cmp_ss(a, b, 26);
  simde_assert_m128i_u32(simde_mm_castps_si128(r), ==, simde_mm_castps_si128(e));

  a = simde_mm_set_ps(SIMDE_FLOAT32_C( -381.04), SIMDE_FLOAT32_C(  669.32), SIMDE_FLOAT32_C( -574.70), SIMDE_FLOAT32_C(  440.24));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C( -837.63), SIMDE_FLOAT32_C( -877.92), SIMDE_FLOAT32_C( -226.69), SIMDE_FLOAT32_C( -557.27));
  e = simde_mm_move_ss(simde_mm_set_ps(SIMDE_FLOAT32_C( -381.04), SIMDE_FLOAT32_C(  669.32), SIMDE_FLOAT32_C( -574.70), SIMDE_FLOAT32_C(    0.00)), simde_mm_setzero_ps());
  r = simde_mm_cmp_ss(a, b, 27);
  simde_assert_m128i_u32(simde_mm_castps_si128(r), ==, simde_mm_castps_si128(e));

  a = simde_mm_set_ps(SIMDE_FLOAT32_C(  239.21), SIMDE_FLOAT32_C(  527.22), SIMDE_FLOAT32_C(  489.56), SIMDE_FLOAT32_C(  238.84));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C( -364.20), SIMDE_FLOAT32_C(  722.98), SIMDE_FLOAT32_C(  475.77), SIMDE_FLOAT32_C( -967.04));
  e = simde_mm_move_ss(simde_mm_set_ps(SIMDE_FLOAT32_C(  239.21), SIMDE_FLOAT32_C(  527.22), SIMDE_FLOAT32_C(  489.56), SIMDE_FLOAT32_C(     0.0)), simde_x_mm_setone_ps());
  r = simde_mm_cmp_ss(a, b, 28);
  simde_assert_m128i_u32(simde_mm_castps_si128(r), ==, simde_mm_castps_si128(e));

  a = simde_mm_set_ps(SIMDE_FLOAT32_C( -308.58), SIMDE_FLOAT32_C( -108.66), SIMDE_FLOAT32_C(  857.88), SIMDE_FLOAT32_C( -131.87));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C( -505.11), SIMDE_FLOAT32_C( -213.47), SIMDE_FLOAT32_C(   71.14), SIMDE_FLOAT32_C( -330.60));
  e = simde_mm_move_ss(simde_mm_set_ps(SIMDE_FLOAT32_C( -308.58), SIMDE_FLOAT32_C( -108.66), SIMDE_FLOAT32_C(  857.88), SIMDE_FLOAT32_C(     0.0)), simde_x_mm_setone_ps());
  r = simde_mm_cmp_ss(a, b, 29);
  simde_assert_m128i_u32(simde_mm_castps_si128(r), ==, simde_mm_castps_si128(e));

  a = simde_mm_set_ps(SIMDE_FLOAT32_C( -236.42), SIMDE_FLOAT32_C(  925.60), SIMDE_FLOAT32_C(  252.25), SIMDE_FLOAT32_C( -546.68));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C(   67.98), SIMDE_FLOAT32_C( -613.65), SIMDE_FLOAT32_C( -165.27), SIMDE_FLOAT32_C(  109.49));
  e = simde_mm_move_ss(simde_mm_set_ps(SIMDE_FLOAT32_C( -236.42), SIMDE_FLOAT32_C(  925.60), SIMDE_FLOAT32_C(  252.25), SIMDE_FLOAT32_C(    0.00)), simde_mm_setzero_ps());
  r = simde_mm_cmp_ss(a, b, 30);
  simde_assert_m128i_u32(simde_mm_castps_si128(r), ==, simde_mm_castps_si128(e));

  a = simde_mm_set_ps(SIMDE_FLOAT32_C( -851.42), SIMDE_FLOAT32_C(  716.28), SIMDE_FLOAT32_C(  257.21), SIMDE_FLOAT32_C(  191.16));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C( -758.42), SIMDE_FLOAT32_C(  731.61), SIMDE_FLOAT32_C(   23.45), SIMDE_FLOAT32_C(  503.57));
  e = simde_mm_move_ss(simde_mm_set_ps(SIMDE_FLOAT32_C( -851.42), SIMDE_FLOAT32_C(  716.28), SIMDE_FLOAT32_C(  257.21), SIMDE_FLOAT32_C(     0.0)), simde_x_mm_setone_ps());
  r = simde_mm_cmp_ss(a, b, 31);
  simde_assert_m128i_u32(simde_mm_castps_si128(r), ==, simde_mm_castps_si128(e));

  return 0;
}

static int
test_simde_mm256_cmp_pd(SIMDE_MUNIT_TEST_ARGS) {
  simde__m256d a, b, r, e;

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C( -357.57), SIMDE_FLOAT64_C(  765.93),
                         SIMDE_FLOAT64_C( -550.14), SIMDE_FLOAT64_C(  -22.41));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(  868.56), SIMDE_FLOAT64_C(  688.68),
                         SIMDE_FLOAT64_C( -724.59), SIMDE_FLOAT64_C(  334.75));
  e = simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00));
  r = simde_mm256_cmp_pd(a, b, 0);
  simde_test_x86_assert_equal_i64x4(simde_mm256_castpd_si256(r), simde_mm256_castpd_si256(e));

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C(  -54.73), SIMDE_FLOAT64_C(   28.08),
                         SIMDE_FLOAT64_C(   97.90), SIMDE_FLOAT64_C(  892.29));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C( -838.35), SIMDE_FLOAT64_C(  389.60),
                         SIMDE_FLOAT64_C( -784.06), SIMDE_FLOAT64_C( -852.24));
  e = simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_F64_ALL_SET,
                         SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00));
  r = simde_mm256_cmp_pd(a, b, 1);
  simde_test_x86_assert_equal_i64x4(simde_mm256_castpd_si256(r), simde_mm256_castpd_si256(e));

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C( -763.82), SIMDE_FLOAT64_C( -666.98),
                         SIMDE_FLOAT64_C(   95.45), SIMDE_FLOAT64_C(  511.10));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(   72.91), SIMDE_FLOAT64_C(  842.59),
                         SIMDE_FLOAT64_C( -301.64), SIMDE_FLOAT64_C(  977.39));
  e = simde_mm256_set_pd(SIMDE_F64_ALL_SET, SIMDE_F64_ALL_SET,
                         SIMDE_FLOAT64_C(    0.00), SIMDE_F64_ALL_SET);
  r = simde_mm256_cmp_pd(a, b, 2);
  simde_test_x86_assert_equal_i64x4(simde_mm256_castpd_si256(r), simde_mm256_castpd_si256(e));

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C( -891.91), SIMDE_FLOAT64_C( -127.40),
                         SIMDE_FLOAT64_C(  463.49), SIMDE_FLOAT64_C(  177.91));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C( -341.50), SIMDE_FLOAT64_C(  153.72),
                         SIMDE_FLOAT64_C(  151.04), SIMDE_FLOAT64_C( -348.13));
  e = simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00));
  r = simde_mm256_cmp_pd(a, b, 3);
  simde_test_x86_assert_equal_i64x4(simde_mm256_castpd_si256(r), simde_mm256_castpd_si256(e));

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C(  100.63), SIMDE_FLOAT64_C(  228.90),
                         SIMDE_FLOAT64_C( -642.19), SIMDE_FLOAT64_C( -977.08));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(  565.32), SIMDE_FLOAT64_C( -745.60),
                         SIMDE_FLOAT64_C( -937.14), SIMDE_FLOAT64_C( -396.84));
  e = simde_mm256_set_pd(SIMDE_F64_ALL_SET, SIMDE_F64_ALL_SET,
                         SIMDE_F64_ALL_SET, SIMDE_F64_ALL_SET);
  r = simde_mm256_cmp_pd(a, b, 4);
  simde_test_x86_assert_equal_i64x4(simde_mm256_castpd_si256(r), simde_mm256_castpd_si256(e));

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C( -698.69), SIMDE_FLOAT64_C(  381.53),
                         SIMDE_FLOAT64_C( -995.38), SIMDE_FLOAT64_C(  904.84));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(  610.68), SIMDE_FLOAT64_C(  607.60),
                         SIMDE_FLOAT64_C(  346.14), SIMDE_FLOAT64_C( -567.77));
  e = simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C(    0.00), SIMDE_F64_ALL_SET);
  r = simde_mm256_cmp_pd(a, b, 5);
  simde_test_x86_assert_equal_i64x4(simde_mm256_castpd_si256(r), simde_mm256_castpd_si256(e));

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C(  -32.88), SIMDE_FLOAT64_C(  456.08),
                         SIMDE_FLOAT64_C( -158.08), SIMDE_FLOAT64_C( -924.19));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(  -46.81), SIMDE_FLOAT64_C( -380.35),
                         SIMDE_FLOAT64_C(  820.23), SIMDE_FLOAT64_C( -250.91));
  e = simde_mm256_set_pd(SIMDE_F64_ALL_SET, SIMDE_F64_ALL_SET,
                         SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00));
  r = simde_mm256_cmp_pd(a, b, 6);
  simde_test_x86_assert_equal_i64x4(simde_mm256_castpd_si256(r), simde_mm256_castpd_si256(e));

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C( -875.29), SIMDE_FLOAT64_C(   57.11),
                         SIMDE_FLOAT64_C(  260.25), SIMDE_FLOAT64_C(  164.20));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(  715.03), SIMDE_FLOAT64_C(  526.68),
                         SIMDE_FLOAT64_C(  724.10), SIMDE_FLOAT64_C( -661.45));
  e = simde_mm256_set_pd(SIMDE_F64_ALL_SET, SIMDE_F64_ALL_SET,
                         SIMDE_F64_ALL_SET, SIMDE_F64_ALL_SET);
  r = simde_mm256_cmp_pd(a, b, 7);
  simde_test_x86_assert_equal_i64x4(simde_mm256_castpd_si256(r), simde_mm256_castpd_si256(e));

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C(  -59.93), SIMDE_FLOAT64_C(  531.74),
                         SIMDE_FLOAT64_C(  694.87), SIMDE_FLOAT64_C(  114.93));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(  415.34), SIMDE_FLOAT64_C(  611.46),
                         SIMDE_FLOAT64_C( -279.38), SIMDE_FLOAT64_C(  402.62));
  e = simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00));
  r = simde_mm256_cmp_pd(a, b, 8);
  simde_test_x86_assert_equal_i64x4(simde_mm256_castpd_si256(r), simde_mm256_castpd_si256(e));

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C(  414.18), SIMDE_FLOAT64_C( -763.39),
                         SIMDE_FLOAT64_C(  386.06), SIMDE_FLOAT64_C(  874.65));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(  544.80), SIMDE_FLOAT64_C(  381.68),
                         SIMDE_FLOAT64_C(  466.15), SIMDE_FLOAT64_C( -212.81));
  e = simde_mm256_set_pd(SIMDE_F64_ALL_SET, SIMDE_F64_ALL_SET,
                         SIMDE_F64_ALL_SET, SIMDE_FLOAT64_C(    0.00));
  r = simde_mm256_cmp_pd(a, b, 9);
  simde_test_x86_assert_equal_i64x4(simde_mm256_castpd_si256(r), simde_mm256_castpd_si256(e));

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C(  970.77), SIMDE_FLOAT64_C( -757.81),
                         SIMDE_FLOAT64_C(  907.57), SIMDE_FLOAT64_C(  981.95));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(  537.33), SIMDE_FLOAT64_C( -552.73),
                         SIMDE_FLOAT64_C( -335.84), SIMDE_FLOAT64_C(  263.81));
  e = simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_F64_ALL_SET,
                         SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00));
  r = simde_mm256_cmp_pd(a, b, 10);
  simde_test_x86_assert_equal_i64x4(simde_mm256_castpd_si256(r), simde_mm256_castpd_si256(e));

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C(  792.31), SIMDE_FLOAT64_C(  400.04),
                         SIMDE_FLOAT64_C( -788.48), SIMDE_FLOAT64_C(  167.61));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(  212.33), SIMDE_FLOAT64_C(  296.89),
                         SIMDE_FLOAT64_C(  622.33), SIMDE_FLOAT64_C( -766.53));
  e = simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00));
  r = simde_mm256_cmp_pd(a, b, 11);
  simde_test_x86_assert_equal_i64x4(simde_mm256_castpd_si256(r), simde_mm256_castpd_si256(e));

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C(  758.22), SIMDE_FLOAT64_C( -663.32),
                         SIMDE_FLOAT64_C( -999.81), SIMDE_FLOAT64_C(  133.54));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C( -236.40), SIMDE_FLOAT64_C(  458.49),
                         SIMDE_FLOAT64_C( -796.87), SIMDE_FLOAT64_C(  971.44));
  e = simde_mm256_set_pd(SIMDE_F64_ALL_SET, SIMDE_F64_ALL_SET,
                         SIMDE_F64_ALL_SET, SIMDE_F64_ALL_SET);
  r = simde_mm256_cmp_pd(a, b, 12);
  simde_test_x86_assert_equal_i64x4(simde_mm256_castpd_si256(r), simde_mm256_castpd_si256(e));

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C( -918.24), SIMDE_FLOAT64_C( -553.29),
                         SIMDE_FLOAT64_C(  709.03), SIMDE_FLOAT64_C(  -42.30));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C( -249.29), SIMDE_FLOAT64_C( -863.89),
                         SIMDE_FLOAT64_C(  838.41), SIMDE_FLOAT64_C( -285.41));
  e = simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_F64_ALL_SET,
                         SIMDE_FLOAT64_C(    0.00), SIMDE_F64_ALL_SET);
  r = simde_mm256_cmp_pd(a, b, 13);
  simde_test_x86_assert_equal_i64x4(simde_mm256_castpd_si256(r), simde_mm256_castpd_si256(e));

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C( -668.93), SIMDE_FLOAT64_C( -420.18),
                         SIMDE_FLOAT64_C(  785.36), SIMDE_FLOAT64_C( -788.63));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(  111.55), SIMDE_FLOAT64_C( -222.13),
                         SIMDE_FLOAT64_C( -579.35), SIMDE_FLOAT64_C( -996.45));
  e = simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_F64_ALL_SET, SIMDE_F64_ALL_SET);
  r = simde_mm256_cmp_pd(a, b, 14);
  simde_test_x86_assert_equal_i64x4(simde_mm256_castpd_si256(r), simde_mm256_castpd_si256(e));

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C(  841.84), SIMDE_FLOAT64_C( -686.81),
                         SIMDE_FLOAT64_C( -199.31), SIMDE_FLOAT64_C(  982.01));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(  421.52), SIMDE_FLOAT64_C(  488.69),
                         SIMDE_FLOAT64_C(  995.06), SIMDE_FLOAT64_C( -730.80));
  e = simde_mm256_set_pd(SIMDE_F64_ALL_SET, SIMDE_F64_ALL_SET,
                         SIMDE_F64_ALL_SET, SIMDE_F64_ALL_SET);
  r = simde_mm256_cmp_pd(a, b, 15);
  simde_test_x86_assert_equal_i64x4(simde_mm256_castpd_si256(r), simde_mm256_castpd_si256(e));

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C(  -95.24), SIMDE_FLOAT64_C(  253.40),
                         SIMDE_FLOAT64_C( -815.08), SIMDE_FLOAT64_C(  358.42));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C( -399.53), SIMDE_FLOAT64_C( -710.61),
                         SIMDE_FLOAT64_C( -422.64), SIMDE_FLOAT64_C( -148.83));
  e = simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00));
  r = simde_mm256_cmp_pd(a, b, 16);
  simde_test_x86_assert_equal_i64x4(simde_mm256_castpd_si256(r), simde_mm256_castpd_si256(e));

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C(   77.77), SIMDE_FLOAT64_C(  698.58),
                         SIMDE_FLOAT64_C(  -27.60), SIMDE_FLOAT64_C(  435.81));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C( -150.12), SIMDE_FLOAT64_C( -751.03),
                         SIMDE_FLOAT64_C( -597.97), SIMDE_FLOAT64_C( -937.82));
  e = simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00));
  r = simde_mm256_cmp_pd(a, b, 17);
  simde_test_x86_assert_equal_i64x4(simde_mm256_castpd_si256(r), simde_mm256_castpd_si256(e));

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C( -838.78), SIMDE_FLOAT64_C(   93.35),
                         SIMDE_FLOAT64_C( -825.83), SIMDE_FLOAT64_C( -323.02));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C( -282.39), SIMDE_FLOAT64_C(  572.90),
                         SIMDE_FLOAT64_C( -581.23), SIMDE_FLOAT64_C(   32.08));
  e = simde_mm256_set_pd(SIMDE_F64_ALL_SET, SIMDE_F64_ALL_SET,
                         SIMDE_F64_ALL_SET, SIMDE_F64_ALL_SET);
  r = simde_mm256_cmp_pd(a, b, 18);
  simde_test_x86_assert_equal_i64x4(simde_mm256_castpd_si256(r), simde_mm256_castpd_si256(e));

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C( -807.33), SIMDE_FLOAT64_C(  664.63),
                         SIMDE_FLOAT64_C(  982.61), SIMDE_FLOAT64_C(   63.27));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(  946.39), SIMDE_FLOAT64_C(  207.32),
                         SIMDE_FLOAT64_C(   -9.66), SIMDE_FLOAT64_C(   11.76));
  e = simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00));
  r = simde_mm256_cmp_pd(a, b, 19);
  simde_test_x86_assert_equal_i64x4(simde_mm256_castpd_si256(r), simde_mm256_castpd_si256(e));

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C( -738.69), SIMDE_FLOAT64_C( -322.11),
                         SIMDE_FLOAT64_C( -163.93), SIMDE_FLOAT64_C( -138.57));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(  684.55), SIMDE_FLOAT64_C( -319.23),
                         SIMDE_FLOAT64_C(  930.19), SIMDE_FLOAT64_C(  517.01));
  e = simde_mm256_set_pd(SIMDE_F64_ALL_SET, SIMDE_F64_ALL_SET,
                         SIMDE_F64_ALL_SET, SIMDE_F64_ALL_SET);
  r = simde_mm256_cmp_pd(a, b, 20);
  simde_test_x86_assert_equal_i64x4(simde_mm256_castpd_si256(r), simde_mm256_castpd_si256(e));

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C(  -76.84), SIMDE_FLOAT64_C(  457.06),
                         SIMDE_FLOAT64_C(  575.12), SIMDE_FLOAT64_C(  845.68));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(  233.22), SIMDE_FLOAT64_C( -237.00),
                         SIMDE_FLOAT64_C( -964.93), SIMDE_FLOAT64_C(  750.37));
  e = simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_F64_ALL_SET,
                         SIMDE_F64_ALL_SET, SIMDE_F64_ALL_SET);
  r = simde_mm256_cmp_pd(a, b, 21);
  simde_test_x86_assert_equal_i64x4(simde_mm256_castpd_si256(r), simde_mm256_castpd_si256(e));

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C(  199.98), SIMDE_FLOAT64_C(  741.05),
                         SIMDE_FLOAT64_C( -723.44), SIMDE_FLOAT64_C(  323.27));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(  103.44), SIMDE_FLOAT64_C( -854.52),
                         SIMDE_FLOAT64_C(  244.92), SIMDE_FLOAT64_C(  486.47));
  e = simde_mm256_set_pd(SIMDE_F64_ALL_SET, SIMDE_F64_ALL_SET,
                         SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00));
  r = simde_mm256_cmp_pd(a, b, 22);
  simde_test_x86_assert_equal_i64x4(simde_mm256_castpd_si256(r), simde_mm256_castpd_si256(e));

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C( -576.37), SIMDE_FLOAT64_C(  750.85),
                         SIMDE_FLOAT64_C(  434.13), SIMDE_FLOAT64_C(  344.29));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C( -968.83), SIMDE_FLOAT64_C(  577.41),
                         SIMDE_FLOAT64_C(  995.59), SIMDE_FLOAT64_C(  750.10));
  e = simde_mm256_set_pd(SIMDE_F64_ALL_SET, SIMDE_F64_ALL_SET,
                         SIMDE_F64_ALL_SET, SIMDE_F64_ALL_SET);
  r = simde_mm256_cmp_pd(a, b, 23);
  simde_test_x86_assert_equal_i64x4(simde_mm256_castpd_si256(r), simde_mm256_castpd_si256(e));

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C(  526.25), SIMDE_FLOAT64_C(  -57.74),
                         SIMDE_FLOAT64_C( -432.94), SIMDE_FLOAT64_C(  882.68));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C( -495.53), SIMDE_FLOAT64_C( -602.01),
                         SIMDE_FLOAT64_C( -925.63), SIMDE_FLOAT64_C(  123.17));
  e = simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00));
  r = simde_mm256_cmp_pd(a, b, 24);
  simde_test_x86_assert_equal_i64x4(simde_mm256_castpd_si256(r), simde_mm256_castpd_si256(e));

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C( -567.21), SIMDE_FLOAT64_C(  600.16),
                         SIMDE_FLOAT64_C( -766.87), SIMDE_FLOAT64_C(   11.16));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(  695.58), SIMDE_FLOAT64_C(  482.48),
                         SIMDE_FLOAT64_C(  350.48), SIMDE_FLOAT64_C( -969.97));
  e = simde_mm256_set_pd(SIMDE_F64_ALL_SET, SIMDE_FLOAT64_C(    0.00),
                         SIMDE_F64_ALL_SET, SIMDE_FLOAT64_C(    0.00));
  r = simde_mm256_cmp_pd(a, b, 25);
  simde_test_x86_assert_equal_i64x4(simde_mm256_castpd_si256(r), simde_mm256_castpd_si256(e));

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C(  -85.80), SIMDE_FLOAT64_C(  500.17),
                         SIMDE_FLOAT64_C(  916.37), SIMDE_FLOAT64_C(  398.15));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(  745.00), SIMDE_FLOAT64_C( -144.13),
                         SIMDE_FLOAT64_C( -516.66), SIMDE_FLOAT64_C(  995.75));
  e = simde_mm256_set_pd(SIMDE_F64_ALL_SET, SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C(    0.00), SIMDE_F64_ALL_SET);
  r = simde_mm256_cmp_pd(a, b, 26);
  simde_test_x86_assert_equal_i64x4(simde_mm256_castpd_si256(r), simde_mm256_castpd_si256(e));

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C(  546.73), SIMDE_FLOAT64_C( -603.02),
                         SIMDE_FLOAT64_C( -971.83), SIMDE_FLOAT64_C(  389.90));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(  776.68), SIMDE_FLOAT64_C( -130.82),
                         SIMDE_FLOAT64_C(  580.30), SIMDE_FLOAT64_C(  704.29));
  e = simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00));
  r = simde_mm256_cmp_pd(a, b, 27);
  simde_test_x86_assert_equal_i64x4(simde_mm256_castpd_si256(r), simde_mm256_castpd_si256(e));

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C( -164.05), SIMDE_FLOAT64_C(  409.22),
                         SIMDE_FLOAT64_C( -602.22), SIMDE_FLOAT64_C(  375.71));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(  363.61), SIMDE_FLOAT64_C( -315.81),
                         SIMDE_FLOAT64_C( -199.39), SIMDE_FLOAT64_C(  806.44));
  e = simde_mm256_set_pd(SIMDE_F64_ALL_SET, SIMDE_F64_ALL_SET,
                         SIMDE_F64_ALL_SET, SIMDE_F64_ALL_SET);
  r = simde_mm256_cmp_pd(a, b, 28);
  simde_test_x86_assert_equal_i64x4(simde_mm256_castpd_si256(r), simde_mm256_castpd_si256(e));

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C(  200.12), SIMDE_FLOAT64_C(  648.82),
                         SIMDE_FLOAT64_C(  -75.31), SIMDE_FLOAT64_C(  801.78));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(  431.61), SIMDE_FLOAT64_C(  123.43),
                         SIMDE_FLOAT64_C(  753.52), SIMDE_FLOAT64_C( -346.75));
  e = simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_F64_ALL_SET,
                         SIMDE_FLOAT64_C(    0.00), SIMDE_F64_ALL_SET);
  r = simde_mm256_cmp_pd(a, b, 29);
  simde_test_x86_assert_equal_i64x4(simde_mm256_castpd_si256(r), simde_mm256_castpd_si256(e));

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C(  -27.55), SIMDE_FLOAT64_C(  895.94),
                         SIMDE_FLOAT64_C(  742.64), SIMDE_FLOAT64_C(  -59.01));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(  812.89), SIMDE_FLOAT64_C( -405.22),
                         SIMDE_FLOAT64_C(  782.32), SIMDE_FLOAT64_C( -131.42));
  e = simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_F64_ALL_SET,
                         SIMDE_FLOAT64_C(    0.00), SIMDE_F64_ALL_SET);
  r = simde_mm256_cmp_pd(a, b, 30);
  simde_test_x86_assert_equal_i64x4(simde_mm256_castpd_si256(r), simde_mm256_castpd_si256(e));

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C(  -68.17), SIMDE_FLOAT64_C( -246.45),
                         SIMDE_FLOAT64_C(   32.69), SIMDE_FLOAT64_C( -878.59));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(  -82.57), SIMDE_FLOAT64_C(  930.53),
                         SIMDE_FLOAT64_C( -591.17), SIMDE_FLOAT64_C( -164.90));
  e = simde_mm256_set_pd(SIMDE_F64_ALL_SET, SIMDE_F64_ALL_SET,
                         SIMDE_F64_ALL_SET, SIMDE_F64_ALL_SET);
  r = simde_mm256_cmp_pd(a, b, 31);
  simde_test_x86_assert_equal_i64x4(simde_mm256_castpd_si256(r), simde_mm256_castpd_si256(e));

  return 0;
}


static int
test_simde_mm256_cmp_ps (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    const simde_float32 a[8];
    const simde_float32 b[8];
    const int32_t r[8];
  } test_vec[] = {
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -149.05), SIMDE_FLOAT32_C(  -893.98),
        SIMDE_FLOAT32_C(  -696.89), SIMDE_FLOAT32_C(   685.79), SIMDE_FLOAT32_C(  -307.00), SIMDE_FLOAT32_C(   627.21) },
      { SIMDE_FLOAT32_C(   279.01),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -893.98),
        SIMDE_FLOAT32_C(  -696.89), SIMDE_FLOAT32_C(   685.79), SIMDE_FLOAT32_C(  -307.00), SIMDE_FLOAT32_C(   627.21) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   718.94), SIMDE_FLOAT32_C(   731.02),
        SIMDE_FLOAT32_C(  -671.96), SIMDE_FLOAT32_C(  -928.83), SIMDE_FLOAT32_C(   835.13), SIMDE_FLOAT32_C(   607.05) },
      { SIMDE_FLOAT32_C(  -160.16),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   731.02),
        SIMDE_FLOAT32_C(  -671.96), SIMDE_FLOAT32_C(  -928.83), SIMDE_FLOAT32_C(   835.13), SIMDE_FLOAT32_C(   607.05) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -606.93), SIMDE_FLOAT32_C(  -171.52),
        SIMDE_FLOAT32_C(  -117.33), SIMDE_FLOAT32_C(  -255.25), SIMDE_FLOAT32_C(   953.12), SIMDE_FLOAT32_C(   722.51) },
      { SIMDE_FLOAT32_C(   256.36),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -171.52),
        SIMDE_FLOAT32_C(  -117.33), SIMDE_FLOAT32_C(  -255.25), SIMDE_FLOAT32_C(   953.12), SIMDE_FLOAT32_C(   722.51) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   -44.94), SIMDE_FLOAT32_C(   456.27),
        SIMDE_FLOAT32_C(  -798.46), SIMDE_FLOAT32_C(  -786.63), SIMDE_FLOAT32_C(  -692.20), SIMDE_FLOAT32_C(   457.89) },
      { SIMDE_FLOAT32_C(   580.38),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   456.27),
        SIMDE_FLOAT32_C(  -798.46), SIMDE_FLOAT32_C(  -786.63), SIMDE_FLOAT32_C(  -692.20), SIMDE_FLOAT32_C(   457.89) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   137.68), SIMDE_FLOAT32_C(   722.30),
        SIMDE_FLOAT32_C(   692.72), SIMDE_FLOAT32_C(   865.79), SIMDE_FLOAT32_C(   713.14), SIMDE_FLOAT32_C(   273.10) },
      { SIMDE_FLOAT32_C(  -194.17),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   722.30),
        SIMDE_FLOAT32_C(   692.72), SIMDE_FLOAT32_C(   865.79), SIMDE_FLOAT32_C(   713.14), SIMDE_FLOAT32_C(   273.10) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   563.54), SIMDE_FLOAT32_C(   120.17),
        SIMDE_FLOAT32_C(   285.05), SIMDE_FLOAT32_C(  -659.84), SIMDE_FLOAT32_C(   911.23), SIMDE_FLOAT32_C(  -909.12) },
      { SIMDE_FLOAT32_C(  -696.13),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   120.17),
        SIMDE_FLOAT32_C(   285.05), SIMDE_FLOAT32_C(  -659.84), SIMDE_FLOAT32_C(   911.23), SIMDE_FLOAT32_C(  -909.12) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   574.42), SIMDE_FLOAT32_C(   966.29),
        SIMDE_FLOAT32_C(   -95.08), SIMDE_FLOAT32_C(    65.92), SIMDE_FLOAT32_C(   875.04), SIMDE_FLOAT32_C(   208.79) },
      { SIMDE_FLOAT32_C(   969.08),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   966.29),
        SIMDE_FLOAT32_C(   -95.08), SIMDE_FLOAT32_C(    65.92), SIMDE_FLOAT32_C(   875.04), SIMDE_FLOAT32_C(   208.79) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -958.46), SIMDE_FLOAT32_C(  -533.36),
        SIMDE_FLOAT32_C(   881.84), SIMDE_FLOAT32_C(   468.13), SIMDE_FLOAT32_C(  -142.59), SIMDE_FLOAT32_C(   850.92) },
      { SIMDE_FLOAT32_C(   813.92),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -533.36),
        SIMDE_FLOAT32_C(   881.84), SIMDE_FLOAT32_C(   468.13), SIMDE_FLOAT32_C(  -142.59), SIMDE_FLOAT32_C(   850.92) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   772.60), SIMDE_FLOAT32_C(  -659.06),
        SIMDE_FLOAT32_C(  -880.78), SIMDE_FLOAT32_C(  -296.98), SIMDE_FLOAT32_C(   306.40), SIMDE_FLOAT32_C(   933.13) },
      { SIMDE_FLOAT32_C(   569.99),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -659.06),
        SIMDE_FLOAT32_C(  -880.78), SIMDE_FLOAT32_C(  -296.98), SIMDE_FLOAT32_C(   306.40), SIMDE_FLOAT32_C(   933.13) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   656.08), SIMDE_FLOAT32_C(   -55.65),
        SIMDE_FLOAT32_C(   959.33), SIMDE_FLOAT32_C(  -735.25), SIMDE_FLOAT32_C(  -486.86), SIMDE_FLOAT32_C(   529.31) },
      { SIMDE_FLOAT32_C(  -335.33),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   -55.65),
        SIMDE_FLOAT32_C(   959.33), SIMDE_FLOAT32_C(  -735.25), SIMDE_FLOAT32_C(  -486.86), SIMDE_FLOAT32_C(   529.31) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -229.26), SIMDE_FLOAT32_C(   262.90),
        SIMDE_FLOAT32_C(   293.37), SIMDE_FLOAT32_C(   510.82), SIMDE_FLOAT32_C(  -990.58), SIMDE_FLOAT32_C(   958.04) },
      { SIMDE_FLOAT32_C(   647.21),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   262.90),
        SIMDE_FLOAT32_C(   293.37), SIMDE_FLOAT32_C(   510.82), SIMDE_FLOAT32_C(  -990.58), SIMDE_FLOAT32_C(   958.04) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   545.59), SIMDE_FLOAT32_C(   191.30),
        SIMDE_FLOAT32_C(   393.56), SIMDE_FLOAT32_C(   299.15), SIMDE_FLOAT32_C(  -224.76), SIMDE_FLOAT32_C(    40.78) },
      { SIMDE_FLOAT32_C(   296.38),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   191.30),
        SIMDE_FLOAT32_C(   393.56), SIMDE_FLOAT32_C(   299.15), SIMDE_FLOAT32_C(  -224.76), SIMDE_FLOAT32_C(    40.78) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   927.95), SIMDE_FLOAT32_C(  -876.81),
        SIMDE_FLOAT32_C(   104.06), SIMDE_FLOAT32_C(   980.20), SIMDE_FLOAT32_C(  -671.87), SIMDE_FLOAT32_C(  -599.56) },
      { SIMDE_FLOAT32_C(  -557.14),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -876.81),
        SIMDE_FLOAT32_C(   104.06), SIMDE_FLOAT32_C(   980.20), SIMDE_FLOAT32_C(  -671.87), SIMDE_FLOAT32_C(  -599.56) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -411.43), SIMDE_FLOAT32_C(   277.51),
        SIMDE_FLOAT32_C(  -583.73), SIMDE_FLOAT32_C(  -386.70), SIMDE_FLOAT32_C(  -484.55), SIMDE_FLOAT32_C(  -140.87) },
      { SIMDE_FLOAT32_C(   740.85),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   277.51),
        SIMDE_FLOAT32_C(  -583.73), SIMDE_FLOAT32_C(  -386.70), SIMDE_FLOAT32_C(  -484.55), SIMDE_FLOAT32_C(  -140.87) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   404.67), SIMDE_FLOAT32_C(  -709.45),
        SIMDE_FLOAT32_C(   517.91), SIMDE_FLOAT32_C(  -423.96), SIMDE_FLOAT32_C(   -29.75), SIMDE_FLOAT32_C(   258.76) },
      { SIMDE_FLOAT32_C(   589.45),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -709.45),
        SIMDE_FLOAT32_C(   517.91), SIMDE_FLOAT32_C(  -423.96), SIMDE_FLOAT32_C(   -29.75), SIMDE_FLOAT32_C(   258.76) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -837.48), SIMDE_FLOAT32_C(  -366.29),
        SIMDE_FLOAT32_C(  -689.14), SIMDE_FLOAT32_C(   659.78), SIMDE_FLOAT32_C(    68.61), SIMDE_FLOAT32_C(   900.31) },
      { SIMDE_FLOAT32_C(  -888.23),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -366.29),
        SIMDE_FLOAT32_C(  -689.14), SIMDE_FLOAT32_C(   659.78), SIMDE_FLOAT32_C(    68.61), SIMDE_FLOAT32_C(   900.31) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   336.50), SIMDE_FLOAT32_C(   832.58),
        SIMDE_FLOAT32_C(   473.28), SIMDE_FLOAT32_C(   328.79), SIMDE_FLOAT32_C(   638.06), SIMDE_FLOAT32_C(   585.05) },
      { SIMDE_FLOAT32_C(   211.27),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   832.58),
        SIMDE_FLOAT32_C(   473.28), SIMDE_FLOAT32_C(   328.79), SIMDE_FLOAT32_C(   638.06), SIMDE_FLOAT32_C(   585.05) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   613.30), SIMDE_FLOAT32_C(   222.53),
        SIMDE_FLOAT32_C(  -615.33), SIMDE_FLOAT32_C(   736.15), SIMDE_FLOAT32_C(  -359.69), SIMDE_FLOAT32_C(   595.94) },
      { SIMDE_FLOAT32_C(   299.86),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   222.53),
        SIMDE_FLOAT32_C(  -615.33), SIMDE_FLOAT32_C(   736.15), SIMDE_FLOAT32_C(  -359.69), SIMDE_FLOAT32_C(   595.94) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -612.34), SIMDE_FLOAT32_C(   983.84),
        SIMDE_FLOAT32_C(   869.05), SIMDE_FLOAT32_C(   300.06), SIMDE_FLOAT32_C(  -294.90), SIMDE_FLOAT32_C(   168.91) },
      { SIMDE_FLOAT32_C(   982.50),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   983.84),
        SIMDE_FLOAT32_C(   869.05), SIMDE_FLOAT32_C(   300.06), SIMDE_FLOAT32_C(  -294.90), SIMDE_FLOAT32_C(   168.91) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   454.72), SIMDE_FLOAT32_C(  -309.22),
        SIMDE_FLOAT32_C(   693.07), SIMDE_FLOAT32_C(  -199.41), SIMDE_FLOAT32_C(  -731.51), SIMDE_FLOAT32_C(   675.56) },
      { SIMDE_FLOAT32_C(  -126.29),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -309.22),
        SIMDE_FLOAT32_C(   693.07), SIMDE_FLOAT32_C(  -199.41), SIMDE_FLOAT32_C(  -731.51), SIMDE_FLOAT32_C(   675.56) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -975.47), SIMDE_FLOAT32_C(   128.01),
        SIMDE_FLOAT32_C(  -578.31), SIMDE_FLOAT32_C(  -917.53), SIMDE_FLOAT32_C(  -744.78), SIMDE_FLOAT32_C(   295.40) },
      { SIMDE_FLOAT32_C(  -132.05),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   128.01),
        SIMDE_FLOAT32_C(  -578.31), SIMDE_FLOAT32_C(  -917.53), SIMDE_FLOAT32_C(  -744.78), SIMDE_FLOAT32_C(   295.40) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   446.17), SIMDE_FLOAT32_C(  -488.36),
        SIMDE_FLOAT32_C(  -808.41), SIMDE_FLOAT32_C(   490.80), SIMDE_FLOAT32_C(  -777.96), SIMDE_FLOAT32_C(    59.54) },
      { SIMDE_FLOAT32_C(   809.79),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -488.36),
        SIMDE_FLOAT32_C(  -808.41), SIMDE_FLOAT32_C(   490.80), SIMDE_FLOAT32_C(  -777.96), SIMDE_FLOAT32_C(    59.54) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   304.29), SIMDE_FLOAT32_C(   -22.30),
        SIMDE_FLOAT32_C(  -584.82), SIMDE_FLOAT32_C(   911.85), SIMDE_FLOAT32_C(   686.42), SIMDE_FLOAT32_C(  -775.03) },
      { SIMDE_FLOAT32_C(   -48.11),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   -22.30),
        SIMDE_FLOAT32_C(  -584.82), SIMDE_FLOAT32_C(   911.85), SIMDE_FLOAT32_C(   686.42), SIMDE_FLOAT32_C(  -775.03) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   126.36), SIMDE_FLOAT32_C(  -734.16),
        SIMDE_FLOAT32_C(    75.86), SIMDE_FLOAT32_C(  -459.15), SIMDE_FLOAT32_C(  -296.91), SIMDE_FLOAT32_C(  -972.25) },
      { SIMDE_FLOAT32_C(  -260.60),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -734.16),
        SIMDE_FLOAT32_C(    75.86), SIMDE_FLOAT32_C(  -459.15), SIMDE_FLOAT32_C(  -296.91), SIMDE_FLOAT32_C(  -972.25) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   891.27), SIMDE_FLOAT32_C(  -173.12),
        SIMDE_FLOAT32_C(  -710.57), SIMDE_FLOAT32_C(  -612.12), SIMDE_FLOAT32_C(   290.00), SIMDE_FLOAT32_C(    28.83) },
      { SIMDE_FLOAT32_C(  -483.53),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -173.12),
        SIMDE_FLOAT32_C(  -710.57), SIMDE_FLOAT32_C(  -612.12), SIMDE_FLOAT32_C(   290.00), SIMDE_FLOAT32_C(    28.83) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   246.43), SIMDE_FLOAT32_C(   806.45),
        SIMDE_FLOAT32_C(   890.16), SIMDE_FLOAT32_C(   886.17), SIMDE_FLOAT32_C(  -836.55), SIMDE_FLOAT32_C(  -593.37) },
      { SIMDE_FLOAT32_C(  -345.31),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   806.45),
        SIMDE_FLOAT32_C(   890.16), SIMDE_FLOAT32_C(   886.17), SIMDE_FLOAT32_C(  -836.55), SIMDE_FLOAT32_C(  -593.37) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   248.21), SIMDE_FLOAT32_C(  -602.16),
        SIMDE_FLOAT32_C(   137.27), SIMDE_FLOAT32_C(   520.80), SIMDE_FLOAT32_C(   196.40), SIMDE_FLOAT32_C(   791.96) },
      { SIMDE_FLOAT32_C(   423.74),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -602.16),
        SIMDE_FLOAT32_C(   137.27), SIMDE_FLOAT32_C(   520.80), SIMDE_FLOAT32_C(   196.40), SIMDE_FLOAT32_C(   791.96) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   652.89), SIMDE_FLOAT32_C(  -299.80),
        SIMDE_FLOAT32_C(   881.22), SIMDE_FLOAT32_C(   323.51), SIMDE_FLOAT32_C(  -975.97), SIMDE_FLOAT32_C(   304.97) },
      { SIMDE_FLOAT32_C(   381.53),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -299.80),
        SIMDE_FLOAT32_C(   881.22), SIMDE_FLOAT32_C(   323.51), SIMDE_FLOAT32_C(  -975.97), SIMDE_FLOAT32_C(   304.97) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -635.51), SIMDE_FLOAT32_C(  -625.25),
        SIMDE_FLOAT32_C(  -196.99), SIMDE_FLOAT32_C(   239.42), SIMDE_FLOAT32_C(  -869.44), SIMDE_FLOAT32_C(  -815.46) },
      { SIMDE_FLOAT32_C(   558.80),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -625.25),
        SIMDE_FLOAT32_C(  -196.99), SIMDE_FLOAT32_C(   239.42), SIMDE_FLOAT32_C(  -869.44), SIMDE_FLOAT32_C(  -815.46) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -219.59), SIMDE_FLOAT32_C(   986.71),
        SIMDE_FLOAT32_C(  -996.95), SIMDE_FLOAT32_C(   488.42), SIMDE_FLOAT32_C(  -907.98), SIMDE_FLOAT32_C(   561.85) },
      { SIMDE_FLOAT32_C(   697.99),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   986.71),
        SIMDE_FLOAT32_C(  -996.95), SIMDE_FLOAT32_C(   488.42), SIMDE_FLOAT32_C(  -907.98), SIMDE_FLOAT32_C(   561.85) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -833.05), SIMDE_FLOAT32_C(   336.12),
        SIMDE_FLOAT32_C(   477.57), SIMDE_FLOAT32_C(  -303.83), SIMDE_FLOAT32_C(  -554.52), SIMDE_FLOAT32_C(   175.56) },
      { SIMDE_FLOAT32_C(   568.80),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   336.12),
        SIMDE_FLOAT32_C(   477.57), SIMDE_FLOAT32_C(  -303.83), SIMDE_FLOAT32_C(  -554.52), SIMDE_FLOAT32_C(   175.56) },
      {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0) } },
    { {            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   809.70), SIMDE_FLOAT32_C(  -687.69),
        SIMDE_FLOAT32_C(   317.83), SIMDE_FLOAT32_C(   873.47), SIMDE_FLOAT32_C(   505.20), SIMDE_FLOAT32_C(  -113.37) },
      { SIMDE_FLOAT32_C(   300.43),            SIMDE_MATH_NANF,            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -687.69),
        SIMDE_FLOAT32_C(   317.83), SIMDE_FLOAT32_C(   873.47), SIMDE_FLOAT32_C(   505.20), SIMDE_FLOAT32_C(  -113.37) },
      { -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1) } }
  };

  simde__m256 a, b;
  simde__m256i r;

  a = simde_mm256_loadu_ps(test_vec[0].a);
  b = simde_mm256_loadu_ps(test_vec[0].b);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_EQ_OQ));
  simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[0].r));

  a = simde_mm256_loadu_ps(test_vec[1].a);
  b = simde_mm256_loadu_ps(test_vec[1].b);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_LT_OS));
  simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[1].r));

  a = simde_mm256_loadu_ps(test_vec[2].a);
  b = simde_mm256_loadu_ps(test_vec[2].b);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_LE_OS));
  simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[2].r));

  a = simde_mm256_loadu_ps(test_vec[3].a);
  b = simde_mm256_loadu_ps(test_vec[3].b);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_UNORD_Q));
  simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[3].r));

  a = simde_mm256_loadu_ps(test_vec[4].a);
  b = simde_mm256_loadu_ps(test_vec[4].b);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_NEQ_UQ));
  simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[4].r));

  a = simde_mm256_loadu_ps(test_vec[5].a);
  b = simde_mm256_loadu_ps(test_vec[5].b);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_NLT_US));
  simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[5].r));

  a = simde_mm256_loadu_ps(test_vec[6].a);
  b = simde_mm256_loadu_ps(test_vec[6].b);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_NLE_US));
  simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[6].r));

  a = simde_mm256_loadu_ps(test_vec[7].a);
  b = simde_mm256_loadu_ps(test_vec[7].b);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_ORD_Q));
  simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[7].r));

  a = simde_mm256_loadu_ps(test_vec[8].a);
  b = simde_mm256_loadu_ps(test_vec[8].b);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_EQ_UQ));
  simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[8].r));

  a = simde_mm256_loadu_ps(test_vec[9].a);
  b = simde_mm256_loadu_ps(test_vec[9].b);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_NGE_US));
  simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[9].r));

  a = simde_mm256_loadu_ps(test_vec[10].a);
  b = simde_mm256_loadu_ps(test_vec[10].b);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_NGT_US));
  simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[10].r));

  a = simde_mm256_loadu_ps(test_vec[11].a);
  b = simde_mm256_loadu_ps(test_vec[11].b);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_FALSE_OQ));
  simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[11].r));

  a = simde_mm256_loadu_ps(test_vec[12].a);
  b = simde_mm256_loadu_ps(test_vec[12].b);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_NEQ_OQ));
  simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[12].r));

  a = simde_mm256_loadu_ps(test_vec[13].a);
  b = simde_mm256_loadu_ps(test_vec[13].b);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_GE_OS));
  simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[13].r));

  a = simde_mm256_loadu_ps(test_vec[14].a);
  b = simde_mm256_loadu_ps(test_vec[14].b);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_GT_OS));
  simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[14].r));

  a = simde_mm256_loadu_ps(test_vec[15].a);
  b = simde_mm256_loadu_ps(test_vec[15].b);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_TRUE_UQ));
  simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[15].r));

  a = simde_mm256_loadu_ps(test_vec[16].a);
  b = simde_mm256_loadu_ps(test_vec[16].b);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_EQ_OS));
  simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[16].r));

  a = simde_mm256_loadu_ps(test_vec[17].a);
  b = simde_mm256_loadu_ps(test_vec[17].b);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_LT_OQ));
  simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[17].r));

  a = simde_mm256_loadu_ps(test_vec[18].a);
  b = simde_mm256_loadu_ps(test_vec[18].b);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_LE_OQ));
  simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[18].r));

  a = simde_mm256_loadu_ps(test_vec[19].a);
  b = simde_mm256_loadu_ps(test_vec[19].b);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_UNORD_S));
  simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[19].r));

  a = simde_mm256_loadu_ps(test_vec[20].a);
  b = simde_mm256_loadu_ps(test_vec[20].b);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_NEQ_US));
  simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[20].r));

  a = simde_mm256_loadu_ps(test_vec[21].a);
  b = simde_mm256_loadu_ps(test_vec[21].b);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_NLT_UQ));
  simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[21].r));

  a = simde_mm256_loadu_ps(test_vec[22].a);
  b = simde_mm256_loadu_ps(test_vec[22].b);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_NLE_UQ));
  simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[22].r));

  a = simde_mm256_loadu_ps(test_vec[23].a);
  b = simde_mm256_loadu_ps(test_vec[23].b);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_ORD_S));
  simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[23].r));

  a = simde_mm256_loadu_ps(test_vec[24].a);
  b = simde_mm256_loadu_ps(test_vec[24].b);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_EQ_US));
  simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[24].r));

  a = simde_mm256_loadu_ps(test_vec[25].a);
  b = simde_mm256_loadu_ps(test_vec[25].b);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_NGE_UQ));
  simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[25].r));

  a = simde_mm256_loadu_ps(test_vec[26].a);
  b = simde_mm256_loadu_ps(test_vec[26].b);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_NGT_UQ));
  simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[26].r));

  a = simde_mm256_loadu_ps(test_vec[27].a);
  b = simde_mm256_loadu_ps(test_vec[27].b);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_FALSE_OS));
  simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[27].r));

  a = simde_mm256_loadu_ps(test_vec[28].a);
  b = simde_mm256_loadu_ps(test_vec[28].b);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_NEQ_OS));
  simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[28].r));

  a = simde_mm256_loadu_ps(test_vec[29].a);
  b = simde_mm256_loadu_ps(test_vec[29].b);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_GE_OQ));
  simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[29].r));

  a = simde_mm256_loadu_ps(test_vec[30].a);
  b = simde_mm256_loadu_ps(test_vec[30].b);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_GT_OQ));
  simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[30].r));

  a = simde_mm256_loadu_ps(test_vec[31].a);
  b = simde_mm256_loadu_ps(test_vec[31].b);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_TRUE_US));
  simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[31].r));

  return 0;
#else
  fputc('\n', stdout);

  const simde__m256 nanv = simde_mm256_set1_ps(SIMDE_MATH_NANF);

  simde__m256 a, b;
  simde__m256i r;

  a = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm256_blendv_ps(a, b, simde_mm256_cmp_ps(simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm256_set1_ps(SIMDE_FLOAT32_C(0.0)), SIMDE_CMP_EQ_OQ));
  a = simde_mm256_blend_ps(a, nanv, 3);
  b = simde_mm256_blend_ps(b, nanv, 6);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_EQ_OQ));
  simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm256_blendv_ps(a, b, simde_mm256_cmp_ps(simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm256_set1_ps(SIMDE_FLOAT32_C(0.0)), SIMDE_CMP_EQ_OQ));
  a = simde_mm256_blend_ps(a, nanv, 3);
  b = simde_mm256_blend_ps(b, nanv, 6);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_LT_OS));
  simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm256_blendv_ps(a, b, simde_mm256_cmp_ps(simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm256_set1_ps(SIMDE_FLOAT32_C(0.0)), SIMDE_CMP_EQ_OQ));
  a = simde_mm256_blend_ps(a, nanv, 3);
  b = simde_mm256_blend_ps(b, nanv, 6);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_LE_OS));
  simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm256_blendv_ps(a, b, simde_mm256_cmp_ps(simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm256_set1_ps(SIMDE_FLOAT32_C(0.0)), SIMDE_CMP_EQ_OQ));
  a = simde_mm256_blend_ps(a, nanv, 3);
  b = simde_mm256_blend_ps(b, nanv, 6);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_UNORD_Q));
  simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm256_blendv_ps(a, b, simde_mm256_cmp_ps(simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm256_set1_ps(SIMDE_FLOAT32_C(0.0)), SIMDE_CMP_EQ_OQ));
  a = simde_mm256_blend_ps(a, nanv, 3);
  b = simde_mm256_blend_ps(b, nanv, 6);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_NEQ_UQ));
  simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm256_blendv_ps(a, b, simde_mm256_cmp_ps(simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm256_set1_ps(SIMDE_FLOAT32_C(0.0)), SIMDE_CMP_EQ_OQ));
  a = simde_mm256_blend_ps(a, nanv, 3);
  b = simde_mm256_blend_ps(b, nanv, 6);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_NLT_US));
  simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm256_blendv_ps(a, b, simde_mm256_cmp_ps(simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm256_set1_ps(SIMDE_FLOAT32_C(0.0)), SIMDE_CMP_EQ_OQ));
  a = simde_mm256_blend_ps(a, nanv, 3);
  b = simde_mm256_blend_ps(b, nanv, 6);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_NLE_US));
  simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm256_blendv_ps(a, b, simde_mm256_cmp_ps(simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm256_set1_ps(SIMDE_FLOAT32_C(0.0)), SIMDE_CMP_EQ_OQ));
  a = simde_mm256_blend_ps(a, nanv, 3);
  b = simde_mm256_blend_ps(b, nanv, 6);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_ORD_Q));
  simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm256_blendv_ps(a, b, simde_mm256_cmp_ps(simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm256_set1_ps(SIMDE_FLOAT32_C(0.0)), SIMDE_CMP_EQ_OQ));
  a = simde_mm256_blend_ps(a, nanv, 3);
  b = simde_mm256_blend_ps(b, nanv, 6);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_EQ_UQ));
  simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm256_blendv_ps(a, b, simde_mm256_cmp_ps(simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm256_set1_ps(SIMDE_FLOAT32_C(0.0)), SIMDE_CMP_EQ_OQ));
  a = simde_mm256_blend_ps(a, nanv, 3);
  b = simde_mm256_blend_ps(b, nanv, 6);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_NGE_US));
  simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm256_blendv_ps(a, b, simde_mm256_cmp_ps(simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm256_set1_ps(SIMDE_FLOAT32_C(0.0)), SIMDE_CMP_EQ_OQ));
  a = simde_mm256_blend_ps(a, nanv, 3);
  b = simde_mm256_blend_ps(b, nanv, 6);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_NGT_US));
  simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm256_blendv_ps(a, b, simde_mm256_cmp_ps(simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm256_set1_ps(SIMDE_FLOAT32_C(0.0)), SIMDE_CMP_EQ_OQ));
  a = simde_mm256_blend_ps(a, nanv, 3);
  b = simde_mm256_blend_ps(b, nanv, 6);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_FALSE_OQ));
  simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm256_blendv_ps(a, b, simde_mm256_cmp_ps(simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm256_set1_ps(SIMDE_FLOAT32_C(0.0)), SIMDE_CMP_EQ_OQ));
  a = simde_mm256_blend_ps(a, nanv, 3);
  b = simde_mm256_blend_ps(b, nanv, 6);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_NEQ_OQ));
  simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm256_blendv_ps(a, b, simde_mm256_cmp_ps(simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm256_set1_ps(SIMDE_FLOAT32_C(0.0)), SIMDE_CMP_EQ_OQ));
  a = simde_mm256_blend_ps(a, nanv, 3);
  b = simde_mm256_blend_ps(b, nanv, 6);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_GE_OS));
  simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm256_blendv_ps(a, b, simde_mm256_cmp_ps(simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm256_set1_ps(SIMDE_FLOAT32_C(0.0)), SIMDE_CMP_EQ_OQ));
  a = simde_mm256_blend_ps(a, nanv, 3);
  b = simde_mm256_blend_ps(b, nanv, 6);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_GT_OS));
  simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm256_blendv_ps(a, b, simde_mm256_cmp_ps(simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm256_set1_ps(SIMDE_FLOAT32_C(0.0)), SIMDE_CMP_EQ_OQ));
  a = simde_mm256_blend_ps(a, nanv, 3);
  b = simde_mm256_blend_ps(b, nanv, 6);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_TRUE_UQ));
  simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm256_blendv_ps(a, b, simde_mm256_cmp_ps(simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm256_set1_ps(SIMDE_FLOAT32_C(0.0)), SIMDE_CMP_EQ_OQ));
  a = simde_mm256_blend_ps(a, nanv, 3);
  b = simde_mm256_blend_ps(b, nanv, 6);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_EQ_OS));
  simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm256_blendv_ps(a, b, simde_mm256_cmp_ps(simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm256_set1_ps(SIMDE_FLOAT32_C(0.0)), SIMDE_CMP_EQ_OQ));
  a = simde_mm256_blend_ps(a, nanv, 3);
  b = simde_mm256_blend_ps(b, nanv, 6);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_LT_OQ));
  simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm256_blendv_ps(a, b, simde_mm256_cmp_ps(simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm256_set1_ps(SIMDE_FLOAT32_C(0.0)), SIMDE_CMP_EQ_OQ));
  a = simde_mm256_blend_ps(a, nanv, 3);
  b = simde_mm256_blend_ps(b, nanv, 6);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_LE_OQ));
  simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm256_blendv_ps(a, b, simde_mm256_cmp_ps(simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm256_set1_ps(SIMDE_FLOAT32_C(0.0)), SIMDE_CMP_EQ_OQ));
  a = simde_mm256_blend_ps(a, nanv, 3);
  b = simde_mm256_blend_ps(b, nanv, 6);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_UNORD_S));
  simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm256_blendv_ps(a, b, simde_mm256_cmp_ps(simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm256_set1_ps(SIMDE_FLOAT32_C(0.0)), SIMDE_CMP_EQ_OQ));
  a = simde_mm256_blend_ps(a, nanv, 3);
  b = simde_mm256_blend_ps(b, nanv, 6);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_NEQ_US));
  simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm256_blendv_ps(a, b, simde_mm256_cmp_ps(simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm256_set1_ps(SIMDE_FLOAT32_C(0.0)), SIMDE_CMP_EQ_OQ));
  a = simde_mm256_blend_ps(a, nanv, 3);
  b = simde_mm256_blend_ps(b, nanv, 6);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_NLT_UQ));
  simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm256_blendv_ps(a, b, simde_mm256_cmp_ps(simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm256_set1_ps(SIMDE_FLOAT32_C(0.0)), SIMDE_CMP_EQ_OQ));
  a = simde_mm256_blend_ps(a, nanv, 3);
  b = simde_mm256_blend_ps(b, nanv, 6);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_NLE_UQ));
  simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm256_blendv_ps(a, b, simde_mm256_cmp_ps(simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm256_set1_ps(SIMDE_FLOAT32_C(0.0)), SIMDE_CMP_EQ_OQ));
  a = simde_mm256_blend_ps(a, nanv, 3);
  b = simde_mm256_blend_ps(b, nanv, 6);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_ORD_S));
  simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm256_blendv_ps(a, b, simde_mm256_cmp_ps(simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm256_set1_ps(SIMDE_FLOAT32_C(0.0)), SIMDE_CMP_EQ_OQ));
  a = simde_mm256_blend_ps(a, nanv, 3);
  b = simde_mm256_blend_ps(b, nanv, 6);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_EQ_US));
  simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm256_blendv_ps(a, b, simde_mm256_cmp_ps(simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm256_set1_ps(SIMDE_FLOAT32_C(0.0)), SIMDE_CMP_EQ_OQ));
  a = simde_mm256_blend_ps(a, nanv, 3);
  b = simde_mm256_blend_ps(b, nanv, 6);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_NGE_UQ));
  simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm256_blendv_ps(a, b, simde_mm256_cmp_ps(simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm256_set1_ps(SIMDE_FLOAT32_C(0.0)), SIMDE_CMP_EQ_OQ));
  a = simde_mm256_blend_ps(a, nanv, 3);
  b = simde_mm256_blend_ps(b, nanv, 6);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_NGT_UQ));
  simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm256_blendv_ps(a, b, simde_mm256_cmp_ps(simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm256_set1_ps(SIMDE_FLOAT32_C(0.0)), SIMDE_CMP_EQ_OQ));
  a = simde_mm256_blend_ps(a, nanv, 3);
  b = simde_mm256_blend_ps(b, nanv, 6);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_FALSE_OS));
  simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm256_blendv_ps(a, b, simde_mm256_cmp_ps(simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm256_set1_ps(SIMDE_FLOAT32_C(0.0)), SIMDE_CMP_EQ_OQ));
  a = simde_mm256_blend_ps(a, nanv, 3);
  b = simde_mm256_blend_ps(b, nanv, 6);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_NEQ_OS));
  simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm256_blendv_ps(a, b, simde_mm256_cmp_ps(simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm256_set1_ps(SIMDE_FLOAT32_C(0.0)), SIMDE_CMP_EQ_OQ));
  a = simde_mm256_blend_ps(a, nanv, 3);
  b = simde_mm256_blend_ps(b, nanv, 6);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_GE_OQ));
  simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm256_blendv_ps(a, b, simde_mm256_cmp_ps(simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm256_set1_ps(SIMDE_FLOAT32_C(0.0)), SIMDE_CMP_EQ_OQ));
  a = simde_mm256_blend_ps(a, nanv, 3);
  b = simde_mm256_blend_ps(b, nanv, 6);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_GT_OQ));
  simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_mm256_blendv_ps(a, b, simde_mm256_cmp_ps(simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), simde_mm256_set1_ps(SIMDE_FLOAT32_C(0.0)), SIMDE_CMP_EQ_OQ));
  a = simde_mm256_blend_ps(a, nanv, 3);
  b = simde_mm256_blend_ps(b, nanv, 6);
  r = simde_mm256_castps_si256(simde_mm256_cmp_ps(a, b, SIMDE_CMP_TRUE_US));
  simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_i32x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  return 1;
#endif
}

#endif /* if !defined(SIMDE_FAST_MATH) */

static int
test_simde_mm256_cvtepi32_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m128i a;
    simde__m256d r;
  } test_vec[8] = {
    { simde_mm_set_epi32(INT32_C( 1957018358), INT32_C( 1074174472), INT32_C(  124397699), INT32_C( 1881644266)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(1957018358.00), SIMDE_FLOAT64_C(1074174472.00),
                         SIMDE_FLOAT64_C(124397699.00), SIMDE_FLOAT64_C(1881644266.00)) },
    { simde_mm_set_epi32(INT32_C( 2070107316), INT32_C( 1618653378), INT32_C( 1002292861), INT32_C( 2002977375)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(2070107316.00), SIMDE_FLOAT64_C(1618653378.00),
                         SIMDE_FLOAT64_C(1002292861.00), SIMDE_FLOAT64_C(2002977375.00)) },
    { simde_mm_set_epi32(INT32_C( 2031655643), INT32_C( 1380169755), INT32_C( 1722613954), INT32_C(  223100421)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(2031655643.00), SIMDE_FLOAT64_C(1380169755.00),
                         SIMDE_FLOAT64_C(1722613954.00), SIMDE_FLOAT64_C(223100421.00)) },
    { simde_mm_set_epi32(INT32_C(-1894427767), INT32_C(-1633274427), INT32_C(-2058387969), INT32_C(-1311515394)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(-1894427767.00), SIMDE_FLOAT64_C(-1633274427.00),
                         SIMDE_FLOAT64_C(-2058387969.00), SIMDE_FLOAT64_C(-1311515394.00)) },
    { simde_mm_set_epi32(INT32_C(-1443374135), INT32_C( 1382394218), INT32_C( 1459905767), INT32_C( -756048058)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(-1443374135.00), SIMDE_FLOAT64_C(1382394218.00),
                         SIMDE_FLOAT64_C(1459905767.00), SIMDE_FLOAT64_C(-756048058.00)) },
    { simde_mm_set_epi32(INT32_C( -781596301), INT32_C( 1840524706), INT32_C( 1502138952), INT32_C(-2118210723)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(-781596301.00), SIMDE_FLOAT64_C(1840524706.00),
                         SIMDE_FLOAT64_C(1502138952.00), SIMDE_FLOAT64_C(-2118210723.00)) },
    { simde_mm_set_epi32(INT32_C(   52250967), INT32_C( 1988701031), INT32_C( 1592626424), INT32_C(-1778387557)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(52250967.00), SIMDE_FLOAT64_C(1988701031.00),
                         SIMDE_FLOAT64_C(1592626424.00), SIMDE_FLOAT64_C(-1778387557.00)) },
    { simde_mm_set_epi32(INT32_C(   30979646), INT32_C(  769206580), INT32_C(-2128276240), INT32_C( 1445709709)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(30979646.00), SIMDE_FLOAT64_C(769206580.00),
                         SIMDE_FLOAT64_C(-2128276240.00), SIMDE_FLOAT64_C(1445709709.00)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256d r = simde_mm256_cvtepi32_pd(test_vec[i].a);
    simde_assert_m256d_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_cvtepi32_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256i a;
    simde__m256 r;
  } test_vec[8] = {
    { simde_mm256_set_epi32(INT32_C(      -6033), INT32_C(      15813), INT32_C(      12979), INT32_C(     -31712),
                            INT32_C(      18002), INT32_C(      -6019), INT32_C(     -26810), INT32_C(      14091)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(-6033.00), SIMDE_FLOAT32_C(15813.00),
                         SIMDE_FLOAT32_C(12979.00), SIMDE_FLOAT32_C(-31712.00),
                         SIMDE_FLOAT32_C(18002.00), SIMDE_FLOAT32_C(-6019.00),
                         SIMDE_FLOAT32_C(-26810.00), SIMDE_FLOAT32_C(14091.00)) },
    { simde_mm256_set_epi32(INT32_C(       6359), INT32_C(       7786), INT32_C(      21856), INT32_C(     -20706),
                            INT32_C(     -20652), INT32_C(      21040), INT32_C(      -8561), INT32_C(     -12779)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( 6359.00), SIMDE_FLOAT32_C( 7786.00),
                         SIMDE_FLOAT32_C(21856.00), SIMDE_FLOAT32_C(-20706.00),
                         SIMDE_FLOAT32_C(-20652.00), SIMDE_FLOAT32_C(21040.00),
                         SIMDE_FLOAT32_C(-8561.00), SIMDE_FLOAT32_C(-12779.00)) },
    { simde_mm256_set_epi32(INT32_C(     -28477), INT32_C(     -21667), INT32_C(     -16892), INT32_C(     -16024),
                            INT32_C(     -11576), INT32_C(        602), INT32_C(      23902), INT32_C(      17547)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(-28477.00), SIMDE_FLOAT32_C(-21667.00),
                         SIMDE_FLOAT32_C(-16892.00), SIMDE_FLOAT32_C(-16024.00),
                         SIMDE_FLOAT32_C(-11576.00), SIMDE_FLOAT32_C(  602.00),
                         SIMDE_FLOAT32_C(23902.00), SIMDE_FLOAT32_C(17547.00)) },
    { simde_mm256_set_epi32(INT32_C(       8732), INT32_C(      13948), INT32_C(       7489), INT32_C(      25724),
                            INT32_C(      24561), INT32_C(      11189), INT32_C(      24773), INT32_C(      -8467)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( 8732.00), SIMDE_FLOAT32_C(13948.00),
                         SIMDE_FLOAT32_C( 7489.00), SIMDE_FLOAT32_C(25724.00),
                         SIMDE_FLOAT32_C(24561.00), SIMDE_FLOAT32_C(11189.00),
                         SIMDE_FLOAT32_C(24773.00), SIMDE_FLOAT32_C(-8467.00)) },
    { simde_mm256_set_epi32(INT32_C(     -31943), INT32_C(      26870), INT32_C(     -22515), INT32_C(       3030),
                            INT32_C(      24358), INT32_C(      31924), INT32_C(      30771), INT32_C(       4777)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(-31943.00), SIMDE_FLOAT32_C(26870.00),
                         SIMDE_FLOAT32_C(-22515.00), SIMDE_FLOAT32_C( 3030.00),
                         SIMDE_FLOAT32_C(24358.00), SIMDE_FLOAT32_C(31924.00),
                         SIMDE_FLOAT32_C(30771.00), SIMDE_FLOAT32_C( 4777.00)) },
    { simde_mm256_set_epi32(INT32_C(      -1809), INT32_C(     -14404), INT32_C(     -32286), INT32_C(      25399),
                            INT32_C(      29260), INT32_C(     -23412), INT32_C(      12480), INT32_C(     -23461)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(-1809.00), SIMDE_FLOAT32_C(-14404.00),
                         SIMDE_FLOAT32_C(-32286.00), SIMDE_FLOAT32_C(25399.00),
                         SIMDE_FLOAT32_C(29260.00), SIMDE_FLOAT32_C(-23412.00),
                         SIMDE_FLOAT32_C(12480.00), SIMDE_FLOAT32_C(-23461.00)) },
    { simde_mm256_set_epi32(INT32_C(      -2274), INT32_C(      23698), INT32_C(       4976), INT32_C(      13398),
                            INT32_C(      -8046), INT32_C(     -16937), INT32_C(      19340), INT32_C(      -6656)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(-2274.00), SIMDE_FLOAT32_C(23698.00),
                         SIMDE_FLOAT32_C( 4976.00), SIMDE_FLOAT32_C(13398.00),
                         SIMDE_FLOAT32_C(-8046.00), SIMDE_FLOAT32_C(-16937.00),
                         SIMDE_FLOAT32_C(19340.00), SIMDE_FLOAT32_C(-6656.00)) },
    { simde_mm256_set_epi32(INT32_C(     -29605), INT32_C(       8888), INT32_C(      -8347), INT32_C(      -8890),
                            INT32_C(      -8372), INT32_C(       7334), INT32_C(      14947), INT32_C(      -5546)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(-29605.00), SIMDE_FLOAT32_C( 8888.00),
                         SIMDE_FLOAT32_C(-8347.00), SIMDE_FLOAT32_C(-8890.00),
                         SIMDE_FLOAT32_C(-8372.00), SIMDE_FLOAT32_C( 7334.00),
                         SIMDE_FLOAT32_C(14947.00), SIMDE_FLOAT32_C(-5546.00)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256 r = simde_mm256_cvtepi32_ps(test_vec[i].a);
    simde_assert_m256_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_cvtpd_epi32(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256d a;
    simde__m128i r;
  } test_vec[8] = {
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  823.92), SIMDE_FLOAT64_C( -252.31),
                         SIMDE_FLOAT64_C(  311.42), SIMDE_FLOAT64_C(  639.08)),
      simde_mm_set_epi32(INT32_C( 824), INT32_C(-252), INT32_C( 311), INT32_C( 639)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  311.89), SIMDE_FLOAT64_C( -507.25),
                         SIMDE_FLOAT64_C(  748.64), SIMDE_FLOAT64_C( -488.86)),
      simde_mm_set_epi32(INT32_C( 312), INT32_C(-507), INT32_C( 749), INT32_C(-489)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  478.57), SIMDE_FLOAT64_C( -328.29),
                         SIMDE_FLOAT64_C( -289.22), SIMDE_FLOAT64_C( -586.95)),
      simde_mm_set_epi32(INT32_C( 479), INT32_C(-328), INT32_C(-289), INT32_C(-587)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  341.08), SIMDE_FLOAT64_C(  432.49),
                         SIMDE_FLOAT64_C(  835.07), SIMDE_FLOAT64_C( -889.53)),
      simde_mm_set_epi32(INT32_C( 341), INT32_C( 432), INT32_C( 835), INT32_C(-890)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -811.21), SIMDE_FLOAT64_C( -487.29),
                         SIMDE_FLOAT64_C(  852.90), SIMDE_FLOAT64_C(  970.07)),
      simde_mm_set_epi32(INT32_C(-811), INT32_C(-487), INT32_C( 853), INT32_C( 970)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  456.79), SIMDE_FLOAT64_C( -836.64),
                         SIMDE_FLOAT64_C( -396.53), SIMDE_FLOAT64_C(  788.69)),
      simde_mm_set_epi32(INT32_C( 457), INT32_C(-837), INT32_C(-397), INT32_C( 789)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  538.31), SIMDE_FLOAT64_C(  630.62),
                         SIMDE_FLOAT64_C( -811.65), SIMDE_FLOAT64_C( -175.08)),
      simde_mm_set_epi32(INT32_C( 538), INT32_C( 631), INT32_C(-812), INT32_C(-175)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  -53.87), SIMDE_FLOAT64_C(  -83.11),
                         SIMDE_FLOAT64_C( -288.58), SIMDE_FLOAT64_C( -287.98)),
      simde_mm_set_epi32(INT32_C( -54), INT32_C( -83), INT32_C(-289), INT32_C(-288)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m128i r = simde_mm256_cvtpd_epi32(test_vec[i].a);
    simde_assert_m128i_i32(r, ==, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_cvtpd_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256d a;
    simde__m128 r;
  } test_vec[8] = {
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  375.90), SIMDE_FLOAT64_C( -889.76),
                         SIMDE_FLOAT64_C( -974.31), SIMDE_FLOAT64_C(  373.58)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  375.90), SIMDE_FLOAT32_C( -889.76), SIMDE_FLOAT32_C( -974.31), SIMDE_FLOAT32_C(  373.58)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(   84.47), SIMDE_FLOAT64_C(  744.53),
                         SIMDE_FLOAT64_C(  -27.43), SIMDE_FLOAT64_C(  -51.38)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(   84.47), SIMDE_FLOAT32_C(  744.53), SIMDE_FLOAT32_C(  -27.43), SIMDE_FLOAT32_C(  -51.38)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(   66.02), SIMDE_FLOAT64_C( -438.12),
                         SIMDE_FLOAT64_C(  408.44), SIMDE_FLOAT64_C(  197.54)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(   66.02), SIMDE_FLOAT32_C( -438.12), SIMDE_FLOAT32_C(  408.44), SIMDE_FLOAT32_C(  197.54)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(   80.23), SIMDE_FLOAT64_C(  910.03),
                         SIMDE_FLOAT64_C(  928.38), SIMDE_FLOAT64_C(  305.66)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(   80.23), SIMDE_FLOAT32_C(  910.03), SIMDE_FLOAT32_C(  928.38), SIMDE_FLOAT32_C(  305.66)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -511.50), SIMDE_FLOAT64_C( -503.26),
                         SIMDE_FLOAT64_C( -164.88), SIMDE_FLOAT64_C(  -10.16)),
      simde_mm_set_ps(SIMDE_FLOAT32_C( -511.50), SIMDE_FLOAT32_C( -503.26), SIMDE_FLOAT32_C( -164.88), SIMDE_FLOAT32_C(  -10.16)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(   99.85), SIMDE_FLOAT64_C( -538.53),
                         SIMDE_FLOAT64_C(   17.38), SIMDE_FLOAT64_C( -161.67)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(   99.85), SIMDE_FLOAT32_C( -538.53), SIMDE_FLOAT32_C(   17.38), SIMDE_FLOAT32_C( -161.67)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  891.01), SIMDE_FLOAT64_C(  865.63),
                         SIMDE_FLOAT64_C(  -39.82), SIMDE_FLOAT64_C( -446.03)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  891.01), SIMDE_FLOAT32_C(  865.63), SIMDE_FLOAT32_C(  -39.82), SIMDE_FLOAT32_C( -446.03)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  394.04), SIMDE_FLOAT64_C(  238.42),
                         SIMDE_FLOAT64_C(  746.10), SIMDE_FLOAT64_C(   -8.70)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  394.04), SIMDE_FLOAT32_C(  238.42), SIMDE_FLOAT32_C(  746.10), SIMDE_FLOAT32_C(   -8.70)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m128 r = simde_mm256_cvtpd_ps(test_vec[i].a);
    simde_assert_m128_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_cvtps_epi32(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde__m256i r;
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  598.58), SIMDE_FLOAT32_C(  571.41),
                         SIMDE_FLOAT32_C( -242.37), SIMDE_FLOAT32_C( -717.41),
                         SIMDE_FLOAT32_C(  374.26), SIMDE_FLOAT32_C( -165.53),
                         SIMDE_FLOAT32_C( -357.04), SIMDE_FLOAT32_C( -622.88)),
      simde_mm256_set_epi32(INT32_C( 599), INT32_C( 571), INT32_C(-242), INT32_C(-717),
                            INT32_C( 374), INT32_C(-166), INT32_C(-357), INT32_C(-623)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  257.81), SIMDE_FLOAT32_C( -837.70),
                         SIMDE_FLOAT32_C(  261.48), SIMDE_FLOAT32_C(  542.96),
                         SIMDE_FLOAT32_C(  769.60), SIMDE_FLOAT32_C( -711.96),
                         SIMDE_FLOAT32_C( -326.97), SIMDE_FLOAT32_C( -113.31)),
      simde_mm256_set_epi32(INT32_C( 258), INT32_C(-838), INT32_C( 261), INT32_C( 543),
                            INT32_C( 770), INT32_C(-712), INT32_C(-327), INT32_C(-113)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -569.57), SIMDE_FLOAT32_C(  423.37),
                         SIMDE_FLOAT32_C(  -24.31), SIMDE_FLOAT32_C(  934.89),
                         SIMDE_FLOAT32_C(  421.98), SIMDE_FLOAT32_C(  514.39),
                         SIMDE_FLOAT32_C(  548.83), SIMDE_FLOAT32_C(  419.70)),
      simde_mm256_set_epi32(INT32_C(-570), INT32_C( 423), INT32_C( -24), INT32_C( 935),
                            INT32_C( 422), INT32_C( 514), INT32_C( 549), INT32_C( 420)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -391.60), SIMDE_FLOAT32_C( -565.59),
                         SIMDE_FLOAT32_C(  -30.37), SIMDE_FLOAT32_C( -335.58),
                         SIMDE_FLOAT32_C(  613.59), SIMDE_FLOAT32_C( -997.50),
                         SIMDE_FLOAT32_C( -875.20), SIMDE_FLOAT32_C(   61.16)),
      simde_mm256_set_epi32(INT32_C(-392), INT32_C(-566), INT32_C( -30), INT32_C(-336),
                            INT32_C( 614), INT32_C(-998), INT32_C(-875), INT32_C(  61)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -166.04), SIMDE_FLOAT32_C( -427.79),
                         SIMDE_FLOAT32_C(  609.54), SIMDE_FLOAT32_C( -532.28),
                         SIMDE_FLOAT32_C( -681.53), SIMDE_FLOAT32_C(  504.43),
                         SIMDE_FLOAT32_C( -888.34), SIMDE_FLOAT32_C(  403.18)),
      simde_mm256_set_epi32(INT32_C(-166), INT32_C(-428), INT32_C( 610), INT32_C(-532),
                            INT32_C(-682), INT32_C( 504), INT32_C(-888), INT32_C( 403)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  216.04), SIMDE_FLOAT32_C( -927.91),
                         SIMDE_FLOAT32_C(  780.38), SIMDE_FLOAT32_C(  765.71),
                         SIMDE_FLOAT32_C( -447.72), SIMDE_FLOAT32_C(  -65.81),
                         SIMDE_FLOAT32_C(  716.35), SIMDE_FLOAT32_C(  608.15)),
      simde_mm256_set_epi32(INT32_C( 216), INT32_C(-928), INT32_C( 780), INT32_C( 766),
                            INT32_C(-448), INT32_C( -66), INT32_C( 716), INT32_C( 608)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  971.27), SIMDE_FLOAT32_C( -611.58),
                         SIMDE_FLOAT32_C( -361.36), SIMDE_FLOAT32_C( -851.00),
                         SIMDE_FLOAT32_C(  839.99), SIMDE_FLOAT32_C(  207.87),
                         SIMDE_FLOAT32_C( -947.82), SIMDE_FLOAT32_C( -403.90)),
      simde_mm256_set_epi32(INT32_C( 971), INT32_C(-612), INT32_C(-361), INT32_C(-851),
                            INT32_C( 840), INT32_C( 208), INT32_C(-948), INT32_C(-404)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -507.54), SIMDE_FLOAT32_C(  581.68),
                         SIMDE_FLOAT32_C( -590.23), SIMDE_FLOAT32_C(  417.30),
                         SIMDE_FLOAT32_C(  -87.52), SIMDE_FLOAT32_C( -865.50),
                         SIMDE_FLOAT32_C(  940.51), SIMDE_FLOAT32_C(  910.77)),
      simde_mm256_set_epi32(INT32_C(-508), INT32_C( 582), INT32_C(-590), INT32_C( 417),
                            INT32_C( -88), INT32_C(-866), INT32_C( 941), INT32_C( 911)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256i r = simde_mm256_cvtps_epi32(test_vec[i].a);
    simde_assert_m256i_i32(r, ==, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_cvtps_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m128 a;
    simde__m256d r;
  } test_vec[8] = {
    { simde_mm_set_ps(SIMDE_FLOAT32_C(  846.20), SIMDE_FLOAT32_C(  685.37), SIMDE_FLOAT32_C(  660.41), SIMDE_FLOAT32_C( -309.12)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  846.20), SIMDE_FLOAT64_C(  685.37),
                         SIMDE_FLOAT64_C(  660.41), SIMDE_FLOAT64_C( -309.12)) },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(  900.54), SIMDE_FLOAT32_C(  555.77), SIMDE_FLOAT32_C( -412.48), SIMDE_FLOAT32_C( -684.76)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  900.54), SIMDE_FLOAT64_C(  555.77),
                         SIMDE_FLOAT64_C( -412.48), SIMDE_FLOAT64_C( -684.76)) },
    { simde_mm_set_ps(SIMDE_FLOAT32_C( -530.00), SIMDE_FLOAT32_C(  516.66), SIMDE_FLOAT32_C(  969.93), SIMDE_FLOAT32_C( -956.57)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -530.00), SIMDE_FLOAT64_C(  516.66),
                         SIMDE_FLOAT64_C(  969.93), SIMDE_FLOAT64_C( -956.57)) },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(  876.84), SIMDE_FLOAT32_C(  972.29), SIMDE_FLOAT32_C(  715.44), SIMDE_FLOAT32_C(  -66.38)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  876.84), SIMDE_FLOAT64_C(  972.29),
                         SIMDE_FLOAT64_C(  715.44), SIMDE_FLOAT64_C(  -66.38)) },
    { simde_mm_set_ps(SIMDE_FLOAT32_C( -684.20), SIMDE_FLOAT32_C( -317.33), SIMDE_FLOAT32_C(   88.04), SIMDE_FLOAT32_C(  992.34)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -684.20), SIMDE_FLOAT64_C( -317.33),
                         SIMDE_FLOAT64_C(   88.04), SIMDE_FLOAT64_C(  992.34)) },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(  481.41), SIMDE_FLOAT32_C( -117.39), SIMDE_FLOAT32_C(  583.52), SIMDE_FLOAT32_C(  373.09)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  481.41), SIMDE_FLOAT64_C( -117.39),
                         SIMDE_FLOAT64_C(  583.52), SIMDE_FLOAT64_C(  373.09)) },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(  798.14), SIMDE_FLOAT32_C(  486.93), SIMDE_FLOAT32_C( -832.59), SIMDE_FLOAT32_C(  796.43)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  798.14), SIMDE_FLOAT64_C(  486.93),
                         SIMDE_FLOAT64_C( -832.59), SIMDE_FLOAT64_C(  796.43)) },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(   75.03), SIMDE_FLOAT32_C(  634.86), SIMDE_FLOAT32_C(  319.54), SIMDE_FLOAT32_C( -801.15)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   75.03), SIMDE_FLOAT64_C(  634.86),
                         SIMDE_FLOAT64_C(  319.54), SIMDE_FLOAT64_C( -801.15)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256d r = simde_mm256_cvtps_pd(test_vec[i].a);
    simde_assert_m256d_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_cvtsd_f64 (SIMDE_MUNIT_TEST_ARGS) {
  static const struct {
    const simde_float64 a[4];
    const simde_float64 r;
  } test_vec[] = {
    { { SIMDE_FLOAT64_C(  -819.83), SIMDE_FLOAT64_C(    57.52), SIMDE_FLOAT64_C(   410.09), SIMDE_FLOAT64_C(  -207.39) },
      SIMDE_FLOAT64_C(-819.834690) },
    { { SIMDE_FLOAT64_C(  -757.62), SIMDE_FLOAT64_C(   670.35), SIMDE_FLOAT64_C(   -81.02), SIMDE_FLOAT64_C(  -418.01) },
      SIMDE_FLOAT64_C(-757.623120) },
    { { SIMDE_FLOAT64_C(   690.51), SIMDE_FLOAT64_C(  -758.25), SIMDE_FLOAT64_C(   941.18), SIMDE_FLOAT64_C(   596.59) },
      SIMDE_FLOAT64_C(690.512804) },
    { { SIMDE_FLOAT64_C(   816.68), SIMDE_FLOAT64_C(   897.92), SIMDE_FLOAT64_C(   232.01), SIMDE_FLOAT64_C(   196.85) },
      SIMDE_FLOAT64_C(816.682969) },
    { { SIMDE_FLOAT64_C(  -223.12), SIMDE_FLOAT64_C(  -393.67), SIMDE_FLOAT64_C(   665.54), SIMDE_FLOAT64_C(  -958.13) },
      SIMDE_FLOAT64_C(-223.120246) },
    { { SIMDE_FLOAT64_C(  -129.08), SIMDE_FLOAT64_C(  -576.73), SIMDE_FLOAT64_C(  -588.43), SIMDE_FLOAT64_C(  -263.46) },
      SIMDE_FLOAT64_C(-129.075903) },
    { { SIMDE_FLOAT64_C(   621.84), SIMDE_FLOAT64_C(   726.67), SIMDE_FLOAT64_C(   204.36), SIMDE_FLOAT64_C(  -348.61) },
      SIMDE_FLOAT64_C(621.835955) },
    { { SIMDE_FLOAT64_C(   679.52), SIMDE_FLOAT64_C(  -219.86), SIMDE_FLOAT64_C(   812.70), SIMDE_FLOAT64_C(   859.69) },
      SIMDE_FLOAT64_C(679.523220) },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde__m256d a = simde_mm256_loadu_pd(test_vec[i].a);
    simde_float64 r = simde_mm256_cvtsd_f64(a);
    simde_assert_equal_f64(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_cvtsi256_si32 (SIMDE_MUNIT_TEST_ARGS) {
  static const struct {
    const int32_t a[8];
    const int32_t r;
  } test_vec[] = {
    { {  INT32_C(  1220605077), -INT32_C(  1798958528),  INT32_C(  1922714309),  INT32_C(  1773856549), -INT32_C(  1781872958), -INT32_C(  1646416163),  INT32_C(  1580794507), -INT32_C(   381163180) },
      INT32_C(1220605077) },
    { {  INT32_C(   506595294), -INT32_C(   541919207),  INT32_C(  1733381442), -INT32_C(   137360588), -INT32_C(  1349739822), -INT32_C(   749967032), -INT32_C(  1070496148),  INT32_C(  1302952047) },
      INT32_C(506595294) },
    { { -INT32_C(  1720919169),  INT32_C(   360193747), -INT32_C(  1602434709), -INT32_C(  1500033580),  INT32_C(   810951655), -INT32_C(   133979508), -INT32_C(  1732758232),  INT32_C(   770007725) },
      INT32_C(-1720919169) },
    { {  INT32_C(   298209597), -INT32_C(   618250640), -INT32_C(   612654329), -INT32_C(   679341328), -INT32_C(  1039673291), -INT32_C(  1548088454), -INT32_C(   314870976),  INT32_C(   303702229) },
      INT32_C(298209597) },
    { { -INT32_C(   500965262),  INT32_C(   633162270), -INT32_C(   587122195), -INT32_C(  2118876341), -INT32_C(   716981157),  INT32_C(   125369799),  INT32_C(  1173664624),  INT32_C(  1180176340) },
      INT32_C(-500965262) },
    { {  INT32_C(   237534191), -INT32_C(  1305221691),  INT32_C(  1787769886),  INT32_C(   317408439), -INT32_C(   941085184), -INT32_C(  1664196565), -INT32_C(   387857900), -INT32_C(  1053935151) },
      INT32_C(237534191) },
    { {  INT32_C(  2060408501),  INT32_C(  1512899131), -INT32_C(   289096649),  INT32_C(      110336),  INT32_C(   147319261),  INT32_C(  1571067209),  INT32_C(   692422232),  INT32_C(  1961522111) },
      INT32_C(2060408501) },
    { {  INT32_C(    99596745), -INT32_C(   211870532), -INT32_C(   639556648), -INT32_C(  1344675118),  INT32_C(   364356043), -INT32_C(  1905107914), -INT32_C(  1581729566), -INT32_C(   183066069) },
      INT32_C(99596745) },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde__m256i a = simde_x_mm256_loadu_epi32(test_vec[i].a);
    int32_t r = simde_mm256_cvtsi256_si32(a);
    simde_assert_equal_i32(r, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_cvtss_f32 (SIMDE_MUNIT_TEST_ARGS) {
  static const struct {
    const simde_float32 a[8];
    const simde_float32 r;
  } test_vec[] = {
    { { SIMDE_FLOAT32_C(  -520.55), SIMDE_FLOAT32_C(  -165.02), SIMDE_FLOAT32_C(   891.39), SIMDE_FLOAT32_C(   353.19),
        SIMDE_FLOAT32_C(   212.08), SIMDE_FLOAT32_C(  -507.29), SIMDE_FLOAT32_C(   216.85), SIMDE_FLOAT32_C(  -490.64) },
      SIMDE_FLOAT32_C(-520.547485) },
    { { SIMDE_FLOAT32_C(  -205.41), SIMDE_FLOAT32_C(   942.67), SIMDE_FLOAT32_C(   205.37), SIMDE_FLOAT32_C(  -558.52),
        SIMDE_FLOAT32_C(   450.12), SIMDE_FLOAT32_C(  -888.95), SIMDE_FLOAT32_C(    95.41), SIMDE_FLOAT32_C(  -731.65) },
      SIMDE_FLOAT32_C(-205.409851) },
    { { SIMDE_FLOAT32_C(   958.49), SIMDE_FLOAT32_C(   649.60), SIMDE_FLOAT32_C(   758.41), SIMDE_FLOAT32_C(  -641.04),
        SIMDE_FLOAT32_C(   632.75), SIMDE_FLOAT32_C(  -642.73), SIMDE_FLOAT32_C(  -156.06), SIMDE_FLOAT32_C(   828.00) },
      SIMDE_FLOAT32_C(958.494385) },
    { { SIMDE_FLOAT32_C(  -172.13), SIMDE_FLOAT32_C(   270.97), SIMDE_FLOAT32_C(  -877.82), SIMDE_FLOAT32_C(  -648.51),
        SIMDE_FLOAT32_C(   726.04), SIMDE_FLOAT32_C(   208.53), SIMDE_FLOAT32_C(   427.83), SIMDE_FLOAT32_C(  -794.51) },
      SIMDE_FLOAT32_C(-172.134399) },
    { { SIMDE_FLOAT32_C(  -956.50), SIMDE_FLOAT32_C(   319.22), SIMDE_FLOAT32_C(   558.68), SIMDE_FLOAT32_C(   255.58),
        SIMDE_FLOAT32_C(   811.93), SIMDE_FLOAT32_C(  -224.47), SIMDE_FLOAT32_C(   764.95), SIMDE_FLOAT32_C(  -393.48) },
      SIMDE_FLOAT32_C(-956.495544) },
    { { SIMDE_FLOAT32_C(  -281.80), SIMDE_FLOAT32_C(   -29.68), SIMDE_FLOAT32_C(    48.00), SIMDE_FLOAT32_C(  -831.68),
        SIMDE_FLOAT32_C(    81.37), SIMDE_FLOAT32_C(  -856.59), SIMDE_FLOAT32_C(  -563.33), SIMDE_FLOAT32_C(    39.86) },
      SIMDE_FLOAT32_C(-281.800598) },
    { { SIMDE_FLOAT32_C(   793.01), SIMDE_FLOAT32_C(  -804.92), SIMDE_FLOAT32_C(   398.82), SIMDE_FLOAT32_C(   425.76),
        SIMDE_FLOAT32_C(  -447.64), SIMDE_FLOAT32_C(  -757.23), SIMDE_FLOAT32_C(   253.75), SIMDE_FLOAT32_C(   380.22) },
      SIMDE_FLOAT32_C(793.009399) },
    { { SIMDE_FLOAT32_C(   513.74), SIMDE_FLOAT32_C(   375.93), SIMDE_FLOAT32_C(   731.71), SIMDE_FLOAT32_C(   239.78),
        SIMDE_FLOAT32_C(  -415.54), SIMDE_FLOAT32_C(   159.54), SIMDE_FLOAT32_C(   445.27), SIMDE_FLOAT32_C(  -372.04) },
      SIMDE_FLOAT32_C(513.740845) },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde__m256 a = simde_mm256_loadu_ps(test_vec[i].a);
    simde_float32 r = simde_mm256_cvtss_f32(a);
    simde_assert_equal_f32(r, test_vec[i].r, 1);
  }

  return 0;
}
static int
test_simde_mm256_cvttpd_epi32(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256d a;
    simde__m128i r;
  } test_vec[8] = {
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -175.82), SIMDE_FLOAT64_C(  -91.19),
                         SIMDE_FLOAT64_C( -855.64), SIMDE_FLOAT64_C(-1000.00)),
      simde_mm_set_epi32(INT32_C(-175), INT32_C( -91), INT32_C(-855), INT32_C(-1000)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  296.54), SIMDE_FLOAT64_C(  312.22),
                         SIMDE_FLOAT64_C( -648.31), SIMDE_FLOAT64_C(  586.65)),
      simde_mm_set_epi32(INT32_C( 296), INT32_C( 312), INT32_C(-648), INT32_C( 586)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  502.08), SIMDE_FLOAT64_C( -904.00),
                         SIMDE_FLOAT64_C(  802.10), SIMDE_FLOAT64_C(  616.09)),
      simde_mm_set_epi32(INT32_C( 502), INT32_C(-904), INT32_C( 802), INT32_C( 616)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  808.28), SIMDE_FLOAT64_C( -212.29),
                         SIMDE_FLOAT64_C(   75.93), SIMDE_FLOAT64_C( -979.81)),
      simde_mm_set_epi32(INT32_C( 808), INT32_C(-212), INT32_C(  75), INT32_C(-979)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -426.54), SIMDE_FLOAT64_C(  577.52),
                         SIMDE_FLOAT64_C(  966.87), SIMDE_FLOAT64_C(  162.81)),
      simde_mm_set_epi32(INT32_C(-426), INT32_C( 577), INT32_C( 966), INT32_C( 162)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  -50.83), SIMDE_FLOAT64_C(  928.40),
                         SIMDE_FLOAT64_C(  392.36), SIMDE_FLOAT64_C(  469.60)),
      simde_mm_set_epi32(INT32_C( -50), INT32_C( 928), INT32_C( 392), INT32_C( 469)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  701.55), SIMDE_FLOAT64_C( -334.03),
                         SIMDE_FLOAT64_C(  803.63), SIMDE_FLOAT64_C(  -68.22)),
      simde_mm_set_epi32(INT32_C( 701), INT32_C(-334), INT32_C( 803), INT32_C( -68)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -168.66), SIMDE_FLOAT64_C( -164.87),
                         SIMDE_FLOAT64_C(  824.77), SIMDE_FLOAT64_C( -834.37)),
      simde_mm_set_epi32(INT32_C(-168), INT32_C(-164), INT32_C( 824), INT32_C(-834)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m128i r = simde_mm256_cvttpd_epi32(test_vec[i].a);
    simde_assert_m128i_i32(r, ==, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_cvttps_epi32(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde__m256i r;
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -135.75), SIMDE_FLOAT32_C(  534.39),
                         SIMDE_FLOAT32_C(  -81.93), SIMDE_FLOAT32_C( -234.94),
                         SIMDE_FLOAT32_C( -390.94), SIMDE_FLOAT32_C( -625.05),
                         SIMDE_FLOAT32_C(  991.22), SIMDE_FLOAT32_C(  326.76)),
      simde_mm256_set_epi32(INT32_C(-135), INT32_C( 534), INT32_C( -81), INT32_C(-234),
                            INT32_C(-390), INT32_C(-625), INT32_C( 991), INT32_C( 326)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  864.35), SIMDE_FLOAT32_C(  855.52),
                         SIMDE_FLOAT32_C( -619.15), SIMDE_FLOAT32_C( -985.70),
                         SIMDE_FLOAT32_C( -511.44), SIMDE_FLOAT32_C(  327.81),
                         SIMDE_FLOAT32_C(   88.57), SIMDE_FLOAT32_C(  775.15)),
      simde_mm256_set_epi32(INT32_C( 864), INT32_C( 855), INT32_C(-619), INT32_C(-985),
                            INT32_C(-511), INT32_C( 327), INT32_C(  88), INT32_C( 775)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  464.19), SIMDE_FLOAT32_C( -184.66),
                         SIMDE_FLOAT32_C(  626.41), SIMDE_FLOAT32_C(  -54.43),
                         SIMDE_FLOAT32_C(  810.20), SIMDE_FLOAT32_C(  906.68),
                         SIMDE_FLOAT32_C(  -63.04), SIMDE_FLOAT32_C( -182.48)),
      simde_mm256_set_epi32(INT32_C( 464), INT32_C(-184), INT32_C( 626), INT32_C( -54),
                            INT32_C( 810), INT32_C( 906), INT32_C( -63), INT32_C(-182)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  127.49), SIMDE_FLOAT32_C( -473.91),
                         SIMDE_FLOAT32_C( -171.73), SIMDE_FLOAT32_C( -903.89),
                         SIMDE_FLOAT32_C(   73.85), SIMDE_FLOAT32_C( -545.98),
                         SIMDE_FLOAT32_C( -240.40), SIMDE_FLOAT32_C(  286.08)),
      simde_mm256_set_epi32(INT32_C( 127), INT32_C(-473), INT32_C(-171), INT32_C(-903),
                            INT32_C(  73), INT32_C(-545), INT32_C(-240), INT32_C( 286)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -184.43), SIMDE_FLOAT32_C(  171.84),
                         SIMDE_FLOAT32_C( -693.45), SIMDE_FLOAT32_C( -961.18),
                         SIMDE_FLOAT32_C( -527.37), SIMDE_FLOAT32_C(  565.38),
                         SIMDE_FLOAT32_C(  865.23), SIMDE_FLOAT32_C(  998.03)),
      simde_mm256_set_epi32(INT32_C(-184), INT32_C( 171), INT32_C(-693), INT32_C(-961),
                            INT32_C(-527), INT32_C( 565), INT32_C( 865), INT32_C( 998)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  417.68), SIMDE_FLOAT32_C(  795.88),
                         SIMDE_FLOAT32_C( -307.52), SIMDE_FLOAT32_C(   75.71),
                         SIMDE_FLOAT32_C( -179.42), SIMDE_FLOAT32_C( -352.61),
                         SIMDE_FLOAT32_C( -314.52), SIMDE_FLOAT32_C(  250.68)),
      simde_mm256_set_epi32(INT32_C( 417), INT32_C( 795), INT32_C(-307), INT32_C(  75),
                            INT32_C(-179), INT32_C(-352), INT32_C(-314), INT32_C( 250)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   89.37), SIMDE_FLOAT32_C( -634.21),
                         SIMDE_FLOAT32_C(  115.63), SIMDE_FLOAT32_C(  878.23),
                         SIMDE_FLOAT32_C( -321.46), SIMDE_FLOAT32_C(  524.08),
                         SIMDE_FLOAT32_C(  597.19), SIMDE_FLOAT32_C(  940.58)),
      simde_mm256_set_epi32(INT32_C(  89), INT32_C(-634), INT32_C( 115), INT32_C( 878),
                            INT32_C(-321), INT32_C( 524), INT32_C( 597), INT32_C( 940)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -643.91), SIMDE_FLOAT32_C(  102.13),
                         SIMDE_FLOAT32_C(  800.40), SIMDE_FLOAT32_C( -587.08),
                         SIMDE_FLOAT32_C( -734.61), SIMDE_FLOAT32_C(  772.26),
                         SIMDE_FLOAT32_C( -256.23), SIMDE_FLOAT32_C( -452.64)),
      simde_mm256_set_epi32(INT32_C(-643), INT32_C( 102), INT32_C( 800), INT32_C(-587),
                            INT32_C(-734), INT32_C( 772), INT32_C(-256), INT32_C(-452)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256i r = simde_mm256_cvttps_epi32(test_vec[i].a);
    simde_assert_m256i_i32(r, ==, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_div_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde__m256 b;
    simde__m256 r;
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  675.83), SIMDE_FLOAT32_C(  732.26),
                         SIMDE_FLOAT32_C(   -4.57), SIMDE_FLOAT32_C( -168.80),
                         SIMDE_FLOAT32_C( -520.00), SIMDE_FLOAT32_C( -692.17),
                         SIMDE_FLOAT32_C(  934.56), SIMDE_FLOAT32_C(  631.79)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -378.09), SIMDE_FLOAT32_C( -656.19),
                         SIMDE_FLOAT32_C( -265.99), SIMDE_FLOAT32_C( -457.08),
                         SIMDE_FLOAT32_C( -481.51), SIMDE_FLOAT32_C(  732.73),
                         SIMDE_FLOAT32_C(  321.36), SIMDE_FLOAT32_C( -269.65)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   -1.79), SIMDE_FLOAT32_C(   -1.12),
                         SIMDE_FLOAT32_C(    0.02), SIMDE_FLOAT32_C(    0.37),
                         SIMDE_FLOAT32_C(    1.08), SIMDE_FLOAT32_C(   -0.94),
                         SIMDE_FLOAT32_C(    2.91), SIMDE_FLOAT32_C(   -2.34)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  118.79), SIMDE_FLOAT32_C(  887.62),
                         SIMDE_FLOAT32_C(  493.85), SIMDE_FLOAT32_C( -554.19),
                         SIMDE_FLOAT32_C(  954.00), SIMDE_FLOAT32_C( -438.20),
                         SIMDE_FLOAT32_C(  457.40), SIMDE_FLOAT32_C( -597.80)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  136.05), SIMDE_FLOAT32_C( -648.50),
                         SIMDE_FLOAT32_C(  975.99), SIMDE_FLOAT32_C(  125.14),
                         SIMDE_FLOAT32_C(  391.49), SIMDE_FLOAT32_C( -989.28),
                         SIMDE_FLOAT32_C( -980.53), SIMDE_FLOAT32_C(  107.28)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(    0.87), SIMDE_FLOAT32_C(   -1.37),
                         SIMDE_FLOAT32_C(    0.51), SIMDE_FLOAT32_C(   -4.43),
                         SIMDE_FLOAT32_C(    2.44), SIMDE_FLOAT32_C(    0.44),
                         SIMDE_FLOAT32_C(   -0.47), SIMDE_FLOAT32_C(   -5.57)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  788.25), SIMDE_FLOAT32_C( -786.20),
                         SIMDE_FLOAT32_C( -386.26), SIMDE_FLOAT32_C( -761.33),
                         SIMDE_FLOAT32_C(  307.75), SIMDE_FLOAT32_C(  863.78),
                         SIMDE_FLOAT32_C(  634.25), SIMDE_FLOAT32_C(  687.96)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  593.79), SIMDE_FLOAT32_C( -856.02),
                         SIMDE_FLOAT32_C(  504.54), SIMDE_FLOAT32_C(  553.51),
                         SIMDE_FLOAT32_C(  287.73), SIMDE_FLOAT32_C( -351.53),
                         SIMDE_FLOAT32_C( -572.54), SIMDE_FLOAT32_C(  264.37)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(    1.33), SIMDE_FLOAT32_C(    0.92),
                         SIMDE_FLOAT32_C(   -0.77), SIMDE_FLOAT32_C(   -1.38),
                         SIMDE_FLOAT32_C(    1.07), SIMDE_FLOAT32_C(   -2.46),
                         SIMDE_FLOAT32_C(   -1.11), SIMDE_FLOAT32_C(    2.60)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  139.28), SIMDE_FLOAT32_C(  906.17),
                         SIMDE_FLOAT32_C(  486.23), SIMDE_FLOAT32_C(  556.78),
                         SIMDE_FLOAT32_C( -178.50), SIMDE_FLOAT32_C( -222.99),
                         SIMDE_FLOAT32_C(  642.44), SIMDE_FLOAT32_C(  839.86)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -272.29), SIMDE_FLOAT32_C( -752.32),
                         SIMDE_FLOAT32_C( -335.75), SIMDE_FLOAT32_C( -704.13),
                         SIMDE_FLOAT32_C(  526.15), SIMDE_FLOAT32_C( -407.90),
                         SIMDE_FLOAT32_C(  -13.13), SIMDE_FLOAT32_C( -893.18)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   -0.51), SIMDE_FLOAT32_C(   -1.20),
                         SIMDE_FLOAT32_C(   -1.45), SIMDE_FLOAT32_C(   -0.79),
                         SIMDE_FLOAT32_C(   -0.34), SIMDE_FLOAT32_C(    0.55),
                         SIMDE_FLOAT32_C(  -48.93), SIMDE_FLOAT32_C(   -0.94)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -332.01), SIMDE_FLOAT32_C( -279.46),
                         SIMDE_FLOAT32_C(  360.69), SIMDE_FLOAT32_C( -121.43),
                         SIMDE_FLOAT32_C(  819.79), SIMDE_FLOAT32_C(  512.44),
                         SIMDE_FLOAT32_C( -185.75), SIMDE_FLOAT32_C(  503.23)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  621.10), SIMDE_FLOAT32_C(  514.79),
                         SIMDE_FLOAT32_C( -672.95), SIMDE_FLOAT32_C(  -62.01),
                         SIMDE_FLOAT32_C( -155.11), SIMDE_FLOAT32_C(  518.20),
                         SIMDE_FLOAT32_C( -704.10), SIMDE_FLOAT32_C( -249.95)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   -0.53), SIMDE_FLOAT32_C(   -0.54),
                         SIMDE_FLOAT32_C(   -0.54), SIMDE_FLOAT32_C(    1.96),
                         SIMDE_FLOAT32_C(   -5.29), SIMDE_FLOAT32_C(    0.99),
                         SIMDE_FLOAT32_C(    0.26), SIMDE_FLOAT32_C(   -2.01)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -784.88), SIMDE_FLOAT32_C( -855.22),
                         SIMDE_FLOAT32_C( -347.04), SIMDE_FLOAT32_C( -241.02),
                         SIMDE_FLOAT32_C(  748.57), SIMDE_FLOAT32_C( -179.02),
                         SIMDE_FLOAT32_C( -995.77), SIMDE_FLOAT32_C( -927.09)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  868.43), SIMDE_FLOAT32_C(    9.90),
                         SIMDE_FLOAT32_C( -308.85), SIMDE_FLOAT32_C( -944.06),
                         SIMDE_FLOAT32_C( -323.62), SIMDE_FLOAT32_C(  739.02),
                         SIMDE_FLOAT32_C(  -61.38), SIMDE_FLOAT32_C(  426.14)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   -0.90), SIMDE_FLOAT32_C(  -86.39),
                         SIMDE_FLOAT32_C(    1.12), SIMDE_FLOAT32_C(    0.26),
                         SIMDE_FLOAT32_C(   -2.31), SIMDE_FLOAT32_C(   -0.24),
                         SIMDE_FLOAT32_C(   16.22), SIMDE_FLOAT32_C(   -2.18)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  307.07), SIMDE_FLOAT32_C(  591.05),
                         SIMDE_FLOAT32_C( -630.36), SIMDE_FLOAT32_C(  826.28),
                         SIMDE_FLOAT32_C( -436.93), SIMDE_FLOAT32_C(  982.53),
                         SIMDE_FLOAT32_C( -808.08), SIMDE_FLOAT32_C(  630.31)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -339.08), SIMDE_FLOAT32_C( -235.71),
                         SIMDE_FLOAT32_C( -196.92), SIMDE_FLOAT32_C(   27.62),
                         SIMDE_FLOAT32_C( -443.69), SIMDE_FLOAT32_C(  242.35),
                         SIMDE_FLOAT32_C(  774.01), SIMDE_FLOAT32_C(  833.91)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   -0.91), SIMDE_FLOAT32_C(   -2.51),
                         SIMDE_FLOAT32_C(    3.20), SIMDE_FLOAT32_C(   29.92),
                         SIMDE_FLOAT32_C(    0.98), SIMDE_FLOAT32_C(    4.05),
                         SIMDE_FLOAT32_C(   -1.04), SIMDE_FLOAT32_C(    0.76)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -830.19), SIMDE_FLOAT32_C( -620.56),
                         SIMDE_FLOAT32_C( -306.38), SIMDE_FLOAT32_C( -602.04),
                         SIMDE_FLOAT32_C(  183.46), SIMDE_FLOAT32_C(  824.79),
                         SIMDE_FLOAT32_C( -492.06), SIMDE_FLOAT32_C( -609.65)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -335.15), SIMDE_FLOAT32_C( -390.73),
                         SIMDE_FLOAT32_C(  951.40), SIMDE_FLOAT32_C(  398.19),
                         SIMDE_FLOAT32_C(  181.71), SIMDE_FLOAT32_C( -932.03),
                         SIMDE_FLOAT32_C(  887.77), SIMDE_FLOAT32_C(  257.75)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(    2.48), SIMDE_FLOAT32_C(    1.59),
                         SIMDE_FLOAT32_C(   -0.32), SIMDE_FLOAT32_C(   -1.51),
                         SIMDE_FLOAT32_C(    1.01), SIMDE_FLOAT32_C(   -0.88),
                         SIMDE_FLOAT32_C(   -0.55), SIMDE_FLOAT32_C(   -2.37)) }
  };
  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256 r = simde_mm256_div_ps(test_vec[i].a, test_vec[i].b);
    simde_assert_m256_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_div_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256d a;
    simde__m256d b;
    simde__m256d r;
  } test_vec[8] = {
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(   42.76), SIMDE_FLOAT64_C(  925.42),
                         SIMDE_FLOAT64_C(  624.80), SIMDE_FLOAT64_C(  413.87)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -621.50), SIMDE_FLOAT64_C( -651.30),
                         SIMDE_FLOAT64_C( -233.59), SIMDE_FLOAT64_C( -713.35)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   -0.07), SIMDE_FLOAT64_C(   -1.42),
                         SIMDE_FLOAT64_C(   -2.67), SIMDE_FLOAT64_C(   -0.58)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  275.93), SIMDE_FLOAT64_C(  360.88),
                         SIMDE_FLOAT64_C(   -7.47), SIMDE_FLOAT64_C( -347.34)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  479.86), SIMDE_FLOAT64_C(  205.26),
                         SIMDE_FLOAT64_C(  174.68), SIMDE_FLOAT64_C(  363.12)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.58), SIMDE_FLOAT64_C(    1.76),
                         SIMDE_FLOAT64_C(   -0.04), SIMDE_FLOAT64_C(   -0.96)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  977.82), SIMDE_FLOAT64_C(  875.25),
                         SIMDE_FLOAT64_C(  775.86), SIMDE_FLOAT64_C(  314.76)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -748.72), SIMDE_FLOAT64_C(  258.24),
                         SIMDE_FLOAT64_C( -578.49), SIMDE_FLOAT64_C( -708.35)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   -1.31), SIMDE_FLOAT64_C(    3.39),
                         SIMDE_FLOAT64_C(   -1.34), SIMDE_FLOAT64_C(   -0.44)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  617.56), SIMDE_FLOAT64_C( -254.21),
                         SIMDE_FLOAT64_C( -890.06), SIMDE_FLOAT64_C( -996.38)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -247.08), SIMDE_FLOAT64_C(  661.94),
                         SIMDE_FLOAT64_C( -120.93), SIMDE_FLOAT64_C( -574.61)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   -2.50), SIMDE_FLOAT64_C(   -0.38),
                         SIMDE_FLOAT64_C(    7.36), SIMDE_FLOAT64_C(    1.73)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -932.29), SIMDE_FLOAT64_C( -263.62),
                         SIMDE_FLOAT64_C( -571.69), SIMDE_FLOAT64_C(  -83.26)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  395.02), SIMDE_FLOAT64_C(  290.85),
                         SIMDE_FLOAT64_C( -853.00), SIMDE_FLOAT64_C(  928.61)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   -2.36), SIMDE_FLOAT64_C(   -0.91),
                         SIMDE_FLOAT64_C(    0.67), SIMDE_FLOAT64_C(   -0.09)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -109.60), SIMDE_FLOAT64_C( -812.14),
                         SIMDE_FLOAT64_C( -474.36), SIMDE_FLOAT64_C( -732.62)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -982.62), SIMDE_FLOAT64_C( -995.34),
                         SIMDE_FLOAT64_C(  -51.94), SIMDE_FLOAT64_C(  973.17)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.11), SIMDE_FLOAT64_C(    0.82),
                         SIMDE_FLOAT64_C(    9.13), SIMDE_FLOAT64_C(   -0.75)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -826.31), SIMDE_FLOAT64_C( -333.99),
                         SIMDE_FLOAT64_C( -238.49), SIMDE_FLOAT64_C( -706.13)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  929.44), SIMDE_FLOAT64_C(  493.44),
                         SIMDE_FLOAT64_C( -539.23), SIMDE_FLOAT64_C( -683.88)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   -0.89), SIMDE_FLOAT64_C(   -0.68),
                         SIMDE_FLOAT64_C(    0.44), SIMDE_FLOAT64_C(    1.03)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  419.98), SIMDE_FLOAT64_C(  -51.88),
                         SIMDE_FLOAT64_C( -580.15), SIMDE_FLOAT64_C( -198.88)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  246.03), SIMDE_FLOAT64_C( -149.94),
                         SIMDE_FLOAT64_C( -107.67), SIMDE_FLOAT64_C(  875.62)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(    1.71), SIMDE_FLOAT64_C(    0.35),
                         SIMDE_FLOAT64_C(    5.39), SIMDE_FLOAT64_C(   -0.23)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256d r = simde_mm256_div_pd(test_vec[i].a, test_vec[i].b);
    simde_assert_m256d_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_floor_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde__m256 r;
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  520.72), SIMDE_FLOAT32_C(  834.16),
                         SIMDE_FLOAT32_C( -945.36), SIMDE_FLOAT32_C( -135.41),
                         SIMDE_FLOAT32_C(  289.19), SIMDE_FLOAT32_C(  462.54),
                         SIMDE_FLOAT32_C( -937.67), SIMDE_FLOAT32_C(  706.09)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  520.00), SIMDE_FLOAT32_C(  834.00),
                         SIMDE_FLOAT32_C( -946.00), SIMDE_FLOAT32_C( -136.00),
                         SIMDE_FLOAT32_C(  289.00), SIMDE_FLOAT32_C(  462.00),
                         SIMDE_FLOAT32_C( -938.00), SIMDE_FLOAT32_C(  706.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   -9.00), SIMDE_FLOAT32_C(  401.24),
                         SIMDE_FLOAT32_C(  899.70), SIMDE_FLOAT32_C( -258.03),
                         SIMDE_FLOAT32_C( -634.92), SIMDE_FLOAT32_C( -438.26),
                         SIMDE_FLOAT32_C(  433.94), SIMDE_FLOAT32_C( -170.51)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   -9.00), SIMDE_FLOAT32_C(  401.00),
                         SIMDE_FLOAT32_C(  899.00), SIMDE_FLOAT32_C( -259.00),
                         SIMDE_FLOAT32_C( -635.00), SIMDE_FLOAT32_C( -439.00),
                         SIMDE_FLOAT32_C(  433.00), SIMDE_FLOAT32_C( -171.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -908.95), SIMDE_FLOAT32_C( -376.33),
                         SIMDE_FLOAT32_C( -639.88), SIMDE_FLOAT32_C(   40.45),
                         SIMDE_FLOAT32_C( -431.46), SIMDE_FLOAT32_C( -404.49),
                         SIMDE_FLOAT32_C( -411.60), SIMDE_FLOAT32_C(  531.65)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -909.00), SIMDE_FLOAT32_C( -377.00),
                         SIMDE_FLOAT32_C( -640.00), SIMDE_FLOAT32_C(   40.00),
                         SIMDE_FLOAT32_C( -432.00), SIMDE_FLOAT32_C( -405.00),
                         SIMDE_FLOAT32_C( -412.00), SIMDE_FLOAT32_C(  531.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -394.79), SIMDE_FLOAT32_C( -654.48),
                         SIMDE_FLOAT32_C(  223.95), SIMDE_FLOAT32_C( -557.45),
                         SIMDE_FLOAT32_C(  908.61), SIMDE_FLOAT32_C( -493.34),
                         SIMDE_FLOAT32_C(  466.68), SIMDE_FLOAT32_C( -301.36)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -395.00), SIMDE_FLOAT32_C( -655.00),
                         SIMDE_FLOAT32_C(  223.00), SIMDE_FLOAT32_C( -558.00),
                         SIMDE_FLOAT32_C(  908.00), SIMDE_FLOAT32_C( -494.00),
                         SIMDE_FLOAT32_C(  466.00), SIMDE_FLOAT32_C( -302.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   -5.40), SIMDE_FLOAT32_C(  828.84),
                         SIMDE_FLOAT32_C(  468.99), SIMDE_FLOAT32_C(  665.66),
                         SIMDE_FLOAT32_C( -648.14), SIMDE_FLOAT32_C( -841.90),
                         SIMDE_FLOAT32_C( -380.33), SIMDE_FLOAT32_C(  740.32)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   -6.00), SIMDE_FLOAT32_C(  828.00),
                         SIMDE_FLOAT32_C(  468.00), SIMDE_FLOAT32_C(  665.00),
                         SIMDE_FLOAT32_C( -649.00), SIMDE_FLOAT32_C( -842.00),
                         SIMDE_FLOAT32_C( -381.00), SIMDE_FLOAT32_C(  740.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -752.16), SIMDE_FLOAT32_C( -655.98),
                         SIMDE_FLOAT32_C(  902.13), SIMDE_FLOAT32_C(  972.30),
                         SIMDE_FLOAT32_C( -497.57), SIMDE_FLOAT32_C( -530.16),
                         SIMDE_FLOAT32_C( -966.55), SIMDE_FLOAT32_C(  570.95)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -753.00), SIMDE_FLOAT32_C( -656.00),
                         SIMDE_FLOAT32_C(  902.00), SIMDE_FLOAT32_C(  972.00),
                         SIMDE_FLOAT32_C( -498.00), SIMDE_FLOAT32_C( -531.00),
                         SIMDE_FLOAT32_C( -967.00), SIMDE_FLOAT32_C(  570.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  723.18), SIMDE_FLOAT32_C(  202.51),
                         SIMDE_FLOAT32_C(  -41.39), SIMDE_FLOAT32_C( -372.98),
                         SIMDE_FLOAT32_C(  697.91), SIMDE_FLOAT32_C( -303.11),
                         SIMDE_FLOAT32_C( -180.07), SIMDE_FLOAT32_C(  941.44)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  723.00), SIMDE_FLOAT32_C(  202.00),
                         SIMDE_FLOAT32_C(  -42.00), SIMDE_FLOAT32_C( -373.00),
                         SIMDE_FLOAT32_C(  697.00), SIMDE_FLOAT32_C( -304.00),
                         SIMDE_FLOAT32_C( -181.00), SIMDE_FLOAT32_C(  941.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  995.24), SIMDE_FLOAT32_C(   68.12),
                         SIMDE_FLOAT32_C(  284.41), SIMDE_FLOAT32_C(  723.96),
                         SIMDE_FLOAT32_C( -373.95), SIMDE_FLOAT32_C(   15.43),
                         SIMDE_FLOAT32_C( -498.85), SIMDE_FLOAT32_C(  581.12)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  995.00), SIMDE_FLOAT32_C(   68.00),
                         SIMDE_FLOAT32_C(  284.00), SIMDE_FLOAT32_C(  723.00),
                         SIMDE_FLOAT32_C( -374.00), SIMDE_FLOAT32_C(   15.00),
                         SIMDE_FLOAT32_C( -499.00), SIMDE_FLOAT32_C(  581.00)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256 r = simde_mm256_floor_ps(test_vec[i].a);
    simde_assert_m256_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_extractf128_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256d a;
    simde__m256d b;
    simde__m128d ra;
    simde__m128d rb;
  } test_vec[8] = {
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  115.05), SIMDE_FLOAT64_C(  580.50),
                         SIMDE_FLOAT64_C(  784.61), SIMDE_FLOAT64_C(    6.02)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -748.60), SIMDE_FLOAT64_C(  328.25),
                         SIMDE_FLOAT64_C( -515.20), SIMDE_FLOAT64_C(  761.63)),
      simde_mm_set_pd(SIMDE_FLOAT64_C(  784.61), SIMDE_FLOAT64_C(    6.02)),
      simde_mm_set_pd(SIMDE_FLOAT64_C( -748.60), SIMDE_FLOAT64_C(  328.25)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -201.97), SIMDE_FLOAT64_C(  -32.82),
                         SIMDE_FLOAT64_C(  698.56), SIMDE_FLOAT64_C( -504.23)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -706.22), SIMDE_FLOAT64_C(  296.17),
                         SIMDE_FLOAT64_C(  289.51), SIMDE_FLOAT64_C( -515.71)),
      simde_mm_set_pd(SIMDE_FLOAT64_C(  698.56), SIMDE_FLOAT64_C( -504.23)),
      simde_mm_set_pd(SIMDE_FLOAT64_C( -706.22), SIMDE_FLOAT64_C(  296.17)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  708.15), SIMDE_FLOAT64_C( -171.50),
                         SIMDE_FLOAT64_C(  534.26), SIMDE_FLOAT64_C( -815.83)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  -29.20), SIMDE_FLOAT64_C( -861.78),
                         SIMDE_FLOAT64_C(   -7.26), SIMDE_FLOAT64_C(  861.75)),
      simde_mm_set_pd(SIMDE_FLOAT64_C(  534.26), SIMDE_FLOAT64_C( -815.83)),
      simde_mm_set_pd(SIMDE_FLOAT64_C(  -29.20), SIMDE_FLOAT64_C( -861.78)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  186.47), SIMDE_FLOAT64_C(  690.51),
                         SIMDE_FLOAT64_C( -956.51), SIMDE_FLOAT64_C(  679.80)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  790.70), SIMDE_FLOAT64_C(  327.68),
                         SIMDE_FLOAT64_C(  -42.45), SIMDE_FLOAT64_C(  443.64)),
      simde_mm_set_pd(SIMDE_FLOAT64_C( -956.51), SIMDE_FLOAT64_C(  679.80)),
      simde_mm_set_pd(SIMDE_FLOAT64_C(  790.70), SIMDE_FLOAT64_C(  327.68)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -320.95), SIMDE_FLOAT64_C(  190.95),
                         SIMDE_FLOAT64_C( -667.22), SIMDE_FLOAT64_C( -985.92)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -263.54), SIMDE_FLOAT64_C(  946.34),
                         SIMDE_FLOAT64_C(  395.23), SIMDE_FLOAT64_C(  318.77)),
      simde_mm_set_pd(SIMDE_FLOAT64_C( -667.22), SIMDE_FLOAT64_C( -985.92)),
      simde_mm_set_pd(SIMDE_FLOAT64_C( -263.54), SIMDE_FLOAT64_C(  946.34)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  258.92), SIMDE_FLOAT64_C( -434.64),
                         SIMDE_FLOAT64_C(  431.03), SIMDE_FLOAT64_C( -543.52)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   13.27), SIMDE_FLOAT64_C( -706.44),
                         SIMDE_FLOAT64_C(   14.64), SIMDE_FLOAT64_C( -663.76)),
      simde_mm_set_pd(SIMDE_FLOAT64_C(  431.03), SIMDE_FLOAT64_C( -543.52)),
      simde_mm_set_pd(SIMDE_FLOAT64_C(   13.27), SIMDE_FLOAT64_C( -706.44)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -867.30), SIMDE_FLOAT64_C(  693.24),
                         SIMDE_FLOAT64_C( -963.86), SIMDE_FLOAT64_C(   73.79)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -726.99), SIMDE_FLOAT64_C(  691.78),
                         SIMDE_FLOAT64_C(  411.83), SIMDE_FLOAT64_C(  204.72)),
      simde_mm_set_pd(SIMDE_FLOAT64_C( -963.86), SIMDE_FLOAT64_C(   73.79)),
      simde_mm_set_pd(SIMDE_FLOAT64_C( -726.99), SIMDE_FLOAT64_C(  691.78)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -771.52), SIMDE_FLOAT64_C( -673.29),
                         SIMDE_FLOAT64_C( -291.52), SIMDE_FLOAT64_C( -321.79)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  979.05), SIMDE_FLOAT64_C(  161.61),
                         SIMDE_FLOAT64_C(  682.54), SIMDE_FLOAT64_C(   63.94)),
      simde_mm_set_pd(SIMDE_FLOAT64_C( -291.52), SIMDE_FLOAT64_C( -321.79)),
      simde_mm_set_pd(SIMDE_FLOAT64_C(  979.05), SIMDE_FLOAT64_C(  161.61)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m128d ra = simde_mm256_extractf128_pd(test_vec[i].a, 0);
    simde__m128d rb = simde_mm256_extractf128_pd(test_vec[i].b, 1);
    simde_assert_m128d_equal(ra, test_vec[i].ra);
    simde_assert_m128d_equal(rb, test_vec[i].rb);
  }

  return 0;
}

static int
test_simde_mm256_extractf128_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde__m256 b;
    simde__m128 ra;
    simde__m128 rb;
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -982.78), SIMDE_FLOAT32_C(  936.88),
                         SIMDE_FLOAT32_C(  412.85), SIMDE_FLOAT32_C( -941.25),
                         SIMDE_FLOAT32_C(  131.34), SIMDE_FLOAT32_C(  565.12),
                         SIMDE_FLOAT32_C( -716.42), SIMDE_FLOAT32_C( -825.93)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  850.34), SIMDE_FLOAT32_C( -992.50),
                         SIMDE_FLOAT32_C(  927.06), SIMDE_FLOAT32_C( -523.74),
                         SIMDE_FLOAT32_C( -670.83), SIMDE_FLOAT32_C(  805.14),
                         SIMDE_FLOAT32_C( -177.24), SIMDE_FLOAT32_C( -739.27)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  131.34), SIMDE_FLOAT32_C(  565.12), SIMDE_FLOAT32_C( -716.42), SIMDE_FLOAT32_C( -825.93)),
      simde_mm_set_ps(SIMDE_FLOAT32_C( -982.78), SIMDE_FLOAT32_C(  936.88), SIMDE_FLOAT32_C(  412.85), SIMDE_FLOAT32_C( -941.25)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  -70.97), SIMDE_FLOAT32_C( -281.18),
                         SIMDE_FLOAT32_C(  775.52), SIMDE_FLOAT32_C( -398.03),
                         SIMDE_FLOAT32_C(  484.85), SIMDE_FLOAT32_C( -518.53),
                         SIMDE_FLOAT32_C( -204.80), SIMDE_FLOAT32_C( -550.46)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -638.16), SIMDE_FLOAT32_C(   -1.38),
                         SIMDE_FLOAT32_C( -998.42), SIMDE_FLOAT32_C(   63.00),
                         SIMDE_FLOAT32_C(  880.69), SIMDE_FLOAT32_C(  119.17),
                         SIMDE_FLOAT32_C(   35.15), SIMDE_FLOAT32_C( -586.49)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  484.85), SIMDE_FLOAT32_C( -518.53), SIMDE_FLOAT32_C( -204.80), SIMDE_FLOAT32_C( -550.46)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  -70.97), SIMDE_FLOAT32_C( -281.18), SIMDE_FLOAT32_C(  775.52), SIMDE_FLOAT32_C( -398.03)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  899.55), SIMDE_FLOAT32_C(  996.09),
                         SIMDE_FLOAT32_C( -135.99), SIMDE_FLOAT32_C(  141.51),
                         SIMDE_FLOAT32_C(  -55.54), SIMDE_FLOAT32_C(  357.72),
                         SIMDE_FLOAT32_C( -706.21), SIMDE_FLOAT32_C(  310.52)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  434.09), SIMDE_FLOAT32_C(  834.83),
                         SIMDE_FLOAT32_C( -713.54), SIMDE_FLOAT32_C( -262.36),
                         SIMDE_FLOAT32_C(  332.23), SIMDE_FLOAT32_C(  176.07),
                         SIMDE_FLOAT32_C( -753.38), SIMDE_FLOAT32_C( -978.05)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  -55.54), SIMDE_FLOAT32_C(  357.72), SIMDE_FLOAT32_C( -706.21), SIMDE_FLOAT32_C(  310.52)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  899.55), SIMDE_FLOAT32_C(  996.09), SIMDE_FLOAT32_C( -135.99), SIMDE_FLOAT32_C(  141.51)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  683.50), SIMDE_FLOAT32_C( -416.59),
                         SIMDE_FLOAT32_C(  629.11), SIMDE_FLOAT32_C(  891.79),
                         SIMDE_FLOAT32_C( -173.40), SIMDE_FLOAT32_C( -666.21),
                         SIMDE_FLOAT32_C( -628.67), SIMDE_FLOAT32_C(  605.77)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -779.97), SIMDE_FLOAT32_C(  302.06),
                         SIMDE_FLOAT32_C(  734.68), SIMDE_FLOAT32_C( -886.16),
                         SIMDE_FLOAT32_C(  707.40), SIMDE_FLOAT32_C(  833.35),
                         SIMDE_FLOAT32_C(  963.40), SIMDE_FLOAT32_C(  412.83)),
      simde_mm_set_ps(SIMDE_FLOAT32_C( -173.40), SIMDE_FLOAT32_C( -666.21), SIMDE_FLOAT32_C( -628.67), SIMDE_FLOAT32_C(  605.77)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  683.50), SIMDE_FLOAT32_C( -416.59), SIMDE_FLOAT32_C(  629.11), SIMDE_FLOAT32_C(  891.79)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -802.04), SIMDE_FLOAT32_C(  699.58),
                         SIMDE_FLOAT32_C(  450.94), SIMDE_FLOAT32_C( -386.39),
                         SIMDE_FLOAT32_C(  494.04), SIMDE_FLOAT32_C(  940.54),
                         SIMDE_FLOAT32_C( -934.60), SIMDE_FLOAT32_C( -970.12)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  648.13), SIMDE_FLOAT32_C(  946.05),
                         SIMDE_FLOAT32_C(  808.22), SIMDE_FLOAT32_C(  517.90),
                         SIMDE_FLOAT32_C( -691.53), SIMDE_FLOAT32_C(  525.44),
                         SIMDE_FLOAT32_C( -474.29), SIMDE_FLOAT32_C( -454.31)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  494.04), SIMDE_FLOAT32_C(  940.54), SIMDE_FLOAT32_C( -934.60), SIMDE_FLOAT32_C( -970.12)),
      simde_mm_set_ps(SIMDE_FLOAT32_C( -802.04), SIMDE_FLOAT32_C(  699.58), SIMDE_FLOAT32_C(  450.94), SIMDE_FLOAT32_C( -386.39)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -543.05), SIMDE_FLOAT32_C(  -31.72),
                         SIMDE_FLOAT32_C( -407.93), SIMDE_FLOAT32_C(  926.97),
                         SIMDE_FLOAT32_C(  179.76), SIMDE_FLOAT32_C(  712.03),
                         SIMDE_FLOAT32_C(  463.85), SIMDE_FLOAT32_C( -838.23)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  673.45), SIMDE_FLOAT32_C(  368.84),
                         SIMDE_FLOAT32_C(  678.61), SIMDE_FLOAT32_C(  857.34),
                         SIMDE_FLOAT32_C( -482.39), SIMDE_FLOAT32_C(  -94.31),
                         SIMDE_FLOAT32_C(  471.32), SIMDE_FLOAT32_C(  173.80)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  179.76), SIMDE_FLOAT32_C(  712.03), SIMDE_FLOAT32_C(  463.85), SIMDE_FLOAT32_C( -838.23)),
      simde_mm_set_ps(SIMDE_FLOAT32_C( -543.05), SIMDE_FLOAT32_C(  -31.72), SIMDE_FLOAT32_C( -407.93), SIMDE_FLOAT32_C(  926.97)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -929.66), SIMDE_FLOAT32_C( -223.82),
                         SIMDE_FLOAT32_C(  340.48), SIMDE_FLOAT32_C(  717.03),
                         SIMDE_FLOAT32_C(  895.13), SIMDE_FLOAT32_C(  964.64),
                         SIMDE_FLOAT32_C( -654.82), SIMDE_FLOAT32_C(   74.87)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  665.16), SIMDE_FLOAT32_C(  209.26),
                         SIMDE_FLOAT32_C(  133.64), SIMDE_FLOAT32_C(  -42.02),
                         SIMDE_FLOAT32_C( -424.16), SIMDE_FLOAT32_C( -122.50),
                         SIMDE_FLOAT32_C( -788.87), SIMDE_FLOAT32_C( -239.50)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  895.13), SIMDE_FLOAT32_C(  964.64), SIMDE_FLOAT32_C( -654.82), SIMDE_FLOAT32_C(   74.87)),
      simde_mm_set_ps(SIMDE_FLOAT32_C( -929.66), SIMDE_FLOAT32_C( -223.82), SIMDE_FLOAT32_C(  340.48), SIMDE_FLOAT32_C(  717.03)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  406.90), SIMDE_FLOAT32_C( -672.60),
                         SIMDE_FLOAT32_C(  803.83), SIMDE_FLOAT32_C( -409.89),
                         SIMDE_FLOAT32_C(  549.46), SIMDE_FLOAT32_C(  773.35),
                         SIMDE_FLOAT32_C( -173.87), SIMDE_FLOAT32_C(  365.19)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  381.05), SIMDE_FLOAT32_C( -236.95),
                         SIMDE_FLOAT32_C( -568.89), SIMDE_FLOAT32_C(  375.92),
                         SIMDE_FLOAT32_C(  259.53), SIMDE_FLOAT32_C( -247.84),
                         SIMDE_FLOAT32_C(  166.06), SIMDE_FLOAT32_C( -963.74)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  549.46), SIMDE_FLOAT32_C(  773.35), SIMDE_FLOAT32_C( -173.87), SIMDE_FLOAT32_C(  365.19)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  406.90), SIMDE_FLOAT32_C( -672.60), SIMDE_FLOAT32_C(  803.83), SIMDE_FLOAT32_C( -409.89)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m128 ra = simde_mm256_extractf128_ps(test_vec[i].a, 0);
    simde__m128 rb = simde_mm256_extractf128_ps(test_vec[i].a, 1);
    simde_assert_m128_close(ra, test_vec[i].ra, 1);
    simde_assert_m128_close(rb, test_vec[i].rb, 1);
  }

  return 0;
}

static int
test_simde_mm256_extractf128_si256(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256i a;
    simde__m256i b;
    simde__m128i ra;
    simde__m128i rb;
  } test_vec[8] = {
    { simde_mm256_set_epi32(INT32_C( 1229394801), INT32_C(  992221618), INT32_C(-1388107406), INT32_C(  780445625),
                            INT32_C( 1795700153), INT32_C( -297324271), INT32_C( 1549329146), INT32_C( -534963225)),
      simde_mm256_set_epi32(INT32_C( -867719772), INT32_C(-1804212438), INT32_C( 1849818353), INT32_C(  405560893),
                            INT32_C( 1351338386), INT32_C( -886724662), INT32_C( 1197680760), INT32_C( 1003042592)),
      simde_mm_set_epi32(INT32_C( 1795700153), INT32_C( -297324271), INT32_C( 1549329146), INT32_C( -534963225)),
      simde_mm_set_epi32(INT32_C( 1229394801), INT32_C(  992221618), INT32_C(-1388107406), INT32_C(  780445625)) },
    { simde_mm256_set_epi32(INT32_C( 1839397279), INT32_C( -585358334), INT32_C(  779178160), INT32_C( -362976984),
                            INT32_C(-1015866216), INT32_C( -556342867), INT32_C( -766379029), INT32_C( -130781639)),
      simde_mm256_set_epi32(INT32_C( 2021215895), INT32_C( -422044488), INT32_C(-1385706777), INT32_C(   22702781),
                            INT32_C( 1076807274), INT32_C(-1923875401), INT32_C( -554846936), INT32_C(-1008226174)),
      simde_mm_set_epi32(INT32_C(-1015866216), INT32_C( -556342867), INT32_C( -766379029), INT32_C( -130781639)),
      simde_mm_set_epi32(INT32_C( 1839397279), INT32_C( -585358334), INT32_C(  779178160), INT32_C( -362976984)) },
    { simde_mm256_set_epi32(INT32_C(   23865749), INT32_C( -908972624), INT32_C(-1642418179), INT32_C(  111689864),
                            INT32_C( -835154412), INT32_C( -431540196), INT32_C( -161564683), INT32_C(  204589457)),
      simde_mm256_set_epi32(INT32_C( 2088662618), INT32_C(-1671363325), INT32_C( -997695043), INT32_C( -809764814),
                            INT32_C( 2092581708), INT32_C(-1073689737), INT32_C(-1556963227), INT32_C( -641330488)),
      simde_mm_set_epi32(INT32_C( -835154412), INT32_C( -431540196), INT32_C( -161564683), INT32_C(  204589457)),
      simde_mm_set_epi32(INT32_C(   23865749), INT32_C( -908972624), INT32_C(-1642418179), INT32_C(  111689864)) },
    { simde_mm256_set_epi32(INT32_C( 1727711569), INT32_C(-1915329589), INT32_C( -979233658), INT32_C( -409203179),
                            INT32_C( 1343207861), INT32_C(-1541174422), INT32_C(-2097250480), INT32_C(-1382492089)),
      simde_mm256_set_epi32(INT32_C(  -42175512), INT32_C(-2146588690), INT32_C(-1902868938), INT32_C( 1919945739),
                            INT32_C(  410749235), INT32_C(-1828962645), INT32_C(  525862553), INT32_C( -282512400)),
      simde_mm_set_epi32(INT32_C( 1343207861), INT32_C(-1541174422), INT32_C(-2097250480), INT32_C(-1382492089)),
      simde_mm_set_epi32(INT32_C( 1727711569), INT32_C(-1915329589), INT32_C( -979233658), INT32_C( -409203179)) },
    { simde_mm256_set_epi32(INT32_C(  377369527), INT32_C( 1159197718), INT32_C(  288677560), INT32_C(  828517622),
                            INT32_C( 1815109517), INT32_C( 1103735854), INT32_C( 1342116414), INT32_C( 1750949195)),
      simde_mm256_set_epi32(INT32_C( 1481955155), INT32_C( -119794855), INT32_C(-2109995042), INT32_C(  582656481),
                            INT32_C( 1178951500), INT32_C(  762286037), INT32_C(  628377158), INT32_C( -188026020)),
      simde_mm_set_epi32(INT32_C( 1815109517), INT32_C( 1103735854), INT32_C( 1342116414), INT32_C( 1750949195)),
      simde_mm_set_epi32(INT32_C(  377369527), INT32_C( 1159197718), INT32_C(  288677560), INT32_C(  828517622)) },
    { simde_mm256_set_epi32(INT32_C(-1996051424), INT32_C( -314294760), INT32_C( -770521150), INT32_C(  508113145),
                            INT32_C( -677093043), INT32_C( -527636644), INT32_C( 1238565466), INT32_C(-1592387355)),
      simde_mm256_set_epi32(INT32_C(-1510707643), INT32_C( 1988531398), INT32_C(-1182276921), INT32_C(  363503044),
                            INT32_C( 2086268932), INT32_C( -428647595), INT32_C( 1685321543), INT32_C( 1979089365)),
      simde_mm_set_epi32(INT32_C( -677093043), INT32_C( -527636644), INT32_C( 1238565466), INT32_C(-1592387355)),
      simde_mm_set_epi32(INT32_C(-1996051424), INT32_C( -314294760), INT32_C( -770521150), INT32_C(  508113145)) },
    { simde_mm256_set_epi32(INT32_C(    4593159), INT32_C( 1779671737), INT32_C( -569674634), INT32_C( -184254965),
                            INT32_C( -665786654), INT32_C(  663766301), INT32_C(-1237697897), INT32_C( -260948936)),
      simde_mm256_set_epi32(INT32_C( -575114102), INT32_C( -399786699), INT32_C(-1468780124), INT32_C( 2032090700),
                            INT32_C(  723386747), INT32_C(-1766232746), INT32_C(   73837413), INT32_C(  496540408)),
      simde_mm_set_epi32(INT32_C( -665786654), INT32_C(  663766301), INT32_C(-1237697897), INT32_C( -260948936)),
      simde_mm_set_epi32(INT32_C(    4593159), INT32_C( 1779671737), INT32_C( -569674634), INT32_C( -184254965)) },
    { simde_mm256_set_epi32(INT32_C( -328197013), INT32_C( 1036318270), INT32_C(-1930293157), INT32_C( 1948339432),
                            INT32_C( 1903716614), INT32_C(-1951673698), INT32_C(-1858071379), INT32_C( 2070124471)),
      simde_mm256_set_epi32(INT32_C(-1815372819), INT32_C( -102535612), INT32_C(  115383384), INT32_C( 1004544095),
                            INT32_C( 1506420054), INT32_C(-1014523798), INT32_C(-1776388104), INT32_C( 1550371104)),
      simde_mm_set_epi32(INT32_C( 1903716614), INT32_C(-1951673698), INT32_C(-1858071379), INT32_C( 2070124471)),
      simde_mm_set_epi32(INT32_C( -328197013), INT32_C( 1036318270), INT32_C(-1930293157), INT32_C( 1948339432)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m128i ra = simde_mm256_extractf128_si256(test_vec[i].a, 0);
    simde__m128i rb = simde_mm256_extractf128_si256(test_vec[i].a, 1);
    simde_assert_m128i_i32(ra, ==, test_vec[i].ra);
    simde_assert_m128i_i32(rb, ==, test_vec[i].rb);
  }

  return 0;
}

static int
test_simde_mm256_floor_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256d a;
    simde__m256d r;
  } test_vec[8] = {
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  -86.60), SIMDE_FLOAT64_C(  -29.62),
                         SIMDE_FLOAT64_C(  880.65), SIMDE_FLOAT64_C(  474.01)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  -87.00), SIMDE_FLOAT64_C(  -30.00),
                         SIMDE_FLOAT64_C(  880.00), SIMDE_FLOAT64_C(  474.00)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  335.44), SIMDE_FLOAT64_C(   87.17),
                         SIMDE_FLOAT64_C(  264.70), SIMDE_FLOAT64_C(  435.92)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  335.00), SIMDE_FLOAT64_C(   87.00),
                         SIMDE_FLOAT64_C(  264.00), SIMDE_FLOAT64_C(  435.00)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  657.73), SIMDE_FLOAT64_C( -255.01),
                         SIMDE_FLOAT64_C( -236.61), SIMDE_FLOAT64_C(  198.74)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  657.00), SIMDE_FLOAT64_C( -256.00),
                         SIMDE_FLOAT64_C( -237.00), SIMDE_FLOAT64_C(  198.00)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -459.75), SIMDE_FLOAT64_C(  234.86),
                         SIMDE_FLOAT64_C( -517.66), SIMDE_FLOAT64_C( -561.05)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -460.00), SIMDE_FLOAT64_C(  234.00),
                         SIMDE_FLOAT64_C( -518.00), SIMDE_FLOAT64_C( -562.00)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -815.90), SIMDE_FLOAT64_C( -973.26),
                         SIMDE_FLOAT64_C( -704.97), SIMDE_FLOAT64_C(  629.57)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -816.00), SIMDE_FLOAT64_C( -974.00),
                         SIMDE_FLOAT64_C( -705.00), SIMDE_FLOAT64_C(  629.00)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -147.09), SIMDE_FLOAT64_C( -283.85),
                         SIMDE_FLOAT64_C(   91.60), SIMDE_FLOAT64_C( -808.32)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -148.00), SIMDE_FLOAT64_C( -284.00),
                         SIMDE_FLOAT64_C(   91.00), SIMDE_FLOAT64_C( -809.00)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  346.15), SIMDE_FLOAT64_C( -862.92),
                         SIMDE_FLOAT64_C( -616.19), SIMDE_FLOAT64_C( -434.01)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  346.00), SIMDE_FLOAT64_C( -863.00),
                         SIMDE_FLOAT64_C( -617.00), SIMDE_FLOAT64_C( -435.00)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -593.06), SIMDE_FLOAT64_C( -286.08),
                         SIMDE_FLOAT64_C(  351.32), SIMDE_FLOAT64_C(  -29.06)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -594.00), SIMDE_FLOAT64_C( -287.00),
                         SIMDE_FLOAT64_C(  351.00), SIMDE_FLOAT64_C(  -30.00)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256d r = simde_mm256_floor_pd(test_vec[i].a);
    simde_assert_m256d_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_hadd_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde__m256 b;
    simde__m256 r;
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -626.68), SIMDE_FLOAT32_C( -596.09),
                         SIMDE_FLOAT32_C( -988.19), SIMDE_FLOAT32_C(  961.65),
                         SIMDE_FLOAT32_C(  518.43), SIMDE_FLOAT32_C(  334.09),
                         SIMDE_FLOAT32_C(  212.95), SIMDE_FLOAT32_C( -488.35)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -361.77), SIMDE_FLOAT32_C(  121.01),
                         SIMDE_FLOAT32_C( -252.45), SIMDE_FLOAT32_C(  920.40),
                         SIMDE_FLOAT32_C( -660.15), SIMDE_FLOAT32_C( -869.23),
                         SIMDE_FLOAT32_C(  372.46), SIMDE_FLOAT32_C(  408.66)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -240.76), SIMDE_FLOAT32_C(  667.95),
                         SIMDE_FLOAT32_C(-1222.77), SIMDE_FLOAT32_C(  -26.54),
                         SIMDE_FLOAT32_C(-1529.38), SIMDE_FLOAT32_C(  781.12),
                         SIMDE_FLOAT32_C(  852.52), SIMDE_FLOAT32_C( -275.40)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  781.58), SIMDE_FLOAT32_C(  111.71),
                         SIMDE_FLOAT32_C( -214.03), SIMDE_FLOAT32_C( -280.14),
                         SIMDE_FLOAT32_C(  285.11), SIMDE_FLOAT32_C( -159.71),
                         SIMDE_FLOAT32_C(  737.74), SIMDE_FLOAT32_C(  159.06)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -542.95), SIMDE_FLOAT32_C(  311.99),
                         SIMDE_FLOAT32_C( -695.66), SIMDE_FLOAT32_C( -563.82),
                         SIMDE_FLOAT32_C( -378.07), SIMDE_FLOAT32_C(  160.57),
                         SIMDE_FLOAT32_C(  591.32), SIMDE_FLOAT32_C(  -15.88)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -230.96), SIMDE_FLOAT32_C(-1259.48),
                         SIMDE_FLOAT32_C(  893.29), SIMDE_FLOAT32_C( -494.17),
                         SIMDE_FLOAT32_C( -217.50), SIMDE_FLOAT32_C(  575.44),
                         SIMDE_FLOAT32_C(  125.40), SIMDE_FLOAT32_C(  896.80)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -397.87), SIMDE_FLOAT32_C(  582.70),
                         SIMDE_FLOAT32_C(  728.77), SIMDE_FLOAT32_C(  563.76),
                         SIMDE_FLOAT32_C( -874.44), SIMDE_FLOAT32_C( -323.73),
                         SIMDE_FLOAT32_C(  191.14), SIMDE_FLOAT32_C( -425.30)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  398.85), SIMDE_FLOAT32_C(  435.48),
                         SIMDE_FLOAT32_C( -736.85), SIMDE_FLOAT32_C( -251.61),
                         SIMDE_FLOAT32_C(  363.70), SIMDE_FLOAT32_C( -850.74),
                         SIMDE_FLOAT32_C(  513.62), SIMDE_FLOAT32_C(  893.23)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  834.33), SIMDE_FLOAT32_C( -988.46),
                         SIMDE_FLOAT32_C(  184.83), SIMDE_FLOAT32_C( 1292.53),
                         SIMDE_FLOAT32_C( -487.04), SIMDE_FLOAT32_C( 1406.85),
                         SIMDE_FLOAT32_C(-1198.17), SIMDE_FLOAT32_C( -234.16)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -659.61), SIMDE_FLOAT32_C( -996.22),
                         SIMDE_FLOAT32_C(  426.97), SIMDE_FLOAT32_C(   60.91),
                         SIMDE_FLOAT32_C(  175.17), SIMDE_FLOAT32_C(  226.61),
                         SIMDE_FLOAT32_C(  234.99), SIMDE_FLOAT32_C(  755.38)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -152.71), SIMDE_FLOAT32_C(  857.34),
                         SIMDE_FLOAT32_C(  403.84), SIMDE_FLOAT32_C( -862.22),
                         SIMDE_FLOAT32_C(  782.97), SIMDE_FLOAT32_C(  437.87),
                         SIMDE_FLOAT32_C(  825.47), SIMDE_FLOAT32_C(  915.28)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  704.63), SIMDE_FLOAT32_C( -458.38),
                         SIMDE_FLOAT32_C(-1655.83), SIMDE_FLOAT32_C(  487.88),
                         SIMDE_FLOAT32_C( 1220.84), SIMDE_FLOAT32_C( 1740.75),
                         SIMDE_FLOAT32_C(  401.78), SIMDE_FLOAT32_C(  990.37)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -564.13), SIMDE_FLOAT32_C( -973.32),
                         SIMDE_FLOAT32_C(  233.13), SIMDE_FLOAT32_C(  504.79),
                         SIMDE_FLOAT32_C(  857.55), SIMDE_FLOAT32_C(  275.11),
                         SIMDE_FLOAT32_C(  643.61), SIMDE_FLOAT32_C(  -70.12)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -709.38), SIMDE_FLOAT32_C(  310.06),
                         SIMDE_FLOAT32_C( -793.34), SIMDE_FLOAT32_C( -947.00),
                         SIMDE_FLOAT32_C( -974.52), SIMDE_FLOAT32_C(  878.25),
                         SIMDE_FLOAT32_C( -856.10), SIMDE_FLOAT32_C(  529.04)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -399.32), SIMDE_FLOAT32_C(-1740.34),
                         SIMDE_FLOAT32_C(-1537.45), SIMDE_FLOAT32_C(  737.92),
                         SIMDE_FLOAT32_C(  -96.27), SIMDE_FLOAT32_C( -327.06),
                         SIMDE_FLOAT32_C( 1132.66), SIMDE_FLOAT32_C(  573.49)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  733.99), SIMDE_FLOAT32_C( -737.47),
                         SIMDE_FLOAT32_C( -603.71), SIMDE_FLOAT32_C(  863.52),
                         SIMDE_FLOAT32_C( -639.50), SIMDE_FLOAT32_C(  474.16),
                         SIMDE_FLOAT32_C(  816.39), SIMDE_FLOAT32_C(   75.56)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  412.95), SIMDE_FLOAT32_C(  396.26),
                         SIMDE_FLOAT32_C(  519.43), SIMDE_FLOAT32_C( -413.53),
                         SIMDE_FLOAT32_C( -676.69), SIMDE_FLOAT32_C( -335.15),
                         SIMDE_FLOAT32_C(  961.37), SIMDE_FLOAT32_C(  820.10)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  809.21), SIMDE_FLOAT32_C(  105.90),
                         SIMDE_FLOAT32_C(   -3.48), SIMDE_FLOAT32_C(  259.81),
                         SIMDE_FLOAT32_C(-1011.84), SIMDE_FLOAT32_C( 1781.47),
                         SIMDE_FLOAT32_C( -165.34), SIMDE_FLOAT32_C(  891.95)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -149.16), SIMDE_FLOAT32_C( -430.29),
                         SIMDE_FLOAT32_C( -817.18), SIMDE_FLOAT32_C(  272.68),
                         SIMDE_FLOAT32_C( -899.55), SIMDE_FLOAT32_C( -654.95),
                         SIMDE_FLOAT32_C(  148.93), SIMDE_FLOAT32_C(  957.05)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -940.60), SIMDE_FLOAT32_C(  528.45),
                         SIMDE_FLOAT32_C(  574.67), SIMDE_FLOAT32_C(  993.90),
                         SIMDE_FLOAT32_C( -532.80), SIMDE_FLOAT32_C( -214.29),
                         SIMDE_FLOAT32_C( -506.86), SIMDE_FLOAT32_C(  389.73)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -412.15), SIMDE_FLOAT32_C( 1568.57),
                         SIMDE_FLOAT32_C( -579.45), SIMDE_FLOAT32_C( -544.50),
                         SIMDE_FLOAT32_C( -747.09), SIMDE_FLOAT32_C( -117.13),
                         SIMDE_FLOAT32_C(-1554.50), SIMDE_FLOAT32_C( 1105.98)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -426.98), SIMDE_FLOAT32_C(  653.68),
                         SIMDE_FLOAT32_C(  854.01), SIMDE_FLOAT32_C( -871.75),
                         SIMDE_FLOAT32_C(   60.41), SIMDE_FLOAT32_C(  197.76),
                         SIMDE_FLOAT32_C( -611.16), SIMDE_FLOAT32_C(  848.76)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  243.99), SIMDE_FLOAT32_C( -967.54),
                         SIMDE_FLOAT32_C(  893.59), SIMDE_FLOAT32_C( -630.65),
                         SIMDE_FLOAT32_C( -132.65), SIMDE_FLOAT32_C( -434.90),
                         SIMDE_FLOAT32_C( -516.97), SIMDE_FLOAT32_C(  151.24)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -723.55), SIMDE_FLOAT32_C(  262.94),
                         SIMDE_FLOAT32_C(  226.70), SIMDE_FLOAT32_C(  -17.74),
                         SIMDE_FLOAT32_C( -567.55), SIMDE_FLOAT32_C( -365.73),
                         SIMDE_FLOAT32_C(  258.17), SIMDE_FLOAT32_C(  237.60)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256 r = simde_mm256_hadd_ps(test_vec[i].a, test_vec[i].b);
    simde_assert_m256_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_hadd_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256d a;
    simde__m256d b;
    simde__m256d r;
  } test_vec[8] = {
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -436.68), SIMDE_FLOAT64_C(  480.99),
                         SIMDE_FLOAT64_C( -278.34), SIMDE_FLOAT64_C(  588.89)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  130.14), SIMDE_FLOAT64_C( -927.67),
                         SIMDE_FLOAT64_C( -646.84), SIMDE_FLOAT64_C(  150.94)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -797.53), SIMDE_FLOAT64_C(   44.31),
                         SIMDE_FLOAT64_C( -495.90), SIMDE_FLOAT64_C(  310.55)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -433.18), SIMDE_FLOAT64_C(  708.48),
                         SIMDE_FLOAT64_C(  534.86), SIMDE_FLOAT64_C( -929.94)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  826.52), SIMDE_FLOAT64_C(   36.50),
                         SIMDE_FLOAT64_C(  561.99), SIMDE_FLOAT64_C( -293.03)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  863.02), SIMDE_FLOAT64_C(  275.30),
                         SIMDE_FLOAT64_C(  268.96), SIMDE_FLOAT64_C( -395.08)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  255.04), SIMDE_FLOAT64_C( -637.84),
                         SIMDE_FLOAT64_C( -513.11), SIMDE_FLOAT64_C( -599.83)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -910.36), SIMDE_FLOAT64_C( -799.15),
                         SIMDE_FLOAT64_C( -982.23), SIMDE_FLOAT64_C( -206.95)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(-1709.51), SIMDE_FLOAT64_C( -382.80),
                         SIMDE_FLOAT64_C(-1189.18), SIMDE_FLOAT64_C(-1112.94)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  149.87), SIMDE_FLOAT64_C(  274.56),
                         SIMDE_FLOAT64_C(  400.10), SIMDE_FLOAT64_C(  410.40)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  883.42), SIMDE_FLOAT64_C(   46.03),
                         SIMDE_FLOAT64_C( -600.38), SIMDE_FLOAT64_C(  131.34)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  929.45), SIMDE_FLOAT64_C(  424.43),
                         SIMDE_FLOAT64_C( -469.04), SIMDE_FLOAT64_C(  810.50)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -461.17), SIMDE_FLOAT64_C( -757.61),
                         SIMDE_FLOAT64_C( -114.45), SIMDE_FLOAT64_C(  853.48)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  397.09), SIMDE_FLOAT64_C( -444.66),
                         SIMDE_FLOAT64_C( -909.26), SIMDE_FLOAT64_C(  102.16)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  -47.57), SIMDE_FLOAT64_C(-1218.78),
                         SIMDE_FLOAT64_C( -807.10), SIMDE_FLOAT64_C(  739.03)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -703.10), SIMDE_FLOAT64_C( -547.05),
                         SIMDE_FLOAT64_C( -158.62), SIMDE_FLOAT64_C( -256.70)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  137.64), SIMDE_FLOAT64_C( -342.68),
                         SIMDE_FLOAT64_C(  619.75), SIMDE_FLOAT64_C(  498.04)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -205.04), SIMDE_FLOAT64_C(-1250.15),
                         SIMDE_FLOAT64_C( 1117.79), SIMDE_FLOAT64_C( -415.32)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -818.29), SIMDE_FLOAT64_C(  196.32),
                         SIMDE_FLOAT64_C( -434.03), SIMDE_FLOAT64_C(   36.18)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -181.91), SIMDE_FLOAT64_C(  587.12),
                         SIMDE_FLOAT64_C( -318.37), SIMDE_FLOAT64_C(  -24.13)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  405.21), SIMDE_FLOAT64_C( -621.97),
                         SIMDE_FLOAT64_C( -342.50), SIMDE_FLOAT64_C( -397.85)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  129.06), SIMDE_FLOAT64_C( -240.83),
                         SIMDE_FLOAT64_C( -486.28), SIMDE_FLOAT64_C(  630.75)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  679.75), SIMDE_FLOAT64_C(  -37.94),
                         SIMDE_FLOAT64_C(  761.33), SIMDE_FLOAT64_C( -837.74)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  641.81), SIMDE_FLOAT64_C( -111.77),
                         SIMDE_FLOAT64_C(  -76.41), SIMDE_FLOAT64_C(  144.47)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256d r = simde_mm256_hadd_pd(test_vec[i].a, test_vec[i].b);
    simde_assert_m256d_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_hsub_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde__m256 b;
    simde__m256 r;
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -183.85), SIMDE_FLOAT32_C(  905.07),
                         SIMDE_FLOAT32_C( -962.47), SIMDE_FLOAT32_C(  739.25),
                         SIMDE_FLOAT32_C(   13.54), SIMDE_FLOAT32_C( -172.40),
                         SIMDE_FLOAT32_C(  456.21), SIMDE_FLOAT32_C(  164.33)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  959.87), SIMDE_FLOAT32_C(  500.02),
                         SIMDE_FLOAT32_C( -991.36), SIMDE_FLOAT32_C(  373.08),
                         SIMDE_FLOAT32_C( -962.56), SIMDE_FLOAT32_C( -502.91),
                         SIMDE_FLOAT32_C( -108.93), SIMDE_FLOAT32_C(  403.37)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -459.85), SIMDE_FLOAT32_C( 1364.44),
                         SIMDE_FLOAT32_C( 1088.92), SIMDE_FLOAT32_C( 1701.72),
                         SIMDE_FLOAT32_C(  459.65), SIMDE_FLOAT32_C(  512.30),
                         SIMDE_FLOAT32_C( -185.94), SIMDE_FLOAT32_C( -291.88)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  716.55), SIMDE_FLOAT32_C( -798.82),
                         SIMDE_FLOAT32_C(  -17.12), SIMDE_FLOAT32_C(  981.07),
                         SIMDE_FLOAT32_C( -241.05), SIMDE_FLOAT32_C(  266.35),
                         SIMDE_FLOAT32_C(  140.17), SIMDE_FLOAT32_C(  285.86)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  835.80), SIMDE_FLOAT32_C(  802.76),
                         SIMDE_FLOAT32_C( -745.28), SIMDE_FLOAT32_C( -228.38),
                         SIMDE_FLOAT32_C(  -44.09), SIMDE_FLOAT32_C(  991.15),
                         SIMDE_FLOAT32_C(  461.60), SIMDE_FLOAT32_C(   89.29)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  -33.04), SIMDE_FLOAT32_C(  516.90),
                         SIMDE_FLOAT32_C(-1515.37), SIMDE_FLOAT32_C(  998.19),
                         SIMDE_FLOAT32_C( 1035.24), SIMDE_FLOAT32_C( -372.31),
                         SIMDE_FLOAT32_C(  507.40), SIMDE_FLOAT32_C(  145.69)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -323.55), SIMDE_FLOAT32_C( -835.05),
                         SIMDE_FLOAT32_C( -869.80), SIMDE_FLOAT32_C( -771.34),
                         SIMDE_FLOAT32_C( -342.71), SIMDE_FLOAT32_C(  374.92),
                         SIMDE_FLOAT32_C( -998.95), SIMDE_FLOAT32_C(   85.31)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -235.37), SIMDE_FLOAT32_C( -740.75),
                         SIMDE_FLOAT32_C(  568.96), SIMDE_FLOAT32_C(  984.74),
                         SIMDE_FLOAT32_C(  344.48), SIMDE_FLOAT32_C( -384.09),
                         SIMDE_FLOAT32_C( -746.69), SIMDE_FLOAT32_C(  666.35)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -505.38), SIMDE_FLOAT32_C(  415.78),
                         SIMDE_FLOAT32_C( -511.50), SIMDE_FLOAT32_C(   98.46),
                         SIMDE_FLOAT32_C( -728.57), SIMDE_FLOAT32_C( 1413.04),
                         SIMDE_FLOAT32_C(  717.63), SIMDE_FLOAT32_C( 1084.26)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  685.93), SIMDE_FLOAT32_C(  492.23),
                         SIMDE_FLOAT32_C(  668.17), SIMDE_FLOAT32_C( -421.85),
                         SIMDE_FLOAT32_C(  -93.75), SIMDE_FLOAT32_C( -819.96),
                         SIMDE_FLOAT32_C( -246.22), SIMDE_FLOAT32_C( -823.51)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  304.04), SIMDE_FLOAT32_C( -843.07),
                         SIMDE_FLOAT32_C( -204.07), SIMDE_FLOAT32_C( -879.53),
                         SIMDE_FLOAT32_C(  -83.04), SIMDE_FLOAT32_C( -516.58),
                         SIMDE_FLOAT32_C(  600.96), SIMDE_FLOAT32_C(   84.13)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(-1147.11), SIMDE_FLOAT32_C( -675.46),
                         SIMDE_FLOAT32_C( -193.70), SIMDE_FLOAT32_C(-1090.02),
                         SIMDE_FLOAT32_C( -433.54), SIMDE_FLOAT32_C( -516.83),
                         SIMDE_FLOAT32_C( -726.21), SIMDE_FLOAT32_C( -577.29)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  492.05), SIMDE_FLOAT32_C( -121.48),
                         SIMDE_FLOAT32_C(  197.17), SIMDE_FLOAT32_C(  108.83),
                         SIMDE_FLOAT32_C( -910.74), SIMDE_FLOAT32_C( -610.63),
                         SIMDE_FLOAT32_C( -510.98), SIMDE_FLOAT32_C(  996.81)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -210.55), SIMDE_FLOAT32_C(  321.75),
                         SIMDE_FLOAT32_C( -949.93), SIMDE_FLOAT32_C(  547.84),
                         SIMDE_FLOAT32_C(  133.08), SIMDE_FLOAT32_C( -303.40),
                         SIMDE_FLOAT32_C(   47.44), SIMDE_FLOAT32_C( -236.50)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  532.30), SIMDE_FLOAT32_C( 1497.77),
                         SIMDE_FLOAT32_C( -613.53), SIMDE_FLOAT32_C(  -88.34),
                         SIMDE_FLOAT32_C( -436.48), SIMDE_FLOAT32_C( -283.94),
                         SIMDE_FLOAT32_C(  300.11), SIMDE_FLOAT32_C( 1507.79)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  204.77), SIMDE_FLOAT32_C( -920.82),
                         SIMDE_FLOAT32_C( -807.55), SIMDE_FLOAT32_C(  138.87),
                         SIMDE_FLOAT32_C(   34.09), SIMDE_FLOAT32_C( -826.98),
                         SIMDE_FLOAT32_C( -567.48), SIMDE_FLOAT32_C(  943.56)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  -46.97), SIMDE_FLOAT32_C(  474.05),
                         SIMDE_FLOAT32_C(  -64.19), SIMDE_FLOAT32_C( -945.80),
                         SIMDE_FLOAT32_C( -873.08), SIMDE_FLOAT32_C( -569.02),
                         SIMDE_FLOAT32_C( -630.19), SIMDE_FLOAT32_C( -681.68)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  521.02), SIMDE_FLOAT32_C( -881.61),
                         SIMDE_FLOAT32_C(-1125.59), SIMDE_FLOAT32_C(  946.42),
                         SIMDE_FLOAT32_C(  304.06), SIMDE_FLOAT32_C(  -51.49),
                         SIMDE_FLOAT32_C( -861.07), SIMDE_FLOAT32_C( 1511.04)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  470.38), SIMDE_FLOAT32_C( -693.79),
                         SIMDE_FLOAT32_C( -843.14), SIMDE_FLOAT32_C( -640.08),
                         SIMDE_FLOAT32_C(  950.30), SIMDE_FLOAT32_C(  582.04),
                         SIMDE_FLOAT32_C( -585.94), SIMDE_FLOAT32_C(  175.69)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   45.69), SIMDE_FLOAT32_C(   38.77),
                         SIMDE_FLOAT32_C(  194.04), SIMDE_FLOAT32_C(  410.12),
                         SIMDE_FLOAT32_C(  -28.08), SIMDE_FLOAT32_C( -596.23),
                         SIMDE_FLOAT32_C(  -38.68), SIMDE_FLOAT32_C( -731.17)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   -6.92), SIMDE_FLOAT32_C(  216.08),
                         SIMDE_FLOAT32_C(-1164.17), SIMDE_FLOAT32_C(  203.06),
                         SIMDE_FLOAT32_C( -568.15), SIMDE_FLOAT32_C( -692.49),
                         SIMDE_FLOAT32_C( -368.26), SIMDE_FLOAT32_C(  761.63)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -171.77), SIMDE_FLOAT32_C( -878.69),
                         SIMDE_FLOAT32_C( -337.47), SIMDE_FLOAT32_C( -864.26),
                         SIMDE_FLOAT32_C(  976.73), SIMDE_FLOAT32_C(  253.08),
                         SIMDE_FLOAT32_C(  134.24), SIMDE_FLOAT32_C( -737.89)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  167.53), SIMDE_FLOAT32_C( -453.33),
                         SIMDE_FLOAT32_C(   11.70), SIMDE_FLOAT32_C(  471.07),
                         SIMDE_FLOAT32_C( -269.64), SIMDE_FLOAT32_C(  547.27),
                         SIMDE_FLOAT32_C( -313.69), SIMDE_FLOAT32_C( -333.24)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -620.86), SIMDE_FLOAT32_C(  459.37),
                         SIMDE_FLOAT32_C( -706.92), SIMDE_FLOAT32_C( -526.79),
                         SIMDE_FLOAT32_C(  816.91), SIMDE_FLOAT32_C(  -19.55),
                         SIMDE_FLOAT32_C( -723.65), SIMDE_FLOAT32_C( -872.13)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256 r = simde_mm256_hsub_ps(test_vec[i].a, test_vec[i].b);
    simde_assert_m256_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_hsub_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256d a;
    simde__m256d b;
    simde__m256d r;
  } test_vec[8] = {
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -762.69), SIMDE_FLOAT64_C(  237.58),
                         SIMDE_FLOAT64_C(  832.53), SIMDE_FLOAT64_C(  -18.37)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  974.95), SIMDE_FLOAT64_C(  -69.86),
                         SIMDE_FLOAT64_C(   78.29), SIMDE_FLOAT64_C( -156.35)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(-1044.81), SIMDE_FLOAT64_C( 1000.27),
                         SIMDE_FLOAT64_C( -234.64), SIMDE_FLOAT64_C( -850.90)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  220.65), SIMDE_FLOAT64_C( -139.75),
                         SIMDE_FLOAT64_C( -707.34), SIMDE_FLOAT64_C( -798.76)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  397.80), SIMDE_FLOAT64_C( -497.83),
                         SIMDE_FLOAT64_C(  717.31), SIMDE_FLOAT64_C( -807.72)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -895.63), SIMDE_FLOAT64_C( -360.40),
                         SIMDE_FLOAT64_C(-1525.03), SIMDE_FLOAT64_C(  -91.42)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  105.63), SIMDE_FLOAT64_C(  306.00),
                         SIMDE_FLOAT64_C(  281.00), SIMDE_FLOAT64_C(  310.89)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -325.57), SIMDE_FLOAT64_C(  534.52),
                         SIMDE_FLOAT64_C(  987.26), SIMDE_FLOAT64_C(  787.06)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  860.09), SIMDE_FLOAT64_C(  200.37),
                         SIMDE_FLOAT64_C( -200.20), SIMDE_FLOAT64_C(   29.89)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  967.71), SIMDE_FLOAT64_C( -641.51),
                         SIMDE_FLOAT64_C( -759.32), SIMDE_FLOAT64_C(  -97.44)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  348.76), SIMDE_FLOAT64_C( -255.68),
                         SIMDE_FLOAT64_C(  982.70), SIMDE_FLOAT64_C(  155.49)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -604.44), SIMDE_FLOAT64_C(-1609.22),
                         SIMDE_FLOAT64_C( -827.21), SIMDE_FLOAT64_C(  661.88)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  679.95), SIMDE_FLOAT64_C( -269.56),
                         SIMDE_FLOAT64_C( -481.42), SIMDE_FLOAT64_C(  919.16)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   -2.64), SIMDE_FLOAT64_C(  468.75),
                         SIMDE_FLOAT64_C(  -36.44), SIMDE_FLOAT64_C(  441.73)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  471.39), SIMDE_FLOAT64_C( -949.51),
                         SIMDE_FLOAT64_C(  478.17), SIMDE_FLOAT64_C( 1400.58)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -496.34), SIMDE_FLOAT64_C(  144.53),
                         SIMDE_FLOAT64_C(   -0.78), SIMDE_FLOAT64_C(  -49.70)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  551.16), SIMDE_FLOAT64_C(    1.32),
                         SIMDE_FLOAT64_C( -388.16), SIMDE_FLOAT64_C(  219.25)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -549.84), SIMDE_FLOAT64_C(  640.87),
                         SIMDE_FLOAT64_C(  607.41), SIMDE_FLOAT64_C(  -48.92)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  -33.11), SIMDE_FLOAT64_C( -186.08),
                         SIMDE_FLOAT64_C(  701.92), SIMDE_FLOAT64_C(   14.26)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   92.65), SIMDE_FLOAT64_C( -100.54),
                         SIMDE_FLOAT64_C( -271.34), SIMDE_FLOAT64_C(  -61.14)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -193.19), SIMDE_FLOAT64_C( -152.97),
                         SIMDE_FLOAT64_C(  210.20), SIMDE_FLOAT64_C( -687.66)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  116.05), SIMDE_FLOAT64_C( -582.94),
                         SIMDE_FLOAT64_C(   -9.93), SIMDE_FLOAT64_C( -395.51)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  109.95), SIMDE_FLOAT64_C( -493.57),
                         SIMDE_FLOAT64_C(  927.71), SIMDE_FLOAT64_C(   40.21)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -603.52), SIMDE_FLOAT64_C( -698.99),
                         SIMDE_FLOAT64_C( -887.50), SIMDE_FLOAT64_C( -385.58)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256d r = simde_mm256_hsub_pd(test_vec[i].a, test_vec[i].b);
    simde_assert_m256d_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_dp_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde__m256 b;
    simde__m256 r;
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   -505.73), SIMDE_FLOAT32_C(   -137.42),
                         SIMDE_FLOAT32_C(     17.33), SIMDE_FLOAT32_C(    756.92),
                         SIMDE_FLOAT32_C(   -935.43), SIMDE_FLOAT32_C(    966.58),
                         SIMDE_FLOAT32_C(   -542.20), SIMDE_FLOAT32_C(   -986.95)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   -727.11), SIMDE_FLOAT32_C(     41.36),
                         SIMDE_FLOAT32_C(   -966.84), SIMDE_FLOAT32_C(    -80.50),
                         SIMDE_FLOAT32_C(    623.90), SIMDE_FLOAT32_C(   -996.55),
                         SIMDE_FLOAT32_C(   -173.15), SIMDE_FLOAT32_C(   -230.46)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -16755.34), SIMDE_FLOAT32_C( -16755.34),
                         SIMDE_FLOAT32_C( -16755.34), SIMDE_FLOAT32_C( -16755.34),
                         SIMDE_FLOAT32_C(  93881.93), SIMDE_FLOAT32_C(  93881.93),
                         SIMDE_FLOAT32_C(  93881.93), SIMDE_FLOAT32_C(  93881.93)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(    203.19), SIMDE_FLOAT32_C(   -301.86),
                         SIMDE_FLOAT32_C(   -510.29), SIMDE_FLOAT32_C(   -548.13),
                         SIMDE_FLOAT32_C(    769.15), SIMDE_FLOAT32_C(    758.71),
                         SIMDE_FLOAT32_C(    788.95), SIMDE_FLOAT32_C(   -308.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(    -93.30), SIMDE_FLOAT32_C(   -209.30),
                         SIMDE_FLOAT32_C(    125.32), SIMDE_FLOAT32_C(   -995.11),
                         SIMDE_FLOAT32_C(    443.92), SIMDE_FLOAT32_C(     15.16),
                         SIMDE_FLOAT32_C(    480.88), SIMDE_FLOAT32_C(   -179.52)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -63949.54), SIMDE_FLOAT32_C( -63949.54),
                         SIMDE_FLOAT32_C( -63949.54), SIMDE_FLOAT32_C( -63949.54),
                         SIMDE_FLOAT32_C( 379390.28), SIMDE_FLOAT32_C( 379390.28),
                         SIMDE_FLOAT32_C( 379390.28), SIMDE_FLOAT32_C( 379390.28)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   -642.96), SIMDE_FLOAT32_C(    460.10),
                         SIMDE_FLOAT32_C(    365.68), SIMDE_FLOAT32_C(    149.19),
                         SIMDE_FLOAT32_C(   -863.16), SIMDE_FLOAT32_C(    539.13),
                         SIMDE_FLOAT32_C(    -10.06), SIMDE_FLOAT32_C(   -915.55)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   -102.23), SIMDE_FLOAT32_C(     63.93),
                         SIMDE_FLOAT32_C(    220.16), SIMDE_FLOAT32_C(    -95.11),
                         SIMDE_FLOAT32_C(    920.74), SIMDE_FLOAT32_C(   -798.64),
                         SIMDE_FLOAT32_C(    549.26), SIMDE_FLOAT32_C(    150.46)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  80508.11), SIMDE_FLOAT32_C(  80508.11),
                         SIMDE_FLOAT32_C(  80508.11), SIMDE_FLOAT32_C(  80508.11),
                         SIMDE_FLOAT32_C(  -5525.56), SIMDE_FLOAT32_C(  -5525.56),
                         SIMDE_FLOAT32_C(  -5525.56), SIMDE_FLOAT32_C(  -5525.56)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   -135.78), SIMDE_FLOAT32_C(   -796.33),
                         SIMDE_FLOAT32_C(   -449.54), SIMDE_FLOAT32_C(   -938.34),
                         SIMDE_FLOAT32_C(    393.31), SIMDE_FLOAT32_C(   -848.57),
                         SIMDE_FLOAT32_C(   -577.93), SIMDE_FLOAT32_C(   -905.86)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(     36.84), SIMDE_FLOAT32_C(    187.09),
                         SIMDE_FLOAT32_C(   -980.80), SIMDE_FLOAT32_C(   -813.89),
                         SIMDE_FLOAT32_C(   -648.02), SIMDE_FLOAT32_C(     86.79),
                         SIMDE_FLOAT32_C(    527.03), SIMDE_FLOAT32_C(   -592.02)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( 440908.84), SIMDE_FLOAT32_C( 440908.84),
                         SIMDE_FLOAT32_C( 440908.84), SIMDE_FLOAT32_C( 440908.84),
                         SIMDE_FLOAT32_C(-304586.47), SIMDE_FLOAT32_C(-304586.47),
                         SIMDE_FLOAT32_C(-304586.47), SIMDE_FLOAT32_C(-304586.47)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(     74.94), SIMDE_FLOAT32_C(    503.91),
                         SIMDE_FLOAT32_C(   -375.34), SIMDE_FLOAT32_C(   -743.13),
                         SIMDE_FLOAT32_C(    569.57), SIMDE_FLOAT32_C(    343.31),
                         SIMDE_FLOAT32_C(    -63.75), SIMDE_FLOAT32_C(   -543.95)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   -655.40), SIMDE_FLOAT32_C(   -172.92),
                         SIMDE_FLOAT32_C(    342.45), SIMDE_FLOAT32_C(    357.80),
                         SIMDE_FLOAT32_C(    265.80), SIMDE_FLOAT32_C(   -306.65),
                         SIMDE_FLOAT32_C(      8.98), SIMDE_FLOAT32_C(    608.49)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(-128535.19), SIMDE_FLOAT32_C(-128535.19),
                         SIMDE_FLOAT32_C(-128535.19), SIMDE_FLOAT32_C(-128535.19),
                         SIMDE_FLOAT32_C(   -572.47), SIMDE_FLOAT32_C(   -572.47),
                         SIMDE_FLOAT32_C(   -572.47), SIMDE_FLOAT32_C(   -572.47)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(    691.92), SIMDE_FLOAT32_C(   -222.27),
                         SIMDE_FLOAT32_C(   -447.07), SIMDE_FLOAT32_C(    147.51),
                         SIMDE_FLOAT32_C(    537.10), SIMDE_FLOAT32_C(    171.81),
                         SIMDE_FLOAT32_C(    347.32), SIMDE_FLOAT32_C(   -960.39)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(    144.97), SIMDE_FLOAT32_C(   -282.53),
                         SIMDE_FLOAT32_C(    612.87), SIMDE_FLOAT32_C(   -406.95),
                         SIMDE_FLOAT32_C(   -724.51), SIMDE_FLOAT32_C(   -908.13),
                         SIMDE_FLOAT32_C(    448.37), SIMDE_FLOAT32_C(   -713.68)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(-273995.78), SIMDE_FLOAT32_C(-273995.78),
                         SIMDE_FLOAT32_C(-273995.78), SIMDE_FLOAT32_C(-273995.78),
                         SIMDE_FLOAT32_C( 155727.88), SIMDE_FLOAT32_C( 155727.88),
                         SIMDE_FLOAT32_C( 155727.88), SIMDE_FLOAT32_C( 155727.88)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   -208.78), SIMDE_FLOAT32_C(    929.10),
                         SIMDE_FLOAT32_C(   -272.86), SIMDE_FLOAT32_C(     86.66),
                         SIMDE_FLOAT32_C(   -744.06), SIMDE_FLOAT32_C(   -881.86),
                         SIMDE_FLOAT32_C(   -663.16), SIMDE_FLOAT32_C(    193.59)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(    -31.12), SIMDE_FLOAT32_C(   -303.48),
                         SIMDE_FLOAT32_C(   -758.68), SIMDE_FLOAT32_C(    -57.97),
                         SIMDE_FLOAT32_C(    -16.19), SIMDE_FLOAT32_C(    187.47),
                         SIMDE_FLOAT32_C(     13.98), SIMDE_FLOAT32_C(    577.97)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( 207013.41), SIMDE_FLOAT32_C( 207013.41),
                         SIMDE_FLOAT32_C( 207013.41), SIMDE_FLOAT32_C( 207013.41),
                         SIMDE_FLOAT32_C(  -9270.98), SIMDE_FLOAT32_C(  -9270.98),
                         SIMDE_FLOAT32_C(  -9270.98), SIMDE_FLOAT32_C(  -9270.98)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(    696.37), SIMDE_FLOAT32_C(    300.52),
                         SIMDE_FLOAT32_C(   -476.62), SIMDE_FLOAT32_C(    523.01),
                         SIMDE_FLOAT32_C(   -147.94), SIMDE_FLOAT32_C(   -993.31),
                         SIMDE_FLOAT32_C(    910.70), SIMDE_FLOAT32_C(   -650.05)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   -298.13), SIMDE_FLOAT32_C(   -528.10),
                         SIMDE_FLOAT32_C(    371.86), SIMDE_FLOAT32_C(    -93.70),
                         SIMDE_FLOAT32_C(   -396.01), SIMDE_FLOAT32_C(   -319.70),
                         SIMDE_FLOAT32_C(   -350.31), SIMDE_FLOAT32_C(   -580.49)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(-177235.91), SIMDE_FLOAT32_C(-177235.91),
                         SIMDE_FLOAT32_C(-177235.91), SIMDE_FLOAT32_C(-177235.91),
                         SIMDE_FLOAT32_C(-319027.31), SIMDE_FLOAT32_C(-319027.31),
                         SIMDE_FLOAT32_C(-319027.31), SIMDE_FLOAT32_C(-319027.31)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256 r = simde_mm256_dp_ps(test_vec[i].a, test_vec[i].b, 47);
    simde_assert_m256_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_extract_epi32(SIMDE_MUNIT_TEST_ARGS) {
  simde__m256i a;

  a = simde_mm256_set_epi32(INT32_C( 1385655883), INT32_C(-1710235670), INT32_C( 1840319559), INT32_C(   46971468),
                            INT32_C(  543693501), INT32_C( 1301344915), INT32_C( 1566637023), INT32_C( 2143093505));
  simde_assert_equal_i32(simde_mm256_extract_epi32(a, 0), INT32_C(2143093505));

  a = simde_mm256_set_epi32(INT32_C( -318872645), INT32_C(  154450085), INT32_C(  940983410), INT32_C(-2131037397),
                            INT32_C( 1379124831), INT32_C(  546028595), INT32_C(  -61508185), INT32_C( 1543937407));
  simde_assert_equal_i32(simde_mm256_extract_epi32(a, 1), INT32_C(-61508185));

  a = simde_mm256_set_epi32(INT32_C(-1821994577), INT32_C( 1502812176), INT32_C( -436334344), INT32_C( 2003643735),
                            INT32_C(-1707163842), INT32_C(-1393484615), INT32_C(-1517380673), INT32_C( -785551131));
  simde_assert_equal_i32(simde_mm256_extract_epi32(a, 2), INT32_C(-1393484615));

  a = simde_mm256_set_epi32(INT32_C(-1342559050), INT32_C( 1280753378), INT32_C(  519553994), INT32_C(  134336686),
                            INT32_C(-1696266450), INT32_C( 1521778870), INT32_C(-1336686564), INT32_C( -138601679));
  simde_assert_equal_i32(simde_mm256_extract_epi32(a, 3), INT32_C(-1696266450));

  a = simde_mm256_set_epi32(INT32_C( -346178226), INT32_C(-1487718780), INT32_C( 1522880003), INT32_C(  588601981),
                            INT32_C( 1931111095), INT32_C(-1466649812), INT32_C(-1669730912), INT32_C(  257973424));
  simde_assert_equal_i32(simde_mm256_extract_epi32(a, 4), INT32_C(588601981));

  a = simde_mm256_set_epi32(INT32_C(  564328837), INT32_C(  600105992), INT32_C(-1245299261), INT32_C(  186243465),
                            INT32_C( 1677067524), INT32_C( -306576008), INT32_C(-1101353897), INT32_C(  733243889));
  simde_assert_equal_i32(simde_mm256_extract_epi32(a, 5), INT32_C(-1245299261));

  a = simde_mm256_set_epi32(INT32_C( -460169306), INT32_C( -732910055), INT32_C(  973235428), INT32_C(  784780564),
                            INT32_C( -944171968), INT32_C(-1846057571), INT32_C( 1068840758), INT32_C(  786857160));
  simde_assert_equal_i32(simde_mm256_extract_epi32(a, 6), INT32_C(-732910055));

  a = simde_mm256_set_epi32(INT32_C( -541300758), INT32_C(-2119881925), INT32_C(-1597449913), INT32_C(  489702841),
                            INT32_C(-1364763213), INT32_C(  217047214), INT32_C( 1964050600), INT32_C(-1022338452));
  simde_assert_equal_i32(simde_mm256_extract_epi32(a, 7), INT32_C(-541300758));

  return 0;
}

static int
test_simde_mm256_extract_epi64(SIMDE_MUNIT_TEST_ARGS) {
  simde__m256i a;

  a = simde_mm256_set_epi64x(INT64_C(-4660489839809071463), INT64_C(-3275104097342830593),
                             INT64_C(-7646437287554588382), INT64_C(-1616723671742758177));
  simde_assert_equal_i64(simde_mm256_extract_epi64(a, 0), INT64_C(-1616723671742758177));

  a = simde_mm256_set_epi64x(INT64_C(-4654112182052362730), INT64_C( 4380015427737745916),
                             INT64_C(-2237548103057162518), INT64_C( -717271117564457282));
  simde_assert_equal_i64(simde_mm256_extract_epi64(a, 1), INT64_C(-2237548103057162518));

  a = simde_mm256_set_epi64x(INT64_C(-9053768942501696029), INT64_C(  -11082930357956064),
                             INT64_C( 4721540626264374149), INT64_C(-2904931686008463967));
  simde_assert_equal_i64(simde_mm256_extract_epi64(a, 2), INT64_C(  -11082930357956064));

  a = simde_mm256_set_epi64x(INT64_C(  952352888602265092), INT64_C(-6100868528376933823),
                             INT64_C(-6435628201550193122), INT64_C(-1473382845492258957));
  simde_assert_equal_i64(simde_mm256_extract_epi64(a, 3), INT64_C(  952352888602265092));

  a = simde_mm256_set_epi64x(INT64_C( 3571656271242113686), INT64_C(-4496934129483038288),
                             INT64_C(-1076704560171997551), INT64_C( 3873627956598886953));
  simde_assert_equal_i64(simde_mm256_extract_epi64(a, 0), INT64_C( 3873627956598886953));

  a = simde_mm256_set_epi64x(INT64_C( 4706661489617163532), INT64_C( 5127697303613520544),
                             INT64_C(-7455940824973292748), INT64_C(-7733027913451150656));
  simde_assert_equal_i64(simde_mm256_extract_epi64(a, 1), INT64_C(-7455940824973292748));

  a = simde_mm256_set_epi64x(INT64_C( 5538080490384191196), INT64_C( -631116641013180065),
                             INT64_C(-8091873078648501156), INT64_C(-6139846631858294273));
  simde_assert_equal_i64(simde_mm256_extract_epi64(a, 2), INT64_C( -631116641013180065));

  a = simde_mm256_set_epi64x(INT64_C(-5169157996131687226), INT64_C(-8345143279822783157),
                             INT64_C(   28110904629261106), INT64_C(-2611039926221160636));
  simde_assert_equal_i64(simde_mm256_extract_epi64(a, 3), INT64_C(-5169157996131687226));

  return 0;
}

static int
test_simde_mm256_insert_epi8(SIMDE_MUNIT_TEST_ARGS) {
  simde__m256i a, r, e;

  a = simde_mm256_set_epi8(INT8_C(   2), INT8_C(  84), INT8_C(   6), INT8_C( -83),
                           INT8_C( 118), INT8_C(  45), INT8_C(  46), INT8_C( -44),
                           INT8_C(-115), INT8_C( -99), INT8_C(  35), INT8_C(  32),
                           INT8_C( 111), INT8_C(  68), INT8_C( 103), INT8_C(   7),
                           INT8_C( -73), INT8_C(-111), INT8_C(-113), INT8_C(  29),
                           INT8_C(  25), INT8_C( 114), INT8_C(-122), INT8_C(  38),
                           INT8_C( -96), INT8_C( 114), INT8_C(  39), INT8_C(  74),
                           INT8_C(  99), INT8_C(  11), INT8_C(  76), INT8_C(  56));
  r = simde_mm256_insert_epi8(a, INT8_C(-3),  5);
  e = simde_mm256_set_epi8(INT8_C(   2), INT8_C(  84), INT8_C(   6), INT8_C( -83),
                           INT8_C( 118), INT8_C(  45), INT8_C(  46), INT8_C( -44),
                           INT8_C(-115), INT8_C( -99), INT8_C(  35), INT8_C(  32),
                           INT8_C( 111), INT8_C(  68), INT8_C( 103), INT8_C(   7),
                           INT8_C( -73), INT8_C(-111), INT8_C(-113), INT8_C(  29),
                           INT8_C(  25), INT8_C( 114), INT8_C(-122), INT8_C(  38),
                           INT8_C( -96), INT8_C( 114), INT8_C(  -3), INT8_C(  74),
                           INT8_C(  99), INT8_C(  11), INT8_C(  76), INT8_C(  56));
  simde_assert_m256i_i8(r, ==, e);

  a = simde_mm256_set_epi8(INT8_C(-119), INT8_C(-118), INT8_C(  60), INT8_C(  31),
                           INT8_C(-126), INT8_C( -54), INT8_C(  51), INT8_C(-114),
                           INT8_C(-128), INT8_C( -32), INT8_C(  25), INT8_C( 116),
                           INT8_C( 103), INT8_C( -83), INT8_C(  64), INT8_C(  29),
                           INT8_C( -50), INT8_C( -55), INT8_C( 114), INT8_C(  10),
                           INT8_C(  44), INT8_C(-111), INT8_C(-114), INT8_C( -60),
                           INT8_C(-128), INT8_C( -48), INT8_C(  15), INT8_C(  67),
                           INT8_C( -42), INT8_C( -49), INT8_C(  99), INT8_C( 114));
  r = simde_mm256_insert_epi8(a, INT8_C(59),  9);
  e = simde_mm256_set_epi8(INT8_C(-119), INT8_C(-118), INT8_C(  60), INT8_C(  31),
                           INT8_C(-126), INT8_C( -54), INT8_C(  51), INT8_C(-114),
                           INT8_C(-128), INT8_C( -32), INT8_C(  25), INT8_C( 116),
                           INT8_C( 103), INT8_C( -83), INT8_C(  64), INT8_C(  29),
                           INT8_C( -50), INT8_C( -55), INT8_C( 114), INT8_C(  10),
                           INT8_C(  44), INT8_C(-111), INT8_C(  59), INT8_C( -60),
                           INT8_C(-128), INT8_C( -48), INT8_C(  15), INT8_C(  67),
                           INT8_C( -42), INT8_C( -49), INT8_C(  99), INT8_C( 114));
  simde_assert_m256i_i8(r, ==, e);

  a = simde_mm256_set_epi8(INT8_C( -89), INT8_C(  90), INT8_C(-119), INT8_C( -38),
                           INT8_C( -50), INT8_C(  -6), INT8_C(-121), INT8_C( -93),
                           INT8_C(  88), INT8_C(  83), INT8_C( -93), INT8_C( -96),
                           INT8_C( -77), INT8_C( -84), INT8_C(-110), INT8_C( -16),
                           INT8_C( -67), INT8_C(  18), INT8_C(  25), INT8_C( -38),
                           INT8_C( -60), INT8_C(  59), INT8_C( 108), INT8_C( -22),
                           INT8_C(  39), INT8_C( 101), INT8_C(   5), INT8_C( 105),
                           INT8_C(  45), INT8_C( -43), INT8_C(  87), INT8_C(  73));
  r = simde_mm256_insert_epi8(a, INT8_C(-38),  6);
  e = simde_mm256_set_epi8(INT8_C( -89), INT8_C(  90), INT8_C(-119), INT8_C( -38),
                           INT8_C( -50), INT8_C(  -6), INT8_C(-121), INT8_C( -93),
                           INT8_C(  88), INT8_C(  83), INT8_C( -93), INT8_C( -96),
                           INT8_C( -77), INT8_C( -84), INT8_C(-110), INT8_C( -16),
                           INT8_C( -67), INT8_C(  18), INT8_C(  25), INT8_C( -38),
                           INT8_C( -60), INT8_C(  59), INT8_C( 108), INT8_C( -22),
                           INT8_C(  39), INT8_C( -38), INT8_C(   5), INT8_C( 105),
                           INT8_C(  45), INT8_C( -43), INT8_C(  87), INT8_C(  73));
  simde_assert_m256i_i8(r, ==, e);

  a = simde_mm256_set_epi8(INT8_C( 109), INT8_C(  -4), INT8_C(  42), INT8_C(  13),
                           INT8_C(  50), INT8_C(  75), INT8_C( 107), INT8_C(  56),
                           INT8_C(  48), INT8_C( -32), INT8_C(  -5), INT8_C( -89),
                           INT8_C(-120), INT8_C(  97), INT8_C(  24), INT8_C(  11),
                           INT8_C( -12), INT8_C( -17), INT8_C(  64), INT8_C(  44),
                           INT8_C(  42), INT8_C(  13), INT8_C(   7), INT8_C(  86),
                           INT8_C( -64), INT8_C(   9), INT8_C( -71), INT8_C( -23),
                           INT8_C(  74), INT8_C(  49), INT8_C( 126), INT8_C(  43));
  r = simde_mm256_insert_epi8(a, INT8_C(39), 10);
  e = simde_mm256_set_epi8(INT8_C( 109), INT8_C(  -4), INT8_C(  42), INT8_C(  13),
                           INT8_C(  50), INT8_C(  75), INT8_C( 107), INT8_C(  56),
                           INT8_C(  48), INT8_C( -32), INT8_C(  -5), INT8_C( -89),
                           INT8_C(-120), INT8_C(  97), INT8_C(  24), INT8_C(  11),
                           INT8_C( -12), INT8_C( -17), INT8_C(  64), INT8_C(  44),
                           INT8_C(  42), INT8_C(  39), INT8_C(   7), INT8_C(  86),
                           INT8_C( -64), INT8_C(   9), INT8_C( -71), INT8_C( -23),
                           INT8_C(  74), INT8_C(  49), INT8_C( 126), INT8_C(  43));
  simde_assert_m256i_i8(r, ==, e);

  a = simde_mm256_set_epi8(INT8_C(  19), INT8_C( -38), INT8_C(  78), INT8_C( -23),
                           INT8_C(  62), INT8_C( -68), INT8_C(-102), INT8_C(  63),
                           INT8_C( 124), INT8_C(-113), INT8_C( -21), INT8_C( 108),
                           INT8_C( -68), INT8_C( -75), INT8_C(  51), INT8_C( 124),
                           INT8_C(  76), INT8_C( -65), INT8_C( -80), INT8_C(  56),
                           INT8_C(  41), INT8_C(  59), INT8_C( 106), INT8_C(  -7),
                           INT8_C( -87), INT8_C(  20), INT8_C(   3), INT8_C( 106),
                           INT8_C(  72), INT8_C(-115), INT8_C(-103), INT8_C(  26));
  r = simde_mm256_insert_epi8(a, INT8_C(-114), 10);
  e = simde_mm256_set_epi8(INT8_C(  19), INT8_C( -38), INT8_C(  78), INT8_C( -23),
                           INT8_C(  62), INT8_C( -68), INT8_C(-102), INT8_C(  63),
                           INT8_C( 124), INT8_C(-113), INT8_C( -21), INT8_C( 108),
                           INT8_C( -68), INT8_C( -75), INT8_C(  51), INT8_C( 124),
                           INT8_C(  76), INT8_C( -65), INT8_C( -80), INT8_C(  56),
                           INT8_C(  41), INT8_C(-114), INT8_C( 106), INT8_C(  -7),
                           INT8_C( -87), INT8_C(  20), INT8_C(   3), INT8_C( 106),
                           INT8_C(  72), INT8_C(-115), INT8_C(-103), INT8_C(  26));
  simde_assert_m256i_i8(r, ==, e);

  a = simde_mm256_set_epi8(INT8_C( 124), INT8_C(  -4), INT8_C( -73), INT8_C( 108),
                           INT8_C(  66), INT8_C( -17), INT8_C(-121), INT8_C( 100),
                           INT8_C( 124), INT8_C( -94), INT8_C(  17), INT8_C( -78),
                           INT8_C( -99), INT8_C(  31), INT8_C(  28), INT8_C(   7),
                           INT8_C(-108), INT8_C( -43), INT8_C( -23), INT8_C( 104),
                           INT8_C( 122), INT8_C(  61), INT8_C( -93), INT8_C(-102),
                           INT8_C( 125), INT8_C( -79), INT8_C(  24), INT8_C(  49),
                           INT8_C(   9), INT8_C( -93), INT8_C(  36), INT8_C( -74));
  r = simde_mm256_insert_epi8(a, INT8_C(-65),  2);
  e = simde_mm256_set_epi8(INT8_C( 124), INT8_C(  -4), INT8_C( -73), INT8_C( 108),
                           INT8_C(  66), INT8_C( -17), INT8_C(-121), INT8_C( 100),
                           INT8_C( 124), INT8_C( -94), INT8_C(  17), INT8_C( -78),
                           INT8_C( -99), INT8_C(  31), INT8_C(  28), INT8_C(   7),
                           INT8_C(-108), INT8_C( -43), INT8_C( -23), INT8_C( 104),
                           INT8_C( 122), INT8_C(  61), INT8_C( -93), INT8_C(-102),
                           INT8_C( 125), INT8_C( -79), INT8_C(  24), INT8_C(  49),
                           INT8_C(   9), INT8_C( -65), INT8_C(  36), INT8_C( -74));
  simde_assert_m256i_i8(r, ==, e);

  a = simde_mm256_set_epi8(INT8_C(-100), INT8_C(  10), INT8_C(  87), INT8_C( -57),
                           INT8_C( -89), INT8_C( -66), INT8_C( -32), INT8_C( 104),
                           INT8_C(  66), INT8_C( -81), INT8_C( -94), INT8_C(  71),
                           INT8_C(  67), INT8_C( 108), INT8_C( -88), INT8_C(  53),
                           INT8_C( 108), INT8_C( -39), INT8_C( -93), INT8_C(  -2),
                           INT8_C(  93), INT8_C(  67), INT8_C( -85), INT8_C( -42),
                           INT8_C(  28), INT8_C( -64), INT8_C(  83), INT8_C(  -9),
                           INT8_C( -95), INT8_C(  36), INT8_C(  44), INT8_C( 112));
  r = simde_mm256_insert_epi8(a, INT8_C(58),  8);
  e = simde_mm256_set_epi8(INT8_C(-100), INT8_C(  10), INT8_C(  87), INT8_C( -57),
                           INT8_C( -89), INT8_C( -66), INT8_C( -32), INT8_C( 104),
                           INT8_C(  66), INT8_C( -81), INT8_C( -94), INT8_C(  71),
                           INT8_C(  67), INT8_C( 108), INT8_C( -88), INT8_C(  53),
                           INT8_C( 108), INT8_C( -39), INT8_C( -93), INT8_C(  -2),
                           INT8_C(  93), INT8_C(  67), INT8_C( -85), INT8_C(  58),
                           INT8_C(  28), INT8_C( -64), INT8_C(  83), INT8_C(  -9),
                           INT8_C( -95), INT8_C(  36), INT8_C(  44), INT8_C( 112));
  simde_assert_m256i_i8(r, ==, e);

  a = simde_mm256_set_epi8(INT8_C( -16), INT8_C( -47), INT8_C( -77), INT8_C(  42),
                           INT8_C(  89), INT8_C(  -7), INT8_C( -62), INT8_C(  45),
                           INT8_C( -28), INT8_C(  34), INT8_C( -59), INT8_C(  -9),
                           INT8_C( -38), INT8_C(-118), INT8_C(  83), INT8_C(  59),
                           INT8_C( -16), INT8_C(  34), INT8_C( -64), INT8_C(  16),
                           INT8_C( -15), INT8_C( -28), INT8_C(  47), INT8_C(  10),
                           INT8_C(-112), INT8_C( -37), INT8_C(  71), INT8_C( -84),
                           INT8_C( -78), INT8_C( -81), INT8_C(  40), INT8_C( -98));
  r = simde_mm256_insert_epi8(a, INT8_C(121),  7);
  e = simde_mm256_set_epi8(INT8_C( -16), INT8_C( -47), INT8_C( -77), INT8_C(  42),
                           INT8_C(  89), INT8_C(  -7), INT8_C( -62), INT8_C(  45),
                           INT8_C( -28), INT8_C(  34), INT8_C( -59), INT8_C(  -9),
                           INT8_C( -38), INT8_C(-118), INT8_C(  83), INT8_C(  59),
                           INT8_C( -16), INT8_C(  34), INT8_C( -64), INT8_C(  16),
                           INT8_C( -15), INT8_C( -28), INT8_C(  47), INT8_C(  10),
                           INT8_C( 121), INT8_C( -37), INT8_C(  71), INT8_C( -84),
                           INT8_C( -78), INT8_C( -81), INT8_C(  40), INT8_C( -98));
  simde_assert_m256i_i8(r, ==, e);

  return 0;
}

static int
test_simde_mm256_insert_epi16(SIMDE_MUNIT_TEST_ARGS) {
  simde__m256i a, r, e;

  a = simde_mm256_set_epi16(INT16_C(-21602), INT16_C( 27671), INT16_C(-26514), INT16_C( 32139),
                            INT16_C( 27553), INT16_C(  3389), INT16_C( 26164), INT16_C(  3268),
                            INT16_C( -3948), INT16_C( 26700), INT16_C( 31313), INT16_C( 27327),
                            INT16_C(-25076), INT16_C( -6473), INT16_C(-27908), INT16_C(-18876));
  r = simde_mm256_insert_epi16(a, INT16_C(13157),  5);
  e = simde_mm256_set_epi16(INT16_C(-21602), INT16_C( 27671), INT16_C(-26514), INT16_C( 32139),
                            INT16_C( 27553), INT16_C(  3389), INT16_C( 26164), INT16_C(  3268),
                            INT16_C( -3948), INT16_C( 26700), INT16_C( 13157), INT16_C( 27327),
                            INT16_C(-25076), INT16_C( -6473), INT16_C(-27908), INT16_C(-18876));
  simde_assert_m256i_i16(r, ==, e);

  a = simde_mm256_set_epi16(INT16_C(-15739), INT16_C(-22477), INT16_C( 24105), INT16_C(  1501),
                            INT16_C(-14518), INT16_C( 18176), INT16_C( 14482), INT16_C( 20288),
                            INT16_C(-15586), INT16_C( 12200), INT16_C( -9527), INT16_C( -9462),
                            INT16_C(-20273), INT16_C(-22514), INT16_C(  1070), INT16_C(-15309));
  r = simde_mm256_insert_epi16(a, INT16_C(369),  3);
  e = simde_mm256_set_epi16(INT16_C(-15739), INT16_C(-22477), INT16_C( 24105), INT16_C(  1501),
                            INT16_C(-14518), INT16_C( 18176), INT16_C( 14482), INT16_C( 20288),
                            INT16_C(-15586), INT16_C( 12200), INT16_C( -9527), INT16_C( -9462),
                            INT16_C(   369), INT16_C(-22514), INT16_C(  1070), INT16_C(-15309));
  simde_assert_m256i_i16(r, ==, e);

  a = simde_mm256_set_epi16(INT16_C(-20578), INT16_C( 31339), INT16_C(-21867), INT16_C(  6148),
                            INT16_C(-32342), INT16_C(-12751), INT16_C(-22422), INT16_C( 12556),
                            INT16_C(-31526), INT16_C(-24860), INT16_C( 25156), INT16_C( -4916),
                            INT16_C(-20990), INT16_C(-13542), INT16_C(-25587), INT16_C(-20477));
  r = simde_mm256_insert_epi16(a, INT16_C(-32428),  1);
  e = simde_mm256_set_epi16(INT16_C(-20578), INT16_C( 31339), INT16_C(-21867), INT16_C(  6148),
                            INT16_C(-32342), INT16_C(-12751), INT16_C(-22422), INT16_C( 12556),
                            INT16_C(-31526), INT16_C(-24860), INT16_C( 25156), INT16_C( -4916),
                            INT16_C(-20990), INT16_C(-13542), INT16_C(-32428), INT16_C(-20477));
  simde_assert_m256i_i16(r, ==, e);

  a = simde_mm256_set_epi16(INT16_C( 16682), INT16_C(  9974), INT16_C( -6779), INT16_C(  1747),
                            INT16_C(-26827), INT16_C(-32182), INT16_C( 17867), INT16_C(-23355),
                            INT16_C( 15404), INT16_C( -2091), INT16_C(  -560), INT16_C(-24442),
                            INT16_C( 12274), INT16_C(-19942), INT16_C(  8401), INT16_C(-15722));
  r = simde_mm256_insert_epi16(a, INT16_C(16950), 12);
  e = simde_mm256_set_epi16(INT16_C( 16682), INT16_C(  9974), INT16_C( -6779), INT16_C( 16950),
                            INT16_C(-26827), INT16_C(-32182), INT16_C( 17867), INT16_C(-23355),
                            INT16_C( 15404), INT16_C( -2091), INT16_C(  -560), INT16_C(-24442),
                            INT16_C( 12274), INT16_C(-19942), INT16_C(  8401), INT16_C(-15722));
  simde_assert_m256i_i16(r, ==, e);

  a = simde_mm256_set_epi16(INT16_C( 31205), INT16_C( 25676), INT16_C(  7342), INT16_C(  4880),
                            INT16_C( -8533), INT16_C(-32080), INT16_C( -7595), INT16_C(-22500),
                            INT16_C(-10840), INT16_C( 19996), INT16_C( -4449), INT16_C(-31416),
                            INT16_C(-26476), INT16_C( -3822), INT16_C( 13156), INT16_C(-26200));
  r = simde_mm256_insert_epi16(a, INT16_C(27229), 15);
  e = simde_mm256_set_epi16(INT16_C( 27229), INT16_C( 25676), INT16_C(  7342), INT16_C(  4880),
                            INT16_C( -8533), INT16_C(-32080), INT16_C( -7595), INT16_C(-22500),
                            INT16_C(-10840), INT16_C( 19996), INT16_C( -4449), INT16_C(-31416),
                            INT16_C(-26476), INT16_C( -3822), INT16_C( 13156), INT16_C(-26200));
  simde_assert_m256i_i16(r, ==, e);

  a = simde_mm256_set_epi16(INT16_C( -8749), INT16_C(-27202), INT16_C(-11704), INT16_C(    52),
                            INT16_C(-10454), INT16_C( -3314), INT16_C( -8238), INT16_C(-18856),
                            INT16_C(  6163), INT16_C(-27363), INT16_C(  1816), INT16_C(-31045),
                            INT16_C( 28943), INT16_C(-22635), INT16_C(  1291), INT16_C(-31630));
  r = simde_mm256_insert_epi16(a, INT16_C(25149),  9);
  e = simde_mm256_set_epi16(INT16_C( -8749), INT16_C(-27202), INT16_C(-11704), INT16_C(    52),
                            INT16_C(-10454), INT16_C( -3314), INT16_C( 25149), INT16_C(-18856),
                            INT16_C(  6163), INT16_C(-27363), INT16_C(  1816), INT16_C(-31045),
                            INT16_C( 28943), INT16_C(-22635), INT16_C(  1291), INT16_C(-31630));
  simde_assert_m256i_i16(r, ==, e);

  a = simde_mm256_set_epi16(INT16_C( -5789), INT16_C( 32645), INT16_C(-25474), INT16_C( -6052),
                            INT16_C( 30501), INT16_C( 13572), INT16_C( 32362), INT16_C( 31220),
                            INT16_C( 21812), INT16_C( 21730), INT16_C(-10684), INT16_C(-29591),
                            INT16_C( 23321), INT16_C(  4014), INT16_C( 18929), INT16_C(  -646));
  r = simde_mm256_insert_epi16(a, INT16_C(10486), 11);
  e = simde_mm256_set_epi16(INT16_C( -5789), INT16_C( 32645), INT16_C(-25474), INT16_C( -6052),
                            INT16_C( 10486), INT16_C( 13572), INT16_C( 32362), INT16_C( 31220),
                            INT16_C( 21812), INT16_C( 21730), INT16_C(-10684), INT16_C(-29591),
                            INT16_C( 23321), INT16_C(  4014), INT16_C( 18929), INT16_C(  -646));
  simde_assert_m256i_i16(r, ==, e);

  a = simde_mm256_set_epi16(INT16_C( -2271), INT16_C(  8016), INT16_C( 26327), INT16_C( 27397),
                            INT16_C( 19036), INT16_C( 25193), INT16_C(-11253), INT16_C(-15734),
                            INT16_C(  -521), INT16_C( 20581), INT16_C(-18434), INT16_C(  4365),
                            INT16_C(-18143), INT16_C( 23566), INT16_C(-32412), INT16_C(-20606));
  r = simde_mm256_insert_epi16(a, INT16_C(4940),  6);
  e = simde_mm256_set_epi16(INT16_C( -2271), INT16_C(  8016), INT16_C( 26327), INT16_C( 27397),
                            INT16_C( 19036), INT16_C( 25193), INT16_C(-11253), INT16_C(-15734),
                            INT16_C(  -521), INT16_C(  4940), INT16_C(-18434), INT16_C(  4365),
                            INT16_C(-18143), INT16_C( 23566), INT16_C(-32412), INT16_C(-20606));
  simde_assert_m256i_i16(r, ==, e);

  return 0;
}

static int
test_simde_mm256_insert_epi32(SIMDE_MUNIT_TEST_ARGS) {
  simde__m256i a, r, e;

  a = simde_mm256_set_epi32(INT32_C( 1527893980), INT32_C(  272236058), INT32_C( 1771532776), INT32_C( -527129145),
                            INT32_C(-1867900811), INT32_C( 1959964247), INT32_C( 1343894165), INT32_C( 1334695580));
  r = simde_mm256_insert_epi32(a, INT32_C( -707274869),  0);

  e = simde_mm256_set_epi32(INT32_C( 1527893980), INT32_C(  272236058), INT32_C( 1771532776), INT32_C( -527129145),
                            INT32_C(-1867900811), INT32_C( 1959964247), INT32_C( 1343894165), INT32_C( -707274869));
  simde_assert_m256i_i32(r, ==, e);

  a = simde_mm256_set_epi32(INT32_C( -661063243), INT32_C(-1710175048), INT32_C(  930876847), INT32_C(-1520459634),
                            INT32_C( -463408284), INT32_C( -440016671), INT32_C( 1321845686), INT32_C( 1111303375));
  r = simde_mm256_insert_epi32(a, INT32_C( 1750585714),  6);

  e = simde_mm256_set_epi32(INT32_C( -661063243), INT32_C( 1750585714), INT32_C(  930876847), INT32_C(-1520459634),
                            INT32_C( -463408284), INT32_C( -440016671), INT32_C( 1321845686), INT32_C( 1111303375));
  simde_assert_m256i_i32(r, ==, e);

  a = simde_mm256_set_epi32(INT32_C(  922514807), INT32_C(-1345830052), INT32_C(  578930278), INT32_C( -474805558),
                            INT32_C( 1483567706), INT32_C( 1465521628), INT32_C( 1619162073), INT32_C( -603337611));
  r = simde_mm256_insert_epi32(a, INT32_C( 1709940880),  5);

  e = simde_mm256_set_epi32(INT32_C(  922514807), INT32_C(-1345830052), INT32_C( 1709940880), INT32_C( -474805558),
                            INT32_C( 1483567706), INT32_C( 1465521628), INT32_C( 1619162073), INT32_C( -603337611));
  simde_assert_m256i_i32(r, ==, e);

  a = simde_mm256_set_epi32(INT32_C( 1682496014), INT32_C( -265998243), INT32_C( -696943616), INT32_C( -723203182),
                            INT32_C( 1593791374), INT32_C( -358344217), INT32_C(  813656782), INT32_C(   58704738));
  r = simde_mm256_insert_epi32(a, INT32_C( 1488485361),  5);

  e = simde_mm256_set_epi32(INT32_C( 1682496014), INT32_C( -265998243), INT32_C( 1488485361), INT32_C( -723203182),
                            INT32_C( 1593791374), INT32_C( -358344217), INT32_C(  813656782), INT32_C(   58704738));
  simde_assert_m256i_i32(r, ==, e);

  a = simde_mm256_set_epi32(INT32_C( 1847223436), INT32_C( -901858482), INT32_C( 1721924326), INT32_C(  291173023),
                            INT32_C(-1897007668), INT32_C(-1769936815), INT32_C(-1568319650), INT32_C(   -5176498));
  r = simde_mm256_insert_epi32(a, INT32_C(-1531789383),  1);

  e = simde_mm256_set_epi32(INT32_C( 1847223436), INT32_C( -901858482), INT32_C( 1721924326), INT32_C(  291173023),
                            INT32_C(-1897007668), INT32_C(-1769936815), INT32_C(-1531789383), INT32_C(   -5176498));
  simde_assert_m256i_i32(r, ==, e);

  a = simde_mm256_set_epi32(INT32_C(  350203051), INT32_C( -910749534), INT32_C(  265750572), INT32_C( 1641173073),
                            INT32_C( -538285717), INT32_C( -840003501), INT32_C( 1271510949), INT32_C(-1020673062));
  r = simde_mm256_insert_epi32(a, INT32_C( 1836561709),  3);

  e = simde_mm256_set_epi32(INT32_C(  350203051), INT32_C( -910749534), INT32_C(  265750572), INT32_C( 1641173073),
                            INT32_C( 1836561709), INT32_C( -840003501), INT32_C( 1271510949), INT32_C(-1020673062));
  simde_assert_m256i_i32(r, ==, e);

  a = simde_mm256_set_epi32(INT32_C(  547373175), INT32_C(-1592451622), INT32_C( 2039829911), INT32_C( -457221951),
                            INT32_C(-1618527211), INT32_C(-1978334272), INT32_C( 1765993380), INT32_C( 1580829317));
  r = simde_mm256_insert_epi32(a, INT32_C( 1732675568),  7);

  e = simde_mm256_set_epi32(INT32_C( 1732675568), INT32_C(-1592451622), INT32_C( 2039829911), INT32_C( -457221951),
                            INT32_C(-1618527211), INT32_C(-1978334272), INT32_C( 1765993380), INT32_C( 1580829317));
  simde_assert_m256i_i32(r, ==, e);

  a = simde_mm256_set_epi32(INT32_C( 1958144037), INT32_C(  549134406), INT32_C( -361892467), INT32_C( -550141532),
                            INT32_C(-2067091063), INT32_C( 1069015288), INT32_C(-1107603429), INT32_C( 1078737418));
  r = simde_mm256_insert_epi32(a, INT32_C(  896343144),  1);

  e = simde_mm256_set_epi32(INT32_C( 1958144037), INT32_C(  549134406), INT32_C( -361892467), INT32_C( -550141532),
                            INT32_C(-2067091063), INT32_C( 1069015288), INT32_C(  896343144), INT32_C( 1078737418));
  simde_assert_m256i_i32(r, ==, e);

  return 0;
}

static int
test_simde_mm256_insert_epi64(SIMDE_MUNIT_TEST_ARGS) {
  simde__m256i a, r, e;

  a = simde_mm256_set_epi64x(INT64_C(-4505752726775834758), INT64_C( 5929367822849325121),
                             INT64_C( 7859909444158050752), INT64_C( 8378794972787494426));
  r = simde_mm256_insert_epi64(a, INT64_C( 3154696592882520417),  1);
  e = simde_mm256_set_epi64x(INT64_C(-4505752726775834758), INT64_C( 5929367822849325121),
                             INT64_C( 3154696592882520417), INT64_C( 8378794972787494426));
  simde_assert_m256i_i64(r, ==, e);

  a = simde_mm256_set_epi64x(INT64_C(  396574839952628801), INT64_C( 4240491953132221671),
                             INT64_C( -278319971650278791), INT64_C( 6491233263195366023));
  r = simde_mm256_insert_epi64(a, INT64_C(-3297610962929123976),  3);
  e = simde_mm256_set_epi64x(INT64_C(-3297610962929123976), INT64_C( 4240491953132221671),
                             INT64_C( -278319971650278791), INT64_C( 6491233263195366023));
  simde_assert_m256i_i64(r, ==, e);

  a = simde_mm256_set_epi64x(INT64_C(-1728252678477676185), INT64_C( 4096939565061250649),
                             INT64_C( -899841113114403992), INT64_C( 5786373883955623560));
  r = simde_mm256_insert_epi64(a, INT64_C(-3905247737278663189),  0);
  e = simde_mm256_set_epi64x(INT64_C(-1728252678477676185), INT64_C( 4096939565061250649),
                             INT64_C( -899841113114403992), INT64_C(-3905247737278663189));
  simde_assert_m256i_i64(r, ==, e);

  a = simde_mm256_set_epi64x(INT64_C(-7506903298948604025), INT64_C(-5148494998623595939),
                             INT64_C( 1486007124617083344), INT64_C( 4658534095800830357));
  r = simde_mm256_insert_epi64(a, INT64_C(-7835784393738508471),  1);
  e = simde_mm256_set_epi64x(INT64_C(-7506903298948604025), INT64_C(-5148494998623595939),
                             INT64_C(-7835784393738508471), INT64_C( 4658534095800830357));
  simde_assert_m256i_i64(r, ==, e);

  a = simde_mm256_set_epi64x(INT64_C(-2191440769984549047), INT64_C( 3908463436719096448),
                             INT64_C( 8526354170218817669), INT64_C(-3858780869273911597));
  r = simde_mm256_insert_epi64(a, INT64_C( 4403056273253937364),  3);
  e = simde_mm256_set_epi64x(INT64_C( 4403056273253937364), INT64_C( 3908463436719096448),
                             INT64_C( 8526354170218817669), INT64_C(-3858780869273911597));
  simde_assert_m256i_i64(r, ==, e);

  a = simde_mm256_set_epi64x(INT64_C( 6661310305483280859), INT64_C(-6601747037924714764),
                             INT64_C(-1630628469313698153), INT64_C( 1161250947816487188));
  r = simde_mm256_insert_epi64(a, INT64_C(-7130294008098064663),  1);
  e = simde_mm256_set_epi64x(INT64_C( 6661310305483280859), INT64_C(-6601747037924714764),
                             INT64_C(-7130294008098064663), INT64_C( 1161250947816487188));
  simde_assert_m256i_i64(r, ==, e);

  a = simde_mm256_set_epi64x(INT64_C(  782834070832404014), INT64_C(-2125384153009736171),
                             INT64_C(-8527778016730746462), INT64_C( 3421940001003476372));
  r = simde_mm256_insert_epi64(a, INT64_C( 3833121528156448342),  2);
  e = simde_mm256_set_epi64x(INT64_C(  782834070832404014), INT64_C( 3833121528156448342),
                             INT64_C(-8527778016730746462), INT64_C( 3421940001003476372));
  simde_assert_m256i_i64(r, ==, e);

  a = simde_mm256_set_epi64x(INT64_C( -656366593936952908), INT64_C(-1584520372107281742),
                             INT64_C( 8511510589800984870), INT64_C( 3076176925060453392));
  r = simde_mm256_insert_epi64(a, INT64_C( 7232381223726455225),  0);
  e = simde_mm256_set_epi64x(INT64_C( -656366593936952908), INT64_C(-1584520372107281742),
                             INT64_C( 8511510589800984870), INT64_C( 7232381223726455225));
  simde_assert_m256i_i64(r, ==, e);

  return 0;
}

static int
test_simde_mm256_insertf128_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde__m128 b;
    simde__m256 ra;
    simde__m256 rb;
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   57.86), SIMDE_FLOAT32_C(  900.49),
                         SIMDE_FLOAT32_C(  678.15), SIMDE_FLOAT32_C( -551.43),
                         SIMDE_FLOAT32_C(  431.88), SIMDE_FLOAT32_C( -426.33),
                         SIMDE_FLOAT32_C( -705.72), SIMDE_FLOAT32_C(  809.23)),
      simde_mm_set_ps   (SIMDE_FLOAT32_C( -625.43), SIMDE_FLOAT32_C( -829.28),
                         SIMDE_FLOAT32_C(  -42.04), SIMDE_FLOAT32_C( -643.64)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   57.86), SIMDE_FLOAT32_C(  900.49),
                         SIMDE_FLOAT32_C(  678.15), SIMDE_FLOAT32_C( -551.43),
                         SIMDE_FLOAT32_C( -625.43), SIMDE_FLOAT32_C( -829.28),
                         SIMDE_FLOAT32_C(  -42.04), SIMDE_FLOAT32_C( -643.64)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -625.43), SIMDE_FLOAT32_C( -829.28),
                         SIMDE_FLOAT32_C(  -42.04), SIMDE_FLOAT32_C( -643.64),
                         SIMDE_FLOAT32_C(  431.88), SIMDE_FLOAT32_C( -426.33),
                         SIMDE_FLOAT32_C( -705.72), SIMDE_FLOAT32_C(  809.23)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -837.79), SIMDE_FLOAT32_C(  338.83),
                         SIMDE_FLOAT32_C(  296.45), SIMDE_FLOAT32_C(  172.80),
                         SIMDE_FLOAT32_C(  220.09), SIMDE_FLOAT32_C(  171.14),
                         SIMDE_FLOAT32_C(  492.30), SIMDE_FLOAT32_C( -224.75)),
      simde_mm_set_ps   (SIMDE_FLOAT32_C( -479.01), SIMDE_FLOAT32_C(  686.13),
                         SIMDE_FLOAT32_C( -518.69), SIMDE_FLOAT32_C( -606.38)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -837.79), SIMDE_FLOAT32_C(  338.83),
                         SIMDE_FLOAT32_C(  296.45), SIMDE_FLOAT32_C(  172.80),
                         SIMDE_FLOAT32_C( -479.01), SIMDE_FLOAT32_C(  686.13),
                         SIMDE_FLOAT32_C( -518.69), SIMDE_FLOAT32_C( -606.38)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -479.01), SIMDE_FLOAT32_C(  686.13),
                         SIMDE_FLOAT32_C( -518.69), SIMDE_FLOAT32_C( -606.38),
                         SIMDE_FLOAT32_C(  220.09), SIMDE_FLOAT32_C(  171.14),
                         SIMDE_FLOAT32_C(  492.30), SIMDE_FLOAT32_C( -224.75)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -665.08), SIMDE_FLOAT32_C( -599.25),
                         SIMDE_FLOAT32_C( -107.42), SIMDE_FLOAT32_C( -565.87),
                         SIMDE_FLOAT32_C( -588.15), SIMDE_FLOAT32_C(  906.13),
                         SIMDE_FLOAT32_C(  481.87), SIMDE_FLOAT32_C(  540.93)),
      simde_mm_set_ps   (SIMDE_FLOAT32_C(  308.44), SIMDE_FLOAT32_C( -387.39),
                         SIMDE_FLOAT32_C(  312.59), SIMDE_FLOAT32_C( -811.76)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -665.08), SIMDE_FLOAT32_C( -599.25),
                         SIMDE_FLOAT32_C( -107.42), SIMDE_FLOAT32_C( -565.87),
                         SIMDE_FLOAT32_C(  308.44), SIMDE_FLOAT32_C( -387.39),
                         SIMDE_FLOAT32_C(  312.59), SIMDE_FLOAT32_C( -811.76)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  308.44), SIMDE_FLOAT32_C( -387.39),
                         SIMDE_FLOAT32_C(  312.59), SIMDE_FLOAT32_C( -811.76),
                         SIMDE_FLOAT32_C( -588.15), SIMDE_FLOAT32_C(  906.13),
                         SIMDE_FLOAT32_C(  481.87), SIMDE_FLOAT32_C(  540.93)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -499.97), SIMDE_FLOAT32_C( -474.63),
                         SIMDE_FLOAT32_C( -449.49), SIMDE_FLOAT32_C(  941.31),
                         SIMDE_FLOAT32_C( -102.84), SIMDE_FLOAT32_C( -165.66),
                         SIMDE_FLOAT32_C( -680.74), SIMDE_FLOAT32_C(   98.73)),
      simde_mm_set_ps   (SIMDE_FLOAT32_C( -600.34), SIMDE_FLOAT32_C(  321.05),
                         SIMDE_FLOAT32_C(  438.78), SIMDE_FLOAT32_C(  -70.17)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -499.97), SIMDE_FLOAT32_C( -474.63),
                         SIMDE_FLOAT32_C( -449.49), SIMDE_FLOAT32_C(  941.31),
                         SIMDE_FLOAT32_C( -600.34), SIMDE_FLOAT32_C(  321.05),
                         SIMDE_FLOAT32_C(  438.78), SIMDE_FLOAT32_C(  -70.17)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -600.34), SIMDE_FLOAT32_C(  321.05),
                         SIMDE_FLOAT32_C(  438.78), SIMDE_FLOAT32_C(  -70.17),
                         SIMDE_FLOAT32_C( -102.84), SIMDE_FLOAT32_C( -165.66),
                         SIMDE_FLOAT32_C( -680.74), SIMDE_FLOAT32_C(   98.73)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -402.57), SIMDE_FLOAT32_C( -372.27),
                         SIMDE_FLOAT32_C( -839.54), SIMDE_FLOAT32_C(  507.35),
                         SIMDE_FLOAT32_C( -596.72), SIMDE_FLOAT32_C(  333.88),
                         SIMDE_FLOAT32_C( -839.21), SIMDE_FLOAT32_C( -624.72)),
      simde_mm_set_ps   (SIMDE_FLOAT32_C( -109.04), SIMDE_FLOAT32_C( -997.63),
                         SIMDE_FLOAT32_C(  959.39), SIMDE_FLOAT32_C( -856.10)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -402.57), SIMDE_FLOAT32_C( -372.27),
                         SIMDE_FLOAT32_C( -839.54), SIMDE_FLOAT32_C(  507.35),
                         SIMDE_FLOAT32_C( -109.04), SIMDE_FLOAT32_C( -997.63),
                         SIMDE_FLOAT32_C(  959.39), SIMDE_FLOAT32_C( -856.10)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -109.04), SIMDE_FLOAT32_C( -997.63),
                         SIMDE_FLOAT32_C(  959.39), SIMDE_FLOAT32_C( -856.10),
                         SIMDE_FLOAT32_C( -596.72), SIMDE_FLOAT32_C(  333.88),
                         SIMDE_FLOAT32_C( -839.21), SIMDE_FLOAT32_C( -624.72)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -148.40), SIMDE_FLOAT32_C( -137.24),
                         SIMDE_FLOAT32_C(  665.88), SIMDE_FLOAT32_C( -239.38),
                         SIMDE_FLOAT32_C(  864.82), SIMDE_FLOAT32_C(  415.07),
                         SIMDE_FLOAT32_C(  223.96), SIMDE_FLOAT32_C(  144.96)),
      simde_mm_set_ps   (SIMDE_FLOAT32_C(  -29.35), SIMDE_FLOAT32_C( -415.61),
                         SIMDE_FLOAT32_C(  231.08), SIMDE_FLOAT32_C( -375.28)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -148.40), SIMDE_FLOAT32_C( -137.24),
                         SIMDE_FLOAT32_C(  665.88), SIMDE_FLOAT32_C( -239.38),
                         SIMDE_FLOAT32_C(  -29.35), SIMDE_FLOAT32_C( -415.61),
                         SIMDE_FLOAT32_C(  231.08), SIMDE_FLOAT32_C( -375.28)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  -29.35), SIMDE_FLOAT32_C( -415.61),
                         SIMDE_FLOAT32_C(  231.08), SIMDE_FLOAT32_C( -375.28),
                         SIMDE_FLOAT32_C(  864.82), SIMDE_FLOAT32_C(  415.07),
                         SIMDE_FLOAT32_C(  223.96), SIMDE_FLOAT32_C(  144.96)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  384.21), SIMDE_FLOAT32_C( -172.99),
                         SIMDE_FLOAT32_C( -651.42), SIMDE_FLOAT32_C(  104.60),
                         SIMDE_FLOAT32_C( -412.61), SIMDE_FLOAT32_C( -685.74),
                         SIMDE_FLOAT32_C(  349.45), SIMDE_FLOAT32_C(  431.71)),
      simde_mm_set_ps   (SIMDE_FLOAT32_C(  810.19), SIMDE_FLOAT32_C(   94.73),
                         SIMDE_FLOAT32_C(  542.66), SIMDE_FLOAT32_C(  824.78)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  384.21), SIMDE_FLOAT32_C( -172.99),
                         SIMDE_FLOAT32_C( -651.42), SIMDE_FLOAT32_C(  104.60),
                         SIMDE_FLOAT32_C(  810.19), SIMDE_FLOAT32_C(   94.73),
                         SIMDE_FLOAT32_C(  542.66), SIMDE_FLOAT32_C(  824.78)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  810.19), SIMDE_FLOAT32_C(   94.73),
                         SIMDE_FLOAT32_C(  542.66), SIMDE_FLOAT32_C(  824.78),
                         SIMDE_FLOAT32_C( -412.61), SIMDE_FLOAT32_C( -685.74),
                         SIMDE_FLOAT32_C(  349.45), SIMDE_FLOAT32_C(  431.71)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  117.02), SIMDE_FLOAT32_C(  874.06),
                         SIMDE_FLOAT32_C( -896.71), SIMDE_FLOAT32_C(  927.83),
                         SIMDE_FLOAT32_C( -471.09), SIMDE_FLOAT32_C(  907.26),
                         SIMDE_FLOAT32_C(  774.08), SIMDE_FLOAT32_C(  141.60)),
      simde_mm_set_ps   (SIMDE_FLOAT32_C(   69.32), SIMDE_FLOAT32_C(  645.62),
                         SIMDE_FLOAT32_C(  860.89), SIMDE_FLOAT32_C(  694.26)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  117.02), SIMDE_FLOAT32_C(  874.06),
                         SIMDE_FLOAT32_C( -896.71), SIMDE_FLOAT32_C(  927.83),
                         SIMDE_FLOAT32_C(   69.32), SIMDE_FLOAT32_C(  645.62),
                         SIMDE_FLOAT32_C(  860.89), SIMDE_FLOAT32_C(  694.26)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   69.32), SIMDE_FLOAT32_C(  645.62),
                         SIMDE_FLOAT32_C(  860.89), SIMDE_FLOAT32_C(  694.26),
                         SIMDE_FLOAT32_C( -471.09), SIMDE_FLOAT32_C(  907.26),
                         SIMDE_FLOAT32_C(  774.08), SIMDE_FLOAT32_C(  141.60)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256 ra = simde_mm256_insertf128_ps(test_vec[i].a, test_vec[i].b, 0);
    simde__m256 rb = simde_mm256_insertf128_ps(test_vec[i].a, test_vec[i].b, 1);
    simde_assert_m256_close(ra, test_vec[i].ra, 1);
    simde_assert_m256_close(rb, test_vec[i].rb, 1);
  }

  return 0;
}

static int
test_simde_mm256_insertf128_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256d a;
    simde__m128d b;
    simde__m256d ra;
    simde__m256d rb;
  } test_vec[8] = {
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  500.07), SIMDE_FLOAT64_C(   24.20),
                         SIMDE_FLOAT64_C( -264.31), SIMDE_FLOAT64_C(  584.01)),
      simde_mm_set_pd   (SIMDE_FLOAT64_C(  431.47), SIMDE_FLOAT64_C(  318.12)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  500.07), SIMDE_FLOAT64_C(   24.20),
                         SIMDE_FLOAT64_C(  431.47), SIMDE_FLOAT64_C(  318.12)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  431.47), SIMDE_FLOAT64_C(  318.12),
                         SIMDE_FLOAT64_C( -264.31), SIMDE_FLOAT64_C(  584.01)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  669.13), SIMDE_FLOAT64_C( -378.72),
                         SIMDE_FLOAT64_C( -204.56), SIMDE_FLOAT64_C(  289.88)),
      simde_mm_set_pd   (SIMDE_FLOAT64_C(  609.30), SIMDE_FLOAT64_C(  491.95)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  669.13), SIMDE_FLOAT64_C( -378.72),
                         SIMDE_FLOAT64_C(  609.30), SIMDE_FLOAT64_C(  491.95)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  609.30), SIMDE_FLOAT64_C(  491.95),
                         SIMDE_FLOAT64_C( -204.56), SIMDE_FLOAT64_C(  289.88)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -439.47), SIMDE_FLOAT64_C(  501.94),
                         SIMDE_FLOAT64_C( -311.14), SIMDE_FLOAT64_C( -486.50)),
      simde_mm_set_pd   (SIMDE_FLOAT64_C(  460.51), SIMDE_FLOAT64_C(  800.13)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -439.47), SIMDE_FLOAT64_C(  501.94),
                         SIMDE_FLOAT64_C(  460.51), SIMDE_FLOAT64_C(  800.13)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  460.51), SIMDE_FLOAT64_C(  800.13),
                         SIMDE_FLOAT64_C( -311.14), SIMDE_FLOAT64_C( -486.50)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -828.83), SIMDE_FLOAT64_C(  892.34),
                         SIMDE_FLOAT64_C(  849.35), SIMDE_FLOAT64_C(   71.26)),
      simde_mm_set_pd   (SIMDE_FLOAT64_C(  690.69), SIMDE_FLOAT64_C( -666.59)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -828.83), SIMDE_FLOAT64_C(  892.34),
                         SIMDE_FLOAT64_C(  690.69), SIMDE_FLOAT64_C( -666.59)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  690.69), SIMDE_FLOAT64_C( -666.59),
                         SIMDE_FLOAT64_C(  849.35), SIMDE_FLOAT64_C(   71.26)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -393.25), SIMDE_FLOAT64_C( -143.78),
                         SIMDE_FLOAT64_C(  452.34), SIMDE_FLOAT64_C(  313.17)),
      simde_mm_set_pd   (SIMDE_FLOAT64_C(    2.43), SIMDE_FLOAT64_C( -405.20)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -393.25), SIMDE_FLOAT64_C( -143.78),
                         SIMDE_FLOAT64_C(    2.43), SIMDE_FLOAT64_C( -405.20)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(    2.43), SIMDE_FLOAT64_C( -405.20),
                         SIMDE_FLOAT64_C(  452.34), SIMDE_FLOAT64_C(  313.17)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  -19.72), SIMDE_FLOAT64_C( -282.65),
                         SIMDE_FLOAT64_C( -261.63), SIMDE_FLOAT64_C( -641.13)),
      simde_mm_set_pd   (SIMDE_FLOAT64_C(  818.65), SIMDE_FLOAT64_C( -240.18)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  -19.72), SIMDE_FLOAT64_C( -282.65),
                         SIMDE_FLOAT64_C(  818.65), SIMDE_FLOAT64_C( -240.18)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  818.65), SIMDE_FLOAT64_C( -240.18),
                         SIMDE_FLOAT64_C( -261.63), SIMDE_FLOAT64_C( -641.13)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  809.87), SIMDE_FLOAT64_C(  692.31),
                         SIMDE_FLOAT64_C(  848.43), SIMDE_FLOAT64_C( -514.36)),
      simde_mm_set_pd   (SIMDE_FLOAT64_C( -330.16), SIMDE_FLOAT64_C(  670.26)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  809.87), SIMDE_FLOAT64_C(  692.31),
                         SIMDE_FLOAT64_C( -330.16), SIMDE_FLOAT64_C(  670.26)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -330.16), SIMDE_FLOAT64_C(  670.26),
                         SIMDE_FLOAT64_C(  848.43), SIMDE_FLOAT64_C( -514.36)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -917.99), SIMDE_FLOAT64_C(  637.33),
                         SIMDE_FLOAT64_C(  143.49), SIMDE_FLOAT64_C(  390.85)),
      simde_mm_set_pd   (SIMDE_FLOAT64_C( -606.83), SIMDE_FLOAT64_C(  948.25)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -917.99), SIMDE_FLOAT64_C(  637.33),
                         SIMDE_FLOAT64_C( -606.83), SIMDE_FLOAT64_C(  948.25)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -606.83), SIMDE_FLOAT64_C(  948.25),
                         SIMDE_FLOAT64_C(  143.49), SIMDE_FLOAT64_C(  390.85)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256d ra = simde_mm256_insertf128_pd(test_vec[i].a, test_vec[i].b, 0);
    simde__m256d rb = simde_mm256_insertf128_pd(test_vec[i].a, test_vec[i].b, 1);
    simde_assert_m256d_close(ra, test_vec[i].ra, 1);
    simde_assert_m256d_close(rb, test_vec[i].rb, 1);
  }

  return 0;
}

static int
test_simde_mm256_insertf128_si256(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256i a;
    simde__m128i b;
    simde__m256i ra;
    simde__m256i rb;
  } test_vec[8] = {
    { simde_mm256_set_epi32(INT32_C( 1732788931), INT32_C( -493919285), INT32_C( -171391193), INT32_C( 1397412103),
                            INT32_C( -356536147), INT32_C(-1692932708), INT32_C(-1699348696), INT32_C( -647395099)),
      simde_mm_set_epi32   (INT32_C(-1522680411), INT32_C(-1731979321), INT32_C( 1240335413), INT32_C(  201854332)),
      simde_mm256_set_epi32(INT32_C( 1732788931), INT32_C( -493919285), INT32_C( -171391193), INT32_C( 1397412103),
                            INT32_C(-1522680411), INT32_C(-1731979321), INT32_C( 1240335413), INT32_C(  201854332)),
      simde_mm256_set_epi32(INT32_C(-1522680411), INT32_C(-1731979321), INT32_C( 1240335413), INT32_C(  201854332),
                            INT32_C( -356536147), INT32_C(-1692932708), INT32_C(-1699348696), INT32_C( -647395099)) },
    { simde_mm256_set_epi32(INT32_C(-1444875329), INT32_C( 1610023191), INT32_C( -708588022), INT32_C( -172947680),
                            INT32_C(  545675582), INT32_C( 1925063203), INT32_C(  200249152), INT32_C(  925361522)),
      simde_mm_set_epi32   (INT32_C( -719778838), INT32_C( -908663617), INT32_C(-1043096582), INT32_C( 2027106265)),
      simde_mm256_set_epi32(INT32_C(-1444875329), INT32_C( 1610023191), INT32_C( -708588022), INT32_C( -172947680),
                            INT32_C( -719778838), INT32_C( -908663617), INT32_C(-1043096582), INT32_C( 2027106265)),
      simde_mm256_set_epi32(INT32_C( -719778838), INT32_C( -908663617), INT32_C(-1043096582), INT32_C( 2027106265),
                            INT32_C(  545675582), INT32_C( 1925063203), INT32_C(  200249152), INT32_C(  925361522)) },
    { simde_mm256_set_epi32(INT32_C(  819255641), INT32_C(  758383634), INT32_C( -712717178), INT32_C( 1831898363),
                            INT32_C( -652589148), INT32_C(  437505059), INT32_C(-1426201125), INT32_C(  915542579)),
      simde_mm_set_epi32   (INT32_C( 1102980249), INT32_C( 1568821342), INT32_C( 1031497605), INT32_C( 1535564672)),
      simde_mm256_set_epi32(INT32_C(  819255641), INT32_C(  758383634), INT32_C( -712717178), INT32_C( 1831898363),
                            INT32_C( 1102980249), INT32_C( 1568821342), INT32_C( 1031497605), INT32_C( 1535564672)),
      simde_mm256_set_epi32(INT32_C( 1102980249), INT32_C( 1568821342), INT32_C( 1031497605), INT32_C( 1535564672),
                            INT32_C( -652589148), INT32_C(  437505059), INT32_C(-1426201125), INT32_C(  915542579)) },
    { simde_mm256_set_epi32(INT32_C(-1576300711), INT32_C(  804080573), INT32_C(-1947930635), INT32_C( -773073118),
                            INT32_C( -708044343), INT32_C( 1025803241), INT32_C(-1542400953), INT32_C( 1513652867)),
      simde_mm_set_epi32   (INT32_C( -630903986), INT32_C( 1210274072), INT32_C(-1479627472), INT32_C( 1540958491)),
      simde_mm256_set_epi32(INT32_C(-1576300711), INT32_C(  804080573), INT32_C(-1947930635), INT32_C( -773073118),
                            INT32_C( -630903986), INT32_C( 1210274072), INT32_C(-1479627472), INT32_C( 1540958491)),
      simde_mm256_set_epi32(INT32_C( -630903986), INT32_C( 1210274072), INT32_C(-1479627472), INT32_C( 1540958491),
                            INT32_C( -708044343), INT32_C( 1025803241), INT32_C(-1542400953), INT32_C( 1513652867)) },
    { simde_mm256_set_epi32(INT32_C(-1474400259), INT32_C( 1988182849), INT32_C(-1345043070), INT32_C(-2043590369),
                            INT32_C( -792511350), INT32_C(-1919476039), INT32_C( -711077027), INT32_C(-1924737697)),
      simde_mm_set_epi32   (INT32_C(-1229154872), INT32_C( 1506932355), INT32_C(  529233496), INT32_C(  900061932)),
      simde_mm256_set_epi32(INT32_C(-1474400259), INT32_C( 1988182849), INT32_C(-1345043070), INT32_C(-2043590369),
                            INT32_C(-1229154872), INT32_C( 1506932355), INT32_C(  529233496), INT32_C(  900061932)),
      simde_mm256_set_epi32(INT32_C(-1229154872), INT32_C( 1506932355), INT32_C(  529233496), INT32_C(  900061932),
                            INT32_C( -792511350), INT32_C(-1919476039), INT32_C( -711077027), INT32_C(-1924737697)) },
    { simde_mm256_set_epi32(INT32_C( 1011012252), INT32_C(-1383487313), INT32_C( -799281089), INT32_C(-1421799289),
                            INT32_C(-1020863292), INT32_C( -870274327), INT32_C(  767506840), INT32_C(  905532467)),
      simde_mm_set_epi32   (INT32_C(  535053718), INT32_C( 1571414305), INT32_C(  327456521), INT32_C(  562021450)),
      simde_mm256_set_epi32(INT32_C( 1011012252), INT32_C(-1383487313), INT32_C( -799281089), INT32_C(-1421799289),
                            INT32_C(  535053718), INT32_C( 1571414305), INT32_C(  327456521), INT32_C(  562021450)),
      simde_mm256_set_epi32(INT32_C(  535053718), INT32_C( 1571414305), INT32_C(  327456521), INT32_C(  562021450),
                            INT32_C(-1020863292), INT32_C( -870274327), INT32_C(  767506840), INT32_C(  905532467)) },
    { simde_mm256_set_epi32(INT32_C(-1892816233), INT32_C( -258025342), INT32_C(-1474147149), INT32_C(  200557748),
                            INT32_C(  863187861), INT32_C( 1974870245), INT32_C( 1114174400), INT32_C( -122006961)),
      simde_mm_set_epi32   (INT32_C( 1960728456), INT32_C(-1615388317), INT32_C(  728614642), INT32_C(  181559353)),
      simde_mm256_set_epi32(INT32_C(-1892816233), INT32_C( -258025342), INT32_C(-1474147149), INT32_C(  200557748),
                            INT32_C( 1960728456), INT32_C(-1615388317), INT32_C(  728614642), INT32_C(  181559353)),
      simde_mm256_set_epi32(INT32_C( 1960728456), INT32_C(-1615388317), INT32_C(  728614642), INT32_C(  181559353),
                            INT32_C(  863187861), INT32_C( 1974870245), INT32_C( 1114174400), INT32_C( -122006961)) },
    { simde_mm256_set_epi32(INT32_C( -172940012), INT32_C(-1274554211), INT32_C( -855665209), INT32_C(  935611457),
                            INT32_C( -592164168), INT32_C(  945068232), INT32_C(  755470781), INT32_C(-1762512447)),
      simde_mm_set_epi32   (INT32_C(-1172491108), INT32_C(-1413112125), INT32_C(   65588240), INT32_C(-1859214337)),
      simde_mm256_set_epi32(INT32_C( -172940012), INT32_C(-1274554211), INT32_C( -855665209), INT32_C(  935611457),
                            INT32_C(-1172491108), INT32_C(-1413112125), INT32_C(   65588240), INT32_C(-1859214337)),
      simde_mm256_set_epi32(INT32_C(-1172491108), INT32_C(-1413112125), INT32_C(   65588240), INT32_C(-1859214337),
                            INT32_C( -592164168), INT32_C(  945068232), INT32_C(  755470781), INT32_C(-1762512447)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256i ra = simde_mm256_insertf128_si256(test_vec[i].a, test_vec[i].b, 0);
    simde__m256i rb = simde_mm256_insertf128_si256(test_vec[i].a, test_vec[i].b, 1);
    simde_assert_m256i_i32(ra, ==, test_vec[i].ra);
    simde_assert_m256i_i32(rb, ==, test_vec[i].rb);
  }

  return 0;
}

static int
test_simde_mm256_lddqu_si256(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256i a;
    simde__m256i r;
  } test_vec[8] = {
    { simde_mm256_set_epi32(INT32_C( -208613396), INT32_C(  972060947), INT32_C( 1079690819), INT32_C(-1629141358),
                            INT32_C( -291568998), INT32_C( -706346303), INT32_C( 1782265269), INT32_C(  663843445)),
      simde_mm256_set_epi32(INT32_C( -208613396), INT32_C(  972060947), INT32_C( 1079690819), INT32_C(-1629141358),
                            INT32_C( -291568998), INT32_C( -706346303), INT32_C( 1782265269), INT32_C(  663843445)) },
    { simde_mm256_set_epi32(INT32_C( -542385526), INT32_C(-1915647746), INT32_C(  251129882), INT32_C(  290247368),
                            INT32_C(  363399145), INT32_C(  688121978), INT32_C(  600807845), INT32_C( 1456401224)),
      simde_mm256_set_epi32(INT32_C( -542385526), INT32_C(-1915647746), INT32_C(  251129882), INT32_C(  290247368),
                            INT32_C(  363399145), INT32_C(  688121978), INT32_C(  600807845), INT32_C( 1456401224)) },
    { simde_mm256_set_epi32(INT32_C(  862880243), INT32_C(  961555167), INT32_C( -704902562), INT32_C(-2017515450),
                            INT32_C(-1906482322), INT32_C(-1699379933), INT32_C( 1894527886), INT32_C( 2049947519)),
      simde_mm256_set_epi32(INT32_C(  862880243), INT32_C(  961555167), INT32_C( -704902562), INT32_C(-2017515450),
                            INT32_C(-1906482322), INT32_C(-1699379933), INT32_C( 1894527886), INT32_C( 2049947519)) },
    { simde_mm256_set_epi32(INT32_C( 1564827830), INT32_C( -831950379), INT32_C(  815117120), INT32_C( -372364589),
                            INT32_C(-1095370522), INT32_C( 1608512554), INT32_C( 1210942744), INT32_C(  816264608)),
      simde_mm256_set_epi32(INT32_C( 1564827830), INT32_C( -831950379), INT32_C(  815117120), INT32_C( -372364589),
                            INT32_C(-1095370522), INT32_C( 1608512554), INT32_C( 1210942744), INT32_C(  816264608)) },
    { simde_mm256_set_epi32(INT32_C( 1014835213), INT32_C(  419509758), INT32_C( -940172407), INT32_C( 2075423717),
                            INT32_C( -958302313), INT32_C( 2056263130), INT32_C( -179845947), INT32_C( -487391602)),
      simde_mm256_set_epi32(INT32_C( 1014835213), INT32_C(  419509758), INT32_C( -940172407), INT32_C( 2075423717),
                            INT32_C( -958302313), INT32_C( 2056263130), INT32_C( -179845947), INT32_C( -487391602)) },
    { simde_mm256_set_epi32(INT32_C(  750230136), INT32_C(  830844077), INT32_C( 1366738463), INT32_C( 1719449608),
                            INT32_C(  953227083), INT32_C( -624601508), INT32_C( -983006206), INT32_C( 1138640848)),
      simde_mm256_set_epi32(INT32_C(  750230136), INT32_C(  830844077), INT32_C( 1366738463), INT32_C( 1719449608),
                            INT32_C(  953227083), INT32_C( -624601508), INT32_C( -983006206), INT32_C( 1138640848)) },
    { simde_mm256_set_epi32(INT32_C(-2045061394), INT32_C( -759814821), INT32_C( 1064937743), INT32_C(-1124388611),
                            INT32_C( -168818003), INT32_C( -757055903), INT32_C(-1606176919), INT32_C(  254467933)),
      simde_mm256_set_epi32(INT32_C(-2045061394), INT32_C( -759814821), INT32_C( 1064937743), INT32_C(-1124388611),
                            INT32_C( -168818003), INT32_C( -757055903), INT32_C(-1606176919), INT32_C(  254467933)) },
    { simde_mm256_set_epi32(INT32_C(-1387663431), INT32_C( 2083885974), INT32_C(  524830617), INT32_C( 1548734942),
                            INT32_C( 1378860315), INT32_C(-1149727640), INT32_C( 1373643603), INT32_C(  772353923)),
      simde_mm256_set_epi32(INT32_C(-1387663431), INT32_C( 2083885974), INT32_C(  524830617), INT32_C( 1548734942),
                            INT32_C( 1378860315), INT32_C(-1149727640), INT32_C( 1373643603), INT32_C(  772353923)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256i r = simde_mm256_lddqu_si256(&(test_vec[i].a));
    simde_assert_m256i_i32(r, ==, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_load_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde_float64 a[sizeof(simde__m256d) / sizeof(simde_float64)];
    simde__m256d r;
  } test_vec[8] = {
    { { SIMDE_FLOAT64_C( -338.67), SIMDE_FLOAT64_C(  630.84), SIMDE_FLOAT64_C( -302.19), SIMDE_FLOAT64_C( -238.77) },
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -238.77), SIMDE_FLOAT64_C( -302.19),
                         SIMDE_FLOAT64_C(  630.84), SIMDE_FLOAT64_C( -338.67)) },
    { { SIMDE_FLOAT64_C(  725.41), SIMDE_FLOAT64_C( -787.32), SIMDE_FLOAT64_C( -819.45), SIMDE_FLOAT64_C(  657.50) },
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  657.50), SIMDE_FLOAT64_C( -819.45),
                         SIMDE_FLOAT64_C( -787.32), SIMDE_FLOAT64_C(  725.41)) },
    { { SIMDE_FLOAT64_C( -519.61), SIMDE_FLOAT64_C(  692.74), SIMDE_FLOAT64_C(   96.96), SIMDE_FLOAT64_C(  -63.30) },
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  -63.30), SIMDE_FLOAT64_C(   96.96),
                         SIMDE_FLOAT64_C(  692.74), SIMDE_FLOAT64_C( -519.61)) },
    { { SIMDE_FLOAT64_C(  577.54), SIMDE_FLOAT64_C( -524.47), SIMDE_FLOAT64_C( -254.05), SIMDE_FLOAT64_C(  614.55) },
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  614.55), SIMDE_FLOAT64_C( -254.05),
                         SIMDE_FLOAT64_C( -524.47), SIMDE_FLOAT64_C(  577.54)) },
    { { SIMDE_FLOAT64_C( -608.94), SIMDE_FLOAT64_C(  345.46), SIMDE_FLOAT64_C( -476.81), SIMDE_FLOAT64_C( -532.19) },
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -532.19), SIMDE_FLOAT64_C( -476.81),
                         SIMDE_FLOAT64_C(  345.46), SIMDE_FLOAT64_C( -608.94)) },
    { { SIMDE_FLOAT64_C(   96.64), SIMDE_FLOAT64_C( -218.82), SIMDE_FLOAT64_C( -345.29), SIMDE_FLOAT64_C( -716.59) },
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -716.59), SIMDE_FLOAT64_C( -345.29),
                         SIMDE_FLOAT64_C( -218.82), SIMDE_FLOAT64_C(   96.64)) },
    { { SIMDE_FLOAT64_C(  896.80), SIMDE_FLOAT64_C( -999.47), SIMDE_FLOAT64_C(  692.69), SIMDE_FLOAT64_C(   75.34) },
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   75.34), SIMDE_FLOAT64_C(  692.69),
                         SIMDE_FLOAT64_C( -999.47), SIMDE_FLOAT64_C(  896.80)) },
    { { SIMDE_FLOAT64_C( -936.41), SIMDE_FLOAT64_C(  832.42), SIMDE_FLOAT64_C(  861.03), SIMDE_FLOAT64_C( -909.25) },
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -909.25), SIMDE_FLOAT64_C(  861.03),
                         SIMDE_FLOAT64_C(  832.42), SIMDE_FLOAT64_C( -936.41)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256d r = simde_mm256_load_pd(test_vec[i].a);
    simde_assert_m256d_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_load_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    SIMDE_ALIGN_LIKE_32(simde__m256) simde_float32 a[sizeof(simde__m256) / sizeof(simde_float32)];
    simde__m256 r;
  } test_vec[8] = {
    { { SIMDE_FLOAT32_C(  -651.15), SIMDE_FLOAT32_C(   486.09),
        SIMDE_FLOAT32_C(   809.52), SIMDE_FLOAT32_C(   897.18),
        SIMDE_FLOAT32_C(  -164.76), SIMDE_FLOAT32_C(   925.08),
        SIMDE_FLOAT32_C(  -141.17), SIMDE_FLOAT32_C(   524.77) },
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   524.77), SIMDE_FLOAT32_C(  -141.17),
                         SIMDE_FLOAT32_C(   925.08), SIMDE_FLOAT32_C(  -164.76),
                         SIMDE_FLOAT32_C(   897.18), SIMDE_FLOAT32_C(   809.52),
                         SIMDE_FLOAT32_C(   486.09), SIMDE_FLOAT32_C(  -651.15)) },
    { { SIMDE_FLOAT32_C(   154.61), SIMDE_FLOAT32_C(  -436.96),
        SIMDE_FLOAT32_C(  -109.54), SIMDE_FLOAT32_C(  -422.39),
        SIMDE_FLOAT32_C(  -113.81), SIMDE_FLOAT32_C(  -740.60),
        SIMDE_FLOAT32_C(  -581.05), SIMDE_FLOAT32_C(   534.88) },
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   534.88), SIMDE_FLOAT32_C(  -581.05),
                         SIMDE_FLOAT32_C(  -740.60), SIMDE_FLOAT32_C(  -113.81),
                         SIMDE_FLOAT32_C(  -422.39), SIMDE_FLOAT32_C(  -109.54),
                         SIMDE_FLOAT32_C(  -436.96), SIMDE_FLOAT32_C(   154.61)) },
    { { SIMDE_FLOAT32_C(   689.49), SIMDE_FLOAT32_C(  -831.99),
        SIMDE_FLOAT32_C(   872.86), SIMDE_FLOAT32_C(   554.28),
        SIMDE_FLOAT32_C(   799.73), SIMDE_FLOAT32_C(  -331.18),
        SIMDE_FLOAT32_C(   338.85), SIMDE_FLOAT32_C(   425.19) },
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   425.19), SIMDE_FLOAT32_C(   338.85),
                         SIMDE_FLOAT32_C(  -331.18), SIMDE_FLOAT32_C(   799.73),
                         SIMDE_FLOAT32_C(   554.28), SIMDE_FLOAT32_C(   872.86),
                         SIMDE_FLOAT32_C(  -831.99), SIMDE_FLOAT32_C(   689.49)) },
    { { SIMDE_FLOAT32_C(    22.85), SIMDE_FLOAT32_C(  -436.81),
        SIMDE_FLOAT32_C(   473.32), SIMDE_FLOAT32_C(   132.51),
        SIMDE_FLOAT32_C(  -295.42), SIMDE_FLOAT32_C(    74.04),
        SIMDE_FLOAT32_C(   445.74), SIMDE_FLOAT32_C(   574.68) },
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   574.68), SIMDE_FLOAT32_C(   445.74),
                         SIMDE_FLOAT32_C(    74.04), SIMDE_FLOAT32_C(  -295.42),
                         SIMDE_FLOAT32_C(   132.51), SIMDE_FLOAT32_C(   473.32),
                         SIMDE_FLOAT32_C(  -436.81), SIMDE_FLOAT32_C(    22.85)) },
    { { SIMDE_FLOAT32_C(   105.79), SIMDE_FLOAT32_C(   -21.01),
        SIMDE_FLOAT32_C(  -754.65), SIMDE_FLOAT32_C(  -355.76),
        SIMDE_FLOAT32_C(   716.76), SIMDE_FLOAT32_C(  -141.32),
        SIMDE_FLOAT32_C(   300.83), SIMDE_FLOAT32_C(   -21.61) },
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   -21.61), SIMDE_FLOAT32_C(   300.83),
                         SIMDE_FLOAT32_C(  -141.32), SIMDE_FLOAT32_C(   716.76),
                         SIMDE_FLOAT32_C(  -355.76), SIMDE_FLOAT32_C(  -754.65),
                         SIMDE_FLOAT32_C(   -21.01), SIMDE_FLOAT32_C(   105.79)) },
    { { SIMDE_FLOAT32_C(  -421.92), SIMDE_FLOAT32_C(   236.64),
        SIMDE_FLOAT32_C(  -349.60), SIMDE_FLOAT32_C(   710.87),
        SIMDE_FLOAT32_C(  -664.65), SIMDE_FLOAT32_C(    50.17),
        SIMDE_FLOAT32_C(    82.89), SIMDE_FLOAT32_C(  -240.57) },
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  -240.57), SIMDE_FLOAT32_C(    82.89),
                         SIMDE_FLOAT32_C(    50.17), SIMDE_FLOAT32_C(  -664.65),
                         SIMDE_FLOAT32_C(   710.87), SIMDE_FLOAT32_C(  -349.60),
                         SIMDE_FLOAT32_C(   236.64), SIMDE_FLOAT32_C(  -421.92)) },
    { { SIMDE_FLOAT32_C(    68.48), SIMDE_FLOAT32_C(   518.42),
        SIMDE_FLOAT32_C(   968.06), SIMDE_FLOAT32_C(  -197.34),
        SIMDE_FLOAT32_C(   351.10), SIMDE_FLOAT32_C(   113.17),
        SIMDE_FLOAT32_C(   713.12), SIMDE_FLOAT32_C(  -462.23) },
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  -462.23), SIMDE_FLOAT32_C(   713.12),
                         SIMDE_FLOAT32_C(   113.17), SIMDE_FLOAT32_C(   351.10),
                         SIMDE_FLOAT32_C(  -197.34), SIMDE_FLOAT32_C(   968.06),
                         SIMDE_FLOAT32_C(   518.42), SIMDE_FLOAT32_C(    68.48)) },
    { { SIMDE_FLOAT32_C(  -676.83), SIMDE_FLOAT32_C(   745.78),
        SIMDE_FLOAT32_C(  -436.07), SIMDE_FLOAT32_C(   808.02),
        SIMDE_FLOAT32_C(   901.47), SIMDE_FLOAT32_C(  -652.23),
        SIMDE_FLOAT32_C(  -649.97), SIMDE_FLOAT32_C(  -289.44) },
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  -289.44), SIMDE_FLOAT32_C(  -649.97),
                         SIMDE_FLOAT32_C(  -652.23), SIMDE_FLOAT32_C(   901.47),
                         SIMDE_FLOAT32_C(   808.02), SIMDE_FLOAT32_C(  -436.07),
                         SIMDE_FLOAT32_C(   745.78), SIMDE_FLOAT32_C(  -676.83)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256 r = simde_mm256_load_ps(test_vec[i].a);
    simde_assert_m256_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_load_si256(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256i a;
    simde__m256i r;
  } test_vec[8] = {
    { simde_mm256_set_epi32(INT32_C(   93433077), INT32_C(  912488615), INT32_C( -849505573), INT32_C( -538760324),
                            INT32_C(  576018808), INT32_C(  306399285), INT32_C(  761465198), INT32_C(   67322681)),
      simde_mm256_set_epi32(INT32_C(   93433077), INT32_C(  912488615), INT32_C( -849505573), INT32_C( -538760324),
                            INT32_C(  576018808), INT32_C(  306399285), INT32_C(  761465198), INT32_C(   67322681)) },
    { simde_mm256_set_epi32(INT32_C( 1661040700), INT32_C(-1506281364), INT32_C(  769308925), INT32_C( -545741767),
                            INT32_C(-1609914843), INT32_C(-1728610320), INT32_C( 1438363911), INT32_C(-1495474004)),
      simde_mm256_set_epi32(INT32_C( 1661040700), INT32_C(-1506281364), INT32_C(  769308925), INT32_C( -545741767),
                            INT32_C(-1609914843), INT32_C(-1728610320), INT32_C( 1438363911), INT32_C(-1495474004)) },
    { simde_mm256_set_epi32(INT32_C( -403469250), INT32_C( 1422195130), INT32_C( 1240509512), INT32_C(-1325093027),
                            INT32_C( 1112848703), INT32_C(  757887555), INT32_C( -808479029), INT32_C( 1524821649)),
      simde_mm256_set_epi32(INT32_C( -403469250), INT32_C( 1422195130), INT32_C( 1240509512), INT32_C(-1325093027),
                            INT32_C( 1112848703), INT32_C(  757887555), INT32_C( -808479029), INT32_C( 1524821649)) },
    { simde_mm256_set_epi32(INT32_C(  419753251), INT32_C( 1133371811), INT32_C( 1920523876), INT32_C( 1566543302),
                            INT32_C( 1608176387), INT32_C(  174748447), INT32_C(-1944132629), INT32_C(-1618941327)),
      simde_mm256_set_epi32(INT32_C(  419753251), INT32_C( 1133371811), INT32_C( 1920523876), INT32_C( 1566543302),
                            INT32_C( 1608176387), INT32_C(  174748447), INT32_C(-1944132629), INT32_C(-1618941327)) },
    { simde_mm256_set_epi32(INT32_C(  133578927), INT32_C(  -89176331), INT32_C(  533976318), INT32_C(  686005880),
                            INT32_C( 1680867737), INT32_C( -633287306), INT32_C( -911734776), INT32_C( 1028891739)),
      simde_mm256_set_epi32(INT32_C(  133578927), INT32_C(  -89176331), INT32_C(  533976318), INT32_C(  686005880),
                            INT32_C( 1680867737), INT32_C( -633287306), INT32_C( -911734776), INT32_C( 1028891739)) },
    { simde_mm256_set_epi32(INT32_C( 1968343895), INT32_C( 1991193919), INT32_C(-1412421123), INT32_C(-1413471204),
                            INT32_C( 1571538617), INT32_C(  392630938), INT32_C(   44925707), INT32_C(-1288122501)),
      simde_mm256_set_epi32(INT32_C( 1968343895), INT32_C( 1991193919), INT32_C(-1412421123), INT32_C(-1413471204),
                            INT32_C( 1571538617), INT32_C(  392630938), INT32_C(   44925707), INT32_C(-1288122501)) },
    { simde_mm256_set_epi32(INT32_C(  932954327), INT32_C(  884951875), INT32_C(-1145840174), INT32_C( 2040117874),
                            INT32_C(   39201359), INT32_C( -102892947), INT32_C(  740751736), INT32_C( 1598969461)),
      simde_mm256_set_epi32(INT32_C(  932954327), INT32_C(  884951875), INT32_C(-1145840174), INT32_C( 2040117874),
                            INT32_C(   39201359), INT32_C( -102892947), INT32_C(  740751736), INT32_C( 1598969461)) },
    { simde_mm256_set_epi32(INT32_C( -471731507), INT32_C( 1955207001), INT32_C(-1681640586), INT32_C( -304295513),
                            INT32_C( 1688427496), INT32_C(-1852849481), INT32_C( -533311004), INT32_C(  263226824)),
      simde_mm256_set_epi32(INT32_C( -471731507), INT32_C( 1955207001), INT32_C(-1681640586), INT32_C( -304295513),
                            INT32_C( 1688427496), INT32_C(-1852849481), INT32_C( -533311004), INT32_C(  263226824)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256i r = simde_mm256_load_si256(&(test_vec[i].a));
    simde_assert_m256i_i32(r, ==, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_loadu_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde_float64 a[sizeof(simde__m256d) / sizeof(simde_float64)];
    simde__m256d r;
  } test_vec[8] = {
    { { SIMDE_FLOAT64_C( -245.76), SIMDE_FLOAT64_C( -764.95),
        SIMDE_FLOAT64_C(  498.87), SIMDE_FLOAT64_C( -327.12) },
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -327.12), SIMDE_FLOAT64_C(  498.87),
                         SIMDE_FLOAT64_C( -764.95), SIMDE_FLOAT64_C( -245.76)) },
    { { SIMDE_FLOAT64_C( -747.96), SIMDE_FLOAT64_C(  887.55),
        SIMDE_FLOAT64_C( -714.24), SIMDE_FLOAT64_C(  189.85) },
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  189.85), SIMDE_FLOAT64_C( -714.24),
                         SIMDE_FLOAT64_C(  887.55), SIMDE_FLOAT64_C( -747.96)) },
    { { SIMDE_FLOAT64_C( -816.60), SIMDE_FLOAT64_C(  548.05),
        SIMDE_FLOAT64_C( -852.03), SIMDE_FLOAT64_C(  683.50) },
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  683.50), SIMDE_FLOAT64_C( -852.03),
                         SIMDE_FLOAT64_C(  548.05), SIMDE_FLOAT64_C( -816.60)) },
    { { SIMDE_FLOAT64_C(  957.12), SIMDE_FLOAT64_C(  857.15),
        SIMDE_FLOAT64_C( -289.83), SIMDE_FLOAT64_C( -642.05) },
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -642.05), SIMDE_FLOAT64_C( -289.83),
                         SIMDE_FLOAT64_C(  857.15), SIMDE_FLOAT64_C(  957.12)) },
    { { SIMDE_FLOAT64_C(  279.73), SIMDE_FLOAT64_C(   98.54),
        SIMDE_FLOAT64_C(  917.87), SIMDE_FLOAT64_C( -218.86) },
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -218.86), SIMDE_FLOAT64_C(  917.87),
                         SIMDE_FLOAT64_C(   98.54), SIMDE_FLOAT64_C(  279.73)) },
    { { SIMDE_FLOAT64_C( -705.64), SIMDE_FLOAT64_C(  -89.39),
        SIMDE_FLOAT64_C( -237.89), SIMDE_FLOAT64_C(    9.05) },
      simde_mm256_set_pd(SIMDE_FLOAT64_C(    9.05), SIMDE_FLOAT64_C( -237.89),
                         SIMDE_FLOAT64_C(  -89.39), SIMDE_FLOAT64_C( -705.64)) },
    { { SIMDE_FLOAT64_C(  359.06), SIMDE_FLOAT64_C(  630.19),
        SIMDE_FLOAT64_C( -718.76), SIMDE_FLOAT64_C(  263.72) },
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  263.72), SIMDE_FLOAT64_C( -718.76),
                         SIMDE_FLOAT64_C(  630.19), SIMDE_FLOAT64_C(  359.06)) },
    { { SIMDE_FLOAT64_C(  705.88), SIMDE_FLOAT64_C(  454.13),
        SIMDE_FLOAT64_C(  871.24), SIMDE_FLOAT64_C( -794.27) },
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -794.27), SIMDE_FLOAT64_C(  871.24),
                         SIMDE_FLOAT64_C(  454.13), SIMDE_FLOAT64_C(  705.88)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256d r = simde_mm256_load_pd(test_vec[i].a);
    simde_assert_m256d_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_loadu_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde_float32 a[sizeof(simde__m256) / sizeof(simde_float32)];
    simde__m256 r;
  } test_vec[8] = {
    { { SIMDE_FLOAT32_C(   989.38), SIMDE_FLOAT32_C(  -636.59),
        SIMDE_FLOAT32_C(   969.19), SIMDE_FLOAT32_C(   802.78),
        SIMDE_FLOAT32_C(  -677.79), SIMDE_FLOAT32_C(   669.00),
        SIMDE_FLOAT32_C(  -625.50), SIMDE_FLOAT32_C(  -971.80) },
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  -971.80), SIMDE_FLOAT32_C(  -625.50),
                         SIMDE_FLOAT32_C(   669.00), SIMDE_FLOAT32_C(  -677.79),
                         SIMDE_FLOAT32_C(   802.78), SIMDE_FLOAT32_C(   969.19),
                         SIMDE_FLOAT32_C(  -636.59), SIMDE_FLOAT32_C(   989.38)) },
    { { SIMDE_FLOAT32_C(   483.87), SIMDE_FLOAT32_C(   313.54),
        SIMDE_FLOAT32_C(  -722.81), SIMDE_FLOAT32_C(   175.58),
        SIMDE_FLOAT32_C(  -520.14), SIMDE_FLOAT32_C(  -222.39),
        SIMDE_FLOAT32_C(   889.56), SIMDE_FLOAT32_C(  -141.86) },
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  -141.86), SIMDE_FLOAT32_C(   889.56),
                         SIMDE_FLOAT32_C(  -222.39), SIMDE_FLOAT32_C(  -520.14),
                         SIMDE_FLOAT32_C(   175.58), SIMDE_FLOAT32_C(  -722.81),
                         SIMDE_FLOAT32_C(   313.54), SIMDE_FLOAT32_C(   483.87)) },
    { { SIMDE_FLOAT32_C(    28.06), SIMDE_FLOAT32_C(   709.83),
        SIMDE_FLOAT32_C(  -372.28), SIMDE_FLOAT32_C(   743.18),
        SIMDE_FLOAT32_C(  -465.26), SIMDE_FLOAT32_C(  -871.71),
        SIMDE_FLOAT32_C(   213.87), SIMDE_FLOAT32_C(    34.60) },
      simde_mm256_set_ps(SIMDE_FLOAT32_C(    34.60), SIMDE_FLOAT32_C(   213.87),
                         SIMDE_FLOAT32_C(  -871.71), SIMDE_FLOAT32_C(  -465.26),
                         SIMDE_FLOAT32_C(   743.18), SIMDE_FLOAT32_C(  -372.28),
                         SIMDE_FLOAT32_C(   709.83), SIMDE_FLOAT32_C(    28.06)) },
    { { SIMDE_FLOAT32_C(   290.56), SIMDE_FLOAT32_C(   408.42),
        SIMDE_FLOAT32_C(  -438.13), SIMDE_FLOAT32_C(  -460.46),
        SIMDE_FLOAT32_C(  -639.21), SIMDE_FLOAT32_C(  -231.83),
        SIMDE_FLOAT32_C(   590.87), SIMDE_FLOAT32_C(  -474.24) },
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  -474.24), SIMDE_FLOAT32_C(   590.87),
                         SIMDE_FLOAT32_C(  -231.83), SIMDE_FLOAT32_C(  -639.21),
                         SIMDE_FLOAT32_C(  -460.46), SIMDE_FLOAT32_C(  -438.13),
                         SIMDE_FLOAT32_C(   408.42), SIMDE_FLOAT32_C(   290.56)) },
    { { SIMDE_FLOAT32_C(  -304.73), SIMDE_FLOAT32_C(   108.23),
        SIMDE_FLOAT32_C(   -73.19), SIMDE_FLOAT32_C(   188.25),
        SIMDE_FLOAT32_C(   420.93), SIMDE_FLOAT32_C(   522.97),
        SIMDE_FLOAT32_C(   234.89), SIMDE_FLOAT32_C(  -731.34) },
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  -731.34), SIMDE_FLOAT32_C(   234.89),
                         SIMDE_FLOAT32_C(   522.97), SIMDE_FLOAT32_C(   420.93),
                         SIMDE_FLOAT32_C(   188.25), SIMDE_FLOAT32_C(   -73.19),
                         SIMDE_FLOAT32_C(   108.23), SIMDE_FLOAT32_C(  -304.73)) },
    { { SIMDE_FLOAT32_C(   708.07), SIMDE_FLOAT32_C(   370.70),
        SIMDE_FLOAT32_C(  -989.08), SIMDE_FLOAT32_C(  -602.45),
        SIMDE_FLOAT32_C(  -987.01), SIMDE_FLOAT32_C(   154.31),
        SIMDE_FLOAT32_C(  -220.43), SIMDE_FLOAT32_C(   262.39) },
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   262.39), SIMDE_FLOAT32_C(  -220.43),
                         SIMDE_FLOAT32_C(   154.31), SIMDE_FLOAT32_C(  -987.01),
                         SIMDE_FLOAT32_C(  -602.45), SIMDE_FLOAT32_C(  -989.08),
                         SIMDE_FLOAT32_C(   370.70), SIMDE_FLOAT32_C(   708.07)) },
    { { SIMDE_FLOAT32_C(   947.64), SIMDE_FLOAT32_C(   -74.77),
        SIMDE_FLOAT32_C(   902.77), SIMDE_FLOAT32_C(  -429.19),
        SIMDE_FLOAT32_C(  -305.81), SIMDE_FLOAT32_C(   762.65),
        SIMDE_FLOAT32_C(  -261.04), SIMDE_FLOAT32_C(  -156.66) },
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  -156.66), SIMDE_FLOAT32_C(  -261.04),
                         SIMDE_FLOAT32_C(   762.65), SIMDE_FLOAT32_C(  -305.81),
                         SIMDE_FLOAT32_C(  -429.19), SIMDE_FLOAT32_C(   902.77),
                         SIMDE_FLOAT32_C(   -74.77), SIMDE_FLOAT32_C(   947.64)) },
    { { SIMDE_FLOAT32_C(  -313.48), SIMDE_FLOAT32_C(  -237.38),
        SIMDE_FLOAT32_C(   572.62), SIMDE_FLOAT32_C(  -800.42),
        SIMDE_FLOAT32_C(    -6.98), SIMDE_FLOAT32_C(   968.23),
        SIMDE_FLOAT32_C(   417.54), SIMDE_FLOAT32_C(   107.47) },
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   107.47), SIMDE_FLOAT32_C(   417.54),
                         SIMDE_FLOAT32_C(   968.23), SIMDE_FLOAT32_C(    -6.98),
                         SIMDE_FLOAT32_C(  -800.42), SIMDE_FLOAT32_C(   572.62),
                         SIMDE_FLOAT32_C(  -237.38), SIMDE_FLOAT32_C(  -313.48)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256 r = simde_mm256_loadu_ps(test_vec[i].a);
    simde_assert_m256_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_loadu_si256(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256i a;
    simde__m256i r;
  } test_vec[8] = {
    { simde_mm256_set_epi32(INT32_C(   93433077), INT32_C(  912488615), INT32_C( -849505573), INT32_C( -538760324),
                            INT32_C(  576018808), INT32_C(  306399285), INT32_C(  761465198), INT32_C(   67322681)),
      simde_mm256_set_epi32(INT32_C(   93433077), INT32_C(  912488615), INT32_C( -849505573), INT32_C( -538760324),
                            INT32_C(  576018808), INT32_C(  306399285), INT32_C(  761465198), INT32_C(   67322681)) },
    { simde_mm256_set_epi32(INT32_C( 1661040700), INT32_C(-1506281364), INT32_C(  769308925), INT32_C( -545741767),
                            INT32_C(-1609914843), INT32_C(-1728610320), INT32_C( 1438363911), INT32_C(-1495474004)),
      simde_mm256_set_epi32(INT32_C( 1661040700), INT32_C(-1506281364), INT32_C(  769308925), INT32_C( -545741767),
                            INT32_C(-1609914843), INT32_C(-1728610320), INT32_C( 1438363911), INT32_C(-1495474004)) },
    { simde_mm256_set_epi32(INT32_C( -403469250), INT32_C( 1422195130), INT32_C( 1240509512), INT32_C(-1325093027),
                            INT32_C( 1112848703), INT32_C(  757887555), INT32_C( -808479029), INT32_C( 1524821649)),
      simde_mm256_set_epi32(INT32_C( -403469250), INT32_C( 1422195130), INT32_C( 1240509512), INT32_C(-1325093027),
                            INT32_C( 1112848703), INT32_C(  757887555), INT32_C( -808479029), INT32_C( 1524821649)) },
    { simde_mm256_set_epi32(INT32_C(  419753251), INT32_C( 1133371811), INT32_C( 1920523876), INT32_C( 1566543302),
                            INT32_C( 1608176387), INT32_C(  174748447), INT32_C(-1944132629), INT32_C(-1618941327)),
      simde_mm256_set_epi32(INT32_C(  419753251), INT32_C( 1133371811), INT32_C( 1920523876), INT32_C( 1566543302),
                            INT32_C( 1608176387), INT32_C(  174748447), INT32_C(-1944132629), INT32_C(-1618941327)) },
    { simde_mm256_set_epi32(INT32_C(  133578927), INT32_C(  -89176331), INT32_C(  533976318), INT32_C(  686005880),
                            INT32_C( 1680867737), INT32_C( -633287306), INT32_C( -911734776), INT32_C( 1028891739)),
      simde_mm256_set_epi32(INT32_C(  133578927), INT32_C(  -89176331), INT32_C(  533976318), INT32_C(  686005880),
                            INT32_C( 1680867737), INT32_C( -633287306), INT32_C( -911734776), INT32_C( 1028891739)) },
    { simde_mm256_set_epi32(INT32_C( 1968343895), INT32_C( 1991193919), INT32_C(-1412421123), INT32_C(-1413471204),
                            INT32_C( 1571538617), INT32_C(  392630938), INT32_C(   44925707), INT32_C(-1288122501)),
      simde_mm256_set_epi32(INT32_C( 1968343895), INT32_C( 1991193919), INT32_C(-1412421123), INT32_C(-1413471204),
                            INT32_C( 1571538617), INT32_C(  392630938), INT32_C(   44925707), INT32_C(-1288122501)) },
    { simde_mm256_set_epi32(INT32_C(  932954327), INT32_C(  884951875), INT32_C(-1145840174), INT32_C( 2040117874),
                            INT32_C(   39201359), INT32_C( -102892947), INT32_C(  740751736), INT32_C( 1598969461)),
      simde_mm256_set_epi32(INT32_C(  932954327), INT32_C(  884951875), INT32_C(-1145840174), INT32_C( 2040117874),
                            INT32_C(   39201359), INT32_C( -102892947), INT32_C(  740751736), INT32_C( 1598969461)) },
    { simde_mm256_set_epi32(INT32_C( -471731507), INT32_C( 1955207001), INT32_C(-1681640586), INT32_C( -304295513),
                            INT32_C( 1688427496), INT32_C(-1852849481), INT32_C( -533311004), INT32_C(  263226824)),
      simde_mm256_set_epi32(INT32_C( -471731507), INT32_C( 1955207001), INT32_C(-1681640586), INT32_C( -304295513),
                            INT32_C( 1688427496), INT32_C(-1852849481), INT32_C( -533311004), INT32_C(  263226824)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256i r = simde_mm256_loadu_si256(&(test_vec[i].a));
    simde_assert_m256i_i32(r, ==, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_loadu2_m128(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde_float32 a[sizeof(simde__m128) / sizeof(simde_float32)];
    simde_float32 b[sizeof(simde__m128) / sizeof(simde_float32)];
    simde__m256 r;
  } test_vec[8] = {
    { { SIMDE_FLOAT32_C(    13.39), SIMDE_FLOAT32_C(   253.33), SIMDE_FLOAT32_C(   769.78), SIMDE_FLOAT32_C(   607.23) },
      { SIMDE_FLOAT32_C(   382.59), SIMDE_FLOAT32_C(   295.37), SIMDE_FLOAT32_C(  -847.51), SIMDE_FLOAT32_C(  -193.22) },
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   607.23), SIMDE_FLOAT32_C(   769.78),
                         SIMDE_FLOAT32_C(   253.33), SIMDE_FLOAT32_C(    13.39),
                         SIMDE_FLOAT32_C(  -193.22), SIMDE_FLOAT32_C(  -847.51),
                         SIMDE_FLOAT32_C(   295.37), SIMDE_FLOAT32_C(   382.59)) },
    { { SIMDE_FLOAT32_C(  -621.90), SIMDE_FLOAT32_C(   305.75), SIMDE_FLOAT32_C(  -907.35), SIMDE_FLOAT32_C(  -378.43) },
      { SIMDE_FLOAT32_C(   165.24), SIMDE_FLOAT32_C(   212.29), SIMDE_FLOAT32_C(   823.95), SIMDE_FLOAT32_C(   837.28) },
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  -378.43), SIMDE_FLOAT32_C(  -907.35),
                         SIMDE_FLOAT32_C(   305.75), SIMDE_FLOAT32_C(  -621.90),
                         SIMDE_FLOAT32_C(   837.28), SIMDE_FLOAT32_C(   823.95),
                         SIMDE_FLOAT32_C(   212.29), SIMDE_FLOAT32_C(   165.24)) },
    { { SIMDE_FLOAT32_C(  -207.02), SIMDE_FLOAT32_C(   949.44), SIMDE_FLOAT32_C(   953.63), SIMDE_FLOAT32_C(  -540.83) },
      { SIMDE_FLOAT32_C(  -239.63), SIMDE_FLOAT32_C(  -907.66), SIMDE_FLOAT32_C(  -840.87), SIMDE_FLOAT32_C(   300.80) },
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  -540.83), SIMDE_FLOAT32_C(   953.63),
                         SIMDE_FLOAT32_C(   949.44), SIMDE_FLOAT32_C(  -207.02),
                         SIMDE_FLOAT32_C(   300.80), SIMDE_FLOAT32_C(  -840.87),
                         SIMDE_FLOAT32_C(  -907.66), SIMDE_FLOAT32_C(  -239.63)) },
    { { SIMDE_FLOAT32_C(   568.29), SIMDE_FLOAT32_C(  -558.59), SIMDE_FLOAT32_C(    -1.20), SIMDE_FLOAT32_C(  -521.17) },
      { SIMDE_FLOAT32_C(   772.77), SIMDE_FLOAT32_C(  -729.14), SIMDE_FLOAT32_C(  -873.98), SIMDE_FLOAT32_C(   142.46) },
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  -521.17), SIMDE_FLOAT32_C(    -1.20),
                         SIMDE_FLOAT32_C(  -558.59), SIMDE_FLOAT32_C(   568.29),
                         SIMDE_FLOAT32_C(   142.46), SIMDE_FLOAT32_C(  -873.98),
                         SIMDE_FLOAT32_C(  -729.14), SIMDE_FLOAT32_C(   772.77)) },
    { { SIMDE_FLOAT32_C(   499.82), SIMDE_FLOAT32_C(  -346.37), SIMDE_FLOAT32_C(   357.98), SIMDE_FLOAT32_C(  -982.20) },
      { SIMDE_FLOAT32_C(   429.05), SIMDE_FLOAT32_C(   743.13), SIMDE_FLOAT32_C(   351.79), SIMDE_FLOAT32_C(  -106.23) },
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  -982.20), SIMDE_FLOAT32_C(   357.98),
                         SIMDE_FLOAT32_C(  -346.37), SIMDE_FLOAT32_C(   499.82),
                         SIMDE_FLOAT32_C(  -106.23), SIMDE_FLOAT32_C(   351.79),
                         SIMDE_FLOAT32_C(   743.13), SIMDE_FLOAT32_C(   429.05)) },
    { { SIMDE_FLOAT32_C(  -764.00), SIMDE_FLOAT32_C(   204.78), SIMDE_FLOAT32_C(   842.05), SIMDE_FLOAT32_C(   473.10) },
      { SIMDE_FLOAT32_C(  -181.50), SIMDE_FLOAT32_C(  -509.59), SIMDE_FLOAT32_C(   968.67), SIMDE_FLOAT32_C(   585.40) },
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   473.10), SIMDE_FLOAT32_C(   842.05),
                         SIMDE_FLOAT32_C(   204.78), SIMDE_FLOAT32_C(  -764.00),
                         SIMDE_FLOAT32_C(   585.40), SIMDE_FLOAT32_C(   968.67),
                         SIMDE_FLOAT32_C(  -509.59), SIMDE_FLOAT32_C(  -181.50)) },
    { { SIMDE_FLOAT32_C(  -248.73), SIMDE_FLOAT32_C(  -498.50), SIMDE_FLOAT32_C(  -186.56), SIMDE_FLOAT32_C(   244.41) },
      { SIMDE_FLOAT32_C(   987.29), SIMDE_FLOAT32_C(   541.99), SIMDE_FLOAT32_C(   577.71), SIMDE_FLOAT32_C(   147.41) },
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   244.41), SIMDE_FLOAT32_C(  -186.56),
                         SIMDE_FLOAT32_C(  -498.50), SIMDE_FLOAT32_C(  -248.73),
                         SIMDE_FLOAT32_C(   147.41), SIMDE_FLOAT32_C(   577.71),
                         SIMDE_FLOAT32_C(   541.99), SIMDE_FLOAT32_C(   987.29)) },
    { { SIMDE_FLOAT32_C(   -53.98), SIMDE_FLOAT32_C(   -59.84), SIMDE_FLOAT32_C(  -791.34), SIMDE_FLOAT32_C(     7.53) },
      { SIMDE_FLOAT32_C(     2.84), SIMDE_FLOAT32_C(   254.21), SIMDE_FLOAT32_C(   404.98), SIMDE_FLOAT32_C(  -410.67) },
      simde_mm256_set_ps(SIMDE_FLOAT32_C(     7.53), SIMDE_FLOAT32_C(  -791.34),
                         SIMDE_FLOAT32_C(   -59.84), SIMDE_FLOAT32_C(   -53.98),
                         SIMDE_FLOAT32_C(  -410.67), SIMDE_FLOAT32_C(   404.98),
                         SIMDE_FLOAT32_C(   254.21), SIMDE_FLOAT32_C(     2.84)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256 r = simde_mm256_loadu2_m128(test_vec[i].a, test_vec[i].b);
    simde_assert_m256_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_loadu2_m128d(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde_float64 a[sizeof(simde__m128d) / sizeof(simde_float64)];
    simde_float64 b[sizeof(simde__m128d) / sizeof(simde_float64)];
    simde__m256d r;
  } test_vec[8] = {
    { { SIMDE_FLOAT64_C(  193.14), SIMDE_FLOAT64_C( -237.27) },
      { SIMDE_FLOAT64_C(  826.89), SIMDE_FLOAT64_C( -516.49) },
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -237.27), SIMDE_FLOAT64_C(  193.14),
                         SIMDE_FLOAT64_C( -516.49), SIMDE_FLOAT64_C(  826.89)) },
    { { SIMDE_FLOAT64_C( -640.74), SIMDE_FLOAT64_C( -449.08) },
      { SIMDE_FLOAT64_C(  244.98), SIMDE_FLOAT64_C( -467.92) },
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -449.08), SIMDE_FLOAT64_C( -640.74),
                         SIMDE_FLOAT64_C( -467.92), SIMDE_FLOAT64_C(  244.98)) },
    { { SIMDE_FLOAT64_C(  384.40), SIMDE_FLOAT64_C( -595.56) },
      { SIMDE_FLOAT64_C( -808.24), SIMDE_FLOAT64_C(  198.37) },
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -595.56), SIMDE_FLOAT64_C(  384.40),
                         SIMDE_FLOAT64_C(  198.37), SIMDE_FLOAT64_C( -808.24)) },
    { { SIMDE_FLOAT64_C(  647.94), SIMDE_FLOAT64_C( -628.27) },
      { SIMDE_FLOAT64_C( -496.78), SIMDE_FLOAT64_C( -569.08) },
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -628.27), SIMDE_FLOAT64_C(  647.94),
                         SIMDE_FLOAT64_C( -569.08), SIMDE_FLOAT64_C( -496.78)) },
    { { SIMDE_FLOAT64_C(  911.82), SIMDE_FLOAT64_C( -491.30) },
      { SIMDE_FLOAT64_C(  365.77), SIMDE_FLOAT64_C( -898.74) },
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -491.30), SIMDE_FLOAT64_C(  911.82),
                         SIMDE_FLOAT64_C( -898.74), SIMDE_FLOAT64_C(  365.77)) },
    { { SIMDE_FLOAT64_C( -297.53), SIMDE_FLOAT64_C( -521.34) },
      { SIMDE_FLOAT64_C(  145.28), SIMDE_FLOAT64_C(  488.58) },
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -521.34), SIMDE_FLOAT64_C( -297.53),
                         SIMDE_FLOAT64_C(  488.58), SIMDE_FLOAT64_C(  145.28)) },
    { { SIMDE_FLOAT64_C( -224.71), SIMDE_FLOAT64_C(   -7.50) },
      { SIMDE_FLOAT64_C(  -86.35), SIMDE_FLOAT64_C(  810.88) },
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   -7.50), SIMDE_FLOAT64_C( -224.71),
                         SIMDE_FLOAT64_C(  810.88), SIMDE_FLOAT64_C(  -86.35)) },
    { { SIMDE_FLOAT64_C(  885.68), SIMDE_FLOAT64_C( -940.09) },
      { SIMDE_FLOAT64_C( -481.99), SIMDE_FLOAT64_C( -433.50) },
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -940.09), SIMDE_FLOAT64_C(  885.68),
                         SIMDE_FLOAT64_C( -433.50), SIMDE_FLOAT64_C( -481.99)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256d r = simde_mm256_loadu2_m128d(test_vec[i].a, test_vec[i].b);
    simde_assert_m256d_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_loadu2_m128i(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m128i a;
    simde__m128i b;
    simde__m256i r;
  } test_vec[8] = {
    { simde_mm_set_epi32(INT32_C(  354008351), INT32_C( 1710178598), INT32_C( 1223789711), INT32_C(-1500329554)),
      simde_mm_set_epi32(INT32_C(-1388022686), INT32_C( -390861004), INT32_C( -560834160), INT32_C( 1618430517)),
      simde_mm256_set_epi32(INT32_C(  354008351), INT32_C( 1710178598), INT32_C( 1223789711), INT32_C(-1500329554),
                            INT32_C(-1388022686), INT32_C( -390861004), INT32_C( -560834160), INT32_C( 1618430517)) },
    { simde_mm_set_epi32(INT32_C(-2097010594), INT32_C(-1953861975), INT32_C( 1525655088), INT32_C(-1479248872)),
      simde_mm_set_epi32(INT32_C( -212387035), INT32_C( -783086135), INT32_C( -464607138), INT32_C( -807907186)),
      simde_mm256_set_epi32(INT32_C(-2097010594), INT32_C(-1953861975), INT32_C( 1525655088), INT32_C(-1479248872),
                            INT32_C( -212387035), INT32_C( -783086135), INT32_C( -464607138), INT32_C( -807907186)) },
    { simde_mm_set_epi32(INT32_C( 1556453306), INT32_C( -628648157), INT32_C(-1070645220), INT32_C( 1816365112)),
      simde_mm_set_epi32(INT32_C( -449670221), INT32_C(  758539132), INT32_C(  894912628), INT32_C( 2013246533)),
      simde_mm256_set_epi32(INT32_C( 1556453306), INT32_C( -628648157), INT32_C(-1070645220), INT32_C( 1816365112),
                            INT32_C( -449670221), INT32_C(  758539132), INT32_C(  894912628), INT32_C( 2013246533)) },
    { simde_mm_set_epi32(INT32_C(  973055118), INT32_C(  267011876), INT32_C( -970751985), INT32_C( -790620326)),
      simde_mm_set_epi32(INT32_C(-1774701032), INT32_C(  110651775), INT32_C(-2029162765), INT32_C( -644927818)),
      simde_mm256_set_epi32(INT32_C(  973055118), INT32_C(  267011876), INT32_C( -970751985), INT32_C( -790620326),
                            INT32_C(-1774701032), INT32_C(  110651775), INT32_C(-2029162765), INT32_C( -644927818)) },
    { simde_mm_set_epi32(INT32_C( 1343331807), INT32_C( -752743183), INT32_C( -212726727), INT32_C(  673547091)),
      simde_mm_set_epi32(INT32_C(  510472604), INT32_C(   30606375), INT32_C(-1460649586), INT32_C( -783315263)),
      simde_mm256_set_epi32(INT32_C( 1343331807), INT32_C( -752743183), INT32_C( -212726727), INT32_C(  673547091),
                            INT32_C(  510472604), INT32_C(   30606375), INT32_C(-1460649586), INT32_C( -783315263)) },
    { simde_mm_set_epi32(INT32_C( 1773008222), INT32_C( -172973908), INT32_C( -578745695), INT32_C( 1088863920)),
      simde_mm_set_epi32(INT32_C(-2064848056), INT32_C(  207858402), INT32_C(-1299831865), INT32_C(-1364624980)),
      simde_mm256_set_epi32(INT32_C( 1773008222), INT32_C( -172973908), INT32_C( -578745695), INT32_C( 1088863920),
                            INT32_C(-2064848056), INT32_C(  207858402), INT32_C(-1299831865), INT32_C(-1364624980)) },
    { simde_mm_set_epi32(INT32_C( -608977283), INT32_C(-1563798803), INT32_C(-1827655569), INT32_C( -382597224)),
      simde_mm_set_epi32(INT32_C(-1788804177), INT32_C(-1217503299), INT32_C(   57159833), INT32_C(  -53652220)),
      simde_mm256_set_epi32(INT32_C( -608977283), INT32_C(-1563798803), INT32_C(-1827655569), INT32_C( -382597224),
                            INT32_C(-1788804177), INT32_C(-1217503299), INT32_C(   57159833), INT32_C(  -53652220)) },
    { simde_mm_set_epi32(INT32_C( 2096190829), INT32_C(  255970451), INT32_C( 2016421031), INT32_C( -950647181)),
      simde_mm_set_epi32(INT32_C( -133085873), INT32_C(-1605552420), INT32_C( -147782601), INT32_C( -870212282)),
      simde_mm256_set_epi32(INT32_C( 2096190829), INT32_C(  255970451), INT32_C( 2016421031), INT32_C( -950647181),
                            INT32_C( -133085873), INT32_C(-1605552420), INT32_C( -147782601), INT32_C( -870212282)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256i r = simde_mm256_loadu2_m128i(&(test_vec[i].a), &(test_vec[i].b));
    simde_assert_m256i_i32(r, ==, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm_maskload_pd (SIMDE_MUNIT_TEST_ARGS) {
  static const struct {
    const simde_float64 mem_addr[2];
    const int64_t mask[2];
    const simde_float64 r[2];
  } test_vec[] = {
    { { SIMDE_FLOAT64_C(   -44.84), SIMDE_FLOAT64_C(  -187.23) },
      {  INT64_C(  697350032114386965), -INT64_C( 6822977484778790260) },
      { SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(  -187.23) } },
    { { SIMDE_FLOAT64_C(  -686.00), SIMDE_FLOAT64_C(  -486.25) },
      { -INT64_C( 9072093096164548123),  INT64_C( 8577706021278762060) },
      { SIMDE_FLOAT64_C(  -686.00), SIMDE_FLOAT64_C(     0.00) } },
    { { SIMDE_FLOAT64_C(   345.89), SIMDE_FLOAT64_C(  -846.86) },
      {  INT64_C( 7283870107845829619),  INT64_C( 5554042763219526763) },
      { SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00) } },
    { { SIMDE_FLOAT64_C(  -979.25), SIMDE_FLOAT64_C(  -524.07) },
      {  INT64_C( 1733613083399169728), -INT64_C( 8664218374432089815) },
      { SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(  -524.07) } },
    { { SIMDE_FLOAT64_C(   327.25), SIMDE_FLOAT64_C(   112.82) },
      { -INT64_C(  800106376127047672),  INT64_C( 7751542069822355551) },
      { SIMDE_FLOAT64_C(   327.25), SIMDE_FLOAT64_C(     0.00) } },
    { { SIMDE_FLOAT64_C(   407.41), SIMDE_FLOAT64_C(  -401.19) },
      { -INT64_C( 9026860482835374478), -INT64_C( 1097169102464975702) },
      { SIMDE_FLOAT64_C(   407.41), SIMDE_FLOAT64_C(  -401.19) } },
    { { SIMDE_FLOAT64_C(   -14.88), SIMDE_FLOAT64_C(   573.00) },
      { -INT64_C( 3084833370581537693), -INT64_C( 2835100346349403270) },
      { SIMDE_FLOAT64_C(   -14.88), SIMDE_FLOAT64_C(   573.00) } },
    { { SIMDE_FLOAT64_C(  -778.55), SIMDE_FLOAT64_C(   193.17) },
      {  INT64_C(  672843420433189374), -INT64_C( 7606477107942056835) },
      { SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(   193.17) } }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde__m128i mask = simde_x_mm_loadu_epi64(test_vec[i].mask);
    simde__m128d r = simde_mm_maskload_pd(test_vec[i].mem_addr, mask);
    simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[i].r), 1);
  }

  return 0;
}

#if !defined(HEDLEY_MSVC_VERSION)
static int
test_simde_mm_maskload_pd_no_illegal_memory_access (SIMDE_MUNIT_TEST_ARGS) {
  // ref: https://github.com/simd-everywhere/simde/issues/998
  // make sure maskload never accesses memory for masked out regions
  // will segfault in case memory is accessed
  #if defined(_GNU_SOURCE)
    simde_float64 *ptr = HEDLEY_STATIC_CAST(simde_float64 *, mmap(NULL, 2 * sizeof(simde_float64), PROT_NONE , MAP_PRIVATE | MAP_ANONYMOUS, -1, 0));
  #else
    simde_float64 *ptr = HEDLEY_STATIC_CAST(simde_float64 *, mmap(NULL, 2 * sizeof(simde_float64), PROT_NONE , MAP_PRIVATE, -1, 0));
  #endif
  const simde__m128i mask = simde_mm_set_epi64x(INT64_C(0), INT64_C(0));
  simde__m128d test = simde_mm_maskload_pd(ptr, mask);
  simde_float64 r[2] = { SIMDE_FLOAT64_C(0.00), SIMDE_FLOAT64_C(0.00) };
  simde_test_x86_assert_equal_f64x2(test, simde_mm_loadu_pd(r), 1);
  return 0;
}
#endif

static int
test_simde_mm256_maskload_pd (SIMDE_MUNIT_TEST_ARGS) {
  static const struct {
    const simde_float64 mem_addr[4];
    const int64_t mask[4];
    const simde_float64 r[4];
  } test_vec[] = {
    { { SIMDE_FLOAT64_C(   845.03), SIMDE_FLOAT64_C(   274.61), SIMDE_FLOAT64_C(   515.17), SIMDE_FLOAT64_C(   654.86) },
      { -INT64_C( 1562028826953646494), -INT64_C( 6547821859740641223),  INT64_C( 5461221024099586812), -INT64_C( 6926067570004073380) },
      { SIMDE_FLOAT64_C(   845.03), SIMDE_FLOAT64_C(   274.61), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(   654.86) } },
    { { SIMDE_FLOAT64_C(    87.04), SIMDE_FLOAT64_C(  -185.45), SIMDE_FLOAT64_C(   566.76), SIMDE_FLOAT64_C(  -222.61) },
      { -INT64_C( 8140185020693102094), -INT64_C( 7935186431243966026), -INT64_C( 3692834531731199052), -INT64_C(  687403654194683627) },
      { SIMDE_FLOAT64_C(    87.04), SIMDE_FLOAT64_C(  -185.45), SIMDE_FLOAT64_C(   566.76), SIMDE_FLOAT64_C(  -222.61) } },
    { { SIMDE_FLOAT64_C(  -387.34), SIMDE_FLOAT64_C(   667.72), SIMDE_FLOAT64_C(   351.98), SIMDE_FLOAT64_C(   185.90) },
      {  INT64_C( 5746656153388198486), -INT64_C( 2698573944803254074), -INT64_C(  938136386737386456), -INT64_C( 2523130118312267541) },
      { SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(   667.72), SIMDE_FLOAT64_C(   351.98), SIMDE_FLOAT64_C(   185.90) } },
    { { SIMDE_FLOAT64_C(   -78.35), SIMDE_FLOAT64_C(  -352.03), SIMDE_FLOAT64_C(   326.83), SIMDE_FLOAT64_C(   368.88) },
      { -INT64_C( 7675339611453347526),  INT64_C( 4744848230774212468), -INT64_C( 3847732952440777688), -INT64_C( 3251158471971203291) },
      { SIMDE_FLOAT64_C(   -78.35), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(   326.83), SIMDE_FLOAT64_C(   368.88) } },
    { { SIMDE_FLOAT64_C(  -253.08), SIMDE_FLOAT64_C(    10.09), SIMDE_FLOAT64_C(   790.44), SIMDE_FLOAT64_C(  -217.02) },
      { -INT64_C( 6233112357282165138),  INT64_C( 8276240822704953760), -INT64_C( 6505481490158291400), -INT64_C( 4741646846794426252) },
      { SIMDE_FLOAT64_C(  -253.08), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(   790.44), SIMDE_FLOAT64_C(  -217.02) } },
    { { SIMDE_FLOAT64_C(   308.28), SIMDE_FLOAT64_C(  -190.54), SIMDE_FLOAT64_C(  -550.36), SIMDE_FLOAT64_C(  -303.22) },
      { -INT64_C( 6395814632349097515), -INT64_C( 7263366602557941603), -INT64_C( 3216775732650775751), -INT64_C( 5871229529546912511) },
      { SIMDE_FLOAT64_C(   308.28), SIMDE_FLOAT64_C(  -190.54), SIMDE_FLOAT64_C(  -550.36), SIMDE_FLOAT64_C(  -303.22) } },
    { { SIMDE_FLOAT64_C(   657.64), SIMDE_FLOAT64_C(   674.06), SIMDE_FLOAT64_C(   624.26), SIMDE_FLOAT64_C(   941.85) },
      {  INT64_C(  508501554445574299), -INT64_C( 5706936849136467483), -INT64_C( 8199905151792502630),  INT64_C( 8100955200803354953) },
      { SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(   674.06), SIMDE_FLOAT64_C(   624.26), SIMDE_FLOAT64_C(     0.00) } },
    { { SIMDE_FLOAT64_C(   517.21), SIMDE_FLOAT64_C(    15.58), SIMDE_FLOAT64_C(   172.93), SIMDE_FLOAT64_C(  -730.24) },
      {  INT64_C( 2699593483387123569),  INT64_C( 2376308967288947396), -INT64_C( 4803955517750890898),  INT64_C( 1459965220665278538) },
      { SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(   172.93), SIMDE_FLOAT64_C(     0.00) } }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde__m256i mask = simde_x_mm256_loadu_epi64(test_vec[i].mask);
    simde__m256d r = simde_mm256_maskload_pd(test_vec[i].mem_addr, mask);
    simde_test_x86_assert_equal_f64x4(r, simde_mm256_loadu_pd(test_vec[i].r), 1);
  }

  return 0;
}

#if !defined(HEDLEY_MSVC_VERSION)
static int
test_simde_mm256_maskload_pd_no_illegal_memory_access (SIMDE_MUNIT_TEST_ARGS) {
  // ref: https://github.com/simd-everywhere/simde/issues/998
  // make sure maskload never accesses memory for masked out regions
  // will segfault in case memory is accessed
  #if defined(_GNU_SOURCE)
    simde_float64 *ptr = HEDLEY_STATIC_CAST(simde_float64 *, mmap(NULL, 4 * sizeof(simde_float64), PROT_NONE , MAP_PRIVATE | MAP_ANONYMOUS, -1, 0));
  #else
    simde_float64 *ptr = HEDLEY_STATIC_CAST(simde_float64 *, mmap(NULL, 4 * sizeof(simde_float64), PROT_NONE , MAP_PRIVATE, -1, 0));
  #endif
  const simde__m256i mask = simde_mm256_set_epi64x(INT64_C(0), INT64_C(0), INT64_C(0), INT64_C(0));
  simde__m256d test = simde_mm256_maskload_pd(ptr, mask);
  simde_float64 r[4] = { SIMDE_FLOAT64_C(0.00), SIMDE_FLOAT64_C(0.00), SIMDE_FLOAT64_C(0.00), SIMDE_FLOAT64_C(0.00) };
  simde_test_x86_assert_equal_f64x4(test, simde_mm256_loadu_pd(r), 1);
  return 0;
}
#endif

static int
test_simde_mm_maskload_ps (SIMDE_MUNIT_TEST_ARGS) {
  static const struct {
    const simde_float32 mem_addr[4];
    const int32_t mask[4];
    const simde_float32 r[4];
  } test_vec[] = {
    { { SIMDE_FLOAT32_C(  -560.98), SIMDE_FLOAT32_C(   330.23), SIMDE_FLOAT32_C(  -571.08), SIMDE_FLOAT32_C(  -900.52) },
      {  INT32_C(   552414127), -INT32_C(   630594570), -INT32_C(  1291956017), -INT32_C(  1030767749) },
      { SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   330.23), SIMDE_FLOAT32_C(  -571.08), SIMDE_FLOAT32_C(  -900.52) } },
    { { SIMDE_FLOAT32_C(   -52.84), SIMDE_FLOAT32_C(  -695.38), SIMDE_FLOAT32_C(  -631.11), SIMDE_FLOAT32_C(   296.05) },
      { -INT32_C(  1978494141),  INT32_C(  1682818151),  INT32_C(  2012703432), -INT32_C(  1952979819) },
      { SIMDE_FLOAT32_C(   -52.84), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   296.05) } },
    { { SIMDE_FLOAT32_C(   460.61), SIMDE_FLOAT32_C(  -394.20), SIMDE_FLOAT32_C(   440.23), SIMDE_FLOAT32_C(  -609.13) },
      { -INT32_C(   867605424),  INT32_C(    42915871), -INT32_C(   268280147),  INT32_C(  1501238513) },
      { SIMDE_FLOAT32_C(   460.61), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   440.23), SIMDE_FLOAT32_C(     0.00) } },
    { { SIMDE_FLOAT32_C(   481.64), SIMDE_FLOAT32_C(   724.40), SIMDE_FLOAT32_C(  -863.54), SIMDE_FLOAT32_C(   137.47) },
      { -INT32_C(   954682062),  INT32_C(  1632874393), -INT32_C(      542289),  INT32_C(  1019953181) },
      { SIMDE_FLOAT32_C(   481.64), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -863.54), SIMDE_FLOAT32_C(     0.00) } },
    { { SIMDE_FLOAT32_C(   811.63), SIMDE_FLOAT32_C(  -828.49), SIMDE_FLOAT32_C(   881.09), SIMDE_FLOAT32_C(  -936.46) },
      { -INT32_C(  1447608137),  INT32_C(   771895893),  INT32_C(   768589818),  INT32_C(   250931060) },
      { SIMDE_FLOAT32_C(   811.63), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00) } },
    { { SIMDE_FLOAT32_C(  -741.71), SIMDE_FLOAT32_C(  -343.75), SIMDE_FLOAT32_C(  -821.30), SIMDE_FLOAT32_C(    50.98) },
      {  INT32_C(   491021824), -INT32_C(  1067904857),  INT32_C(   562468969),  INT32_C(   768228824) },
      { SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -343.75), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00) } },
    { { SIMDE_FLOAT32_C(   335.89), SIMDE_FLOAT32_C(   701.50), SIMDE_FLOAT32_C(  -340.99), SIMDE_FLOAT32_C(  -135.85) },
      {  INT32_C(     9906827), -INT32_C(  1492219119), -INT32_C(   739476013), -INT32_C(  1963904541) },
      { SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   701.50), SIMDE_FLOAT32_C(  -340.99), SIMDE_FLOAT32_C(  -135.85) } },
    { { SIMDE_FLOAT32_C(   167.10), SIMDE_FLOAT32_C(   398.88), SIMDE_FLOAT32_C(  -514.86), SIMDE_FLOAT32_C(   423.86) },
      { -INT32_C(  1144270366),  INT32_C(  2129171726), -INT32_C(   303545247), -INT32_C(  2131918994) },
      { SIMDE_FLOAT32_C(   167.10), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -514.86), SIMDE_FLOAT32_C(   423.86) } }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde__m128i mask = simde_x_mm_loadu_epi32(test_vec[i].mask);
    simde__m128 r = simde_mm_maskload_ps(test_vec[i].mem_addr, mask);
    simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[i].r), 1);
  }

  return 0;
}

#if !defined(HEDLEY_MSVC_VERSION)
static int
test_simde_mm_maskload_ps_no_illegal_memory_access (SIMDE_MUNIT_TEST_ARGS) {
  // ref: https://github.com/simd-everywhere/simde/issues/998
  // make sure maskload never accesses memory for masked out regions
  // will segfault in case memory is accessed
  #if defined(_GNU_SOURCE)
    simde_float32 *ptr = HEDLEY_STATIC_CAST(simde_float32 *, mmap(NULL, 4 * sizeof(simde_float32), PROT_NONE , MAP_PRIVATE | MAP_ANONYMOUS, -1, 0));
  #else
    simde_float32 *ptr = HEDLEY_STATIC_CAST(simde_float32 *, mmap(NULL, 4 * sizeof(simde_float32), PROT_NONE , MAP_PRIVATE, -1, 0));
  #endif
  const simde__m128i mask = simde_mm_set_epi32(0, 0, 0, 0);
  simde__m128 test = simde_mm_maskload_ps(ptr, mask);
  simde_float32 r[4] = { SIMDE_FLOAT32_C(0.00), SIMDE_FLOAT32_C(0.00), SIMDE_FLOAT32_C(0.00), SIMDE_FLOAT32_C(0.00) };
  simde_test_x86_assert_equal_f32x4(test, simde_mm_loadu_ps(r), 1);
  return 0;
}
#endif


static int
test_simde_mm256_maskload_ps (SIMDE_MUNIT_TEST_ARGS) {
  static const struct {
    const simde_float32 mem_addr[8];
    const int32_t mask[8];
    const simde_float32 r[8];
  } test_vec[] = {
    { { SIMDE_FLOAT32_C(  -588.55), SIMDE_FLOAT32_C(  -156.14), SIMDE_FLOAT32_C(   765.50), SIMDE_FLOAT32_C(  -514.50),
        SIMDE_FLOAT32_C(   262.17), SIMDE_FLOAT32_C(  -363.89), SIMDE_FLOAT32_C(  -808.48), SIMDE_FLOAT32_C(   781.30) },
      { -INT32_C(   576220470), -INT32_C(  1010639970),  INT32_C(  1590785915), -INT32_C(   714613675), -INT32_C(   779948395), -INT32_C(   245937156), -INT32_C(   509561887), -INT32_C(   616351727) },
      { SIMDE_FLOAT32_C(  -588.55), SIMDE_FLOAT32_C(  -156.14), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -514.50),
        SIMDE_FLOAT32_C(   262.17), SIMDE_FLOAT32_C(  -363.89), SIMDE_FLOAT32_C(  -808.48), SIMDE_FLOAT32_C(   781.30) } },
    { { SIMDE_FLOAT32_C(   420.97), SIMDE_FLOAT32_C(  -838.24), SIMDE_FLOAT32_C(  -392.68), SIMDE_FLOAT32_C(   299.50),
        SIMDE_FLOAT32_C(   207.95), SIMDE_FLOAT32_C(   278.96), SIMDE_FLOAT32_C(  -847.51), SIMDE_FLOAT32_C(   417.49) },
      {  INT32_C(  1184956145),  INT32_C(  1880819674), -INT32_C(   247357707), -INT32_C(   891119127),  INT32_C(  1571521100), -INT32_C(  2059800645), -INT32_C(  1594953254),  INT32_C(  1575099244) },
      { SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -392.68), SIMDE_FLOAT32_C(   299.50),
        SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   278.96), SIMDE_FLOAT32_C(  -847.51), SIMDE_FLOAT32_C(     0.00) } },
    { { SIMDE_FLOAT32_C(   165.20), SIMDE_FLOAT32_C(  -625.22), SIMDE_FLOAT32_C(  -748.60), SIMDE_FLOAT32_C(  -111.47),
        SIMDE_FLOAT32_C(   463.62), SIMDE_FLOAT32_C(  -236.00), SIMDE_FLOAT32_C(  -639.66), SIMDE_FLOAT32_C(  -407.20) },
      {  INT32_C(  1181787485), -INT32_C(  1978576322), -INT32_C(  1863795499), -INT32_C(  2062212693),  INT32_C(  2116420626),  INT32_C(   953944095),  INT32_C(   338395275), -INT32_C(  1651273921) },
      { SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -625.22), SIMDE_FLOAT32_C(  -748.60), SIMDE_FLOAT32_C(  -111.47),
        SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -407.20) } },
    { { SIMDE_FLOAT32_C(  -291.43), SIMDE_FLOAT32_C(  -760.80), SIMDE_FLOAT32_C(   348.26), SIMDE_FLOAT32_C(  -222.79),
        SIMDE_FLOAT32_C(  -485.28), SIMDE_FLOAT32_C(   543.93), SIMDE_FLOAT32_C(   -34.22), SIMDE_FLOAT32_C(  -759.27) },
      {  INT32_C(  1555752113),  INT32_C(   417517573), -INT32_C(   208271148), -INT32_C(  1691651568),  INT32_C(   850417394),  INT32_C(   433013733), -INT32_C(  1685343674),  INT32_C(  1489406119) },
      { SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   348.26), SIMDE_FLOAT32_C(  -222.79),
        SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   -34.22), SIMDE_FLOAT32_C(     0.00) } },
    { { SIMDE_FLOAT32_C(   321.91), SIMDE_FLOAT32_C(   814.50), SIMDE_FLOAT32_C(   803.71), SIMDE_FLOAT32_C(   833.48),
        SIMDE_FLOAT32_C(   558.02), SIMDE_FLOAT32_C(   442.93), SIMDE_FLOAT32_C(   -87.03), SIMDE_FLOAT32_C(   798.77) },
      { -INT32_C(  1357438818), -INT32_C(  2058730861),  INT32_C(  2125986457), -INT32_C(  2087156163), -INT32_C(   534830279),  INT32_C(   406381995), -INT32_C(  1232409499),  INT32_C(   567940227) },
      { SIMDE_FLOAT32_C(   321.91), SIMDE_FLOAT32_C(   814.50), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   833.48),
        SIMDE_FLOAT32_C(   558.02), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   -87.03), SIMDE_FLOAT32_C(     0.00) } },
    { { SIMDE_FLOAT32_C(  -551.06), SIMDE_FLOAT32_C(   227.15), SIMDE_FLOAT32_C(  -106.44), SIMDE_FLOAT32_C(   271.24),
        SIMDE_FLOAT32_C(   412.99), SIMDE_FLOAT32_C(   -27.66), SIMDE_FLOAT32_C(   187.06), SIMDE_FLOAT32_C(   798.87) },
      {  INT32_C(  1397490709), -INT32_C(   992549749), -INT32_C(  1281035001),  INT32_C(  1087102170),  INT32_C(  1274435016), -INT32_C(  1653747607), -INT32_C(   144359998),  INT32_C(  1858384472) },
      { SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   227.15), SIMDE_FLOAT32_C(  -106.44), SIMDE_FLOAT32_C(     0.00),
        SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   -27.66), SIMDE_FLOAT32_C(   187.06), SIMDE_FLOAT32_C(     0.00) } },
    { { SIMDE_FLOAT32_C(   516.26), SIMDE_FLOAT32_C(  -512.15), SIMDE_FLOAT32_C(   869.28), SIMDE_FLOAT32_C(  -650.32),
        SIMDE_FLOAT32_C(  -650.22), SIMDE_FLOAT32_C(  -362.47), SIMDE_FLOAT32_C(   974.91), SIMDE_FLOAT32_C(   374.68) },
      {  INT32_C(  1739565453),  INT32_C(  1319598725),  INT32_C(   949591503),  INT32_C(   819267182), -INT32_C(  1675150780), -INT32_C(  1559565076), -INT32_C(   236663812), -INT32_C(   252843421) },
      { SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
        SIMDE_FLOAT32_C(  -650.22), SIMDE_FLOAT32_C(  -362.47), SIMDE_FLOAT32_C(   974.91), SIMDE_FLOAT32_C(   374.68) } },
    { { SIMDE_FLOAT32_C(   -61.68), SIMDE_FLOAT32_C(   929.24), SIMDE_FLOAT32_C(   912.15), SIMDE_FLOAT32_C(  -644.38),
        SIMDE_FLOAT32_C(  -898.12), SIMDE_FLOAT32_C(  -627.24), SIMDE_FLOAT32_C(   292.92), SIMDE_FLOAT32_C(   202.99) },
      {  INT32_C(   169672860),  INT32_C(  1262219783),  INT32_C(   434594349),  INT32_C(  1270673998),  INT32_C(   540844477),  INT32_C(   504375691), -INT32_C(   617125691),  INT32_C(    62955111) },
      { SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
        SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   292.92), SIMDE_FLOAT32_C(     0.00) } }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde__m256i mask = simde_x_mm256_loadu_epi32(test_vec[i].mask);
    simde__m256 r = simde_mm256_maskload_ps(test_vec[i].mem_addr, mask);
    simde_test_x86_assert_equal_f32x8(r, simde_mm256_loadu_ps(test_vec[i].r), 1);
  }

  return 0;
}

#if !defined(HEDLEY_MSVC_VERSION)
static int
test_simde_mm256_maskload_ps_no_illegal_memory_access (SIMDE_MUNIT_TEST_ARGS) {
  // ref: https://github.com/simd-everywhere/simde/issues/998
  // make sure maskload never accesses memory for masked out regions
  // will segfault in case memory is accessed
  #if defined(_GNU_SOURCE)
    simde_float32 *ptr = HEDLEY_STATIC_CAST(simde_float32 *, mmap(NULL, 8 * sizeof(simde_float32), PROT_NONE , MAP_PRIVATE | MAP_ANONYMOUS, -1, 0));
  #else
    simde_float32 *ptr = HEDLEY_STATIC_CAST(simde_float32 *, mmap(NULL, 8 * sizeof(simde_float32), PROT_NONE , MAP_PRIVATE, -1, 0));
  #endif
  const simde__m256i mask = simde_mm256_set_epi32(0, 0, 0, 0, 0, 0, 0, 0);
  simde__m256 test = simde_mm256_maskload_ps(ptr, mask);
  simde_float32 r[8] = { SIMDE_FLOAT32_C(0.00), SIMDE_FLOAT32_C(0.00), SIMDE_FLOAT32_C(0.00), SIMDE_FLOAT32_C(0.00),
                         SIMDE_FLOAT32_C(0.00), SIMDE_FLOAT32_C(0.00), SIMDE_FLOAT32_C(0.00), SIMDE_FLOAT32_C(0.00) };
  simde_test_x86_assert_equal_f32x8(test, simde_mm256_loadu_ps(r), 1);
  return 0;
}
#endif

static int
test_simde_mm_maskstore_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m128d a;
    simde__m128i mask;
    double ri[2];
    double ro[2];
  } test_vec[8] = {
    { simde_mm_set_pd(SIMDE_FLOAT64_C(  291.40), SIMDE_FLOAT64_C( -747.46)),
      simde_mm_set_epi64x(INT64_C( -901196363302656956), INT64_C(  423467829629286510)),
      { SIMDE_FLOAT64_C( -279.11), SIMDE_FLOAT64_C( -707.31) },
      { SIMDE_FLOAT64_C( -279.11), SIMDE_FLOAT64_C(  291.40) } },
    { simde_mm_set_pd(SIMDE_FLOAT64_C(   36.11), SIMDE_FLOAT64_C( -279.03)),
      simde_mm_set_epi64x(INT64_C(-5374148835716618800), INT64_C( 4687824648494664977)),
      { SIMDE_FLOAT64_C( -513.32), SIMDE_FLOAT64_C(  997.01) },
      { SIMDE_FLOAT64_C( -513.32), SIMDE_FLOAT64_C(   36.11) } },
    { simde_mm_set_pd(SIMDE_FLOAT64_C(  252.18), SIMDE_FLOAT64_C( -396.70)),
      simde_mm_set_epi64x(INT64_C(-2340838553401196290), INT64_C(-8255671198755410933)),
      { SIMDE_FLOAT64_C( -313.87), SIMDE_FLOAT64_C(  648.77) },
      { SIMDE_FLOAT64_C( -396.70), SIMDE_FLOAT64_C(  252.18) } },
    { simde_mm_set_pd(SIMDE_FLOAT64_C( -154.32), SIMDE_FLOAT64_C(  707.71)),
      simde_mm_set_epi64x(INT64_C( -336577207510206055), INT64_C(-8731515008786621717)),
      { SIMDE_FLOAT64_C( -956.34), SIMDE_FLOAT64_C(  661.79) },
      { SIMDE_FLOAT64_C(  707.71), SIMDE_FLOAT64_C( -154.32) } },
    { simde_mm_set_pd(SIMDE_FLOAT64_C( -482.35), SIMDE_FLOAT64_C(  870.14)),
      simde_mm_set_epi64x(INT64_C(-6428326320006280400), INT64_C( 2370968363897859860)),
      { SIMDE_FLOAT64_C(  -88.00), SIMDE_FLOAT64_C( -393.63) },
      { SIMDE_FLOAT64_C(  -88.00), SIMDE_FLOAT64_C( -482.35) } },
    { simde_mm_set_pd(SIMDE_FLOAT64_C( -798.76), SIMDE_FLOAT64_C(  378.53)),
      simde_mm_set_epi64x(INT64_C( 2158346412704669322), INT64_C(-1741710562990070947)),
      { SIMDE_FLOAT64_C( -459.19), SIMDE_FLOAT64_C( -261.60) },
      { SIMDE_FLOAT64_C(  378.53), SIMDE_FLOAT64_C( -261.60) } },
    { simde_mm_set_pd(SIMDE_FLOAT64_C(   47.39), SIMDE_FLOAT64_C(  457.82)),
      simde_mm_set_epi64x(INT64_C( 3118706775454689373), INT64_C(-4723277293636004112)),
      { SIMDE_FLOAT64_C( -206.48), SIMDE_FLOAT64_C(  663.61) },
      { SIMDE_FLOAT64_C(  457.82), SIMDE_FLOAT64_C(  663.61) } },
    { simde_mm_set_pd(SIMDE_FLOAT64_C( -497.78), SIMDE_FLOAT64_C(  -27.40)),
      simde_mm_set_epi64x(INT64_C(-5481981628135809029), INT64_C(-7037919562781567894)),
      { SIMDE_FLOAT64_C(   54.28), SIMDE_FLOAT64_C(  -36.05) },
      { SIMDE_FLOAT64_C(  -27.40), SIMDE_FLOAT64_C( -497.78) } }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    double r[2] = { test_vec[i].ri[0], test_vec[i].ri[1], };
    simde_memcpy(r, test_vec[i].ri, sizeof(r));
    simde_mm_maskstore_pd(r, test_vec[i].mask, test_vec[i].a);
    simde_assert_equal_vf64(sizeof(r) / sizeof(r[0]), r, test_vec[i].ro, 1);
  }

  return 0;
}

static int
test_simde_mm256_maskstore_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256d a;
    simde__m256i mask;
    simde_float64 ri[4];
    simde_float64 ro[4];
  } test_vec[8] = {
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  256.10), SIMDE_FLOAT64_C(  343.75),
                         SIMDE_FLOAT64_C( -441.90), SIMDE_FLOAT64_C(  609.80)),
      simde_mm256_set_epi64x(INT64_C( 4260458650207424972), INT64_C( 7445494124920454187),
                             INT64_C( 3286955945790099662), INT64_C(-7285974739268381254)),
      { SIMDE_FLOAT64_C( -289.65), SIMDE_FLOAT64_C(  426.76),
        SIMDE_FLOAT64_C(   -9.11), SIMDE_FLOAT64_C( -274.93) },
      { SIMDE_FLOAT64_C(  609.80), SIMDE_FLOAT64_C(  426.76),
        SIMDE_FLOAT64_C(   -9.11), SIMDE_FLOAT64_C( -274.93) } },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  571.67), SIMDE_FLOAT64_C(  518.20),
                         SIMDE_FLOAT64_C(  -98.22), SIMDE_FLOAT64_C( -751.94)),
      simde_mm256_set_epi64x(INT64_C( 1638253588391173148), INT64_C( 1793291230565330203),
                             INT64_C(-9111784699029565866), INT64_C( -227326109536357972)),
      { SIMDE_FLOAT64_C( -486.54), SIMDE_FLOAT64_C(  729.14),
        SIMDE_FLOAT64_C( -705.07), SIMDE_FLOAT64_C( -433.33) },
      { SIMDE_FLOAT64_C( -751.94), SIMDE_FLOAT64_C(  -98.22),
        SIMDE_FLOAT64_C( -705.07), SIMDE_FLOAT64_C( -433.33) } },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  102.13), SIMDE_FLOAT64_C( -818.78),
                         SIMDE_FLOAT64_C( -736.90), SIMDE_FLOAT64_C( -616.20)),
      simde_mm256_set_epi64x(INT64_C(-2892759574131760065), INT64_C(-3440936018861750870),
                             INT64_C( -525494054977382250), INT64_C(-2782562282709585632)),
      { SIMDE_FLOAT64_C( -465.13), SIMDE_FLOAT64_C(  232.40),
        SIMDE_FLOAT64_C( -478.53), SIMDE_FLOAT64_C(  -53.86) },
      { SIMDE_FLOAT64_C( -616.20), SIMDE_FLOAT64_C( -736.90),
        SIMDE_FLOAT64_C( -818.78), SIMDE_FLOAT64_C(  102.13) } },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  748.35), SIMDE_FLOAT64_C(  412.39),
                         SIMDE_FLOAT64_C(  180.73), SIMDE_FLOAT64_C( -772.53)),
      simde_mm256_set_epi64x(INT64_C(-7252528024816875961), INT64_C( 3768666429054031776),
                             INT64_C(-5502653220660844988), INT64_C( 6869378166726947276)),
      { SIMDE_FLOAT64_C( -276.66), SIMDE_FLOAT64_C( -248.39),
        SIMDE_FLOAT64_C( -589.21), SIMDE_FLOAT64_C(  826.33) },
      { SIMDE_FLOAT64_C( -276.66), SIMDE_FLOAT64_C(  180.73),
        SIMDE_FLOAT64_C( -589.21), SIMDE_FLOAT64_C(  748.35) } },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  837.77), SIMDE_FLOAT64_C(  582.83),
                         SIMDE_FLOAT64_C(  901.95), SIMDE_FLOAT64_C(  440.28)),
      simde_mm256_set_epi64x(INT64_C( 7132263712774217761), INT64_C( 7513359651930322343),
                             INT64_C( 7271276353319921669), INT64_C(-6353645951073475265)),
      { SIMDE_FLOAT64_C(  194.29), SIMDE_FLOAT64_C( -702.43),
        SIMDE_FLOAT64_C(  663.08), SIMDE_FLOAT64_C( -837.37) },
      { SIMDE_FLOAT64_C(  440.28), SIMDE_FLOAT64_C( -702.43),
        SIMDE_FLOAT64_C(  663.08), SIMDE_FLOAT64_C( -837.37) } },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -476.01), SIMDE_FLOAT64_C(  964.03),
                         SIMDE_FLOAT64_C( -620.01), SIMDE_FLOAT64_C( -190.51)),
      simde_mm256_set_epi64x(INT64_C(-6904573933630117437), INT64_C( 8435505992452950995),
                             INT64_C(-2030909113789010322), INT64_C(-3516031824252737762)),
      { SIMDE_FLOAT64_C(  412.73), SIMDE_FLOAT64_C( -375.82),
        SIMDE_FLOAT64_C(  493.97), SIMDE_FLOAT64_C( -325.91) },
      { SIMDE_FLOAT64_C( -190.51), SIMDE_FLOAT64_C( -620.01),
        SIMDE_FLOAT64_C(  493.97), SIMDE_FLOAT64_C( -476.01) } },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  109.41), SIMDE_FLOAT64_C( -105.03),
                         SIMDE_FLOAT64_C(  942.38), SIMDE_FLOAT64_C(  492.62)),
      simde_mm256_set_epi64x(INT64_C(-4507038716603653937), INT64_C(-5597740526711762453),
                             INT64_C(-4892847490676269188), INT64_C(-2050275303632712946)),
      { SIMDE_FLOAT64_C(  999.52), SIMDE_FLOAT64_C(   91.29),
        SIMDE_FLOAT64_C( -389.17), SIMDE_FLOAT64_C( -828.90) },
      { SIMDE_FLOAT64_C(  492.62), SIMDE_FLOAT64_C(  942.38),
        SIMDE_FLOAT64_C( -105.03), SIMDE_FLOAT64_C(  109.41) } },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -984.18), SIMDE_FLOAT64_C(  526.23),
                         SIMDE_FLOAT64_C(  210.69), SIMDE_FLOAT64_C( -960.42)),
      simde_mm256_set_epi64x(INT64_C(-2327918596051776606), INT64_C(-6284034566091225578),
                             INT64_C( 5326594562181579270), INT64_C( 7458656096830697285)),
      { SIMDE_FLOAT64_C(  719.28), SIMDE_FLOAT64_C( -272.00),
        SIMDE_FLOAT64_C( -305.09), SIMDE_FLOAT64_C(  995.54) },
      { SIMDE_FLOAT64_C(  719.28), SIMDE_FLOAT64_C( -272.00),
        SIMDE_FLOAT64_C(  526.23), SIMDE_FLOAT64_C( -984.18) } }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde_float64 r[4];
    simde_memcpy(r, test_vec[i].ri, sizeof(r));
    simde_mm256_maskstore_pd(r, test_vec[i].mask, test_vec[i].a);
    simde_assert_equal_vf64(sizeof(r) / sizeof(r[0]), r, test_vec[i].ro, 1);
  }

  return 0;
}

static int
test_simde_mm_maskstore_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m128 a;
    simde__m128i mask;
    simde_float32 ri[4];
    simde_float32 ro[4];
  } test_vec[8] = {
    { simde_mm_set_ps(SIMDE_FLOAT32_C(  674.56), SIMDE_FLOAT32_C( -800.90), SIMDE_FLOAT32_C( -515.11), SIMDE_FLOAT32_C(  918.12)),
      simde_mm_set_epi32(INT32_C( 1108579007), INT32_C( 1980053353), INT32_C( 1803323457), INT32_C( -407836103)),
      { SIMDE_FLOAT32_C( -619.39), SIMDE_FLOAT32_C( -235.61), SIMDE_FLOAT32_C( -100.19), SIMDE_FLOAT32_C(  132.85) },
      { SIMDE_FLOAT32_C(  918.12), SIMDE_FLOAT32_C( -235.61), SIMDE_FLOAT32_C( -100.19), SIMDE_FLOAT32_C(  132.85) } },
    { simde_mm_set_ps(SIMDE_FLOAT32_C( -921.95), SIMDE_FLOAT32_C( -150.48), SIMDE_FLOAT32_C(  -68.61), SIMDE_FLOAT32_C(  516.22)),
      simde_mm_set_epi32(INT32_C(  992186029), INT32_C( 1116343160), INT32_C(  312629428), INT32_C( -102955009)),
      { SIMDE_FLOAT32_C(  590.22), SIMDE_FLOAT32_C(   90.53), SIMDE_FLOAT32_C(  -38.56), SIMDE_FLOAT32_C(  730.28) },
      { SIMDE_FLOAT32_C(  516.22), SIMDE_FLOAT32_C(   90.53), SIMDE_FLOAT32_C(  -38.56), SIMDE_FLOAT32_C(  730.28) } },
    { simde_mm_set_ps(SIMDE_FLOAT32_C( -641.93), SIMDE_FLOAT32_C(  207.52), SIMDE_FLOAT32_C( -794.64), SIMDE_FLOAT32_C(  604.13)),
      simde_mm_set_epi32(INT32_C( -917957115), INT32_C( 1866845223), INT32_C(  844085971), INT32_C( -482023893)),
      { SIMDE_FLOAT32_C( -925.57), SIMDE_FLOAT32_C(    8.11), SIMDE_FLOAT32_C( -375.92), SIMDE_FLOAT32_C( -370.15) },
      { SIMDE_FLOAT32_C(  604.13), SIMDE_FLOAT32_C(    8.11), SIMDE_FLOAT32_C( -375.92), SIMDE_FLOAT32_C( -641.93) } },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(  805.10), SIMDE_FLOAT32_C( -153.46), SIMDE_FLOAT32_C(  308.00), SIMDE_FLOAT32_C( -159.40)),
      simde_mm_set_epi32(INT32_C( -582979650), INT32_C( 2118735836), INT32_C( -687047741), INT32_C( -848367450)),
      { SIMDE_FLOAT32_C(  678.23), SIMDE_FLOAT32_C(  517.86), SIMDE_FLOAT32_C(  930.59), SIMDE_FLOAT32_C( -376.44) },
      { SIMDE_FLOAT32_C( -159.40), SIMDE_FLOAT32_C(  308.00), SIMDE_FLOAT32_C(  930.59), SIMDE_FLOAT32_C(  805.10) } },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(  286.93), SIMDE_FLOAT32_C( -263.99), SIMDE_FLOAT32_C( -966.59), SIMDE_FLOAT32_C( -652.85)),
      simde_mm_set_epi32(INT32_C( -773117066), INT32_C(-1995762340), INT32_C(-1086112436), INT32_C(  352565673)),
      { SIMDE_FLOAT32_C( -243.02), SIMDE_FLOAT32_C(  -10.35), SIMDE_FLOAT32_C( -930.64), SIMDE_FLOAT32_C( -942.71) },
      { SIMDE_FLOAT32_C( -243.02), SIMDE_FLOAT32_C( -966.59), SIMDE_FLOAT32_C( -263.99), SIMDE_FLOAT32_C(  286.93) } },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(  695.71), SIMDE_FLOAT32_C(  544.01), SIMDE_FLOAT32_C( -155.11), SIMDE_FLOAT32_C(  773.52)),
      simde_mm_set_epi32(INT32_C( 2130523937), INT32_C(  959365319), INT32_C(  -87305215), INT32_C(  336137071)),
      { SIMDE_FLOAT32_C(  331.75), SIMDE_FLOAT32_C(  641.50), SIMDE_FLOAT32_C( -114.90), SIMDE_FLOAT32_C(  582.07) },
      { SIMDE_FLOAT32_C(  331.75), SIMDE_FLOAT32_C( -155.11), SIMDE_FLOAT32_C( -114.90), SIMDE_FLOAT32_C(  582.07) } },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(  -51.27), SIMDE_FLOAT32_C(  493.10), SIMDE_FLOAT32_C( -182.48), SIMDE_FLOAT32_C( -902.32)),
      simde_mm_set_epi32(INT32_C( -776181519), INT32_C(-1636897440), INT32_C( -492655883), INT32_C(-1758902344)),
      { SIMDE_FLOAT32_C(  -81.09), SIMDE_FLOAT32_C( -980.86), SIMDE_FLOAT32_C( -619.01), SIMDE_FLOAT32_C( -490.33) },
      { SIMDE_FLOAT32_C( -902.32), SIMDE_FLOAT32_C( -182.48), SIMDE_FLOAT32_C(  493.10), SIMDE_FLOAT32_C(  -51.27) } },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(  432.35), SIMDE_FLOAT32_C(  341.26), SIMDE_FLOAT32_C(  183.18), SIMDE_FLOAT32_C( -136.49)),
      simde_mm_set_epi32(INT32_C( 1637126517), INT32_C(-1887081950), INT32_C( 1956680612), INT32_C( 1224753500)),
      { SIMDE_FLOAT32_C( -471.44), SIMDE_FLOAT32_C(  241.66), SIMDE_FLOAT32_C(  -19.61), SIMDE_FLOAT32_C( -311.97) },
      { SIMDE_FLOAT32_C( -471.44), SIMDE_FLOAT32_C(  241.66), SIMDE_FLOAT32_C(  341.26), SIMDE_FLOAT32_C( -311.97) } }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde_float32 r[4];
    simde_memcpy(r, test_vec[i].ri, sizeof(r));
    simde_mm_maskstore_ps(r, test_vec[i].mask, test_vec[i].a);
    simde_assert_equal_vf32(sizeof(r) / sizeof(r[0]), r, test_vec[i].ro, 1);
  }

  return 0;
}

static int
test_simde_mm256_maskstore_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde__m256i mask;
    simde_float32 ri[8];
    simde_float32 ro[8];
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   631.62), SIMDE_FLOAT32_C(  -891.94),
                         SIMDE_FLOAT32_C(  -689.27), SIMDE_FLOAT32_C(   347.81),
                         SIMDE_FLOAT32_C(  -616.22), SIMDE_FLOAT32_C(   642.58),
                         SIMDE_FLOAT32_C(   228.19), SIMDE_FLOAT32_C(  -205.29)),
      simde_mm256_set_epi32(INT32_C(  295073064), INT32_C(  716384814), INT32_C(  546124227), INT32_C( -305648391),
                            INT32_C(-1290025628), INT32_C(-1970079627), INT32_C( -571027584), INT32_C(  423261258)),
      { SIMDE_FLOAT32_C(  -608.38), SIMDE_FLOAT32_C(   456.15),
        SIMDE_FLOAT32_C(   520.16), SIMDE_FLOAT32_C(   784.51),
        SIMDE_FLOAT32_C(   874.80), SIMDE_FLOAT32_C(  -683.96),
        SIMDE_FLOAT32_C(  -492.84), SIMDE_FLOAT32_C(  -304.46) },
      { SIMDE_FLOAT32_C(  -608.38), SIMDE_FLOAT32_C(   228.19),
        SIMDE_FLOAT32_C(   642.58), SIMDE_FLOAT32_C(  -616.22),
        SIMDE_FLOAT32_C(   347.81), SIMDE_FLOAT32_C(  -683.96),
        SIMDE_FLOAT32_C(  -492.84), SIMDE_FLOAT32_C(  -304.46) } },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   410.61), SIMDE_FLOAT32_C(  -548.69),
                         SIMDE_FLOAT32_C(  -844.69), SIMDE_FLOAT32_C(   115.46),
                         SIMDE_FLOAT32_C(  -883.40), SIMDE_FLOAT32_C(  -942.83),
                         SIMDE_FLOAT32_C(   299.17), SIMDE_FLOAT32_C(   463.83)),
      simde_mm256_set_epi32(INT32_C(  162007636), INT32_C( 1372837309), INT32_C( 1276687632), INT32_C(-1819337795),
                            INT32_C(-2027923298), INT32_C(  531821300), INT32_C( 1062735782), INT32_C( -103135294)),
      { SIMDE_FLOAT32_C(  -186.23), SIMDE_FLOAT32_C(   411.88),
        SIMDE_FLOAT32_C(  -764.36), SIMDE_FLOAT32_C(   765.54),
        SIMDE_FLOAT32_C(  -288.35), SIMDE_FLOAT32_C(   486.60),
        SIMDE_FLOAT32_C(  -405.36), SIMDE_FLOAT32_C(   812.05) },
      { SIMDE_FLOAT32_C(   463.83), SIMDE_FLOAT32_C(   411.88),
        SIMDE_FLOAT32_C(  -764.36), SIMDE_FLOAT32_C(  -883.40),
        SIMDE_FLOAT32_C(   115.46), SIMDE_FLOAT32_C(   486.60),
        SIMDE_FLOAT32_C(  -405.36), SIMDE_FLOAT32_C(   812.05) } },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  -783.01), SIMDE_FLOAT32_C(  -741.62),
                         SIMDE_FLOAT32_C(  -384.48), SIMDE_FLOAT32_C(   584.48),
                         SIMDE_FLOAT32_C(  -995.40), SIMDE_FLOAT32_C(  -545.74),
                         SIMDE_FLOAT32_C(  -304.24), SIMDE_FLOAT32_C(   611.74)),
      simde_mm256_set_epi32(INT32_C(-1838874946), INT32_C(-2030629043), INT32_C(   38494100), INT32_C(   -7221084),
                            INT32_C(-1092763998), INT32_C(   39946466), INT32_C( -239157020), INT32_C(-1142390879)),
      { SIMDE_FLOAT32_C(  -415.76), SIMDE_FLOAT32_C(   542.61),
        SIMDE_FLOAT32_C(   568.26), SIMDE_FLOAT32_C(   280.16),
        SIMDE_FLOAT32_C(   662.20), SIMDE_FLOAT32_C(   -14.92),
        SIMDE_FLOAT32_C(   639.71), SIMDE_FLOAT32_C(  -773.09) },
      { SIMDE_FLOAT32_C(   611.74), SIMDE_FLOAT32_C(  -304.24),
        SIMDE_FLOAT32_C(   568.26), SIMDE_FLOAT32_C(  -995.40),
        SIMDE_FLOAT32_C(   584.48), SIMDE_FLOAT32_C(   -14.92),
        SIMDE_FLOAT32_C(  -741.62), SIMDE_FLOAT32_C(  -783.01) } },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   921.86), SIMDE_FLOAT32_C(  -688.86),
                         SIMDE_FLOAT32_C(    43.96), SIMDE_FLOAT32_C(   754.20),
                         SIMDE_FLOAT32_C(  -480.27), SIMDE_FLOAT32_C(  -645.94),
                         SIMDE_FLOAT32_C(   315.20), SIMDE_FLOAT32_C(   726.23)),
      simde_mm256_set_epi32(INT32_C( -956355020), INT32_C( -805184504), INT32_C(   -5391233), INT32_C(  154150621),
                            INT32_C( -322849130), INT32_C(-1596216639), INT32_C( -653101729), INT32_C( -652476461)),
      { SIMDE_FLOAT32_C(   -76.23), SIMDE_FLOAT32_C(   -18.44),
        SIMDE_FLOAT32_C(   771.31), SIMDE_FLOAT32_C(   206.00),
        SIMDE_FLOAT32_C(   650.40), SIMDE_FLOAT32_C(   -69.08),
        SIMDE_FLOAT32_C(  -737.29), SIMDE_FLOAT32_C(   222.97) },
      { SIMDE_FLOAT32_C(   726.23), SIMDE_FLOAT32_C(   315.20),
        SIMDE_FLOAT32_C(  -645.94), SIMDE_FLOAT32_C(  -480.27),
        SIMDE_FLOAT32_C(   650.40), SIMDE_FLOAT32_C(    43.96),
        SIMDE_FLOAT32_C(  -688.86), SIMDE_FLOAT32_C(   921.86) } },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   606.49), SIMDE_FLOAT32_C(   777.74),
                         SIMDE_FLOAT32_C(   -66.55), SIMDE_FLOAT32_C(   -42.93),
                         SIMDE_FLOAT32_C(    40.92), SIMDE_FLOAT32_C(  -104.82),
                         SIMDE_FLOAT32_C(   745.57), SIMDE_FLOAT32_C(  -526.15)),
      simde_mm256_set_epi32(INT32_C( 1494400292), INT32_C(  898207849), INT32_C(  499297865), INT32_C(   32131455),
                            INT32_C(  837039755), INT32_C(  686948685), INT32_C( 1413261791), INT32_C( 1091352937)),
      { SIMDE_FLOAT32_C(  -911.46), SIMDE_FLOAT32_C(   181.07),
        SIMDE_FLOAT32_C(    60.18), SIMDE_FLOAT32_C(   299.13),
        SIMDE_FLOAT32_C(  -412.14), SIMDE_FLOAT32_C(  -496.33),
        SIMDE_FLOAT32_C(   300.62), SIMDE_FLOAT32_C(  -738.40) },
      { SIMDE_FLOAT32_C(  -911.46), SIMDE_FLOAT32_C(   181.07),
        SIMDE_FLOAT32_C(    60.18), SIMDE_FLOAT32_C(   299.13),
        SIMDE_FLOAT32_C(  -412.14), SIMDE_FLOAT32_C(  -496.33),
        SIMDE_FLOAT32_C(   300.62), SIMDE_FLOAT32_C(  -738.40) } },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  -418.84), SIMDE_FLOAT32_C(   873.25),
                         SIMDE_FLOAT32_C(   510.96), SIMDE_FLOAT32_C(   992.60),
                         SIMDE_FLOAT32_C(  -316.31), SIMDE_FLOAT32_C(    91.31),
                         SIMDE_FLOAT32_C(   578.46), SIMDE_FLOAT32_C(  -878.58)),
      simde_mm256_set_epi32(INT32_C(  957079452), INT32_C( 1280918142), INT32_C( 1743745557), INT32_C( 1819407670),
                            INT32_C(  242366822), INT32_C( 1212388671), INT32_C(-1368211077), INT32_C( 1178548564)),
      { SIMDE_FLOAT32_C(   268.38), SIMDE_FLOAT32_C(   166.26),
        SIMDE_FLOAT32_C(  -817.18), SIMDE_FLOAT32_C(  -906.27),
        SIMDE_FLOAT32_C(   690.97), SIMDE_FLOAT32_C(    40.42),
        SIMDE_FLOAT32_C(   937.35), SIMDE_FLOAT32_C(  -494.05) },
      { SIMDE_FLOAT32_C(   268.38), SIMDE_FLOAT32_C(   578.46),
        SIMDE_FLOAT32_C(  -817.18), SIMDE_FLOAT32_C(  -906.27),
        SIMDE_FLOAT32_C(   690.97), SIMDE_FLOAT32_C(    40.42),
        SIMDE_FLOAT32_C(   937.35), SIMDE_FLOAT32_C(  -494.05) } },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   991.62), SIMDE_FLOAT32_C(   121.11),
                         SIMDE_FLOAT32_C(   504.72), SIMDE_FLOAT32_C(   982.21),
                         SIMDE_FLOAT32_C(   263.79), SIMDE_FLOAT32_C(   803.03),
                         SIMDE_FLOAT32_C(    92.44), SIMDE_FLOAT32_C(  -807.69)),
      simde_mm256_set_epi32(INT32_C(-2097969116), INT32_C(-2051872419), INT32_C(  269695043), INT32_C( -952585033),
                            INT32_C( 1293504381), INT32_C( -196806212), INT32_C(-2045108827), INT32_C( 1173779579)),
      { SIMDE_FLOAT32_C(   292.67), SIMDE_FLOAT32_C(   917.15),
        SIMDE_FLOAT32_C(    90.37), SIMDE_FLOAT32_C(   166.43),
        SIMDE_FLOAT32_C(   627.88), SIMDE_FLOAT32_C(  -780.11),
        SIMDE_FLOAT32_C(  -304.67), SIMDE_FLOAT32_C(  -518.81) },
      { SIMDE_FLOAT32_C(   292.67), SIMDE_FLOAT32_C(    92.44),
        SIMDE_FLOAT32_C(   803.03), SIMDE_FLOAT32_C(   166.43),
        SIMDE_FLOAT32_C(   982.21), SIMDE_FLOAT32_C(  -780.11),
        SIMDE_FLOAT32_C(   121.11), SIMDE_FLOAT32_C(   991.62) } },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  -433.27), SIMDE_FLOAT32_C(   892.50),
                         SIMDE_FLOAT32_C(   314.40), SIMDE_FLOAT32_C(  -419.48),
                         SIMDE_FLOAT32_C(  -384.30), SIMDE_FLOAT32_C(  -314.92),
                         SIMDE_FLOAT32_C(   743.09), SIMDE_FLOAT32_C(  -477.54)),
      simde_mm256_set_epi32(INT32_C( 1543878346), INT32_C(  -55266127), INT32_C(-1716646352), INT32_C( 1500867969),
                            INT32_C( -538309268), INT32_C( 1738471819), INT32_C( -967093953), INT32_C( -389124917)),
      { SIMDE_FLOAT32_C(   553.15), SIMDE_FLOAT32_C(  -107.56),
        SIMDE_FLOAT32_C(  -195.96), SIMDE_FLOAT32_C(   763.27),
        SIMDE_FLOAT32_C(  -256.55), SIMDE_FLOAT32_C(  -826.51),
        SIMDE_FLOAT32_C(  -168.36), SIMDE_FLOAT32_C(  -340.90) },
      { SIMDE_FLOAT32_C(  -477.54), SIMDE_FLOAT32_C(   743.09),
        SIMDE_FLOAT32_C(  -195.96), SIMDE_FLOAT32_C(  -384.30),
        SIMDE_FLOAT32_C(  -256.55), SIMDE_FLOAT32_C(   314.40),
        SIMDE_FLOAT32_C(   892.50), SIMDE_FLOAT32_C(  -340.90) } }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde_float32 r[8];
    simde_memcpy(r, test_vec[i].ri, sizeof(r));
    simde_mm256_maskstore_ps(r, test_vec[i].mask, test_vec[i].a);
    simde_assert_equal_vf32(sizeof(r) / sizeof(r[0]), r, test_vec[i].ro, 1);
  }

  return 0;
}

static int
test_simde_mm256_min_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde__m256 b;
    simde__m256 r;
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  620.32), SIMDE_FLOAT32_C( -596.35),
                         SIMDE_FLOAT32_C(  174.72), SIMDE_FLOAT32_C(  165.53),
                         SIMDE_FLOAT32_C(  242.92), SIMDE_FLOAT32_C(  330.00),
                         SIMDE_FLOAT32_C( -436.53), SIMDE_FLOAT32_C( -259.31)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  137.36), SIMDE_FLOAT32_C(  -49.88),
                         SIMDE_FLOAT32_C(  846.67), SIMDE_FLOAT32_C(  642.07),
                         SIMDE_FLOAT32_C(  353.31), SIMDE_FLOAT32_C( -696.33),
                         SIMDE_FLOAT32_C( -153.51), SIMDE_FLOAT32_C( -347.51)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  137.36), SIMDE_FLOAT32_C( -596.35),
                         SIMDE_FLOAT32_C(  174.72), SIMDE_FLOAT32_C(  165.53),
                         SIMDE_FLOAT32_C(  242.92), SIMDE_FLOAT32_C( -696.33),
                         SIMDE_FLOAT32_C( -436.53), SIMDE_FLOAT32_C( -347.51)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  938.63), SIMDE_FLOAT32_C(  244.19),
                         SIMDE_FLOAT32_C(  355.24), SIMDE_FLOAT32_C(  261.35),
                         SIMDE_FLOAT32_C(  679.42), SIMDE_FLOAT32_C(  -31.35),
                         SIMDE_FLOAT32_C(  138.77), SIMDE_FLOAT32_C( -717.66)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -563.43), SIMDE_FLOAT32_C(  586.11),
                         SIMDE_FLOAT32_C( -131.07), SIMDE_FLOAT32_C(  850.65),
                         SIMDE_FLOAT32_C(  165.14), SIMDE_FLOAT32_C( -413.67),
                         SIMDE_FLOAT32_C( -290.54), SIMDE_FLOAT32_C(  984.51)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -563.43), SIMDE_FLOAT32_C(  244.19),
                         SIMDE_FLOAT32_C( -131.07), SIMDE_FLOAT32_C(  261.35),
                         SIMDE_FLOAT32_C(  165.14), SIMDE_FLOAT32_C( -413.67),
                         SIMDE_FLOAT32_C( -290.54), SIMDE_FLOAT32_C( -717.66)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -838.48), SIMDE_FLOAT32_C(  344.61),
                         SIMDE_FLOAT32_C( -913.53), SIMDE_FLOAT32_C(  858.23),
                         SIMDE_FLOAT32_C( -347.90), SIMDE_FLOAT32_C( -707.87),
                         SIMDE_FLOAT32_C( -634.91), SIMDE_FLOAT32_C( -919.82)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -180.34), SIMDE_FLOAT32_C( -789.22),
                         SIMDE_FLOAT32_C(  607.01), SIMDE_FLOAT32_C(  440.98),
                         SIMDE_FLOAT32_C(  432.59), SIMDE_FLOAT32_C( -196.73),
                         SIMDE_FLOAT32_C(  380.83), SIMDE_FLOAT32_C(  796.17)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -838.48), SIMDE_FLOAT32_C( -789.22),
                         SIMDE_FLOAT32_C( -913.53), SIMDE_FLOAT32_C(  440.98),
                         SIMDE_FLOAT32_C( -347.90), SIMDE_FLOAT32_C( -707.87),
                         SIMDE_FLOAT32_C( -634.91), SIMDE_FLOAT32_C( -919.82)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -210.35), SIMDE_FLOAT32_C( -870.90),
                         SIMDE_FLOAT32_C(  992.08), SIMDE_FLOAT32_C( -822.82),
                         SIMDE_FLOAT32_C( -209.97), SIMDE_FLOAT32_C( -436.22),
                         SIMDE_FLOAT32_C(  481.44), SIMDE_FLOAT32_C(  169.09)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -860.96), SIMDE_FLOAT32_C(  972.39),
                         SIMDE_FLOAT32_C(  830.57), SIMDE_FLOAT32_C(  -23.76),
                         SIMDE_FLOAT32_C(  311.19), SIMDE_FLOAT32_C(  554.15),
                         SIMDE_FLOAT32_C(    0.80), SIMDE_FLOAT32_C( -247.41)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -860.96), SIMDE_FLOAT32_C( -870.90),
                         SIMDE_FLOAT32_C(  830.57), SIMDE_FLOAT32_C( -822.82),
                         SIMDE_FLOAT32_C( -209.97), SIMDE_FLOAT32_C( -436.22),
                         SIMDE_FLOAT32_C(    0.80), SIMDE_FLOAT32_C( -247.41)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -158.36), SIMDE_FLOAT32_C( -758.94),
                         SIMDE_FLOAT32_C(  618.04), SIMDE_FLOAT32_C(  976.02),
                         SIMDE_FLOAT32_C( -953.60), SIMDE_FLOAT32_C(  866.14),
                         SIMDE_FLOAT32_C(  565.22), SIMDE_FLOAT32_C(  554.29)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   -8.54), SIMDE_FLOAT32_C( -896.75),
                         SIMDE_FLOAT32_C(  630.48), SIMDE_FLOAT32_C(   27.00),
                         SIMDE_FLOAT32_C(  865.05), SIMDE_FLOAT32_C( -640.13),
                         SIMDE_FLOAT32_C( -969.96), SIMDE_FLOAT32_C( -427.62)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -158.36), SIMDE_FLOAT32_C( -896.75),
                         SIMDE_FLOAT32_C(  618.04), SIMDE_FLOAT32_C(   27.00),
                         SIMDE_FLOAT32_C( -953.60), SIMDE_FLOAT32_C( -640.13),
                         SIMDE_FLOAT32_C( -969.96), SIMDE_FLOAT32_C( -427.62)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -601.54), SIMDE_FLOAT32_C( -545.11),
                         SIMDE_FLOAT32_C( -568.66), SIMDE_FLOAT32_C(  393.12),
                         SIMDE_FLOAT32_C( -656.85), SIMDE_FLOAT32_C(  612.23),
                         SIMDE_FLOAT32_C(  417.91), SIMDE_FLOAT32_C( -206.48)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  -56.90), SIMDE_FLOAT32_C( -986.18),
                         SIMDE_FLOAT32_C(  948.05), SIMDE_FLOAT32_C(  -52.08),
                         SIMDE_FLOAT32_C( -838.46), SIMDE_FLOAT32_C( -751.49),
                         SIMDE_FLOAT32_C(  775.89), SIMDE_FLOAT32_C(  940.13)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -601.54), SIMDE_FLOAT32_C( -986.18),
                         SIMDE_FLOAT32_C( -568.66), SIMDE_FLOAT32_C(  -52.08),
                         SIMDE_FLOAT32_C( -838.46), SIMDE_FLOAT32_C( -751.49),
                         SIMDE_FLOAT32_C(  417.91), SIMDE_FLOAT32_C( -206.48)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  459.26), SIMDE_FLOAT32_C( -447.11),
                         SIMDE_FLOAT32_C(  826.76), SIMDE_FLOAT32_C( -107.61),
                         SIMDE_FLOAT32_C( -521.03), SIMDE_FLOAT32_C(  -33.76),
                         SIMDE_FLOAT32_C(  315.53), SIMDE_FLOAT32_C( -222.31)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -136.58), SIMDE_FLOAT32_C(   50.72),
                         SIMDE_FLOAT32_C(  921.42), SIMDE_FLOAT32_C(  664.07),
                         SIMDE_FLOAT32_C(  743.00), SIMDE_FLOAT32_C( -236.39),
                         SIMDE_FLOAT32_C(  981.20), SIMDE_FLOAT32_C(  280.47)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -136.58), SIMDE_FLOAT32_C( -447.11),
                         SIMDE_FLOAT32_C(  826.76), SIMDE_FLOAT32_C( -107.61),
                         SIMDE_FLOAT32_C( -521.03), SIMDE_FLOAT32_C( -236.39),
                         SIMDE_FLOAT32_C(  315.53), SIMDE_FLOAT32_C( -222.31)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  356.76), SIMDE_FLOAT32_C( -389.22),
                         SIMDE_FLOAT32_C( -477.96), SIMDE_FLOAT32_C(   -3.77),
                         SIMDE_FLOAT32_C( -645.03), SIMDE_FLOAT32_C( -766.89),
                         SIMDE_FLOAT32_C(  755.76), SIMDE_FLOAT32_C(  244.51)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  823.25), SIMDE_FLOAT32_C(  384.14),
                         SIMDE_FLOAT32_C(  475.61), SIMDE_FLOAT32_C( -650.92),
                         SIMDE_FLOAT32_C( -913.35), SIMDE_FLOAT32_C( -290.77),
                         SIMDE_FLOAT32_C(  213.82), SIMDE_FLOAT32_C( -350.01)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  356.76), SIMDE_FLOAT32_C( -389.22),
                         SIMDE_FLOAT32_C( -477.96), SIMDE_FLOAT32_C( -650.92),
                         SIMDE_FLOAT32_C( -913.35), SIMDE_FLOAT32_C( -766.89),
                         SIMDE_FLOAT32_C(  213.82), SIMDE_FLOAT32_C( -350.01)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256 r = simde_mm256_min_ps(test_vec[i].a, test_vec[i].b);
    simde_assert_m256_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_min_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256d a;
    simde__m256d b;
    simde__m256d r;
  } test_vec[8] = {
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  207.41), SIMDE_FLOAT64_C(  328.63),
                         SIMDE_FLOAT64_C( -694.69), SIMDE_FLOAT64_C(  687.63)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   89.05), SIMDE_FLOAT64_C(  448.86),
                         SIMDE_FLOAT64_C(   19.12), SIMDE_FLOAT64_C( -158.19)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   89.05), SIMDE_FLOAT64_C(  328.63),
                         SIMDE_FLOAT64_C( -694.69), SIMDE_FLOAT64_C( -158.19)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  809.97), SIMDE_FLOAT64_C( -437.57),
                         SIMDE_FLOAT64_C( -994.98), SIMDE_FLOAT64_C( -594.51)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  949.89), SIMDE_FLOAT64_C( -515.80),
                         SIMDE_FLOAT64_C( -545.90), SIMDE_FLOAT64_C(  794.78)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  809.97), SIMDE_FLOAT64_C( -515.80),
                         SIMDE_FLOAT64_C( -994.98), SIMDE_FLOAT64_C( -594.51)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -509.90), SIMDE_FLOAT64_C( -421.15),
                         SIMDE_FLOAT64_C( -539.85), SIMDE_FLOAT64_C( -245.38)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  -30.48), SIMDE_FLOAT64_C( -451.08),
                         SIMDE_FLOAT64_C(  -92.82), SIMDE_FLOAT64_C( -896.69)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -509.90), SIMDE_FLOAT64_C( -451.08),
                         SIMDE_FLOAT64_C( -539.85), SIMDE_FLOAT64_C( -896.69)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  362.92), SIMDE_FLOAT64_C(  618.37),
                         SIMDE_FLOAT64_C( -874.81), SIMDE_FLOAT64_C(  119.95)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  479.87), SIMDE_FLOAT64_C(  161.56),
                         SIMDE_FLOAT64_C(  162.67), SIMDE_FLOAT64_C( -967.58)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  362.92), SIMDE_FLOAT64_C(  161.56),
                         SIMDE_FLOAT64_C( -874.81), SIMDE_FLOAT64_C( -967.58)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -124.73), SIMDE_FLOAT64_C(  204.12),
                         SIMDE_FLOAT64_C( -546.39), SIMDE_FLOAT64_C(  -78.22)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  120.00), SIMDE_FLOAT64_C(  851.26),
                         SIMDE_FLOAT64_C(  153.83), SIMDE_FLOAT64_C(  393.14)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -124.73), SIMDE_FLOAT64_C(  204.12),
                         SIMDE_FLOAT64_C( -546.39), SIMDE_FLOAT64_C(  -78.22)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -812.91), SIMDE_FLOAT64_C(  797.50),
                         SIMDE_FLOAT64_C(  285.31), SIMDE_FLOAT64_C(  340.33)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  -48.34), SIMDE_FLOAT64_C( -906.19),
                         SIMDE_FLOAT64_C(  314.61), SIMDE_FLOAT64_C(  602.47)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -812.91), SIMDE_FLOAT64_C( -906.19),
                         SIMDE_FLOAT64_C(  285.31), SIMDE_FLOAT64_C(  340.33)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  376.08), SIMDE_FLOAT64_C(  847.57),
                         SIMDE_FLOAT64_C(  979.10), SIMDE_FLOAT64_C( -602.74)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  307.85), SIMDE_FLOAT64_C(  571.44),
                         SIMDE_FLOAT64_C( -621.81), SIMDE_FLOAT64_C(  -12.29)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  307.85), SIMDE_FLOAT64_C(  571.44),
                         SIMDE_FLOAT64_C( -621.81), SIMDE_FLOAT64_C( -602.74)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -682.10), SIMDE_FLOAT64_C(  349.84),
                         SIMDE_FLOAT64_C( -943.34), SIMDE_FLOAT64_C(  341.61)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  -89.49), SIMDE_FLOAT64_C( -236.51),
                         SIMDE_FLOAT64_C(  632.28), SIMDE_FLOAT64_C( -535.13)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -682.10), SIMDE_FLOAT64_C( -236.51),
                         SIMDE_FLOAT64_C( -943.34), SIMDE_FLOAT64_C( -535.13)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256d r = simde_mm256_min_pd(test_vec[i].a, test_vec[i].b);
    simde_assert_m256d_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_max_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde__m256 b;
    simde__m256 r;
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  449.92), SIMDE_FLOAT32_C(   34.28),
                         SIMDE_FLOAT32_C(  -25.78), SIMDE_FLOAT32_C(  210.08),
                         SIMDE_FLOAT32_C(  389.04), SIMDE_FLOAT32_C( -871.84),
                         SIMDE_FLOAT32_C( -259.15), SIMDE_FLOAT32_C( -935.03)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -540.89), SIMDE_FLOAT32_C(  480.33),
                         SIMDE_FLOAT32_C(   35.20), SIMDE_FLOAT32_C(  243.72),
                         SIMDE_FLOAT32_C(  827.03), SIMDE_FLOAT32_C(  -35.53),
                         SIMDE_FLOAT32_C( -369.50), SIMDE_FLOAT32_C( -834.21)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  449.92), SIMDE_FLOAT32_C(  480.33),
                         SIMDE_FLOAT32_C(   35.20), SIMDE_FLOAT32_C(  243.72),
                         SIMDE_FLOAT32_C(  827.03), SIMDE_FLOAT32_C(  -35.53),
                         SIMDE_FLOAT32_C( -259.15), SIMDE_FLOAT32_C( -834.21)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  489.45), SIMDE_FLOAT32_C( -170.78),
                         SIMDE_FLOAT32_C(  183.48), SIMDE_FLOAT32_C(  307.64),
                         SIMDE_FLOAT32_C( -977.66), SIMDE_FLOAT32_C(  745.18),
                         SIMDE_FLOAT32_C(  561.96), SIMDE_FLOAT32_C( -868.28)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -220.92), SIMDE_FLOAT32_C(  742.39),
                         SIMDE_FLOAT32_C(  682.97), SIMDE_FLOAT32_C(  319.92),
                         SIMDE_FLOAT32_C(  734.45), SIMDE_FLOAT32_C( -490.69),
                         SIMDE_FLOAT32_C( -753.68), SIMDE_FLOAT32_C( -110.63)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  489.45), SIMDE_FLOAT32_C(  742.39),
                         SIMDE_FLOAT32_C(  682.97), SIMDE_FLOAT32_C(  319.92),
                         SIMDE_FLOAT32_C(  734.45), SIMDE_FLOAT32_C(  745.18),
                         SIMDE_FLOAT32_C(  561.96), SIMDE_FLOAT32_C( -110.63)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -934.39), SIMDE_FLOAT32_C( -436.28),
                         SIMDE_FLOAT32_C(  572.10), SIMDE_FLOAT32_C( -111.64),
                         SIMDE_FLOAT32_C(  551.18), SIMDE_FLOAT32_C(  829.61),
                         SIMDE_FLOAT32_C( -107.94), SIMDE_FLOAT32_C( -864.62)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  797.77), SIMDE_FLOAT32_C(  207.18),
                         SIMDE_FLOAT32_C( -690.52), SIMDE_FLOAT32_C(  861.15),
                         SIMDE_FLOAT32_C(  110.08), SIMDE_FLOAT32_C(   67.85),
                         SIMDE_FLOAT32_C( -389.66), SIMDE_FLOAT32_C(  867.20)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  797.77), SIMDE_FLOAT32_C(  207.18),
                         SIMDE_FLOAT32_C(  572.10), SIMDE_FLOAT32_C(  861.15),
                         SIMDE_FLOAT32_C(  551.18), SIMDE_FLOAT32_C(  829.61),
                         SIMDE_FLOAT32_C( -107.94), SIMDE_FLOAT32_C(  867.20)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  481.13), SIMDE_FLOAT32_C(  -53.37),
                         SIMDE_FLOAT32_C(   -0.04), SIMDE_FLOAT32_C(  614.09),
                         SIMDE_FLOAT32_C(  596.94), SIMDE_FLOAT32_C(  349.18),
                         SIMDE_FLOAT32_C(   53.36), SIMDE_FLOAT32_C(  244.43)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -253.17), SIMDE_FLOAT32_C( -107.20),
                         SIMDE_FLOAT32_C( -893.53), SIMDE_FLOAT32_C(  608.05),
                         SIMDE_FLOAT32_C(  292.67), SIMDE_FLOAT32_C(  529.08),
                         SIMDE_FLOAT32_C(  170.70), SIMDE_FLOAT32_C( -778.36)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  481.13), SIMDE_FLOAT32_C(  -53.37),
                         SIMDE_FLOAT32_C(   -0.04), SIMDE_FLOAT32_C(  614.09),
                         SIMDE_FLOAT32_C(  596.94), SIMDE_FLOAT32_C(  529.08),
                         SIMDE_FLOAT32_C(  170.70), SIMDE_FLOAT32_C(  244.43)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -125.79), SIMDE_FLOAT32_C( -776.79),
                         SIMDE_FLOAT32_C( -268.99), SIMDE_FLOAT32_C(  991.82),
                         SIMDE_FLOAT32_C(  880.36), SIMDE_FLOAT32_C( -906.06),
                         SIMDE_FLOAT32_C( -550.03), SIMDE_FLOAT32_C(  415.17)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  733.77), SIMDE_FLOAT32_C( -207.30),
                         SIMDE_FLOAT32_C( -944.02), SIMDE_FLOAT32_C( -591.97),
                         SIMDE_FLOAT32_C( -584.21), SIMDE_FLOAT32_C(  271.28),
                         SIMDE_FLOAT32_C( -845.79), SIMDE_FLOAT32_C( -155.27)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  733.77), SIMDE_FLOAT32_C( -207.30),
                         SIMDE_FLOAT32_C( -268.99), SIMDE_FLOAT32_C(  991.82),
                         SIMDE_FLOAT32_C(  880.36), SIMDE_FLOAT32_C(  271.28),
                         SIMDE_FLOAT32_C( -550.03), SIMDE_FLOAT32_C(  415.17)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -136.67), SIMDE_FLOAT32_C(  221.00),
                         SIMDE_FLOAT32_C( -864.98), SIMDE_FLOAT32_C(  290.97),
                         SIMDE_FLOAT32_C( -704.76), SIMDE_FLOAT32_C( -867.43),
                         SIMDE_FLOAT32_C( -323.83), SIMDE_FLOAT32_C(   74.81)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -127.03), SIMDE_FLOAT32_C(  135.62),
                         SIMDE_FLOAT32_C( -308.59), SIMDE_FLOAT32_C( -352.70),
                         SIMDE_FLOAT32_C(  883.68), SIMDE_FLOAT32_C(  134.86),
                         SIMDE_FLOAT32_C( -894.89), SIMDE_FLOAT32_C( -737.05)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -127.03), SIMDE_FLOAT32_C(  221.00),
                         SIMDE_FLOAT32_C( -308.59), SIMDE_FLOAT32_C(  290.97),
                         SIMDE_FLOAT32_C(  883.68), SIMDE_FLOAT32_C(  134.86),
                         SIMDE_FLOAT32_C( -323.83), SIMDE_FLOAT32_C(   74.81)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  780.81), SIMDE_FLOAT32_C(  -76.69),
                         SIMDE_FLOAT32_C( -213.47), SIMDE_FLOAT32_C(  296.05),
                         SIMDE_FLOAT32_C(  129.81), SIMDE_FLOAT32_C(   95.07),
                         SIMDE_FLOAT32_C( -493.97), SIMDE_FLOAT32_C( -309.39)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  224.91), SIMDE_FLOAT32_C(  545.10),
                         SIMDE_FLOAT32_C( -928.25), SIMDE_FLOAT32_C(  373.14),
                         SIMDE_FLOAT32_C( -710.01), SIMDE_FLOAT32_C(  166.25),
                         SIMDE_FLOAT32_C(  729.82), SIMDE_FLOAT32_C(  996.22)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  780.81), SIMDE_FLOAT32_C(  545.10),
                         SIMDE_FLOAT32_C( -213.47), SIMDE_FLOAT32_C(  373.14),
                         SIMDE_FLOAT32_C(  129.81), SIMDE_FLOAT32_C(  166.25),
                         SIMDE_FLOAT32_C(  729.82), SIMDE_FLOAT32_C(  996.22)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -153.19), SIMDE_FLOAT32_C( -809.42),
                         SIMDE_FLOAT32_C(  665.06), SIMDE_FLOAT32_C(  966.51),
                         SIMDE_FLOAT32_C(  515.00), SIMDE_FLOAT32_C(  239.45),
                         SIMDE_FLOAT32_C(  878.48), SIMDE_FLOAT32_C(   83.52)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -855.75), SIMDE_FLOAT32_C( -288.00),
                         SIMDE_FLOAT32_C(  118.38), SIMDE_FLOAT32_C(  373.81),
                         SIMDE_FLOAT32_C( -507.54), SIMDE_FLOAT32_C( -677.13),
                         SIMDE_FLOAT32_C( -680.61), SIMDE_FLOAT32_C(  934.18)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -153.19), SIMDE_FLOAT32_C( -288.00),
                         SIMDE_FLOAT32_C(  665.06), SIMDE_FLOAT32_C(  966.51),
                         SIMDE_FLOAT32_C(  515.00), SIMDE_FLOAT32_C(  239.45),
                         SIMDE_FLOAT32_C(  878.48), SIMDE_FLOAT32_C(  934.18)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256 r = simde_mm256_max_ps(test_vec[i].a, test_vec[i].b);
    simde_assert_m256_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_max_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256d a;
    simde__m256d b;
    simde__m256d r;
  } test_vec[8] = {
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  -66.36), SIMDE_FLOAT64_C( -982.48),
                         SIMDE_FLOAT64_C( -994.10), SIMDE_FLOAT64_C(  656.44)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   58.12), SIMDE_FLOAT64_C(  730.28),
                         SIMDE_FLOAT64_C(  705.46), SIMDE_FLOAT64_C(  138.28)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   58.12), SIMDE_FLOAT64_C(  730.28),
                         SIMDE_FLOAT64_C(  705.46), SIMDE_FLOAT64_C(  656.44)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  965.09), SIMDE_FLOAT64_C( -956.81),
                         SIMDE_FLOAT64_C(  -84.17), SIMDE_FLOAT64_C(   -0.28)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -943.91), SIMDE_FLOAT64_C( -849.45),
                         SIMDE_FLOAT64_C(  747.06), SIMDE_FLOAT64_C(  297.16)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  965.09), SIMDE_FLOAT64_C( -849.45),
                         SIMDE_FLOAT64_C(  747.06), SIMDE_FLOAT64_C(  297.16)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -285.40), SIMDE_FLOAT64_C(   20.32),
                         SIMDE_FLOAT64_C( -517.57), SIMDE_FLOAT64_C(  747.40)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -634.35), SIMDE_FLOAT64_C( -655.50),
                         SIMDE_FLOAT64_C(  321.54), SIMDE_FLOAT64_C( -151.46)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -285.40), SIMDE_FLOAT64_C(   20.32),
                         SIMDE_FLOAT64_C(  321.54), SIMDE_FLOAT64_C(  747.40)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  766.49), SIMDE_FLOAT64_C( -821.02),
                         SIMDE_FLOAT64_C(  800.18), SIMDE_FLOAT64_C(  -78.19)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -744.41), SIMDE_FLOAT64_C(  250.49),
                         SIMDE_FLOAT64_C(   16.63), SIMDE_FLOAT64_C(  223.92)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  766.49), SIMDE_FLOAT64_C(  250.49),
                         SIMDE_FLOAT64_C(  800.18), SIMDE_FLOAT64_C(  223.92)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  297.61), SIMDE_FLOAT64_C(   -1.23),
                         SIMDE_FLOAT64_C( -644.62), SIMDE_FLOAT64_C(  -37.89)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -152.08), SIMDE_FLOAT64_C(  667.58),
                         SIMDE_FLOAT64_C(  737.38), SIMDE_FLOAT64_C(  221.17)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  297.61), SIMDE_FLOAT64_C(  667.58),
                         SIMDE_FLOAT64_C(  737.38), SIMDE_FLOAT64_C(  221.17)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  804.47), SIMDE_FLOAT64_C( -363.06),
                         SIMDE_FLOAT64_C( -130.47), SIMDE_FLOAT64_C( -257.67)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -448.43), SIMDE_FLOAT64_C(   52.56),
                         SIMDE_FLOAT64_C( -688.52), SIMDE_FLOAT64_C(  690.05)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  804.47), SIMDE_FLOAT64_C(   52.56),
                         SIMDE_FLOAT64_C( -130.47), SIMDE_FLOAT64_C(  690.05)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(   20.48), SIMDE_FLOAT64_C(  404.58),
                         SIMDE_FLOAT64_C( -885.87), SIMDE_FLOAT64_C(  607.60)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -402.92), SIMDE_FLOAT64_C(  777.55),
                         SIMDE_FLOAT64_C( -392.90), SIMDE_FLOAT64_C(  385.67)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   20.48), SIMDE_FLOAT64_C(  777.55),
                         SIMDE_FLOAT64_C( -392.90), SIMDE_FLOAT64_C(  607.60)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -612.46), SIMDE_FLOAT64_C( -353.94),
                         SIMDE_FLOAT64_C( -723.01), SIMDE_FLOAT64_C( -705.60)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -638.30), SIMDE_FLOAT64_C(   67.95),
                         SIMDE_FLOAT64_C(  537.38), SIMDE_FLOAT64_C( -280.17)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -612.46), SIMDE_FLOAT64_C(   67.95),
                         SIMDE_FLOAT64_C(  537.38), SIMDE_FLOAT64_C( -280.17)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256d r = simde_mm256_max_pd(test_vec[i].a, test_vec[i].b);
    simde_assert_m256d_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_movedup_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256d a;
    simde__m256d r;
  } test_vec[8] = {
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -848.53), SIMDE_FLOAT64_C( -411.84),
                         SIMDE_FLOAT64_C( -162.95), SIMDE_FLOAT64_C(  899.65)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -411.84), SIMDE_FLOAT64_C( -411.84),
                         SIMDE_FLOAT64_C(  899.65), SIMDE_FLOAT64_C(  899.65)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -411.40), SIMDE_FLOAT64_C( -713.22),
                         SIMDE_FLOAT64_C( -868.77), SIMDE_FLOAT64_C( -109.40)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -713.22), SIMDE_FLOAT64_C( -713.22),
                         SIMDE_FLOAT64_C( -109.40), SIMDE_FLOAT64_C( -109.40)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -430.65), SIMDE_FLOAT64_C(  350.42),
                         SIMDE_FLOAT64_C( -891.94), SIMDE_FLOAT64_C( -973.52)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  350.42), SIMDE_FLOAT64_C(  350.42),
                         SIMDE_FLOAT64_C( -973.52), SIMDE_FLOAT64_C( -973.52)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -988.20), SIMDE_FLOAT64_C( -840.45),
                         SIMDE_FLOAT64_C(  979.48), SIMDE_FLOAT64_C( -644.54)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -840.45), SIMDE_FLOAT64_C( -840.45),
                         SIMDE_FLOAT64_C( -644.54), SIMDE_FLOAT64_C( -644.54)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  459.82), SIMDE_FLOAT64_C(  645.18),
                         SIMDE_FLOAT64_C( -152.73), SIMDE_FLOAT64_C(  150.29)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  645.18), SIMDE_FLOAT64_C(  645.18),
                         SIMDE_FLOAT64_C(  150.29), SIMDE_FLOAT64_C(  150.29)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -902.52), SIMDE_FLOAT64_C(   -5.45),
                         SIMDE_FLOAT64_C( -958.89), SIMDE_FLOAT64_C( -924.74)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   -5.45), SIMDE_FLOAT64_C(   -5.45),
                         SIMDE_FLOAT64_C( -924.74), SIMDE_FLOAT64_C( -924.74)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -582.37), SIMDE_FLOAT64_C(  163.98),
                         SIMDE_FLOAT64_C( -479.86), SIMDE_FLOAT64_C(  420.17)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  163.98), SIMDE_FLOAT64_C(  163.98),
                         SIMDE_FLOAT64_C(  420.17), SIMDE_FLOAT64_C(  420.17)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -319.68), SIMDE_FLOAT64_C(  791.82),
                         SIMDE_FLOAT64_C(  388.17), SIMDE_FLOAT64_C(  537.00)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  791.82), SIMDE_FLOAT64_C(  791.82),
                         SIMDE_FLOAT64_C(  537.00), SIMDE_FLOAT64_C(  537.00)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256d r = simde_mm256_movedup_pd(test_vec[i].a);
    simde_assert_m256d_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_movehdup_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde__m256 r;
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  948.05), SIMDE_FLOAT32_C( -208.59),
                         SIMDE_FLOAT32_C( -422.71), SIMDE_FLOAT32_C( -254.03),
                         SIMDE_FLOAT32_C(    4.80), SIMDE_FLOAT32_C( -671.71),
                         SIMDE_FLOAT32_C(  685.42), SIMDE_FLOAT32_C( -954.51)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  948.05), SIMDE_FLOAT32_C(  948.05),
                         SIMDE_FLOAT32_C( -422.71), SIMDE_FLOAT32_C( -422.71),
                         SIMDE_FLOAT32_C(    4.80), SIMDE_FLOAT32_C(    4.80),
                         SIMDE_FLOAT32_C(  685.42), SIMDE_FLOAT32_C(  685.42)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  569.22), SIMDE_FLOAT32_C(  232.90),
                         SIMDE_FLOAT32_C(  835.45), SIMDE_FLOAT32_C(   10.13),
                         SIMDE_FLOAT32_C(   30.06), SIMDE_FLOAT32_C(  598.20),
                         SIMDE_FLOAT32_C(  376.16), SIMDE_FLOAT32_C( -918.63)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  569.22), SIMDE_FLOAT32_C(  569.22),
                         SIMDE_FLOAT32_C(  835.45), SIMDE_FLOAT32_C(  835.45),
                         SIMDE_FLOAT32_C(   30.06), SIMDE_FLOAT32_C(   30.06),
                         SIMDE_FLOAT32_C(  376.16), SIMDE_FLOAT32_C(  376.16)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   97.81), SIMDE_FLOAT32_C(  286.59),
                         SIMDE_FLOAT32_C( -299.41), SIMDE_FLOAT32_C(  944.38),
                         SIMDE_FLOAT32_C( -367.92), SIMDE_FLOAT32_C(  626.43),
                         SIMDE_FLOAT32_C(  889.36), SIMDE_FLOAT32_C(  776.89)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   97.81), SIMDE_FLOAT32_C(   97.81),
                         SIMDE_FLOAT32_C( -299.41), SIMDE_FLOAT32_C( -299.41),
                         SIMDE_FLOAT32_C( -367.92), SIMDE_FLOAT32_C( -367.92),
                         SIMDE_FLOAT32_C(  889.36), SIMDE_FLOAT32_C(  889.36)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  -67.83), SIMDE_FLOAT32_C( -435.86),
                         SIMDE_FLOAT32_C( -637.27), SIMDE_FLOAT32_C(  -95.13),
                         SIMDE_FLOAT32_C(  698.01), SIMDE_FLOAT32_C(   55.48),
                         SIMDE_FLOAT32_C(    1.28), SIMDE_FLOAT32_C( -243.13)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  -67.83), SIMDE_FLOAT32_C(  -67.83),
                         SIMDE_FLOAT32_C( -637.27), SIMDE_FLOAT32_C( -637.27),
                         SIMDE_FLOAT32_C(  698.01), SIMDE_FLOAT32_C(  698.01),
                         SIMDE_FLOAT32_C(    1.28), SIMDE_FLOAT32_C(    1.28)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -266.47), SIMDE_FLOAT32_C(  784.83),
                         SIMDE_FLOAT32_C( -470.70), SIMDE_FLOAT32_C(  865.28),
                         SIMDE_FLOAT32_C(  393.60), SIMDE_FLOAT32_C( -743.40),
                         SIMDE_FLOAT32_C(  858.48), SIMDE_FLOAT32_C(  507.86)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -266.47), SIMDE_FLOAT32_C( -266.47),
                         SIMDE_FLOAT32_C( -470.70), SIMDE_FLOAT32_C( -470.70),
                         SIMDE_FLOAT32_C(  393.60), SIMDE_FLOAT32_C(  393.60),
                         SIMDE_FLOAT32_C(  858.48), SIMDE_FLOAT32_C(  858.48)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  270.84), SIMDE_FLOAT32_C(   46.20),
                         SIMDE_FLOAT32_C( -185.53), SIMDE_FLOAT32_C(  211.61),
                         SIMDE_FLOAT32_C(  -20.87), SIMDE_FLOAT32_C( -661.06),
                         SIMDE_FLOAT32_C(  209.04), SIMDE_FLOAT32_C(  920.86)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  270.84), SIMDE_FLOAT32_C(  270.84),
                         SIMDE_FLOAT32_C( -185.53), SIMDE_FLOAT32_C( -185.53),
                         SIMDE_FLOAT32_C(  -20.87), SIMDE_FLOAT32_C(  -20.87),
                         SIMDE_FLOAT32_C(  209.04), SIMDE_FLOAT32_C(  209.04)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -751.76), SIMDE_FLOAT32_C( -655.85),
                         SIMDE_FLOAT32_C(  179.21), SIMDE_FLOAT32_C(  373.36),
                         SIMDE_FLOAT32_C(    1.62), SIMDE_FLOAT32_C( -981.05),
                         SIMDE_FLOAT32_C(  802.72), SIMDE_FLOAT32_C(  -49.40)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -751.76), SIMDE_FLOAT32_C( -751.76),
                         SIMDE_FLOAT32_C(  179.21), SIMDE_FLOAT32_C(  179.21),
                         SIMDE_FLOAT32_C(    1.62), SIMDE_FLOAT32_C(    1.62),
                         SIMDE_FLOAT32_C(  802.72), SIMDE_FLOAT32_C(  802.72)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   44.57), SIMDE_FLOAT32_C( -391.28),
                         SIMDE_FLOAT32_C(  614.40), SIMDE_FLOAT32_C( -901.50),
                         SIMDE_FLOAT32_C(  577.45), SIMDE_FLOAT32_C( -465.25),
                         SIMDE_FLOAT32_C( -148.70), SIMDE_FLOAT32_C( -714.68)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   44.57), SIMDE_FLOAT32_C(   44.57),
                         SIMDE_FLOAT32_C(  614.40), SIMDE_FLOAT32_C(  614.40),
                         SIMDE_FLOAT32_C(  577.45), SIMDE_FLOAT32_C(  577.45),
                         SIMDE_FLOAT32_C( -148.70), SIMDE_FLOAT32_C( -148.70)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256 r = simde_mm256_movehdup_ps(test_vec[i].a);
    simde_assert_m256_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_moveldup_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde__m256 r;
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  366.49), SIMDE_FLOAT32_C(  -15.43),
                         SIMDE_FLOAT32_C( -732.71), SIMDE_FLOAT32_C(  312.44),
                         SIMDE_FLOAT32_C( -535.64), SIMDE_FLOAT32_C(  -24.14),
                         SIMDE_FLOAT32_C( -881.62), SIMDE_FLOAT32_C(  419.86)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  -15.43), SIMDE_FLOAT32_C(  -15.43),
                         SIMDE_FLOAT32_C(  312.44), SIMDE_FLOAT32_C(  312.44),
                         SIMDE_FLOAT32_C(  -24.14), SIMDE_FLOAT32_C(  -24.14),
                         SIMDE_FLOAT32_C(  419.86), SIMDE_FLOAT32_C(  419.86)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -625.40), SIMDE_FLOAT32_C( -523.97),
                         SIMDE_FLOAT32_C(  296.91), SIMDE_FLOAT32_C(  228.72),
                         SIMDE_FLOAT32_C(  553.44), SIMDE_FLOAT32_C(  -88.10),
                         SIMDE_FLOAT32_C( -240.30), SIMDE_FLOAT32_C(  437.29)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -523.97), SIMDE_FLOAT32_C( -523.97),
                         SIMDE_FLOAT32_C(  228.72), SIMDE_FLOAT32_C(  228.72),
                         SIMDE_FLOAT32_C(  -88.10), SIMDE_FLOAT32_C(  -88.10),
                         SIMDE_FLOAT32_C(  437.29), SIMDE_FLOAT32_C(  437.29)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  -54.17), SIMDE_FLOAT32_C( -444.25),
                         SIMDE_FLOAT32_C( -384.50), SIMDE_FLOAT32_C(  781.57),
                         SIMDE_FLOAT32_C(  607.05), SIMDE_FLOAT32_C( -295.21),
                         SIMDE_FLOAT32_C(  101.75), SIMDE_FLOAT32_C( -941.55)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -444.25), SIMDE_FLOAT32_C( -444.25),
                         SIMDE_FLOAT32_C(  781.57), SIMDE_FLOAT32_C(  781.57),
                         SIMDE_FLOAT32_C( -295.21), SIMDE_FLOAT32_C( -295.21),
                         SIMDE_FLOAT32_C( -941.55), SIMDE_FLOAT32_C( -941.55)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  -41.58), SIMDE_FLOAT32_C( -957.94),
                         SIMDE_FLOAT32_C(  871.50), SIMDE_FLOAT32_C( -839.89),
                         SIMDE_FLOAT32_C(  692.80), SIMDE_FLOAT32_C( -417.15),
                         SIMDE_FLOAT32_C( -850.22), SIMDE_FLOAT32_C(  594.16)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -957.94), SIMDE_FLOAT32_C( -957.94),
                         SIMDE_FLOAT32_C( -839.89), SIMDE_FLOAT32_C( -839.89),
                         SIMDE_FLOAT32_C( -417.15), SIMDE_FLOAT32_C( -417.15),
                         SIMDE_FLOAT32_C(  594.16), SIMDE_FLOAT32_C(  594.16)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -319.28), SIMDE_FLOAT32_C( -229.51),
                         SIMDE_FLOAT32_C( -581.14), SIMDE_FLOAT32_C(   81.57),
                         SIMDE_FLOAT32_C(  774.33), SIMDE_FLOAT32_C( -621.69),
                         SIMDE_FLOAT32_C( -447.13), SIMDE_FLOAT32_C(  334.88)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -229.51), SIMDE_FLOAT32_C( -229.51),
                         SIMDE_FLOAT32_C(   81.57), SIMDE_FLOAT32_C(   81.57),
                         SIMDE_FLOAT32_C( -621.69), SIMDE_FLOAT32_C( -621.69),
                         SIMDE_FLOAT32_C(  334.88), SIMDE_FLOAT32_C(  334.88)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  288.60), SIMDE_FLOAT32_C(  139.33),
                         SIMDE_FLOAT32_C(  951.18), SIMDE_FLOAT32_C( -924.84),
                         SIMDE_FLOAT32_C( -320.35), SIMDE_FLOAT32_C( -998.89),
                         SIMDE_FLOAT32_C(  164.55), SIMDE_FLOAT32_C(  991.73)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  139.33), SIMDE_FLOAT32_C(  139.33),
                         SIMDE_FLOAT32_C( -924.84), SIMDE_FLOAT32_C( -924.84),
                         SIMDE_FLOAT32_C( -998.89), SIMDE_FLOAT32_C( -998.89),
                         SIMDE_FLOAT32_C(  991.73), SIMDE_FLOAT32_C(  991.73)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -671.27), SIMDE_FLOAT32_C(   35.52),
                         SIMDE_FLOAT32_C(  780.53), SIMDE_FLOAT32_C(  -58.65),
                         SIMDE_FLOAT32_C(  227.27), SIMDE_FLOAT32_C( -621.99),
                         SIMDE_FLOAT32_C( -182.62), SIMDE_FLOAT32_C(  448.36)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   35.52), SIMDE_FLOAT32_C(   35.52),
                         SIMDE_FLOAT32_C(  -58.65), SIMDE_FLOAT32_C(  -58.65),
                         SIMDE_FLOAT32_C( -621.99), SIMDE_FLOAT32_C( -621.99),
                         SIMDE_FLOAT32_C(  448.36), SIMDE_FLOAT32_C(  448.36)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -984.41), SIMDE_FLOAT32_C( -968.89),
                         SIMDE_FLOAT32_C( -986.96), SIMDE_FLOAT32_C( -760.49),
                         SIMDE_FLOAT32_C(  908.37), SIMDE_FLOAT32_C(   35.57),
                         SIMDE_FLOAT32_C( -144.09), SIMDE_FLOAT32_C( -735.38)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -968.89), SIMDE_FLOAT32_C( -968.89),
                         SIMDE_FLOAT32_C( -760.49), SIMDE_FLOAT32_C( -760.49),
                         SIMDE_FLOAT32_C(   35.57), SIMDE_FLOAT32_C(   35.57),
                         SIMDE_FLOAT32_C( -735.38), SIMDE_FLOAT32_C( -735.38)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256 r = simde_mm256_moveldup_ps(test_vec[i].a);
    simde_assert_m256_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_movemask_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256i a;
    int r;
  } test_vec[8] = {
    { simde_mm256_set_epi32(INT32_C(-1882468747), INT32_C(  687119108), INT32_C(  990615051), INT32_C(-1253009356),
                            INT32_C( -617641993), INT32_C(-1788847115), INT32_C( 1286496634), INT32_C( -717001088)),
      157 },
    { simde_mm256_set_epi32(INT32_C(-1989003409), INT32_C(-1421574364), INT32_C( -382909714), INT32_C( 1867671217),
                            INT32_C( -487294761), INT32_C( -454003817), INT32_C(  -33445130), INT32_C( -757457478)),
      239 },
    { simde_mm256_set_epi32(INT32_C(   75750543), INT32_C( -792015200), INT32_C( -456366441), INT32_C( 1395825015),
                            INT32_C( 1090607410), INT32_C( -644107645), INT32_C( 2024077315), INT32_C( 1442543377)),
      100 },
    { simde_mm256_set_epi32(INT32_C(   64842844), INT32_C(-1499432736), INT32_C( -849672143), INT32_C(  808386603),
                            INT32_C( 1431766696), INT32_C(  778893676), INT32_C(   -4359592), INT32_C( -465691700)),
      99 },
    { simde_mm256_set_epi32(INT32_C(-1142593030), INT32_C( 1697913004), INT32_C(-1241903623), INT32_C( 1420498198),
                            INT32_C( 1725730120), INT32_C( 1757719770), INT32_C( 1834101516), INT32_C(-1076410946)),
      161 },
    { simde_mm256_set_epi32(INT32_C( -247458634), INT32_C(  497266182), INT32_C(  668953611), INT32_C( -198408792),
                            INT32_C(  443042962), INT32_C(  174399567), INT32_C( 1910223665), INT32_C( 1408104689)),
      144 },
    { simde_mm256_set_epi32(INT32_C( 1266303831), INT32_C(-1981624404), INT32_C( 1894718767), INT32_C( 1471458198),
                            INT32_C(-1698669031), INT32_C(-1514661026), INT32_C(-1880466849), INT32_C(-1226909311)),
      79 },
    { simde_mm256_set_epi32(INT32_C( 1314135938), INT32_C( 1476193225), INT32_C( 1478701126), INT32_C( 1097128360),
                            INT32_C( -681267332), INT32_C( -854863432), INT32_C(-1814679036), INT32_C( 2077413591)),
      14 }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    int r = simde_mm256_movemask_ps(simde_mm256_castsi256_ps(test_vec[i].a));
    simde_assert_equal_i(r, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_movemask_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256i a;
    int r;
  } test_vec[8] = {
    { simde_mm256_set_epi64x(INT64_C(-3476114617639449125), INT64_C( 4174348817044283167),
                             INT64_C( 2372823762134739460), INT64_C( 2922754125044459603)),
      8 },
    { simde_mm256_set_epi64x(INT64_C( 2977848152908728188), INT64_C(-9001314161736319662),
                             INT64_C(  316358866512427816), INT64_C(  122734419977663898)),
      4 },
    { simde_mm256_set_epi64x(INT64_C( 1458362257601867464), INT64_C(-2204086314119824728),
                             INT64_C( 4226262178485377739), INT64_C( 3412235452127467527)),
      4 },
    { simde_mm256_set_epi64x(INT64_C(-3206742534496437425), INT64_C( 4783689227782243759),
                             INT64_C(-2969411634419391796), INT64_C( 6490543198836487087)),
      10 },
    { simde_mm256_set_epi64x(INT64_C( 5617129527752259343), INT64_C( 8836429733868806831),
                             INT64_C(-3648376369890579220), INT64_C( 2974368927295586543)),
      2 },
    { simde_mm256_set_epi64x(INT64_C(-7634385432411504297), INT64_C( 7257505416389479780),
                             INT64_C( 7838438756599446984), INT64_C( 8814240438147347165)),
      8 },
    { simde_mm256_set_epi64x(INT64_C( 9071444056306285548), INT64_C( 8310979399473657009),
                             INT64_C(-1777863912628705993), INT64_C( 4472167403670196676)),
      2 },
    { simde_mm256_set_epi64x(INT64_C(-6555517372143397251), INT64_C( 2575855241209659630),
                             INT64_C(-8431720993701553511), INT64_C( -874276281105343662)),
      11 }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    int r = simde_mm256_movemask_pd(simde_mm256_castsi256_pd(test_vec[i].a));
    simde_assert_equal_i(r, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_mul_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde__m256 b;
    simde__m256 r;
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  -65.11), SIMDE_FLOAT32_C(  729.63),
                         SIMDE_FLOAT32_C(  579.86), SIMDE_FLOAT32_C(  759.34),
                         SIMDE_FLOAT32_C(  638.63), SIMDE_FLOAT32_C(  366.71),
                         SIMDE_FLOAT32_C( -251.89), SIMDE_FLOAT32_C( -327.70)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -853.75), SIMDE_FLOAT32_C(  306.50),
                         SIMDE_FLOAT32_C( -694.30), SIMDE_FLOAT32_C(   62.03),
                         SIMDE_FLOAT32_C( -332.43), SIMDE_FLOAT32_C( -617.58),
                         SIMDE_FLOAT32_C( -841.05), SIMDE_FLOAT32_C( -990.91)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(55587.66), SIMDE_FLOAT32_C(223631.59),
                         SIMDE_FLOAT32_C(-402596.78), SIMDE_FLOAT32_C(47101.86),
                         SIMDE_FLOAT32_C(-212299.77), SIMDE_FLOAT32_C(-226472.77),
                         SIMDE_FLOAT32_C(211852.08), SIMDE_FLOAT32_C(324721.22)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -540.24), SIMDE_FLOAT32_C(  599.92),
                         SIMDE_FLOAT32_C(  946.63), SIMDE_FLOAT32_C(  269.39),
                         SIMDE_FLOAT32_C(  990.71), SIMDE_FLOAT32_C(  736.78),
                         SIMDE_FLOAT32_C(  735.17), SIMDE_FLOAT32_C( -839.81)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -471.86), SIMDE_FLOAT32_C(  231.47),
                         SIMDE_FLOAT32_C(  368.19), SIMDE_FLOAT32_C( -199.69),
                         SIMDE_FLOAT32_C( -781.21), SIMDE_FLOAT32_C( -576.81),
                         SIMDE_FLOAT32_C( -351.44), SIMDE_FLOAT32_C(  650.57)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(254917.64), SIMDE_FLOAT32_C(138863.48),
                         SIMDE_FLOAT32_C(348539.72), SIMDE_FLOAT32_C(-53794.49),
                         SIMDE_FLOAT32_C(-773952.62), SIMDE_FLOAT32_C(-424982.09),
                         SIMDE_FLOAT32_C(-258368.14), SIMDE_FLOAT32_C(-546355.19)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  174.33), SIMDE_FLOAT32_C( -261.00),
                         SIMDE_FLOAT32_C(  947.71), SIMDE_FLOAT32_C(  -39.38),
                         SIMDE_FLOAT32_C( -142.31), SIMDE_FLOAT32_C( -753.91),
                         SIMDE_FLOAT32_C( -304.55), SIMDE_FLOAT32_C(  197.06)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -894.79), SIMDE_FLOAT32_C(  298.89),
                         SIMDE_FLOAT32_C(  413.08), SIMDE_FLOAT32_C(   45.44),
                         SIMDE_FLOAT32_C( -362.24), SIMDE_FLOAT32_C(  247.39),
                         SIMDE_FLOAT32_C( -836.15), SIMDE_FLOAT32_C(  250.52)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(-155988.73), SIMDE_FLOAT32_C(-78010.30),
                         SIMDE_FLOAT32_C(391480.03), SIMDE_FLOAT32_C(-1789.43),
                         SIMDE_FLOAT32_C(51550.37), SIMDE_FLOAT32_C(-186509.78),
                         SIMDE_FLOAT32_C(254649.48), SIMDE_FLOAT32_C(49367.47)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -108.81), SIMDE_FLOAT32_C( -144.46),
                         SIMDE_FLOAT32_C( -926.46), SIMDE_FLOAT32_C(  -87.02),
                         SIMDE_FLOAT32_C( -701.58), SIMDE_FLOAT32_C(  412.02),
                         SIMDE_FLOAT32_C( -404.71), SIMDE_FLOAT32_C( -140.12)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -502.46), SIMDE_FLOAT32_C( -741.60),
                         SIMDE_FLOAT32_C(  261.69), SIMDE_FLOAT32_C( -236.88),
                         SIMDE_FLOAT32_C(  805.45), SIMDE_FLOAT32_C(  663.49),
                         SIMDE_FLOAT32_C(  804.65), SIMDE_FLOAT32_C( -231.08)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(54672.67), SIMDE_FLOAT32_C(107131.54),
                         SIMDE_FLOAT32_C(-242445.33), SIMDE_FLOAT32_C(20613.30),
                         SIMDE_FLOAT32_C(-565087.62), SIMDE_FLOAT32_C(273371.12),
                         SIMDE_FLOAT32_C(-325649.91), SIMDE_FLOAT32_C(32378.93)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  274.12), SIMDE_FLOAT32_C(  417.28),
                         SIMDE_FLOAT32_C(  626.47), SIMDE_FLOAT32_C(  541.42),
                         SIMDE_FLOAT32_C( -351.86), SIMDE_FLOAT32_C(  144.88),
                         SIMDE_FLOAT32_C( -692.65), SIMDE_FLOAT32_C(  994.52)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -588.84), SIMDE_FLOAT32_C(  440.91),
                         SIMDE_FLOAT32_C( -668.35), SIMDE_FLOAT32_C(  950.11),
                         SIMDE_FLOAT32_C(   38.08), SIMDE_FLOAT32_C( -877.72),
                         SIMDE_FLOAT32_C(  389.76), SIMDE_FLOAT32_C(  702.21)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(-161412.83), SIMDE_FLOAT32_C(183982.92),
                         SIMDE_FLOAT32_C(-418701.19), SIMDE_FLOAT32_C(514408.53),
                         SIMDE_FLOAT32_C(-13398.83), SIMDE_FLOAT32_C(-127164.07),
                         SIMDE_FLOAT32_C(-269967.28), SIMDE_FLOAT32_C(698361.94)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  -72.46), SIMDE_FLOAT32_C( -957.98),
                         SIMDE_FLOAT32_C(  872.62), SIMDE_FLOAT32_C( -600.00),
                         SIMDE_FLOAT32_C(  937.99), SIMDE_FLOAT32_C( -698.26),
                         SIMDE_FLOAT32_C(  895.96), SIMDE_FLOAT32_C( -799.53)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -864.38), SIMDE_FLOAT32_C( -416.69),
                         SIMDE_FLOAT32_C(  894.78), SIMDE_FLOAT32_C(  968.43),
                         SIMDE_FLOAT32_C(  609.48), SIMDE_FLOAT32_C(  317.20),
                         SIMDE_FLOAT32_C(  767.37), SIMDE_FLOAT32_C(  -51.68)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(62632.97), SIMDE_FLOAT32_C(399180.69),
                         SIMDE_FLOAT32_C(780802.94), SIMDE_FLOAT32_C(-581058.00),
                         SIMDE_FLOAT32_C(571686.12), SIMDE_FLOAT32_C(-221488.08),
                         SIMDE_FLOAT32_C(687532.81), SIMDE_FLOAT32_C(41319.71)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -131.07), SIMDE_FLOAT32_C( -294.47),
                         SIMDE_FLOAT32_C( -916.92), SIMDE_FLOAT32_C(  146.62),
                         SIMDE_FLOAT32_C(  597.05), SIMDE_FLOAT32_C(   75.62),
                         SIMDE_FLOAT32_C(  636.06), SIMDE_FLOAT32_C(  363.23)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  427.08), SIMDE_FLOAT32_C( -105.65),
                         SIMDE_FLOAT32_C(   98.05), SIMDE_FLOAT32_C(  398.71),
                         SIMDE_FLOAT32_C( -883.53), SIMDE_FLOAT32_C( -434.31),
                         SIMDE_FLOAT32_C(  638.77), SIMDE_FLOAT32_C( -453.78)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(-55977.38), SIMDE_FLOAT32_C(31110.76),
                         SIMDE_FLOAT32_C(-89904.01), SIMDE_FLOAT32_C(58458.86),
                         SIMDE_FLOAT32_C(-527511.56), SIMDE_FLOAT32_C(-32842.52),
                         SIMDE_FLOAT32_C(406296.06), SIMDE_FLOAT32_C(-164826.52)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  401.83), SIMDE_FLOAT32_C( -101.21),
                         SIMDE_FLOAT32_C( -199.00), SIMDE_FLOAT32_C(  823.62),
                         SIMDE_FLOAT32_C( -930.84), SIMDE_FLOAT32_C( -154.42),
                         SIMDE_FLOAT32_C(  958.59), SIMDE_FLOAT32_C(  853.69)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -449.55), SIMDE_FLOAT32_C(  354.78),
                         SIMDE_FLOAT32_C( -131.96), SIMDE_FLOAT32_C( -519.93),
                         SIMDE_FLOAT32_C(  699.65), SIMDE_FLOAT32_C(  781.77),
                         SIMDE_FLOAT32_C( -157.96), SIMDE_FLOAT32_C( -793.47)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(-180642.67), SIMDE_FLOAT32_C(-35907.29),
                         SIMDE_FLOAT32_C(26260.04), SIMDE_FLOAT32_C(-428224.75),
                         SIMDE_FLOAT32_C(-651262.25), SIMDE_FLOAT32_C(-120720.92),
                         SIMDE_FLOAT32_C(-151418.89), SIMDE_FLOAT32_C(-677377.38)) },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256 r = simde_mm256_mul_ps(test_vec[i].a, test_vec[i].b);
    simde_assert_m256_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_mul_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256d a;
    simde__m256d b;
    simde__m256d r;
  } test_vec[8] = {
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(   -216.07), SIMDE_FLOAT64_C(   -759.70),
                         SIMDE_FLOAT64_C(   -257.81), SIMDE_FLOAT64_C(    916.82)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   -279.71), SIMDE_FLOAT64_C(    654.36),
                         SIMDE_FLOAT64_C(   -699.07), SIMDE_FLOAT64_C(    772.15)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  60436.94), SIMDE_FLOAT64_C(-497117.29),
                         SIMDE_FLOAT64_C( 180227.24), SIMDE_FLOAT64_C( 707922.56)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(   -576.02), SIMDE_FLOAT64_C(   -915.91),
                         SIMDE_FLOAT64_C(    616.42), SIMDE_FLOAT64_C(    692.53)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(    285.52), SIMDE_FLOAT64_C(   -538.61),
                         SIMDE_FLOAT64_C(    604.61), SIMDE_FLOAT64_C(   -220.38)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(-164465.23), SIMDE_FLOAT64_C( 493318.29),
                         SIMDE_FLOAT64_C( 372693.70), SIMDE_FLOAT64_C(-152619.76)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(   -378.41), SIMDE_FLOAT64_C(   -782.44),
                         SIMDE_FLOAT64_C(   -858.38), SIMDE_FLOAT64_C(   -932.65)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(    782.91), SIMDE_FLOAT64_C(    352.73),
                         SIMDE_FLOAT64_C(    705.00), SIMDE_FLOAT64_C(    -78.46)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(-296260.97), SIMDE_FLOAT64_C(-275990.06),
                         SIMDE_FLOAT64_C(-605157.90), SIMDE_FLOAT64_C(  73175.72)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(   -936.48), SIMDE_FLOAT64_C(    274.43),
                         SIMDE_FLOAT64_C(    341.69), SIMDE_FLOAT64_C(    588.43)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   -915.35), SIMDE_FLOAT64_C(    625.98),
                         SIMDE_FLOAT64_C(    -66.28), SIMDE_FLOAT64_C(   -474.34)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( 857206.97), SIMDE_FLOAT64_C( 171787.69),
                         SIMDE_FLOAT64_C( -22647.21), SIMDE_FLOAT64_C(-279115.89)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(    371.75), SIMDE_FLOAT64_C(   -392.05),
                         SIMDE_FLOAT64_C(   -730.60), SIMDE_FLOAT64_C(    399.39)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   -409.43), SIMDE_FLOAT64_C(    920.37),
                         SIMDE_FLOAT64_C(    -56.28), SIMDE_FLOAT64_C(   -779.31)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(-152205.60), SIMDE_FLOAT64_C(-360831.06),
                         SIMDE_FLOAT64_C(  41118.17), SIMDE_FLOAT64_C(-311248.62)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(     -0.10), SIMDE_FLOAT64_C(    955.19),
                         SIMDE_FLOAT64_C(    162.40), SIMDE_FLOAT64_C(   -236.01)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   -741.60), SIMDE_FLOAT64_C(    194.99),
                         SIMDE_FLOAT64_C(    845.16), SIMDE_FLOAT64_C(    363.39)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(     74.16), SIMDE_FLOAT64_C( 186252.50),
                         SIMDE_FLOAT64_C( 137253.98), SIMDE_FLOAT64_C( -85763.67)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(     18.23), SIMDE_FLOAT64_C(    296.33),
                         SIMDE_FLOAT64_C(    628.43), SIMDE_FLOAT64_C(   -660.29)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(    -24.23), SIMDE_FLOAT64_C(    573.95),
                         SIMDE_FLOAT64_C(    350.37), SIMDE_FLOAT64_C(   -979.36)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   -441.71), SIMDE_FLOAT64_C( 170078.60),
                         SIMDE_FLOAT64_C( 220183.02), SIMDE_FLOAT64_C( 646661.61)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(     14.47), SIMDE_FLOAT64_C(    780.26),
                         SIMDE_FLOAT64_C(   -875.01), SIMDE_FLOAT64_C(    609.14)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(    690.47), SIMDE_FLOAT64_C(   -614.79),
                         SIMDE_FLOAT64_C(    626.96), SIMDE_FLOAT64_C(   -369.27)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   9991.10), SIMDE_FLOAT64_C(-479696.05),
                         SIMDE_FLOAT64_C(-548596.27), SIMDE_FLOAT64_C(-224937.13)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256d r = simde_mm256_mul_pd(test_vec[i].a, test_vec[i].b);
    simde_assert_m256d_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_or_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde__m256 b;
    simde__m256 r;
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   -856.34), SIMDE_FLOAT32_C(   -251.54),
                         SIMDE_FLOAT32_C(    873.84), SIMDE_FLOAT32_C(    282.56),
                         SIMDE_FLOAT32_C(   -701.43), SIMDE_FLOAT32_C(    881.08),
                         SIMDE_FLOAT32_C(    949.17), SIMDE_FLOAT32_C(    -70.20)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(     13.03), SIMDE_FLOAT32_C(   -213.71),
                         SIMDE_FLOAT32_C(   -960.05), SIMDE_FLOAT32_C(     76.97),
                         SIMDE_FLOAT32_C(    529.10), SIMDE_FLOAT32_C(   -768.23),
                         SIMDE_FLOAT32_C(    808.48), SIMDE_FLOAT32_C(   -237.02)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  -3431.99), SIMDE_FLOAT32_C(   -255.75),
                         SIMDE_FLOAT32_C(  -1001.87), SIMDE_FLOAT32_C(    315.93),
                         SIMDE_FLOAT32_C(   -701.50), SIMDE_FLOAT32_C(   -881.25),
                         SIMDE_FLOAT32_C(    957.48), SIMDE_FLOAT32_C(   -474.81)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(    222.49), SIMDE_FLOAT32_C(    898.11),
                         SIMDE_FLOAT32_C(   -986.95), SIMDE_FLOAT32_C(   -624.89),
                         SIMDE_FLOAT32_C(   -780.02), SIMDE_FLOAT32_C(    920.74),
                         SIMDE_FLOAT32_C(    815.92), SIMDE_FLOAT32_C(    550.68)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   -274.50), SIMDE_FLOAT32_C(    377.51),
                         SIMDE_FLOAT32_C(    595.96), SIMDE_FLOAT32_C(    513.30),
                         SIMDE_FLOAT32_C(    235.21), SIMDE_FLOAT32_C(    -45.95),
                         SIMDE_FLOAT32_C(    722.85), SIMDE_FLOAT32_C(    781.79)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   -446.98), SIMDE_FLOAT32_C( 129422.58),
                         SIMDE_FLOAT32_C(   -987.97), SIMDE_FLOAT32_C(   -625.94),
                         SIMDE_FLOAT32_C( -60213.79), SIMDE_FLOAT32_C( -15867.97),
                         SIMDE_FLOAT32_C(   1023.98), SIMDE_FLOAT32_C(    815.93)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   -789.64), SIMDE_FLOAT32_C(    957.16),
                         SIMDE_FLOAT32_C(   -431.62), SIMDE_FLOAT32_C(    527.46),
                         SIMDE_FLOAT32_C(   -345.54), SIMDE_FLOAT32_C(   -528.90),
                         SIMDE_FLOAT32_C(   -257.76), SIMDE_FLOAT32_C(    194.98)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(    966.68), SIMDE_FLOAT32_C(    513.70),
                         SIMDE_FLOAT32_C(    151.32), SIMDE_FLOAT32_C(   -424.41),
                         SIMDE_FLOAT32_C(   -411.73), SIMDE_FLOAT32_C(    846.41),
                         SIMDE_FLOAT32_C(    151.87), SIMDE_FLOAT32_C(   -542.65)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   -983.69), SIMDE_FLOAT32_C(    957.73),
                         SIMDE_FLOAT32_C(   -431.75), SIMDE_FLOAT32_C(-110586.96),
                         SIMDE_FLOAT32_C(   -475.73), SIMDE_FLOAT32_C(   -862.93),
                         SIMDE_FLOAT32_C(   -304.00), SIMDE_FLOAT32_C( -51195.98)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   -998.71), SIMDE_FLOAT32_C(   -667.81),
                         SIMDE_FLOAT32_C(     67.10), SIMDE_FLOAT32_C(   -760.87),
                         SIMDE_FLOAT32_C(   -217.54), SIMDE_FLOAT32_C(    503.65),
                         SIMDE_FLOAT32_C(    247.04), SIMDE_FLOAT32_C(    844.19)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(    661.94), SIMDE_FLOAT32_C(   -209.04),
                         SIMDE_FLOAT32_C(    -75.64), SIMDE_FLOAT32_C(   -274.76),
                         SIMDE_FLOAT32_C(   -442.04), SIMDE_FLOAT32_C(   -562.29),
                         SIMDE_FLOAT32_C(   -151.20), SIMDE_FLOAT32_C(    897.08)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  -1015.96), SIMDE_FLOAT32_C( -63484.00),
                         SIMDE_FLOAT32_C(    -75.73), SIMDE_FLOAT32_C( -98031.86),
                         SIMDE_FLOAT32_C(   -443.12), SIMDE_FLOAT32_C(-130983.49),
                         SIMDE_FLOAT32_C(   -247.23), SIMDE_FLOAT32_C(    973.21)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(    413.34), SIMDE_FLOAT32_C(    969.02),
                         SIMDE_FLOAT32_C(   -337.47), SIMDE_FLOAT32_C(   -324.75),
                         SIMDE_FLOAT32_C(   -193.88), SIMDE_FLOAT32_C(   -534.97),
                         SIMDE_FLOAT32_C(    873.51), SIMDE_FLOAT32_C(   -141.88)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   -783.17), SIMDE_FLOAT32_C(    718.95),
                         SIMDE_FLOAT32_C(    707.27), SIMDE_FLOAT32_C(   -573.61),
                         SIMDE_FLOAT32_C(   -268.73), SIMDE_FLOAT32_C(    245.35),
                         SIMDE_FLOAT32_C(    309.36), SIMDE_FLOAT32_C(   -248.32)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(-106455.79), SIMDE_FLOAT32_C(    975.97),
                         SIMDE_FLOAT32_C( -94714.82), SIMDE_FLOAT32_C( -89806.08),
                         SIMDE_FLOAT32_C(   -399.98), SIMDE_FLOAT32_C( -62975.62),
                         SIMDE_FLOAT32_C( 112093.41), SIMDE_FLOAT32_C(   -253.95)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   -788.80), SIMDE_FLOAT32_C(   -153.54),
                         SIMDE_FLOAT32_C(    281.95), SIMDE_FLOAT32_C(    256.34),
                         SIMDE_FLOAT32_C(   -635.81), SIMDE_FLOAT32_C(   -147.12),
                         SIMDE_FLOAT32_C(   -744.53), SIMDE_FLOAT32_C(    799.41)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(      2.25), SIMDE_FLOAT32_C(    -53.24),
                         SIMDE_FLOAT32_C(    690.38), SIMDE_FLOAT32_C(    776.59),
                         SIMDE_FLOAT32_C(   -713.17), SIMDE_FLOAT32_C(   -856.98),
                         SIMDE_FLOAT32_C(   -302.74), SIMDE_FLOAT32_C(    409.28)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   -852.80), SIMDE_FLOAT32_C(   -222.00),
                         SIMDE_FLOAT32_C(  88563.70), SIMDE_FLOAT32_C(  99423.55),
                         SIMDE_FLOAT32_C(   -763.94), SIMDE_FLOAT32_C( -55102.72),
                         SIMDE_FLOAT32_C( -98047.97), SIMDE_FLOAT32_C( 106487.99)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   -404.76), SIMDE_FLOAT32_C(   -875.24),
                         SIMDE_FLOAT32_C(    822.92), SIMDE_FLOAT32_C(    409.42),
                         SIMDE_FLOAT32_C(    144.27), SIMDE_FLOAT32_C(    260.67),
                         SIMDE_FLOAT32_C(    383.19), SIMDE_FLOAT32_C(    173.56)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   -913.39), SIMDE_FLOAT32_C(   -747.11),
                         SIMDE_FLOAT32_C(    262.13), SIMDE_FLOAT32_C(    535.89),
                         SIMDE_FLOAT32_C(   -513.17), SIMDE_FLOAT32_C(    945.43),
                         SIMDE_FLOAT32_C(    473.23), SIMDE_FLOAT32_C(    594.31)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(-122099.98), SIMDE_FLOAT32_C(  -1003.24),
                         SIMDE_FLOAT32_C( 106357.79), SIMDE_FLOAT32_C( 105467.93),
                         SIMDE_FLOAT32_C( -36944.00), SIMDE_FLOAT32_C( 122047.55),
                         SIMDE_FLOAT32_C(    511.23), SIMDE_FLOAT32_C(  48543.87)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(    255.64), SIMDE_FLOAT32_C(    352.54),
                         SIMDE_FLOAT32_C(    905.17), SIMDE_FLOAT32_C(    -97.04),
                         SIMDE_FLOAT32_C(    635.19), SIMDE_FLOAT32_C(   -653.37),
                         SIMDE_FLOAT32_C(    871.87), SIMDE_FLOAT32_C(   -471.42)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   -534.86), SIMDE_FLOAT32_C(     20.68),
                         SIMDE_FLOAT32_C(    963.33), SIMDE_FLOAT32_C(   -431.12),
                         SIMDE_FLOAT32_C(    199.08), SIMDE_FLOAT32_C(    684.85),
                         SIMDE_FLOAT32_C(   -893.07), SIMDE_FLOAT32_C(   -817.23)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -65463.87), SIMDE_FLOAT32_C(    362.92),
                         SIMDE_FLOAT32_C(    971.50), SIMDE_FLOAT32_C(   -431.25),
                         SIMDE_FLOAT32_C(  57308.48), SIMDE_FLOAT32_C(   -685.87),
                         SIMDE_FLOAT32_C(   -895.87), SIMDE_FLOAT32_C(-122879.96)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256 r = simde_mm256_or_ps(test_vec[i].a, test_vec[i].b);
    simde_assert_m256_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_or_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256i a;
    simde__m256i b;
    simde__m256i r;
  } test_vec[8] = {
    { simde_mm256_set_epi32(INT32_C( -465239073), INT32_C( 1279184195), INT32_C( 2016764339), INT32_C(-2145324536),
                            INT32_C(-1764212445), INT32_C(  366604460), INT32_C( 2076865232), INT32_C( -193563958)),
      simde_mm256_set_epi32(INT32_C(  541400396), INT32_C( -972933189), INT32_C(  510962050), INT32_C( -823731197),
                            INT32_C(  -98096262), INT32_C( -873938367), INT32_C(  832486509), INT32_C(-1258790386)),
      simde_mm256_set_epi32(INT32_C( -465231905), INT32_C( -834732037), INT32_C( 2121656755), INT32_C( -823722485),
                            INT32_C(  -16815237), INT32_C( -537267475), INT32_C( 2078211837), INT32_C( -184651058)) },
    { simde_mm256_set_epi32(INT32_C( -357268810), INT32_C( -651759515), INT32_C(  235257662), INT32_C( -710907048),
                            INT32_C(-1810919865), INT32_C( 1157547055), INT32_C(-1536937137), INT32_C( 1736416320)),
      simde_mm256_set_epi32(INT32_C( -849859400), INT32_C(  -22261753), INT32_C(-1893529894), INT32_C( -986693653),
                            INT32_C( -263776240), INT32_C(  502458571), INT32_C( -753857515), INT32_C(-1100300353)),
      simde_mm256_set_epi32(INT32_C( -268652866), INT32_C(   -5312409), INT32_C(-1893220354), INT32_C( -709853189),
                            INT32_C( -196108713), INT32_C( 1576987887), INT32_C( -143311009), INT32_C(   -8404993)) },
    { simde_mm256_set_epi32(INT32_C(-1390025255), INT32_C(  226124884), INT32_C( 1790052194), INT32_C( -108567495),
                            INT32_C( 1678439305), INT32_C(  946188942), INT32_C(-2005442113), INT32_C(-1348041469)),
      simde_mm256_set_epi32(INT32_C(  575705169), INT32_C(-1737321258), INT32_C(-1640691781), INT32_C( -551468190),
                            INT32_C( 1952646913), INT32_C( 1393751647), INT32_C(-1388496514), INT32_C(  590324192)),
      simde_mm256_set_epi32(INT32_C(-1351223847), INT32_C(-1652886314), INT32_C(  -21559301), INT32_C(   -5806213),
                            INT32_C( 1953232777), INT32_C( 2071459551), INT32_C(-1384154625), INT32_C(-1347443229)) },
    { simde_mm256_set_epi32(INT32_C(-1745763744), INT32_C( -289111572), INT32_C( -806274679), INT32_C( 1716472169),
                            INT32_C( 1235124509), INT32_C(   -2416200), INT32_C( -718461715), INT32_C(-2068168100)),
      simde_mm256_set_epi32(INT32_C( -747913617), INT32_C( 1661223449), INT32_C(  458600484), INT32_C(-1412075388),
                            INT32_C( 1069408970), INT32_C( 1945090076), INT32_C( -553357992), INT32_C(-1440436522)),
      simde_mm256_set_epi32(INT32_C( -671351185), INT32_C( -272317443), INT32_C( -537544275), INT32_C( -270566931),
                            INT32_C( 2143282143), INT32_C(     -17988), INT32_C( -550670851), INT32_C(-1363218722)) },
    { simde_mm256_set_epi32(INT32_C(-1244409590), INT32_C( 1807868489), INT32_C(  -47548399), INT32_C( 1894098437),
                            INT32_C(-1418958797), INT32_C( -739449954), INT32_C(  531303833), INT32_C( -582313126)),
      simde_mm256_set_epi32(INT32_C(  357521808), INT32_C( 1489594358), INT32_C(-1693320213), INT32_C( 1373628776),
                            INT32_C( -817392977), INT32_C( -536101335), INT32_C( 1011260304), INT32_C(  796312463)),
      simde_mm256_set_epi32(INT32_C(-1243620966), INT32_C( 2076829695), INT32_C(  -12846085), INT32_C( 1912598381),
                            INT32_C( -277873985), INT32_C( -202375233), INT32_C( 1072668569), INT32_C(   -8463393)) },
    { simde_mm256_set_epi32(INT32_C(-1207931928), INT32_C( -834187886), INT32_C(  -41133883), INT32_C( 1826519423),
                            INT32_C(-1537225150), INT32_C(-1972742802), INT32_C(-1107144372), INT32_C( 2074601373)),
      simde_mm256_set_epi32(INT32_C( 1198219345), INT32_C(  680764868), INT32_C( 1929177864), INT32_C( 1458999019),
                            INT32_C(  847246989), INT32_C(  902092277), INT32_C(   17517725), INT32_C(  814431018)),
      simde_mm256_set_epi32(INT32_C(   -9737223), INT32_C( -287838762), INT32_C(    -197683), INT32_C( 2130640895),
                            INT32_C(-1233125681), INT32_C(-1074866689), INT32_C(-1089774115), INT32_C( 2075131839)) },
    { simde_mm256_set_epi32(INT32_C( -137211173), INT32_C( -663911731), INT32_C( 1607469024), INT32_C( -419979231),
                            INT32_C( 1165074553), INT32_C( 1528925488), INT32_C(-1523385372), INT32_C( -907053265)),
      simde_mm256_set_epi32(INT32_C(  994086113), INT32_C(  702992700), INT32_C( -270545927), INT32_C( -490915434),
                            INT32_C( -743254762), INT32_C(   48033191), INT32_C(-2091867903), INT32_C( -756059930)),
      simde_mm256_set_epi32(INT32_C(   -2957573), INT32_C( -101723139), INT32_C(   -2109447), INT32_C( -419448393),
                            INT32_C( -671877761), INT32_C( 1543368119), INT32_C(-1485636635), INT32_C( -605063185)) },
    { simde_mm256_set_epi32(INT32_C( 1358203904), INT32_C(  915012873), INT32_C( 1992547669), INT32_C(-1717736064),
                            INT32_C(-1421704847), INT32_C(-1530428724), INT32_C(  686978685), INT32_C(  376599363)),
      simde_mm256_set_epi32(INT32_C(  963177670), INT32_C( -310024670), INT32_C(-1429164258), INT32_C(  390666975),
                            INT32_C( -901190881), INT32_C(-1166820314), INT32_C( 2002591871), INT32_C( -569097185)),
      simde_mm256_set_epi32(INT32_C( 2046618822), INT32_C(   -7471317), INT32_C(  -19660961), INT32_C(-1612873761),
                            INT32_C( -347411585), INT32_C(-1091059986), INT32_C( 2147448447), INT32_C( -562661537)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256i r = simde_mm256_castpd_si256(simde_mm256_or_pd(simde_mm256_castsi256_pd(test_vec[i].a), simde_mm256_castsi256_pd(test_vec[i].b)));
    simde_assert_m256i_equal(r, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_permute_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    struct {
      simde__m256 a;
      simde__m256 r;
    } p[8];
  } test_vec[1] = {
    {
      {
        { simde_mm256_set_ps(SIMDE_FLOAT32_C( -139.04), SIMDE_FLOAT32_C( -911.51),
                             SIMDE_FLOAT32_C(  580.20), SIMDE_FLOAT32_C(  982.03),
                             SIMDE_FLOAT32_C( -878.62), SIMDE_FLOAT32_C( -797.57),
                             SIMDE_FLOAT32_C( -426.64), SIMDE_FLOAT32_C( -818.52)),
          simde_mm256_set_ps(SIMDE_FLOAT32_C(  982.03), SIMDE_FLOAT32_C(  982.03),
                             SIMDE_FLOAT32_C(  982.03), SIMDE_FLOAT32_C(  982.03),
                             SIMDE_FLOAT32_C( -818.52), SIMDE_FLOAT32_C( -818.52),
                             SIMDE_FLOAT32_C( -818.52), SIMDE_FLOAT32_C( -818.52)) },
        { simde_mm256_set_ps(SIMDE_FLOAT32_C( -946.18), SIMDE_FLOAT32_C(  580.43),
                             SIMDE_FLOAT32_C(  276.12), SIMDE_FLOAT32_C(  862.54),
                             SIMDE_FLOAT32_C(  664.35), SIMDE_FLOAT32_C(  162.22),
                             SIMDE_FLOAT32_C(  234.37), SIMDE_FLOAT32_C(  188.86)),
          simde_mm256_set_ps(SIMDE_FLOAT32_C(  862.54), SIMDE_FLOAT32_C(  862.54),
                             SIMDE_FLOAT32_C(  862.54), SIMDE_FLOAT32_C(  276.12),
                             SIMDE_FLOAT32_C(  188.86), SIMDE_FLOAT32_C(  188.86),
                             SIMDE_FLOAT32_C(  188.86), SIMDE_FLOAT32_C(  234.37)) },
        { simde_mm256_set_ps(SIMDE_FLOAT32_C( -799.19), SIMDE_FLOAT32_C( -835.77),
                             SIMDE_FLOAT32_C( -716.61), SIMDE_FLOAT32_C(  614.58),
                             SIMDE_FLOAT32_C(  366.48), SIMDE_FLOAT32_C(  294.53),
                             SIMDE_FLOAT32_C( -368.14), SIMDE_FLOAT32_C(  638.90)),
          simde_mm256_set_ps(SIMDE_FLOAT32_C(  614.58), SIMDE_FLOAT32_C(  614.58),
                             SIMDE_FLOAT32_C(  614.58), SIMDE_FLOAT32_C( -835.77),
                             SIMDE_FLOAT32_C(  638.90), SIMDE_FLOAT32_C(  638.90),
                             SIMDE_FLOAT32_C(  638.90), SIMDE_FLOAT32_C(  294.53)) },
        { simde_mm256_set_ps(SIMDE_FLOAT32_C(  141.00), SIMDE_FLOAT32_C( -110.45),
                             SIMDE_FLOAT32_C( -302.60), SIMDE_FLOAT32_C( -332.94),
                             SIMDE_FLOAT32_C(  188.73), SIMDE_FLOAT32_C(  551.54),
                             SIMDE_FLOAT32_C( -580.84), SIMDE_FLOAT32_C(  854.95)),
          simde_mm256_set_ps(SIMDE_FLOAT32_C( -332.94), SIMDE_FLOAT32_C( -332.94),
                             SIMDE_FLOAT32_C( -332.94), SIMDE_FLOAT32_C(  141.00),
                             SIMDE_FLOAT32_C(  854.95), SIMDE_FLOAT32_C(  854.95),
                             SIMDE_FLOAT32_C(  854.95), SIMDE_FLOAT32_C(  188.73)) },
        { simde_mm256_set_ps(SIMDE_FLOAT32_C(  655.95), SIMDE_FLOAT32_C( -740.30),
                             SIMDE_FLOAT32_C( -946.00), SIMDE_FLOAT32_C( -434.04),
                             SIMDE_FLOAT32_C(   67.66), SIMDE_FLOAT32_C(  990.02),
                             SIMDE_FLOAT32_C(  889.36), SIMDE_FLOAT32_C(  470.48)),
          simde_mm256_set_ps(SIMDE_FLOAT32_C( -434.04), SIMDE_FLOAT32_C( -434.04),
                             SIMDE_FLOAT32_C( -946.00), SIMDE_FLOAT32_C( -434.04),
                             SIMDE_FLOAT32_C(  470.48), SIMDE_FLOAT32_C(  470.48),
                             SIMDE_FLOAT32_C(  889.36), SIMDE_FLOAT32_C(  470.48)) },
        { simde_mm256_set_ps(SIMDE_FLOAT32_C(  184.64), SIMDE_FLOAT32_C(  689.89),
                             SIMDE_FLOAT32_C(   66.41), SIMDE_FLOAT32_C(  657.41),
                             SIMDE_FLOAT32_C( -642.74), SIMDE_FLOAT32_C(  674.83),
                             SIMDE_FLOAT32_C( -458.59), SIMDE_FLOAT32_C( -735.59)),
          simde_mm256_set_ps(SIMDE_FLOAT32_C(  657.41), SIMDE_FLOAT32_C(  657.41),
                             SIMDE_FLOAT32_C(   66.41), SIMDE_FLOAT32_C(   66.41),
                             SIMDE_FLOAT32_C( -735.59), SIMDE_FLOAT32_C( -735.59),
                             SIMDE_FLOAT32_C( -458.59), SIMDE_FLOAT32_C( -458.59)) },
        { simde_mm256_set_ps(SIMDE_FLOAT32_C( -810.48), SIMDE_FLOAT32_C( -796.84),
                             SIMDE_FLOAT32_C(  173.69), SIMDE_FLOAT32_C(  -58.65),
                             SIMDE_FLOAT32_C( -873.61), SIMDE_FLOAT32_C( -813.18),
                             SIMDE_FLOAT32_C( -876.21), SIMDE_FLOAT32_C( -105.85)),
          simde_mm256_set_ps(SIMDE_FLOAT32_C(  -58.65), SIMDE_FLOAT32_C(  -58.65),
                             SIMDE_FLOAT32_C(  173.69), SIMDE_FLOAT32_C( -796.84),
                             SIMDE_FLOAT32_C( -105.85), SIMDE_FLOAT32_C( -105.85),
                             SIMDE_FLOAT32_C( -876.21), SIMDE_FLOAT32_C( -813.18)) },
        { simde_mm256_set_ps(SIMDE_FLOAT32_C( -653.04), SIMDE_FLOAT32_C( -205.53),
                             SIMDE_FLOAT32_C(  -47.21), SIMDE_FLOAT32_C( -850.03),
                             SIMDE_FLOAT32_C( -120.73), SIMDE_FLOAT32_C( -663.03),
                             SIMDE_FLOAT32_C(  803.42), SIMDE_FLOAT32_C(  391.07)),
          simde_mm256_set_ps(SIMDE_FLOAT32_C( -850.03), SIMDE_FLOAT32_C( -850.03),
                             SIMDE_FLOAT32_C(  -47.21), SIMDE_FLOAT32_C( -653.04),
                             SIMDE_FLOAT32_C(  391.07), SIMDE_FLOAT32_C(  391.07),
                             SIMDE_FLOAT32_C(  803.42), SIMDE_FLOAT32_C( -120.73)) },
      },
    }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256 r;

    r = simde_mm256_permute_ps(test_vec[i].p[0].a, 0);
    simde_assert_m256_close(r, test_vec[i].p[0].r, 1);

    r = simde_mm256_permute_ps(test_vec[i].p[1].a, 1);
    simde_assert_m256_close(r, test_vec[i].p[1].r, 1);

    r = simde_mm256_permute_ps(test_vec[i].p[2].a, 2);
    simde_assert_m256_close(r, test_vec[i].p[2].r, 1);

    r = simde_mm256_permute_ps(test_vec[i].p[3].a, 3);
    simde_assert_m256_close(r, test_vec[i].p[3].r, 1);

    r = simde_mm256_permute_ps(test_vec[i].p[4].a, 4);
    simde_assert_m256_close(r, test_vec[i].p[4].r, 1);

    r = simde_mm256_permute_ps(test_vec[i].p[5].a, 5);
    simde_assert_m256_close(r, test_vec[i].p[5].r, 1);

    r = simde_mm256_permute_ps(test_vec[i].p[6].a, 6);
    simde_assert_m256_close(r, test_vec[i].p[6].r, 1);

    r = simde_mm256_permute_ps(test_vec[i].p[7].a, 7);
    simde_assert_m256_close(r, test_vec[i].p[7].r, 1);
  }

  return 0;
}

static int
test_simde_mm_permute_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    struct {
      simde__m128d a;
      simde__m128d r;
    } p[4];
  } test_vec[8] = {
    {
      {
        { simde_mm_set_pd(SIMDE_FLOAT64_C( -586.66), SIMDE_FLOAT64_C(  759.07)),
          simde_mm_set_pd(SIMDE_FLOAT64_C(  759.07), SIMDE_FLOAT64_C(  759.07)) },
        { simde_mm_set_pd(SIMDE_FLOAT64_C(  312.86), SIMDE_FLOAT64_C(  489.25)),
          simde_mm_set_pd(SIMDE_FLOAT64_C(  489.25), SIMDE_FLOAT64_C(  312.86)) },
        { simde_mm_set_pd(SIMDE_FLOAT64_C(  510.93), SIMDE_FLOAT64_C( -731.36)),
          simde_mm_set_pd(SIMDE_FLOAT64_C(  510.93), SIMDE_FLOAT64_C( -731.36)) },
        { simde_mm_set_pd(SIMDE_FLOAT64_C(  211.69), SIMDE_FLOAT64_C(  302.00)),
          simde_mm_set_pd(SIMDE_FLOAT64_C(  211.69), SIMDE_FLOAT64_C(  211.69)) },
      },
    },
    {
      {
        { simde_mm_set_pd(SIMDE_FLOAT64_C(  878.46), SIMDE_FLOAT64_C(  679.15)),
          simde_mm_set_pd(SIMDE_FLOAT64_C(  679.15), SIMDE_FLOAT64_C(  679.15)) },
        { simde_mm_set_pd(SIMDE_FLOAT64_C( -990.20), SIMDE_FLOAT64_C( -630.61)),
          simde_mm_set_pd(SIMDE_FLOAT64_C( -630.61), SIMDE_FLOAT64_C( -990.20)) },
        { simde_mm_set_pd(SIMDE_FLOAT64_C(  471.54), SIMDE_FLOAT64_C( -307.27)),
          simde_mm_set_pd(SIMDE_FLOAT64_C(  471.54), SIMDE_FLOAT64_C( -307.27)) },
        { simde_mm_set_pd(SIMDE_FLOAT64_C(  625.19), SIMDE_FLOAT64_C(  623.51)),
          simde_mm_set_pd(SIMDE_FLOAT64_C(  625.19), SIMDE_FLOAT64_C(  625.19)) },
      },
    },
    {
      {
        { simde_mm_set_pd(SIMDE_FLOAT64_C(  637.56), SIMDE_FLOAT64_C(  480.86)),
          simde_mm_set_pd(SIMDE_FLOAT64_C(  480.86), SIMDE_FLOAT64_C(  480.86)) },
        { simde_mm_set_pd(SIMDE_FLOAT64_C( -358.97), SIMDE_FLOAT64_C( -958.25)),
          simde_mm_set_pd(SIMDE_FLOAT64_C( -958.25), SIMDE_FLOAT64_C( -358.97)) },
        { simde_mm_set_pd(SIMDE_FLOAT64_C(  867.67), SIMDE_FLOAT64_C(  -39.52)),
          simde_mm_set_pd(SIMDE_FLOAT64_C(  867.67), SIMDE_FLOAT64_C(  -39.52)) },
        { simde_mm_set_pd(SIMDE_FLOAT64_C(  596.21), SIMDE_FLOAT64_C(  558.65)),
          simde_mm_set_pd(SIMDE_FLOAT64_C(  596.21), SIMDE_FLOAT64_C(  596.21)) },
      },
    },
    {
      {
        { simde_mm_set_pd(SIMDE_FLOAT64_C(   32.94), SIMDE_FLOAT64_C( -306.71)),
          simde_mm_set_pd(SIMDE_FLOAT64_C( -306.71), SIMDE_FLOAT64_C( -306.71)) },
        { simde_mm_set_pd(SIMDE_FLOAT64_C(  881.79), SIMDE_FLOAT64_C(  737.35)),
          simde_mm_set_pd(SIMDE_FLOAT64_C(  737.35), SIMDE_FLOAT64_C(  881.79)) },
        { simde_mm_set_pd(SIMDE_FLOAT64_C(  857.28), SIMDE_FLOAT64_C(  640.79)),
          simde_mm_set_pd(SIMDE_FLOAT64_C(  857.28), SIMDE_FLOAT64_C(  640.79)) },
        { simde_mm_set_pd(SIMDE_FLOAT64_C(  529.31), SIMDE_FLOAT64_C(  660.42)),
          simde_mm_set_pd(SIMDE_FLOAT64_C(  529.31), SIMDE_FLOAT64_C(  529.31)) },
      },
    },
    {
      {
        { simde_mm_set_pd(SIMDE_FLOAT64_C( -645.32), SIMDE_FLOAT64_C( -500.25)),
          simde_mm_set_pd(SIMDE_FLOAT64_C( -500.25), SIMDE_FLOAT64_C( -500.25)) },
        { simde_mm_set_pd(SIMDE_FLOAT64_C( -862.75), SIMDE_FLOAT64_C( -773.36)),
          simde_mm_set_pd(SIMDE_FLOAT64_C( -773.36), SIMDE_FLOAT64_C( -862.75)) },
        { simde_mm_set_pd(SIMDE_FLOAT64_C(  795.76), SIMDE_FLOAT64_C(  320.59)),
          simde_mm_set_pd(SIMDE_FLOAT64_C(  795.76), SIMDE_FLOAT64_C(  320.59)) },
        { simde_mm_set_pd(SIMDE_FLOAT64_C( -749.80), SIMDE_FLOAT64_C(  899.97)),
          simde_mm_set_pd(SIMDE_FLOAT64_C( -749.80), SIMDE_FLOAT64_C( -749.80)) },
      },
    },
    {
      {
        { simde_mm_set_pd(SIMDE_FLOAT64_C(  711.35), SIMDE_FLOAT64_C(  304.45)),
          simde_mm_set_pd(SIMDE_FLOAT64_C(  304.45), SIMDE_FLOAT64_C(  304.45)) },
        { simde_mm_set_pd(SIMDE_FLOAT64_C(  -92.64), SIMDE_FLOAT64_C(   45.68)),
          simde_mm_set_pd(SIMDE_FLOAT64_C(   45.68), SIMDE_FLOAT64_C(  -92.64)) },
        { simde_mm_set_pd(SIMDE_FLOAT64_C(  261.59), SIMDE_FLOAT64_C(  207.13)),
          simde_mm_set_pd(SIMDE_FLOAT64_C(  261.59), SIMDE_FLOAT64_C(  207.13)) },
        { simde_mm_set_pd(SIMDE_FLOAT64_C( -540.32), SIMDE_FLOAT64_C(  -11.20)),
          simde_mm_set_pd(SIMDE_FLOAT64_C( -540.32), SIMDE_FLOAT64_C( -540.32)) },
      },
    },
    {
      {
        { simde_mm_set_pd(SIMDE_FLOAT64_C(   11.20), SIMDE_FLOAT64_C(  175.87)),
          simde_mm_set_pd(SIMDE_FLOAT64_C(  175.87), SIMDE_FLOAT64_C(  175.87)) },
        { simde_mm_set_pd(SIMDE_FLOAT64_C(  274.15), SIMDE_FLOAT64_C(  152.30)),
          simde_mm_set_pd(SIMDE_FLOAT64_C(  152.30), SIMDE_FLOAT64_C(  274.15)) },
        { simde_mm_set_pd(SIMDE_FLOAT64_C(  673.19), SIMDE_FLOAT64_C(  979.94)),
          simde_mm_set_pd(SIMDE_FLOAT64_C(  673.19), SIMDE_FLOAT64_C(  979.94)) },
        { simde_mm_set_pd(SIMDE_FLOAT64_C(   36.65), SIMDE_FLOAT64_C( -391.85)),
          simde_mm_set_pd(SIMDE_FLOAT64_C(   36.65), SIMDE_FLOAT64_C(   36.65)) },
      },
    },
    {
      {
        { simde_mm_set_pd(SIMDE_FLOAT64_C( -950.12), SIMDE_FLOAT64_C( -979.88)),
          simde_mm_set_pd(SIMDE_FLOAT64_C( -979.88), SIMDE_FLOAT64_C( -979.88)) },
        { simde_mm_set_pd(SIMDE_FLOAT64_C(  910.59), SIMDE_FLOAT64_C(  380.41)),
          simde_mm_set_pd(SIMDE_FLOAT64_C(  380.41), SIMDE_FLOAT64_C(  910.59)) },
        { simde_mm_set_pd(SIMDE_FLOAT64_C( -731.74), SIMDE_FLOAT64_C(  314.11)),
          simde_mm_set_pd(SIMDE_FLOAT64_C( -731.74), SIMDE_FLOAT64_C(  314.11)) },
        { simde_mm_set_pd(SIMDE_FLOAT64_C( -794.00), SIMDE_FLOAT64_C( -659.77)),
          simde_mm_set_pd(SIMDE_FLOAT64_C( -794.00), SIMDE_FLOAT64_C( -794.00)) },
      },
    }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m128d r;

    r = simde_mm_permute_pd(test_vec[i].p[0].a, 0);
    simde_assert_m128d_close(r, test_vec[i].p[0].r, 1);

    r = simde_mm_permute_pd(test_vec[i].p[1].a, 1);
    simde_assert_m128d_close(r, test_vec[i].p[1].r, 1);

    r = simde_mm_permute_pd(test_vec[i].p[2].a, 2);
    simde_assert_m128d_close(r, test_vec[i].p[2].r, 1);

    r = simde_mm_permute_pd(test_vec[i].p[3].a, 3);
    simde_assert_m128d_close(r, test_vec[i].p[3].r, 1);
  }

  return 0;
}

static int
test_simde_mm_permute_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m128 a;
    simde__m128 r;
  } test_vec[8] = {
    { simde_mm_set_ps(SIMDE_FLOAT32_C(   -46.54), SIMDE_FLOAT32_C(  -884.02), SIMDE_FLOAT32_C(  -125.85), SIMDE_FLOAT32_C(  -211.36)),
      // imm8 = 104
      simde_mm_set_ps(SIMDE_FLOAT32_C(  -125.85), SIMDE_FLOAT32_C(  -884.02), SIMDE_FLOAT32_C(  -884.02), SIMDE_FLOAT32_C(  -211.36)) },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(  -126.12), SIMDE_FLOAT32_C(   654.39), SIMDE_FLOAT32_C(   987.87), SIMDE_FLOAT32_C(   213.63)),
      // imm8 = 15
      simde_mm_set_ps(SIMDE_FLOAT32_C(   213.63), SIMDE_FLOAT32_C(   213.63), SIMDE_FLOAT32_C(  -126.12), SIMDE_FLOAT32_C(  -126.12)) },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(   545.41), SIMDE_FLOAT32_C(   -55.61), SIMDE_FLOAT32_C(   390.65), SIMDE_FLOAT32_C(  -546.65)),
      // imm8 = 25
      simde_mm_set_ps(SIMDE_FLOAT32_C(  -546.65), SIMDE_FLOAT32_C(   390.65), SIMDE_FLOAT32_C(   -55.61), SIMDE_FLOAT32_C(   390.65)) },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(  -570.93), SIMDE_FLOAT32_C(   337.51), SIMDE_FLOAT32_C(    48.49), SIMDE_FLOAT32_C(  -941.32)),
      // imm8 = 21
      simde_mm_set_ps(SIMDE_FLOAT32_C(  -941.32), SIMDE_FLOAT32_C(    48.49), SIMDE_FLOAT32_C(    48.49), SIMDE_FLOAT32_C(    48.49)) },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(    35.91), SIMDE_FLOAT32_C(  -937.58), SIMDE_FLOAT32_C(   867.97), SIMDE_FLOAT32_C(   -64.33)),
      // imm8 = 105
      simde_mm_set_ps(SIMDE_FLOAT32_C(   867.97), SIMDE_FLOAT32_C(  -937.58), SIMDE_FLOAT32_C(  -937.58), SIMDE_FLOAT32_C(   867.97)) },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(   592.52), SIMDE_FLOAT32_C(   823.80), SIMDE_FLOAT32_C(   377.28), SIMDE_FLOAT32_C(   174.06)),
      // imm8 = 246
      simde_mm_set_ps(SIMDE_FLOAT32_C(   592.52), SIMDE_FLOAT32_C(   592.52), SIMDE_FLOAT32_C(   377.28), SIMDE_FLOAT32_C(   823.80)) },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(  -853.11), SIMDE_FLOAT32_C(   886.60), SIMDE_FLOAT32_C(  -771.84), SIMDE_FLOAT32_C(  -900.32)),
      // imm8 = 183
      simde_mm_set_ps(SIMDE_FLOAT32_C(   886.60), SIMDE_FLOAT32_C(  -853.11), SIMDE_FLOAT32_C(  -771.84), SIMDE_FLOAT32_C(  -853.11)) },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(    59.21), SIMDE_FLOAT32_C(  -625.11), SIMDE_FLOAT32_C(  -350.66), SIMDE_FLOAT32_C(   873.23)),
      // imm8 = 169
      simde_mm_set_ps(SIMDE_FLOAT32_C(  -625.11), SIMDE_FLOAT32_C(  -625.11), SIMDE_FLOAT32_C(  -625.11), SIMDE_FLOAT32_C(  -350.66)) }
  };

  simde__m128 r;

  r = simde_mm_permute_ps(test_vec[0].a, 104);
  simde_assert_m128_equal(r, test_vec[0].r);

  r = simde_mm_permute_ps(test_vec[1].a, 15);
  simde_assert_m128_equal(r, test_vec[1].r);

  r = simde_mm_permute_ps(test_vec[2].a, 25);
  simde_assert_m128_equal(r, test_vec[2].r);

  r = simde_mm_permute_ps(test_vec[3].a, 21);
  simde_assert_m128_equal(r, test_vec[3].r);

  r = simde_mm_permute_ps(test_vec[4].a, 105);
  simde_assert_m128_equal(r, test_vec[4].r);

  r = simde_mm_permute_ps(test_vec[5].a, 246);
  simde_assert_m128_equal(r, test_vec[5].r);

  r = simde_mm_permute_ps(test_vec[6].a, 183);
  simde_assert_m128_equal(r, test_vec[6].r);

  r = simde_mm_permute_ps(test_vec[7].a, 169);
  simde_assert_m128_equal(r, test_vec[7].r);

  return 0;
}

static int
test_simde_mm256_permute_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256d a[4];
    simde__m256d r[4];
  } test_vec[8] = {
    { { simde_mm256_set_pd(SIMDE_FLOAT64_C( -307.33), SIMDE_FLOAT64_C( -277.83),
                           SIMDE_FLOAT64_C( -811.26), SIMDE_FLOAT64_C( -340.98)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C(  520.01), SIMDE_FLOAT64_C(   20.96),
                           SIMDE_FLOAT64_C( -217.27), SIMDE_FLOAT64_C(  475.98)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C( -236.99), SIMDE_FLOAT64_C( -515.97),
                           SIMDE_FLOAT64_C( -252.10), SIMDE_FLOAT64_C( -367.50)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C( -740.61), SIMDE_FLOAT64_C(  459.66),
                           SIMDE_FLOAT64_C(  780.67), SIMDE_FLOAT64_C( -928.66)) },
      { simde_mm256_set_pd(SIMDE_FLOAT64_C( -277.83), SIMDE_FLOAT64_C( -277.83),
                           SIMDE_FLOAT64_C( -340.98), SIMDE_FLOAT64_C( -340.98)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C(   20.96), SIMDE_FLOAT64_C(   20.96),
                           SIMDE_FLOAT64_C(  475.98), SIMDE_FLOAT64_C( -217.27)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C( -515.97), SIMDE_FLOAT64_C( -515.97),
                           SIMDE_FLOAT64_C( -252.10), SIMDE_FLOAT64_C( -367.50)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C(  459.66), SIMDE_FLOAT64_C(  459.66),
                           SIMDE_FLOAT64_C(  780.67), SIMDE_FLOAT64_C(  780.67)) } },
    { { simde_mm256_set_pd(SIMDE_FLOAT64_C(  718.00), SIMDE_FLOAT64_C( -514.42),
                           SIMDE_FLOAT64_C( -222.91), SIMDE_FLOAT64_C( -665.22)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C(  431.31), SIMDE_FLOAT64_C( -787.13),
                           SIMDE_FLOAT64_C( -902.93), SIMDE_FLOAT64_C( -601.27)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C( -645.66), SIMDE_FLOAT64_C(  168.66),
                           SIMDE_FLOAT64_C(  823.10), SIMDE_FLOAT64_C(  348.53)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C( -855.11), SIMDE_FLOAT64_C(  343.83),
                           SIMDE_FLOAT64_C(  888.93), SIMDE_FLOAT64_C(   81.36)) },
      { simde_mm256_set_pd(SIMDE_FLOAT64_C( -514.42), SIMDE_FLOAT64_C( -514.42),
                           SIMDE_FLOAT64_C( -665.22), SIMDE_FLOAT64_C( -665.22)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C( -787.13), SIMDE_FLOAT64_C( -787.13),
                           SIMDE_FLOAT64_C( -601.27), SIMDE_FLOAT64_C( -902.93)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C(  168.66), SIMDE_FLOAT64_C(  168.66),
                           SIMDE_FLOAT64_C(  823.10), SIMDE_FLOAT64_C(  348.53)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C(  343.83), SIMDE_FLOAT64_C(  343.83),
                           SIMDE_FLOAT64_C(  888.93), SIMDE_FLOAT64_C(  888.93)) } },
    { { simde_mm256_set_pd(SIMDE_FLOAT64_C(  482.80), SIMDE_FLOAT64_C(  651.20),
                           SIMDE_FLOAT64_C( -299.11), SIMDE_FLOAT64_C(  660.92)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C(  562.16), SIMDE_FLOAT64_C( -407.46),
                           SIMDE_FLOAT64_C(  470.74), SIMDE_FLOAT64_C(  663.86)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C( -609.81), SIMDE_FLOAT64_C(  224.41),
                           SIMDE_FLOAT64_C(  638.76), SIMDE_FLOAT64_C(  609.66)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C(  950.61), SIMDE_FLOAT64_C( -221.62),
                           SIMDE_FLOAT64_C(  198.64), SIMDE_FLOAT64_C(  472.05)) },
      { simde_mm256_set_pd(SIMDE_FLOAT64_C(  651.20), SIMDE_FLOAT64_C(  651.20),
                           SIMDE_FLOAT64_C(  660.92), SIMDE_FLOAT64_C(  660.92)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C( -407.46), SIMDE_FLOAT64_C( -407.46),
                           SIMDE_FLOAT64_C(  663.86), SIMDE_FLOAT64_C(  470.74)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C(  224.41), SIMDE_FLOAT64_C(  224.41),
                           SIMDE_FLOAT64_C(  638.76), SIMDE_FLOAT64_C(  609.66)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C( -221.62), SIMDE_FLOAT64_C( -221.62),
                           SIMDE_FLOAT64_C(  198.64), SIMDE_FLOAT64_C(  198.64)) } },
    { { simde_mm256_set_pd(SIMDE_FLOAT64_C( -304.11), SIMDE_FLOAT64_C(  887.38),
                           SIMDE_FLOAT64_C(  -49.50), SIMDE_FLOAT64_C( -449.56)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C( -667.31), SIMDE_FLOAT64_C(  293.87),
                           SIMDE_FLOAT64_C( -667.79), SIMDE_FLOAT64_C(  371.99)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C(  895.41), SIMDE_FLOAT64_C(  116.14),
                           SIMDE_FLOAT64_C(   65.95), SIMDE_FLOAT64_C( -990.78)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C( -751.37), SIMDE_FLOAT64_C( -570.35),
                           SIMDE_FLOAT64_C(  -32.79), SIMDE_FLOAT64_C(  337.40)) },
      { simde_mm256_set_pd(SIMDE_FLOAT64_C(  887.38), SIMDE_FLOAT64_C(  887.38),
                           SIMDE_FLOAT64_C( -449.56), SIMDE_FLOAT64_C( -449.56)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C(  293.87), SIMDE_FLOAT64_C(  293.87),
                           SIMDE_FLOAT64_C(  371.99), SIMDE_FLOAT64_C( -667.79)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C(  116.14), SIMDE_FLOAT64_C(  116.14),
                           SIMDE_FLOAT64_C(   65.95), SIMDE_FLOAT64_C( -990.78)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C( -570.35), SIMDE_FLOAT64_C( -570.35),
                           SIMDE_FLOAT64_C(  -32.79), SIMDE_FLOAT64_C(  -32.79)) } },
    { { simde_mm256_set_pd(SIMDE_FLOAT64_C(  -78.53), SIMDE_FLOAT64_C( -723.45),
                           SIMDE_FLOAT64_C( -594.84), SIMDE_FLOAT64_C( -504.83)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C(  599.38), SIMDE_FLOAT64_C( -102.58),
                           SIMDE_FLOAT64_C(  369.99), SIMDE_FLOAT64_C(  -58.86)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C( -705.85), SIMDE_FLOAT64_C( -561.88),
                           SIMDE_FLOAT64_C( -855.33), SIMDE_FLOAT64_C( -876.41)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C(  200.30), SIMDE_FLOAT64_C( -816.59),
                           SIMDE_FLOAT64_C(  495.88), SIMDE_FLOAT64_C(  -20.39)) },
      { simde_mm256_set_pd(SIMDE_FLOAT64_C( -723.45), SIMDE_FLOAT64_C( -723.45),
                           SIMDE_FLOAT64_C( -504.83), SIMDE_FLOAT64_C( -504.83)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C( -102.58), SIMDE_FLOAT64_C( -102.58),
                           SIMDE_FLOAT64_C(  -58.86), SIMDE_FLOAT64_C(  369.99)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C( -561.88), SIMDE_FLOAT64_C( -561.88),
                           SIMDE_FLOAT64_C( -855.33), SIMDE_FLOAT64_C( -876.41)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C( -816.59), SIMDE_FLOAT64_C( -816.59),
                           SIMDE_FLOAT64_C(  495.88), SIMDE_FLOAT64_C(  495.88)) } },
    { { simde_mm256_set_pd(SIMDE_FLOAT64_C( -459.43), SIMDE_FLOAT64_C(   35.05),
                           SIMDE_FLOAT64_C( -647.26), SIMDE_FLOAT64_C( -116.28)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C(  861.84), SIMDE_FLOAT64_C(   79.42),
                           SIMDE_FLOAT64_C(  -61.14), SIMDE_FLOAT64_C( -959.28)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C( -190.88), SIMDE_FLOAT64_C(   91.78),
                           SIMDE_FLOAT64_C(  624.59), SIMDE_FLOAT64_C( -875.05)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C( -757.98), SIMDE_FLOAT64_C( -777.95),
                           SIMDE_FLOAT64_C( -309.55), SIMDE_FLOAT64_C(  387.53)) },
      { simde_mm256_set_pd(SIMDE_FLOAT64_C(   35.05), SIMDE_FLOAT64_C(   35.05),
                           SIMDE_FLOAT64_C( -116.28), SIMDE_FLOAT64_C( -116.28)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C(   79.42), SIMDE_FLOAT64_C(   79.42),
                           SIMDE_FLOAT64_C( -959.28), SIMDE_FLOAT64_C(  -61.14)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C(   91.78), SIMDE_FLOAT64_C(   91.78),
                           SIMDE_FLOAT64_C(  624.59), SIMDE_FLOAT64_C( -875.05)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C( -777.95), SIMDE_FLOAT64_C( -777.95),
                           SIMDE_FLOAT64_C( -309.55), SIMDE_FLOAT64_C( -309.55)) } },
    { { simde_mm256_set_pd(SIMDE_FLOAT64_C( -297.45), SIMDE_FLOAT64_C( -420.28),
                           SIMDE_FLOAT64_C( -324.78), SIMDE_FLOAT64_C( -643.43)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C(  271.76), SIMDE_FLOAT64_C( -727.19),
                           SIMDE_FLOAT64_C(  659.23), SIMDE_FLOAT64_C(   91.29)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C(  751.73), SIMDE_FLOAT64_C(  366.97),
                           SIMDE_FLOAT64_C(  178.00), SIMDE_FLOAT64_C( -562.69)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C(  355.89), SIMDE_FLOAT64_C(  861.10),
                           SIMDE_FLOAT64_C(  814.16), SIMDE_FLOAT64_C(  218.35)) },
      { simde_mm256_set_pd(SIMDE_FLOAT64_C( -420.28), SIMDE_FLOAT64_C( -420.28),
                           SIMDE_FLOAT64_C( -643.43), SIMDE_FLOAT64_C( -643.43)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C( -727.19), SIMDE_FLOAT64_C( -727.19),
                           SIMDE_FLOAT64_C(   91.29), SIMDE_FLOAT64_C(  659.23)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C(  366.97), SIMDE_FLOAT64_C(  366.97),
                           SIMDE_FLOAT64_C(  178.00), SIMDE_FLOAT64_C( -562.69)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C(  861.10), SIMDE_FLOAT64_C(  861.10),
                           SIMDE_FLOAT64_C(  814.16), SIMDE_FLOAT64_C(  814.16)) } },
    { { simde_mm256_set_pd(SIMDE_FLOAT64_C( -344.58), SIMDE_FLOAT64_C( -961.29),
                           SIMDE_FLOAT64_C(  602.43), SIMDE_FLOAT64_C(  -99.06)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C(  915.17), SIMDE_FLOAT64_C(  886.67),
                           SIMDE_FLOAT64_C(  631.07), SIMDE_FLOAT64_C( -393.04)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C(  815.36), SIMDE_FLOAT64_C( -920.33),
                           SIMDE_FLOAT64_C( -701.98), SIMDE_FLOAT64_C(  230.05)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C(  408.01), SIMDE_FLOAT64_C( -369.61),
                           SIMDE_FLOAT64_C( -195.80), SIMDE_FLOAT64_C( -161.14)) },
      { simde_mm256_set_pd(SIMDE_FLOAT64_C( -961.29), SIMDE_FLOAT64_C( -961.29),
                           SIMDE_FLOAT64_C(  -99.06), SIMDE_FLOAT64_C(  -99.06)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C(  886.67), SIMDE_FLOAT64_C(  886.67),
                           SIMDE_FLOAT64_C( -393.04), SIMDE_FLOAT64_C(  631.07)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C( -920.33), SIMDE_FLOAT64_C( -920.33),
                           SIMDE_FLOAT64_C( -701.98), SIMDE_FLOAT64_C(  230.05)),
        simde_mm256_set_pd(SIMDE_FLOAT64_C( -369.61), SIMDE_FLOAT64_C( -369.61),
                           SIMDE_FLOAT64_C( -195.80), SIMDE_FLOAT64_C( -195.80)) } }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256d r;

    r = simde_mm256_permute_pd(test_vec[i].a[0], 0);
    simde_assert_m256d_close(r, test_vec[i].r[0], 1);

    r = simde_mm256_permute_pd(test_vec[i].a[1], 1);
    simde_assert_m256d_close(r, test_vec[i].r[1], 1);

    r = simde_mm256_permute_pd(test_vec[i].a[2], 2);
    simde_assert_m256d_close(r, test_vec[i].r[2], 1);

    r = simde_mm256_permute_pd(test_vec[i].a[3], 3);
    simde_assert_m256d_close(r, test_vec[i].r[3], 1);
  }

  return 0;
}

static int
test_simde_mm_permutevar_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m128 a;
    simde__m128i b;
    simde__m128 r;
  } test_vec[8] = {
    { simde_mm_set_ps(SIMDE_FLOAT32_C( -220.03), SIMDE_FLOAT32_C( -102.32), SIMDE_FLOAT32_C( -878.65), SIMDE_FLOAT32_C(  736.04)),
      simde_mm_set_epi32(INT32_C( 1978615509), INT32_C( -298382064), INT32_C(  844888802), INT32_C(-1984258319)),
      simde_mm_set_ps(SIMDE_FLOAT32_C( -878.65), SIMDE_FLOAT32_C(  736.04), SIMDE_FLOAT32_C( -102.32), SIMDE_FLOAT32_C( -878.65)) },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(  -74.21), SIMDE_FLOAT32_C(   20.33), SIMDE_FLOAT32_C(  -47.37), SIMDE_FLOAT32_C( -145.03)),
      simde_mm_set_epi32(INT32_C(-1739872531), INT32_C( 1398798289), INT32_C(  139283762), INT32_C( -468646578)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  -47.37), SIMDE_FLOAT32_C(  -47.37), SIMDE_FLOAT32_C(   20.33), SIMDE_FLOAT32_C(   20.33)) },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(  388.02), SIMDE_FLOAT32_C(  910.17), SIMDE_FLOAT32_C( -160.23), SIMDE_FLOAT32_C( -802.99)),
      simde_mm_set_epi32(INT32_C(  836573493), INT32_C(-1468644888), INT32_C( -506758879), INT32_C( -861763047)),
      simde_mm_set_ps(SIMDE_FLOAT32_C( -160.23), SIMDE_FLOAT32_C( -802.99), SIMDE_FLOAT32_C( -160.23), SIMDE_FLOAT32_C( -160.23)) },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(  909.90), SIMDE_FLOAT32_C(  126.61), SIMDE_FLOAT32_C(  817.61), SIMDE_FLOAT32_C(  504.25)),
      simde_mm_set_epi32(INT32_C(  584238895), INT32_C(  928311120), INT32_C( -480157729), INT32_C(  870102815)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  909.90), SIMDE_FLOAT32_C(  504.25), SIMDE_FLOAT32_C(  909.90), SIMDE_FLOAT32_C(  909.90)) },
    { simde_mm_set_ps(SIMDE_FLOAT32_C( -446.77), SIMDE_FLOAT32_C(  -55.86), SIMDE_FLOAT32_C(  873.78), SIMDE_FLOAT32_C( -757.74)),
      simde_mm_set_epi32(INT32_C(-1116848756), INT32_C(   67501238), INT32_C( 1151634701), INT32_C(-1833672337)),
      simde_mm_set_ps(SIMDE_FLOAT32_C( -757.74), SIMDE_FLOAT32_C(  -55.86), SIMDE_FLOAT32_C(  873.78), SIMDE_FLOAT32_C( -446.77)) },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(   17.75), SIMDE_FLOAT32_C(  909.79), SIMDE_FLOAT32_C( -854.76), SIMDE_FLOAT32_C(  845.21)),
      simde_mm_set_epi32(INT32_C( -650701315), INT32_C( -514022340), INT32_C( -456325153), INT32_C(  575846112)),
      simde_mm_set_ps(SIMDE_FLOAT32_C( -854.76), SIMDE_FLOAT32_C(  845.21), SIMDE_FLOAT32_C(   17.75), SIMDE_FLOAT32_C(  845.21)) },
    { simde_mm_set_ps(SIMDE_FLOAT32_C( -703.39), SIMDE_FLOAT32_C(  212.03), SIMDE_FLOAT32_C(  766.48), SIMDE_FLOAT32_C(   58.02)),
      simde_mm_set_epi32(INT32_C(  751532596), INT32_C( 2017282760), INT32_C( 1270374455), INT32_C( -795583425)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(   58.02), SIMDE_FLOAT32_C(   58.02), SIMDE_FLOAT32_C( -703.39), SIMDE_FLOAT32_C( -703.39)) },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(  101.14), SIMDE_FLOAT32_C(  114.68), SIMDE_FLOAT32_C(  986.99), SIMDE_FLOAT32_C( -651.72)),
      simde_mm_set_epi32(INT32_C( 1630473427), INT32_C( 1562779502), INT32_C( 1531074799), INT32_C(-1809767434)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  101.14), SIMDE_FLOAT32_C(  114.68), SIMDE_FLOAT32_C(  101.14), SIMDE_FLOAT32_C(  114.68)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m128 r = simde_mm_permutevar_ps(test_vec[i].a, test_vec[i].b);
    simde_assert_m128_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm_permutevar_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m128d a;
    simde__m128i b;
    simde__m128d r;
  } test_vec[8] = {
    { simde_mm_set_pd(SIMDE_FLOAT64_C( -190.00), SIMDE_FLOAT64_C( -363.64)),
      simde_mm_set_epi64x(INT64_C(-3679719263685326635), INT64_C(-5014117432834044471)),
      simde_mm_set_pd(SIMDE_FLOAT64_C( -363.64), SIMDE_FLOAT64_C( -363.64)) },
    { simde_mm_set_pd(SIMDE_FLOAT64_C(  107.93), SIMDE_FLOAT64_C(  497.72)),
      simde_mm_set_epi64x(INT64_C(1238725724228652833), INT64_C(2295575207610739945)),
      simde_mm_set_pd(SIMDE_FLOAT64_C(  497.72), SIMDE_FLOAT64_C(  497.72)) },
    { simde_mm_set_pd(SIMDE_FLOAT64_C(  -71.89), SIMDE_FLOAT64_C( -692.84)),
      simde_mm_set_epi64x(INT64_C(3235819707285929243), INT64_C(-60491261046190647)),
      simde_mm_set_pd(SIMDE_FLOAT64_C(  -71.89), SIMDE_FLOAT64_C( -692.84)) },
    { simde_mm_set_pd(SIMDE_FLOAT64_C( -729.73), SIMDE_FLOAT64_C(  585.33)),
      simde_mm_set_epi64x(INT64_C(2481877852619205882), INT64_C(3545311239979806958)),
      simde_mm_set_pd(SIMDE_FLOAT64_C( -729.73), SIMDE_FLOAT64_C( -729.73)) },
    { simde_mm_set_pd(SIMDE_FLOAT64_C( -735.74), SIMDE_FLOAT64_C(  646.64)),
      simde_mm_set_epi64x(INT64_C(-8424077459294111103), INT64_C(-6727548776374001581)),
      simde_mm_set_pd(SIMDE_FLOAT64_C(  646.64), SIMDE_FLOAT64_C( -735.74)) },
    { simde_mm_set_pd(SIMDE_FLOAT64_C(  403.13), SIMDE_FLOAT64_C( -882.62)),
      simde_mm_set_epi64x(INT64_C(-731202554371506341), INT64_C(7811413526677278696)),
      simde_mm_set_pd(SIMDE_FLOAT64_C(  403.13), SIMDE_FLOAT64_C( -882.62)) },
    { simde_mm_set_pd(SIMDE_FLOAT64_C(  910.78), SIMDE_FLOAT64_C(  162.04)),
      simde_mm_set_epi64x(INT64_C(-7914651116933831795), INT64_C(-7291667702753737699)),
      simde_mm_set_pd(SIMDE_FLOAT64_C(  162.04), SIMDE_FLOAT64_C(  162.04)) },
    { simde_mm_set_pd(SIMDE_FLOAT64_C( -194.64), SIMDE_FLOAT64_C(   21.61)),
      simde_mm_set_epi64x(INT64_C(-8162260555449998511), INT64_C(-7079262047989370805)),
      simde_mm_set_pd(SIMDE_FLOAT64_C(   21.61), SIMDE_FLOAT64_C( -194.64)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m128d r = simde_mm_permutevar_pd(test_vec[i].a, test_vec[i].b);
    simde_assert_m128d_equal(r, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_permutevar_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde__m256i b;
    simde__m256 r;
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -581.11), SIMDE_FLOAT32_C(  662.67),
                         SIMDE_FLOAT32_C(  749.10), SIMDE_FLOAT32_C(  794.46),
                         SIMDE_FLOAT32_C(  351.98), SIMDE_FLOAT32_C(   95.47),
                         SIMDE_FLOAT32_C( -323.47), SIMDE_FLOAT32_C(  766.08)),
      simde_mm256_set_epi32(INT32_C(-1995089848), INT32_C(-1205354020), INT32_C(  942463332), INT32_C( 2042714882),
                            INT32_C(   -3085894), INT32_C( 1293825925), INT32_C( 1293195492), INT32_C( -942672880)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  794.46), SIMDE_FLOAT32_C(  794.46),
                         SIMDE_FLOAT32_C(  794.46), SIMDE_FLOAT32_C(  662.67),
                         SIMDE_FLOAT32_C(   95.47), SIMDE_FLOAT32_C( -323.47),
                         SIMDE_FLOAT32_C(  766.08), SIMDE_FLOAT32_C(  766.08)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  553.57), SIMDE_FLOAT32_C( -638.78),
                         SIMDE_FLOAT32_C( -812.35), SIMDE_FLOAT32_C( -453.08),
                         SIMDE_FLOAT32_C(  690.64), SIMDE_FLOAT32_C( -358.14),
                         SIMDE_FLOAT32_C(  491.09), SIMDE_FLOAT32_C(  642.81)),
      simde_mm256_set_epi32(INT32_C(   74819979), INT32_C(-1724654262), INT32_C( 1654056695), INT32_C(  767929859),
                            INT32_C(-1773750147), INT32_C( 1504941571), INT32_C(-1277766239), INT32_C( -474163433)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  553.57), SIMDE_FLOAT32_C( -638.78),
                         SIMDE_FLOAT32_C(  553.57), SIMDE_FLOAT32_C(  553.57),
                         SIMDE_FLOAT32_C(  491.09), SIMDE_FLOAT32_C(  690.64),
                         SIMDE_FLOAT32_C(  491.09), SIMDE_FLOAT32_C(  690.64)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -359.39), SIMDE_FLOAT32_C(  -64.37),
                         SIMDE_FLOAT32_C( -720.24), SIMDE_FLOAT32_C( -724.37),
                         SIMDE_FLOAT32_C( -455.62), SIMDE_FLOAT32_C(  674.74),
                         SIMDE_FLOAT32_C( -589.17), SIMDE_FLOAT32_C( -867.21)),
      simde_mm256_set_epi32(INT32_C(-1090291188), INT32_C(-2009955584), INT32_C(-1244380880), INT32_C( 2087210230),
                            INT32_C( 1556610240), INT32_C(  347022662), INT32_C( -341820489), INT32_C(  209748637)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -724.37), SIMDE_FLOAT32_C( -724.37),
                         SIMDE_FLOAT32_C( -724.37), SIMDE_FLOAT32_C(  -64.37),
                         SIMDE_FLOAT32_C( -867.21), SIMDE_FLOAT32_C(  674.74),
                         SIMDE_FLOAT32_C( -455.62), SIMDE_FLOAT32_C( -589.17)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -688.17), SIMDE_FLOAT32_C(  265.16),
                         SIMDE_FLOAT32_C(  223.77), SIMDE_FLOAT32_C(  457.91),
                         SIMDE_FLOAT32_C( -449.18), SIMDE_FLOAT32_C(  418.80),
                         SIMDE_FLOAT32_C( -219.32), SIMDE_FLOAT32_C( -798.45)),
      simde_mm256_set_epi32(INT32_C(-2022840556), INT32_C(  147366607), INT32_C( 1340044144), INT32_C(-1339633728),
                            INT32_C(-2141656242), INT32_C(  179357343), INT32_C( -169847688), INT32_C(  944580448)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  457.91), SIMDE_FLOAT32_C( -688.17),
                         SIMDE_FLOAT32_C(  457.91), SIMDE_FLOAT32_C(  457.91),
                         SIMDE_FLOAT32_C(  418.80), SIMDE_FLOAT32_C( -449.18),
                         SIMDE_FLOAT32_C( -798.45), SIMDE_FLOAT32_C( -798.45)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -894.16), SIMDE_FLOAT32_C( -261.98),
                         SIMDE_FLOAT32_C( -668.79), SIMDE_FLOAT32_C( -535.27),
                         SIMDE_FLOAT32_C(  295.60), SIMDE_FLOAT32_C( -624.10),
                         SIMDE_FLOAT32_C( -218.41), SIMDE_FLOAT32_C( -239.98)),
      simde_mm256_set_epi32(INT32_C(-1987732124), INT32_C(-1043251572), INT32_C(-1915492365), INT32_C( 1239473734),
                            INT32_C( 1924578330), INT32_C(  667857703), INT32_C( 1334096582), INT32_C(-1561092382)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -535.27), SIMDE_FLOAT32_C( -535.27),
                         SIMDE_FLOAT32_C( -894.16), SIMDE_FLOAT32_C( -261.98),
                         SIMDE_FLOAT32_C( -624.10), SIMDE_FLOAT32_C(  295.60),
                         SIMDE_FLOAT32_C( -624.10), SIMDE_FLOAT32_C( -624.10)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  282.55), SIMDE_FLOAT32_C(  313.26),
                         SIMDE_FLOAT32_C( -349.67), SIMDE_FLOAT32_C( -128.29),
                         SIMDE_FLOAT32_C(  298.40), SIMDE_FLOAT32_C( -200.08),
                         SIMDE_FLOAT32_C( -322.88), SIMDE_FLOAT32_C(  643.97)),
      simde_mm256_set_epi32(INT32_C(-1231918378), INT32_C(-1967971864), INT32_C( 1721865701), INT32_C( -553468547),
                            INT32_C( -723509981), INT32_C( 1588622188), INT32_C( 1625856378), INT32_C(-1426622327)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  313.26), SIMDE_FLOAT32_C( -128.29),
                         SIMDE_FLOAT32_C( -349.67), SIMDE_FLOAT32_C( -349.67),
                         SIMDE_FLOAT32_C(  298.40), SIMDE_FLOAT32_C(  643.97),
                         SIMDE_FLOAT32_C( -200.08), SIMDE_FLOAT32_C( -322.88)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -773.19), SIMDE_FLOAT32_C(  149.49),
                         SIMDE_FLOAT32_C( -417.32), SIMDE_FLOAT32_C( -747.01),
                         SIMDE_FLOAT32_C(  553.89), SIMDE_FLOAT32_C( -499.06),
                         SIMDE_FLOAT32_C( -480.71), SIMDE_FLOAT32_C( -871.55)),
      simde_mm256_set_epi32(INT32_C(-1619504079), INT32_C(  234838625), INT32_C( 1611169016), INT32_C(  708864983),
                            INT32_C(  595455017), INT32_C( -338961641), INT32_C( 1283075935), INT32_C(  -90174648)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -417.32), SIMDE_FLOAT32_C( -417.32),
                         SIMDE_FLOAT32_C( -747.01), SIMDE_FLOAT32_C( -773.19),
                         SIMDE_FLOAT32_C( -480.71), SIMDE_FLOAT32_C(  553.89),
                         SIMDE_FLOAT32_C(  553.89), SIMDE_FLOAT32_C( -871.55)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  770.41), SIMDE_FLOAT32_C( -575.75),
                         SIMDE_FLOAT32_C( -694.46), SIMDE_FLOAT32_C(  878.16),
                         SIMDE_FLOAT32_C(  230.89), SIMDE_FLOAT32_C( -700.74),
                         SIMDE_FLOAT32_C( -243.26), SIMDE_FLOAT32_C(  192.97)),
      simde_mm256_set_epi32(INT32_C(-1612783450), INT32_C( 2104159364), INT32_C( -271090577), INT32_C(  962282198),
                            INT32_C(-1614359330), INT32_C( -824400343), INT32_C( -259439032), INT32_C( -336808887)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -575.75), SIMDE_FLOAT32_C(  878.16),
                         SIMDE_FLOAT32_C(  770.41), SIMDE_FLOAT32_C( -575.75),
                         SIMDE_FLOAT32_C( -700.74), SIMDE_FLOAT32_C( -243.26),
                         SIMDE_FLOAT32_C(  192.97), SIMDE_FLOAT32_C( -243.26)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256 r = simde_mm256_permutevar_ps(test_vec[i].a, test_vec[i].b);
    simde_assert_m256_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_permutevar_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256d a;
    simde__m256i b;
    simde__m256d r;
  } test_vec[8] = {
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  191.45), SIMDE_FLOAT64_C(  955.97),
                         SIMDE_FLOAT64_C( -381.93), SIMDE_FLOAT64_C( -276.35)),
      simde_mm256_set_epi64x(INT64_C( 7847047898918917938), INT64_C(-2237739371695600451),
                             INT64_C(-5921100696665465273), INT64_C(-3629132568613815239)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  191.45), SIMDE_FLOAT64_C(  955.97),
                         SIMDE_FLOAT64_C( -381.93), SIMDE_FLOAT64_C( -276.35)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -864.55), SIMDE_FLOAT64_C(  105.60),
                         SIMDE_FLOAT64_C(  308.22), SIMDE_FLOAT64_C( -262.99)),
      simde_mm256_set_epi64x(INT64_C( 1954446392539316319), INT64_C(-5867362525432575314),
                             INT64_C(-5609592881024898283), INT64_C(-2732169121859970729)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -864.55), SIMDE_FLOAT64_C( -864.55),
                         SIMDE_FLOAT64_C( -262.99), SIMDE_FLOAT64_C(  308.22)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -415.61), SIMDE_FLOAT64_C(  408.71),
                         SIMDE_FLOAT64_C(  -24.71), SIMDE_FLOAT64_C(  850.59)),
      simde_mm256_set_epi64x(INT64_C( 8155867202589355926), INT64_C(-4551757813155184517),
                             INT64_C( 4070473136336150836), INT64_C( 8294293362513343506)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -415.61), SIMDE_FLOAT64_C( -415.61),
                         SIMDE_FLOAT64_C(  850.59), SIMDE_FLOAT64_C(  -24.71)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -858.92), SIMDE_FLOAT64_C( -409.27),
                         SIMDE_FLOAT64_C(  940.24), SIMDE_FLOAT64_C(  118.21)),
      simde_mm256_set_epi64x(INT64_C(-6819188498234901479), INT64_C( 2067633441850695354),
                             INT64_C(  371129412881073798), INT64_C(-4745838610152722297)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -409.27), SIMDE_FLOAT64_C( -858.92),
                         SIMDE_FLOAT64_C(  940.24), SIMDE_FLOAT64_C(  940.24)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  -35.59), SIMDE_FLOAT64_C(  620.23),
                         SIMDE_FLOAT64_C(  173.49), SIMDE_FLOAT64_C( -242.33)),
      simde_mm256_set_epi64x(INT64_C( 6267827345436252242), INT64_C( 7757337633506703794),
                             INT64_C( 8397042844771135785), INT64_C( 4768191744605903319)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  -35.59), SIMDE_FLOAT64_C(  -35.59),
                         SIMDE_FLOAT64_C( -242.33), SIMDE_FLOAT64_C(  173.49)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -615.22), SIMDE_FLOAT64_C( -205.25),
                         SIMDE_FLOAT64_C(  427.82), SIMDE_FLOAT64_C( -695.42)),
      simde_mm256_set_epi64x(INT64_C(-4627283775150795805), INT64_C( 5796432689531982886),
                             INT64_C(-5333403376253040789), INT64_C(-1223877538147285054)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -615.22), SIMDE_FLOAT64_C( -615.22),
                         SIMDE_FLOAT64_C(  427.82), SIMDE_FLOAT64_C(  427.82)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  461.58), SIMDE_FLOAT64_C( -322.38),
                         SIMDE_FLOAT64_C( -747.07), SIMDE_FLOAT64_C( -350.25)),
      simde_mm256_set_epi64x(INT64_C(-4907910955860203917), INT64_C(-1172835446387939434),
                             INT64_C( 6316430026104479052), INT64_C( 8850000004913574542)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  461.58), SIMDE_FLOAT64_C(  461.58),
                         SIMDE_FLOAT64_C( -350.25), SIMDE_FLOAT64_C( -747.07)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  705.05), SIMDE_FLOAT64_C(   49.33),
                         SIMDE_FLOAT64_C(  -85.30), SIMDE_FLOAT64_C(  936.63)),
      simde_mm256_set_epi64x(INT64_C( 8506270823776015936), INT64_C(-7945266156798964263),
                             INT64_C( 7749717350625346930), INT64_C( -406852585870799824)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   49.33), SIMDE_FLOAT64_C(   49.33),
                         SIMDE_FLOAT64_C(  -85.30), SIMDE_FLOAT64_C(  936.63)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256d r = simde_mm256_permutevar_pd(test_vec[i].a, test_vec[i].b);
    simde_assert_m256d_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_permute2f128_pd(SIMDE_MUNIT_TEST_ARGS) {
#if 1
  const struct {
    const simde_float64 a[4];
    const simde_float64 b[4];
    const int imm8;
    const simde_float64 r[4];
  } test_vec[] = {
    { { SIMDE_FLOAT64_C(    15.55), SIMDE_FLOAT64_C(  -461.51), SIMDE_FLOAT64_C(   514.66), SIMDE_FLOAT64_C(  -513.58) },
      { SIMDE_FLOAT64_C(    95.37), SIMDE_FLOAT64_C(  -239.15), SIMDE_FLOAT64_C(  -315.05), SIMDE_FLOAT64_C(   844.04) },
       INT32_C(         108),
      { SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(    95.37), SIMDE_FLOAT64_C(  -239.15) } },
    { { SIMDE_FLOAT64_C(   410.02), SIMDE_FLOAT64_C(  -232.21), SIMDE_FLOAT64_C(   585.19), SIMDE_FLOAT64_C(   989.33) },
      { SIMDE_FLOAT64_C(   192.64), SIMDE_FLOAT64_C(  -316.14), SIMDE_FLOAT64_C(  -537.95), SIMDE_FLOAT64_C(  -941.52) },
       INT32_C(          27),
      { SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(   585.19), SIMDE_FLOAT64_C(   989.33) } },
    { { SIMDE_FLOAT64_C(   573.89), SIMDE_FLOAT64_C(    20.06), SIMDE_FLOAT64_C(   715.65), SIMDE_FLOAT64_C(   911.84) },
      { SIMDE_FLOAT64_C(  -412.11), SIMDE_FLOAT64_C(   406.05), SIMDE_FLOAT64_C(   758.60), SIMDE_FLOAT64_C(   603.44) },
       INT32_C(          70),
      { SIMDE_FLOAT64_C(  -412.11), SIMDE_FLOAT64_C(   406.05), SIMDE_FLOAT64_C(   573.89), SIMDE_FLOAT64_C(    20.06) } },
    { { SIMDE_FLOAT64_C(  -965.88), SIMDE_FLOAT64_C(  -225.19), SIMDE_FLOAT64_C(  -116.04), SIMDE_FLOAT64_C(  -623.14) },
      { SIMDE_FLOAT64_C(  -940.20), SIMDE_FLOAT64_C(  -698.12), SIMDE_FLOAT64_C(  -941.06), SIMDE_FLOAT64_C(   469.82) },
       INT32_C(         185),
      { SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00) } },
    { { SIMDE_FLOAT64_C(  -672.02), SIMDE_FLOAT64_C(   921.19), SIMDE_FLOAT64_C(  -679.20), SIMDE_FLOAT64_C(   392.39) },
      { SIMDE_FLOAT64_C(  -774.03), SIMDE_FLOAT64_C(  -268.72), SIMDE_FLOAT64_C(   639.82), SIMDE_FLOAT64_C(   799.86) },
       INT32_C(          61),
      { SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(   639.82), SIMDE_FLOAT64_C(   799.86) } },
    { { SIMDE_FLOAT64_C(  -238.48), SIMDE_FLOAT64_C(   470.30), SIMDE_FLOAT64_C(   942.67), SIMDE_FLOAT64_C(  -293.93) },
      { SIMDE_FLOAT64_C(  -256.44), SIMDE_FLOAT64_C(  -967.47), SIMDE_FLOAT64_C(   745.99), SIMDE_FLOAT64_C(  -222.32) },
       INT32_C(         123),
      { SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(   745.99), SIMDE_FLOAT64_C(  -222.32) } },
    { { SIMDE_FLOAT64_C(   -68.16), SIMDE_FLOAT64_C(   213.48), SIMDE_FLOAT64_C(  -663.05), SIMDE_FLOAT64_C(  -998.49) },
      { SIMDE_FLOAT64_C(  -142.40), SIMDE_FLOAT64_C(   796.10), SIMDE_FLOAT64_C(  -736.18), SIMDE_FLOAT64_C(   185.58) },
       INT32_C(         170),
      { SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00) } },
    { { SIMDE_FLOAT64_C(   315.90), SIMDE_FLOAT64_C(  -782.21), SIMDE_FLOAT64_C(   743.12), SIMDE_FLOAT64_C(    67.24) },
      { SIMDE_FLOAT64_C(   573.26), SIMDE_FLOAT64_C(   454.82), SIMDE_FLOAT64_C(   406.47), SIMDE_FLOAT64_C(  -665.22) },
       INT32_C(         241),
      { SIMDE_FLOAT64_C(   743.12), SIMDE_FLOAT64_C(    67.24), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00) } },
  };

  simde__m256d a, b, r;

  a = simde_mm256_loadu_pd(test_vec[0].a);
  b = simde_mm256_loadu_pd(test_vec[0].b);
  r = simde_mm256_permute2f128_pd(a, b, 108);
  simde_test_x86_assert_equal_f64x4(r, simde_mm256_loadu_pd(test_vec[0].r), 1);

  a = simde_mm256_loadu_pd(test_vec[1].a);
  b = simde_mm256_loadu_pd(test_vec[1].b);
  r = simde_mm256_permute2f128_pd(a, b, 27);
  simde_test_x86_assert_equal_f64x4(r, simde_mm256_loadu_pd(test_vec[1].r), 1);

  a = simde_mm256_loadu_pd(test_vec[2].a);
  b = simde_mm256_loadu_pd(test_vec[2].b);
  r = simde_mm256_permute2f128_pd(a, b, 70);
  simde_test_x86_assert_equal_f64x4(r, simde_mm256_loadu_pd(test_vec[2].r), 1);

  a = simde_mm256_loadu_pd(test_vec[3].a);
  b = simde_mm256_loadu_pd(test_vec[3].b);
  r = simde_mm256_permute2f128_pd(a, b, 185);
  simde_test_x86_assert_equal_f64x4(r, simde_mm256_loadu_pd(test_vec[3].r), 1);

  a = simde_mm256_loadu_pd(test_vec[4].a);
  b = simde_mm256_loadu_pd(test_vec[4].b);
  r = simde_mm256_permute2f128_pd(a, b, 61);
  simde_test_x86_assert_equal_f64x4(r, simde_mm256_loadu_pd(test_vec[4].r), 1);

  a = simde_mm256_loadu_pd(test_vec[5].a);
  b = simde_mm256_loadu_pd(test_vec[5].b);
  r = simde_mm256_permute2f128_pd(a, b, 123);
  simde_test_x86_assert_equal_f64x4(r, simde_mm256_loadu_pd(test_vec[5].r), 1);

  a = simde_mm256_loadu_pd(test_vec[6].a);
  b = simde_mm256_loadu_pd(test_vec[6].b);
  r = simde_mm256_permute2f128_pd(a, b, 170);
  simde_test_x86_assert_equal_f64x4(r, simde_mm256_loadu_pd(test_vec[6].r), 1);

  a = simde_mm256_loadu_pd(test_vec[7].a);
  b = simde_mm256_loadu_pd(test_vec[7].b);
  r = simde_mm256_permute2f128_pd(a, b, 241);
  simde_test_x86_assert_equal_f64x4(r, simde_mm256_loadu_pd(test_vec[7].r), 1);

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde__m256d a = simde_test_x86_random_f64x4(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
    simde__m256d b = simde_test_x86_random_f64x4(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
    int imm8 = simde_test_codegen_random_i32() & 255;
    simde__m256d r;
    SIMDE_CONSTIFY_256_(simde_mm256_permute2f128_pd, r, (HEDLEY_UNREACHABLE(), simde_mm256_setzero_pd()), imm8, a, b);

    simde_test_x86_write_f64x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_x86_write_f64x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_codegen_write_i32(2, imm8, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_f64x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_mm256_permute2f128_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde__m256 b;
    simde__m256 r;
  } test_vec[] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -376.93), SIMDE_FLOAT32_C( -598.80),
                         SIMDE_FLOAT32_C(  335.44), SIMDE_FLOAT32_C( -614.52),
                         SIMDE_FLOAT32_C(  219.29), SIMDE_FLOAT32_C( -425.58),
                         SIMDE_FLOAT32_C(  790.46), SIMDE_FLOAT32_C(  701.47)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -146.60), SIMDE_FLOAT32_C(  813.49),
                         SIMDE_FLOAT32_C( -148.37), SIMDE_FLOAT32_C( -614.66),
                         SIMDE_FLOAT32_C(  951.32), SIMDE_FLOAT32_C(  -49.79),
                         SIMDE_FLOAT32_C(  618.54), SIMDE_FLOAT32_C(  -94.32)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  219.29), SIMDE_FLOAT32_C( -425.58),
                         SIMDE_FLOAT32_C(  790.46), SIMDE_FLOAT32_C(  701.47),
                         SIMDE_FLOAT32_C(  219.29), SIMDE_FLOAT32_C( -425.58),
                         SIMDE_FLOAT32_C(  790.46), SIMDE_FLOAT32_C(  701.47)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -271.90), SIMDE_FLOAT32_C(  -24.42),
                         SIMDE_FLOAT32_C(   78.54), SIMDE_FLOAT32_C(  -19.08),
                         SIMDE_FLOAT32_C(  935.39), SIMDE_FLOAT32_C(  982.16),
                         SIMDE_FLOAT32_C(  380.38), SIMDE_FLOAT32_C( -917.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  204.91), SIMDE_FLOAT32_C(  161.00),
                         SIMDE_FLOAT32_C(  230.93), SIMDE_FLOAT32_C(  108.17),
                         SIMDE_FLOAT32_C(  327.81), SIMDE_FLOAT32_C( -178.38),
                         SIMDE_FLOAT32_C( -611.38), SIMDE_FLOAT32_C( -189.72)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  935.39), SIMDE_FLOAT32_C(  982.16),
                         SIMDE_FLOAT32_C(  380.38), SIMDE_FLOAT32_C( -917.00),
                         SIMDE_FLOAT32_C( -271.90), SIMDE_FLOAT32_C(  -24.42),
                         SIMDE_FLOAT32_C(   78.54), SIMDE_FLOAT32_C(  -19.08)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -271.90), SIMDE_FLOAT32_C(  -24.42),
                         SIMDE_FLOAT32_C(   78.54), SIMDE_FLOAT32_C(  -19.08),
                         SIMDE_FLOAT32_C(  935.39), SIMDE_FLOAT32_C(  982.16),
                         SIMDE_FLOAT32_C(  380.38), SIMDE_FLOAT32_C( -917.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  204.91), SIMDE_FLOAT32_C(  161.00),
                         SIMDE_FLOAT32_C(  230.93), SIMDE_FLOAT32_C(  108.17),
                         SIMDE_FLOAT32_C(  327.81), SIMDE_FLOAT32_C( -178.38),
                         SIMDE_FLOAT32_C( -611.38), SIMDE_FLOAT32_C( -189.72)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  935.39), SIMDE_FLOAT32_C(  982.16),
                         SIMDE_FLOAT32_C(  380.38), SIMDE_FLOAT32_C( -917.00),
                         SIMDE_FLOAT32_C(  327.81), SIMDE_FLOAT32_C( -178.38),
                         SIMDE_FLOAT32_C( -611.38), SIMDE_FLOAT32_C( -189.72)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -271.90), SIMDE_FLOAT32_C(  -24.42),
                         SIMDE_FLOAT32_C(   78.54), SIMDE_FLOAT32_C(  -19.08),
                         SIMDE_FLOAT32_C(  935.39), SIMDE_FLOAT32_C(  982.16),
                         SIMDE_FLOAT32_C(  380.38), SIMDE_FLOAT32_C( -917.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  204.91), SIMDE_FLOAT32_C(  161.00),
                         SIMDE_FLOAT32_C(  230.93), SIMDE_FLOAT32_C(  108.17),
                         SIMDE_FLOAT32_C(  327.81), SIMDE_FLOAT32_C( -178.38),
                         SIMDE_FLOAT32_C( -611.38), SIMDE_FLOAT32_C( -189.72)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  935.39), SIMDE_FLOAT32_C(  982.16),
                         SIMDE_FLOAT32_C(  380.38), SIMDE_FLOAT32_C( -917.00),
                         SIMDE_FLOAT32_C(  204.91), SIMDE_FLOAT32_C(  161.00),
                         SIMDE_FLOAT32_C(  230.93), SIMDE_FLOAT32_C(  108.17)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -271.90), SIMDE_FLOAT32_C(  -24.42),
                         SIMDE_FLOAT32_C(   78.54), SIMDE_FLOAT32_C(  -19.08),
                         SIMDE_FLOAT32_C(  935.39), SIMDE_FLOAT32_C(  982.16),
                         SIMDE_FLOAT32_C(  380.38), SIMDE_FLOAT32_C( -917.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  204.91), SIMDE_FLOAT32_C(  161.00),
                         SIMDE_FLOAT32_C(  230.93), SIMDE_FLOAT32_C(  108.17),
                         SIMDE_FLOAT32_C(  327.81), SIMDE_FLOAT32_C( -178.38),
                         SIMDE_FLOAT32_C( -611.38), SIMDE_FLOAT32_C( -189.72)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  935.39), SIMDE_FLOAT32_C(  982.16),
                         SIMDE_FLOAT32_C(  380.38), SIMDE_FLOAT32_C( -917.00),
                         SIMDE_FLOAT32_C(  935.39), SIMDE_FLOAT32_C(  982.16),
                         SIMDE_FLOAT32_C(  380.38), SIMDE_FLOAT32_C( -917.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -271.90), SIMDE_FLOAT32_C(  -24.42),
                         SIMDE_FLOAT32_C(   78.54), SIMDE_FLOAT32_C(  -19.08),
                         SIMDE_FLOAT32_C(  935.39), SIMDE_FLOAT32_C(  982.16),
                         SIMDE_FLOAT32_C(  380.38), SIMDE_FLOAT32_C( -917.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  204.91), SIMDE_FLOAT32_C(  161.00),
                         SIMDE_FLOAT32_C(  230.93), SIMDE_FLOAT32_C(  108.17),
                         SIMDE_FLOAT32_C(  327.81), SIMDE_FLOAT32_C( -178.38),
                         SIMDE_FLOAT32_C( -611.38), SIMDE_FLOAT32_C( -189.72)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  935.39), SIMDE_FLOAT32_C(  982.16),
                         SIMDE_FLOAT32_C(  380.38), SIMDE_FLOAT32_C( -917.00),
                         SIMDE_FLOAT32_C( -271.90), SIMDE_FLOAT32_C(  -24.42),
                         SIMDE_FLOAT32_C(   78.54), SIMDE_FLOAT32_C(  -19.08)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -271.90), SIMDE_FLOAT32_C(  -24.42),
                         SIMDE_FLOAT32_C(   78.54), SIMDE_FLOAT32_C(  -19.08),
                         SIMDE_FLOAT32_C(  935.39), SIMDE_FLOAT32_C(  982.16),
                         SIMDE_FLOAT32_C(  380.38), SIMDE_FLOAT32_C( -917.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  204.91), SIMDE_FLOAT32_C(  161.00),
                         SIMDE_FLOAT32_C(  230.93), SIMDE_FLOAT32_C(  108.17),
                         SIMDE_FLOAT32_C(  327.81), SIMDE_FLOAT32_C( -178.38),
                         SIMDE_FLOAT32_C( -611.38), SIMDE_FLOAT32_C( -189.72)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  935.39), SIMDE_FLOAT32_C(  982.16),
                         SIMDE_FLOAT32_C(  380.38), SIMDE_FLOAT32_C( -917.00),
                         SIMDE_FLOAT32_C(  327.81), SIMDE_FLOAT32_C( -178.38),
                         SIMDE_FLOAT32_C( -611.38), SIMDE_FLOAT32_C( -189.72)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -271.90), SIMDE_FLOAT32_C(  -24.42),
                         SIMDE_FLOAT32_C(   78.54), SIMDE_FLOAT32_C(  -19.08),
                         SIMDE_FLOAT32_C(  935.39), SIMDE_FLOAT32_C(  982.16),
                         SIMDE_FLOAT32_C(  380.38), SIMDE_FLOAT32_C( -917.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  204.91), SIMDE_FLOAT32_C(  161.00),
                         SIMDE_FLOAT32_C(  230.93), SIMDE_FLOAT32_C(  108.17),
                         SIMDE_FLOAT32_C(  327.81), SIMDE_FLOAT32_C( -178.38),
                         SIMDE_FLOAT32_C( -611.38), SIMDE_FLOAT32_C( -189.72)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  935.39), SIMDE_FLOAT32_C(  982.16),
                         SIMDE_FLOAT32_C(  380.38), SIMDE_FLOAT32_C( -917.00),
                         SIMDE_FLOAT32_C(  204.91), SIMDE_FLOAT32_C(  161.00),
                         SIMDE_FLOAT32_C(  230.93), SIMDE_FLOAT32_C(  108.17)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -271.90), SIMDE_FLOAT32_C(  -24.42),
                         SIMDE_FLOAT32_C(   78.54), SIMDE_FLOAT32_C(  -19.08),
                         SIMDE_FLOAT32_C(  935.39), SIMDE_FLOAT32_C(  982.16),
                         SIMDE_FLOAT32_C(  380.38), SIMDE_FLOAT32_C( -917.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  204.91), SIMDE_FLOAT32_C(  161.00),
                         SIMDE_FLOAT32_C(  230.93), SIMDE_FLOAT32_C(  108.17),
                         SIMDE_FLOAT32_C(  327.81), SIMDE_FLOAT32_C( -178.38),
                         SIMDE_FLOAT32_C( -611.38), SIMDE_FLOAT32_C( -189.72)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  935.39), SIMDE_FLOAT32_C(  982.16),
                         SIMDE_FLOAT32_C(  380.38), SIMDE_FLOAT32_C( -917.00),
                         SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00),
                         SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -271.90), SIMDE_FLOAT32_C(  -24.42),
                         SIMDE_FLOAT32_C(   78.54), SIMDE_FLOAT32_C(  -19.08),
                         SIMDE_FLOAT32_C(  935.39), SIMDE_FLOAT32_C(  982.16),
                         SIMDE_FLOAT32_C(  380.38), SIMDE_FLOAT32_C( -917.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  204.91), SIMDE_FLOAT32_C(  161.00),
                         SIMDE_FLOAT32_C(  230.93), SIMDE_FLOAT32_C(  108.17),
                         SIMDE_FLOAT32_C(  327.81), SIMDE_FLOAT32_C( -178.38),
                         SIMDE_FLOAT32_C( -611.38), SIMDE_FLOAT32_C( -189.72)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  935.39), SIMDE_FLOAT32_C(  982.16),
                         SIMDE_FLOAT32_C(  380.38), SIMDE_FLOAT32_C( -917.00),
                         SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00),
                         SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -271.90), SIMDE_FLOAT32_C(  -24.42),
                         SIMDE_FLOAT32_C(   78.54), SIMDE_FLOAT32_C(  -19.08),
                         SIMDE_FLOAT32_C(  935.39), SIMDE_FLOAT32_C(  982.16),
                         SIMDE_FLOAT32_C(  380.38), SIMDE_FLOAT32_C( -917.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  204.91), SIMDE_FLOAT32_C(  161.00),
                         SIMDE_FLOAT32_C(  230.93), SIMDE_FLOAT32_C(  108.17),
                         SIMDE_FLOAT32_C(  327.81), SIMDE_FLOAT32_C( -178.38),
                         SIMDE_FLOAT32_C( -611.38), SIMDE_FLOAT32_C( -189.72)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  935.39), SIMDE_FLOAT32_C(  982.16),
                         SIMDE_FLOAT32_C(  380.38), SIMDE_FLOAT32_C( -917.00),
                         SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00),
                         SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -271.90), SIMDE_FLOAT32_C(  -24.42),
                         SIMDE_FLOAT32_C(   78.54), SIMDE_FLOAT32_C(  -19.08),
                         SIMDE_FLOAT32_C(  935.39), SIMDE_FLOAT32_C(  982.16),
                         SIMDE_FLOAT32_C(  380.38), SIMDE_FLOAT32_C( -917.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  204.91), SIMDE_FLOAT32_C(  161.00),
                         SIMDE_FLOAT32_C(  230.93), SIMDE_FLOAT32_C(  108.17),
                         SIMDE_FLOAT32_C(  327.81), SIMDE_FLOAT32_C( -178.38),
                         SIMDE_FLOAT32_C( -611.38), SIMDE_FLOAT32_C( -189.72)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  935.39), SIMDE_FLOAT32_C(  982.16),
                         SIMDE_FLOAT32_C(  380.38), SIMDE_FLOAT32_C( -917.00),
                         SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00),
                         SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -271.90), SIMDE_FLOAT32_C(  -24.42),
                         SIMDE_FLOAT32_C(   78.54), SIMDE_FLOAT32_C(  -19.08),
                         SIMDE_FLOAT32_C(  935.39), SIMDE_FLOAT32_C(  982.16),
                         SIMDE_FLOAT32_C(  380.38), SIMDE_FLOAT32_C( -917.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  204.91), SIMDE_FLOAT32_C(  161.00),
                         SIMDE_FLOAT32_C(  230.93), SIMDE_FLOAT32_C(  108.17),
                         SIMDE_FLOAT32_C(  327.81), SIMDE_FLOAT32_C( -178.38),
                         SIMDE_FLOAT32_C( -611.38), SIMDE_FLOAT32_C( -189.72)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  935.39), SIMDE_FLOAT32_C(  982.16),
                         SIMDE_FLOAT32_C(  380.38), SIMDE_FLOAT32_C( -917.00),
                         SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00),
                         SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -271.90), SIMDE_FLOAT32_C(  -24.42),
                         SIMDE_FLOAT32_C(   78.54), SIMDE_FLOAT32_C(  -19.08),
                         SIMDE_FLOAT32_C(  935.39), SIMDE_FLOAT32_C(  982.16),
                         SIMDE_FLOAT32_C(  380.38), SIMDE_FLOAT32_C( -917.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  204.91), SIMDE_FLOAT32_C(  161.00),
                         SIMDE_FLOAT32_C(  230.93), SIMDE_FLOAT32_C(  108.17),
                         SIMDE_FLOAT32_C(  327.81), SIMDE_FLOAT32_C( -178.38),
                         SIMDE_FLOAT32_C( -611.38), SIMDE_FLOAT32_C( -189.72)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  935.39), SIMDE_FLOAT32_C(  982.16),
                         SIMDE_FLOAT32_C(  380.38), SIMDE_FLOAT32_C( -917.00),
                         SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00),
                         SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -271.90), SIMDE_FLOAT32_C(  -24.42),
                         SIMDE_FLOAT32_C(   78.54), SIMDE_FLOAT32_C(  -19.08),
                         SIMDE_FLOAT32_C(  935.39), SIMDE_FLOAT32_C(  982.16),
                         SIMDE_FLOAT32_C(  380.38), SIMDE_FLOAT32_C( -917.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  204.91), SIMDE_FLOAT32_C(  161.00),
                         SIMDE_FLOAT32_C(  230.93), SIMDE_FLOAT32_C(  108.17),
                         SIMDE_FLOAT32_C(  327.81), SIMDE_FLOAT32_C( -178.38),
                         SIMDE_FLOAT32_C( -611.38), SIMDE_FLOAT32_C( -189.72)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  935.39), SIMDE_FLOAT32_C(  982.16),
                         SIMDE_FLOAT32_C(  380.38), SIMDE_FLOAT32_C( -917.00),
                         SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00),
                         SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -271.90), SIMDE_FLOAT32_C(  -24.42),
                         SIMDE_FLOAT32_C(   78.54), SIMDE_FLOAT32_C(  -19.08),
                         SIMDE_FLOAT32_C(  935.39), SIMDE_FLOAT32_C(  982.16),
                         SIMDE_FLOAT32_C(  380.38), SIMDE_FLOAT32_C( -917.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  204.91), SIMDE_FLOAT32_C(  161.00),
                         SIMDE_FLOAT32_C(  230.93), SIMDE_FLOAT32_C(  108.17),
                         SIMDE_FLOAT32_C(  327.81), SIMDE_FLOAT32_C( -178.38),
                         SIMDE_FLOAT32_C( -611.38), SIMDE_FLOAT32_C( -189.72)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  935.39), SIMDE_FLOAT32_C(  982.16),
                         SIMDE_FLOAT32_C(  380.38), SIMDE_FLOAT32_C( -917.00),
                         SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00),
                         SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00)) }
  };

  simde__m256 r;

  r = simde_mm256_permute2f128_ps(test_vec[0x0].a, test_vec[0x0].b, 0x0);
  simde_assert_m256_close(r, test_vec[0x0].r, 1);

  r = simde_mm256_permute2f128_ps(test_vec[0x1].a, test_vec[0x1].b, 0x1);
  simde_assert_m256_close(r, test_vec[0x1].r, 1);

  r = simde_mm256_permute2f128_ps(test_vec[0x2].a, test_vec[0x2].b, 0x2);
  simde_assert_m256_close(r, test_vec[0x2].r, 1);

  r = simde_mm256_permute2f128_ps(test_vec[0x3].a, test_vec[0x3].b, 0x3);
  simde_assert_m256_close(r, test_vec[0x3].r, 1);

  r = simde_mm256_permute2f128_ps(test_vec[0x4].a, test_vec[0x4].b, 0x4);
  simde_assert_m256_close(r, test_vec[0x4].r, 1);

  r = simde_mm256_permute2f128_ps(test_vec[0x5].a, test_vec[0x5].b, 0x5);
  simde_assert_m256_close(r, test_vec[0x5].r, 1);

  r = simde_mm256_permute2f128_ps(test_vec[0x6].a, test_vec[0x6].b, 0x6);
  simde_assert_m256_close(r, test_vec[0x6].r, 1);

  r = simde_mm256_permute2f128_ps(test_vec[0x7].a, test_vec[0x7].b, 0x7);
  simde_assert_m256_close(r, test_vec[0x7].r, 1);

  r = simde_mm256_permute2f128_ps(test_vec[0x8].a, test_vec[0x8].b, 0x8);
  simde_assert_m256_close(r, test_vec[0x8].r, 1);

  r = simde_mm256_permute2f128_ps(test_vec[0x9].a, test_vec[0x9].b, 0x9);
  simde_assert_m256_close(r, test_vec[0x9].r, 1);

  r = simde_mm256_permute2f128_ps(test_vec[0xa].a, test_vec[0xa].b, 0xa);
  simde_assert_m256_close(r, test_vec[0xa].r, 1);

  r = simde_mm256_permute2f128_ps(test_vec[0xb].a, test_vec[0xb].b, 0xb);
  simde_assert_m256_close(r, test_vec[0xb].r, 1);

  r = simde_mm256_permute2f128_ps(test_vec[0xc].a, test_vec[0xc].b, 0xc);
  simde_assert_m256_close(r, test_vec[0xc].r, 1);

  r = simde_mm256_permute2f128_ps(test_vec[0xd].a, test_vec[0xd].b, 0xd);
  simde_assert_m256_close(r, test_vec[0xd].r, 1);

  r = simde_mm256_permute2f128_ps(test_vec[0xe].a, test_vec[0xe].b, 0xe);
  simde_assert_m256_close(r, test_vec[0xe].r, 1);

  r = simde_mm256_permute2f128_ps(test_vec[0xf].a, test_vec[0xf].b, 0xf);
  simde_assert_m256_close(r, test_vec[0xf].r, 1);

  return 0;
}

static int
test_simde_mm256_permute2f128_si256(SIMDE_MUNIT_TEST_ARGS) {
#if 1
  const struct {
    const int16_t a[16];
    const int16_t b[16];
    const int imm8;
    const int16_t r[16];
  } test_vec[] = {
    { {  INT16_C(  8272), -INT16_C( 27274),  INT16_C( 13557), -INT16_C( 17507), -INT16_C( 29588), -INT16_C( 29778),  INT16_C(  1080),  INT16_C( 31493),
         INT16_C( 20143), -INT16_C( 24612), -INT16_C( 24508), -INT16_C( 26033), -INT16_C( 18817),  INT16_C( 13712), -INT16_C( 15934),  INT16_C(  4959) },
      { -INT16_C( 10526), -INT16_C( 10328),  INT16_C( 17674),  INT16_C( 30354),  INT16_C( 16594),  INT16_C(  2562),  INT16_C(  1860), -INT16_C(  2939),
         INT16_C( 24918), -INT16_C( 25965), -INT16_C(  7679), -INT16_C( 32716), -INT16_C( 15207),  INT16_C( 23477),  INT16_C(  5510),  INT16_C( 26734) },
       INT32_C(         235),
      {  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
         INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) } },
    { { -INT16_C( 11684),  INT16_C( 11884),  INT16_C( 28178),  INT16_C( 22328), -INT16_C( 16779), -INT16_C( 13493), -INT16_C(  8673),  INT16_C(  8549),
        -INT16_C( 26176),  INT16_C( 22945),  INT16_C( 22366), -INT16_C(  6987),  INT16_C(  9068),  INT16_C( 22348), -INT16_C( 29894), -INT16_C( 27060) },
      { -INT16_C( 18339),  INT16_C( 28868), -INT16_C(   986), -INT16_C( 25401),  INT16_C(  4794), -INT16_C(  9625), -INT16_C( 12816), -INT16_C( 20229),
        -INT16_C( 25498), -INT16_C( 15350), -INT16_C( 16397),  INT16_C( 24488), -INT16_C(  2846),  INT16_C(  7350),  INT16_C(   896), -INT16_C(  8782) },
       INT32_C(         187),
      {  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
         INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) } },
    { {  INT16_C(  5235),  INT16_C( 11646), -INT16_C(  6874),  INT16_C(  5639),  INT16_C(   690),  INT16_C(  6599), -INT16_C( 11873), -INT16_C( 27939),
        -INT16_C( 31088),  INT16_C( 29426), -INT16_C( 22406), -INT16_C(  1393),  INT16_C( 16811),  INT16_C( 26584),  INT16_C(  9656),  INT16_C( 11081) },
      { -INT16_C( 14534),  INT16_C( 24664),  INT16_C( 24748),  INT16_C( 24439),  INT16_C( 15970),  INT16_C(   376),  INT16_C( 21775), -INT16_C( 24684),
        -INT16_C( 31013),  INT16_C( 22033), -INT16_C( 24530), -INT16_C(  9648),  INT16_C( 10466), -INT16_C( 26047), -INT16_C( 30130), -INT16_C( 30523) },
       INT32_C(          81),
      { -INT16_C( 31088),  INT16_C( 29426), -INT16_C( 22406), -INT16_C(  1393),  INT16_C( 16811),  INT16_C( 26584),  INT16_C(  9656),  INT16_C( 11081),
        -INT16_C( 31088),  INT16_C( 29426), -INT16_C( 22406), -INT16_C(  1393),  INT16_C( 16811),  INT16_C( 26584),  INT16_C(  9656),  INT16_C( 11081) } },
    { {  INT16_C( 24445), -INT16_C(  8100), -INT16_C( 11107), -INT16_C( 21279),  INT16_C( 29994),  INT16_C(  1355),  INT16_C( 24059),  INT16_C( 10843),
        -INT16_C( 21251), -INT16_C(  8444),  INT16_C( 17876),  INT16_C(  8825),  INT16_C( 16079),  INT16_C(  8362), -INT16_C( 27812), -INT16_C(  9955) },
      {  INT16_C( 31474), -INT16_C( 28487), -INT16_C( 25778),  INT16_C( 30780), -INT16_C( 30704),  INT16_C(  3198), -INT16_C(  9755), -INT16_C(  7626),
         INT16_C( 14981),  INT16_C( 23234),  INT16_C( 15231),  INT16_C( 20092),  INT16_C( 10106), -INT16_C( 10642), -INT16_C( 29766), -INT16_C( 21329) },
       INT32_C(           5),
      { -INT16_C( 21251), -INT16_C(  8444),  INT16_C( 17876),  INT16_C(  8825),  INT16_C( 16079),  INT16_C(  8362), -INT16_C( 27812), -INT16_C(  9955),
         INT16_C( 24445), -INT16_C(  8100), -INT16_C( 11107), -INT16_C( 21279),  INT16_C( 29994),  INT16_C(  1355),  INT16_C( 24059),  INT16_C( 10843) } },
    { {  INT16_C( 30980),  INT16_C(  5324),  INT16_C( 18945), -INT16_C(  6624),  INT16_C( 22052), -INT16_C( 22072), -INT16_C( 30064),  INT16_C(  3843),
        -INT16_C( 32570),  INT16_C( 16477), -INT16_C( 13401),  INT16_C( 24854), -INT16_C( 15017),  INT16_C( 23565),  INT16_C( 18990),  INT16_C( 12976) },
      {  INT16_C( 32195), -INT16_C( 15289),  INT16_C( 26567), -INT16_C(  5206),  INT16_C( 29374),  INT16_C( 20117), -INT16_C( 26371), -INT16_C( 15522),
        -INT16_C( 17640), -INT16_C( 16637),  INT16_C(  6535), -INT16_C(  8672),  INT16_C( 11998),  INT16_C(  3386), -INT16_C(  5256),  INT16_C( 15167) },
       INT32_C(         104),
      {  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
         INT16_C( 32195), -INT16_C( 15289),  INT16_C( 26567), -INT16_C(  5206),  INT16_C( 29374),  INT16_C( 20117), -INT16_C( 26371), -INT16_C( 15522) } },
    { { -INT16_C( 22034), -INT16_C( 21477), -INT16_C( 20453),  INT16_C(  6394),  INT16_C( 22600),  INT16_C( 25051), -INT16_C(  8684), -INT16_C( 25824),
         INT16_C( 16887), -INT16_C( 10631), -INT16_C( 19601), -INT16_C(  6173),  INT16_C(  8862),  INT16_C(  1570),  INT16_C(  8617), -INT16_C( 26826) },
      {  INT16_C( 20938), -INT16_C(  6845),  INT16_C( 15617),  INT16_C( 18942), -INT16_C(  9834), -INT16_C( 21846), -INT16_C( 13384), -INT16_C( 20667),
        -INT16_C( 16884),  INT16_C( 31621),  INT16_C( 26737),  INT16_C(  4194), -INT16_C( 31605),  INT16_C( 13334),  INT16_C( 19621),  INT16_C( 28619) },
       INT32_C(         157),
      {  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
         INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) } },
    { {  INT16_C( 21067), -INT16_C(  7704), -INT16_C( 28116), -INT16_C(  7029), -INT16_C( 12195),  INT16_C( 27027),  INT16_C(  6542),  INT16_C(   228),
         INT16_C( 18049),  INT16_C(  3088),  INT16_C(  9930),  INT16_C( 28480),  INT16_C(  2931),  INT16_C(  4318),  INT16_C( 13081),  INT16_C( 26031) },
      { -INT16_C( 26747), -INT16_C( 20154), -INT16_C( 11735), -INT16_C( 30827),  INT16_C( 10658),  INT16_C( 12784), -INT16_C( 10942), -INT16_C( 15567),
         INT16_C( 16667), -INT16_C(  6448),  INT16_C(  4199), -INT16_C(  9643),  INT16_C( 13340),  INT16_C( 13803), -INT16_C( 26009), -INT16_C(  4966) },
       INT32_C(          49),
      {  INT16_C( 18049),  INT16_C(  3088),  INT16_C(  9930),  INT16_C( 28480),  INT16_C(  2931),  INT16_C(  4318),  INT16_C( 13081),  INT16_C( 26031),
         INT16_C( 16667), -INT16_C(  6448),  INT16_C(  4199), -INT16_C(  9643),  INT16_C( 13340),  INT16_C( 13803), -INT16_C( 26009), -INT16_C(  4966) } },
    { {  INT16_C( 13235),  INT16_C( 21985), -INT16_C( 11684), -INT16_C( 24954), -INT16_C( 18521), -INT16_C( 15774),  INT16_C( 13048),  INT16_C( 24744),
        -INT16_C(   446),  INT16_C( 24122),  INT16_C(  9522), -INT16_C( 26220),  INT16_C( 11967), -INT16_C(  3963),  INT16_C(  8975), -INT16_C( 15797) },
      {  INT16_C( 11351), -INT16_C( 19688), -INT16_C( 24834), -INT16_C( 23214), -INT16_C( 19370),  INT16_C( 20072),  INT16_C(  4326),  INT16_C( 10414),
        -INT16_C(  5874),  INT16_C( 16519),  INT16_C(  6926), -INT16_C( 12583),  INT16_C( 24393),  INT16_C( 22974),  INT16_C(  2434), -INT16_C(  9957) },
       INT32_C(          54),
      {  INT16_C( 11351), -INT16_C( 19688), -INT16_C( 24834), -INT16_C( 23214), -INT16_C( 19370),  INT16_C( 20072),  INT16_C(  4326),  INT16_C( 10414),
        -INT16_C(  5874),  INT16_C( 16519),  INT16_C(  6926), -INT16_C( 12583),  INT16_C( 24393),  INT16_C( 22974),  INT16_C(  2434), -INT16_C(  9957) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256i a = simde_mm256_loadu_epi16(test_vec[i].a);
    simde__m256i b = simde_mm256_loadu_epi16(test_vec[i].b);
    simde__m256i r;
    SIMDE_CONSTIFY_256_(simde_mm256_permute2f128_si256, r, (HEDLEY_UNREACHABLE(), simde_mm256_setzero_si256()), test_vec[i].imm8, a, b);
    simde_test_x86_assert_equal_i16x16(r, simde_mm256_loadu_epi16(test_vec[i].r));
  }

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde__m256i a = simde_test_x86_random_i16x16();
    simde__m256i b = simde_test_x86_random_i16x16();
    int imm8 = simde_test_codegen_random_i32() & 255;
    simde__m256i r;
    SIMDE_CONSTIFY_256_(simde_mm256_permute2f128_si256, r, (HEDLEY_UNREACHABLE(), simde_mm256_setzero_si256()), imm8, a, b);

    simde_test_x86_write_i16x16(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_x86_write_i16x16(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_codegen_write_i32(2, imm8, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_i16x16(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_mm256_rcp_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde__m256 r;
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -908.92), SIMDE_FLOAT32_C( -201.59),
                         SIMDE_FLOAT32_C(    3.47), SIMDE_FLOAT32_C(  829.08),
                         SIMDE_FLOAT32_C(  -86.36), SIMDE_FLOAT32_C(  780.02),
                         SIMDE_FLOAT32_C(   13.29), SIMDE_FLOAT32_C(  492.53)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   -0.00), SIMDE_FLOAT32_C(   -0.00),
                         SIMDE_FLOAT32_C(    0.29), SIMDE_FLOAT32_C(    0.00),
                         SIMDE_FLOAT32_C(   -0.01), SIMDE_FLOAT32_C(    0.00),
                         SIMDE_FLOAT32_C(    0.08), SIMDE_FLOAT32_C(    0.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  745.72), SIMDE_FLOAT32_C( -860.90),
                         SIMDE_FLOAT32_C(  647.35), SIMDE_FLOAT32_C( -932.06),
                         SIMDE_FLOAT32_C(  782.22), SIMDE_FLOAT32_C(  232.69),
                         SIMDE_FLOAT32_C(   88.27), SIMDE_FLOAT32_C( -882.29)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(   -0.00),
                         SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(   -0.00),
                         SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00),
                         SIMDE_FLOAT32_C(    0.01), SIMDE_FLOAT32_C(   -0.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  750.74), SIMDE_FLOAT32_C(  -90.83),
                         SIMDE_FLOAT32_C(  949.51), SIMDE_FLOAT32_C(  177.31),
                         SIMDE_FLOAT32_C( -204.98), SIMDE_FLOAT32_C(  340.91),
                         SIMDE_FLOAT32_C(  -39.69), SIMDE_FLOAT32_C( -715.33)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(   -0.01),
                         SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.01),
                         SIMDE_FLOAT32_C(   -0.00), SIMDE_FLOAT32_C(    0.00),
                         SIMDE_FLOAT32_C(   -0.03), SIMDE_FLOAT32_C(   -0.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -147.11), SIMDE_FLOAT32_C(  588.21),
                         SIMDE_FLOAT32_C(  521.36), SIMDE_FLOAT32_C( -659.55),
                         SIMDE_FLOAT32_C(  932.00), SIMDE_FLOAT32_C(  548.33),
                         SIMDE_FLOAT32_C(  639.13), SIMDE_FLOAT32_C( -316.06)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   -0.01), SIMDE_FLOAT32_C(    0.00),
                         SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(   -0.00),
                         SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00),
                         SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(   -0.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -794.81), SIMDE_FLOAT32_C(   88.08),
                         SIMDE_FLOAT32_C( -540.52), SIMDE_FLOAT32_C(   32.82),
                         SIMDE_FLOAT32_C( -921.78), SIMDE_FLOAT32_C( -970.13),
                         SIMDE_FLOAT32_C(  659.29), SIMDE_FLOAT32_C( -464.98)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   -0.00), SIMDE_FLOAT32_C(    0.01),
                         SIMDE_FLOAT32_C(   -0.00), SIMDE_FLOAT32_C(    0.03),
                         SIMDE_FLOAT32_C(   -0.00), SIMDE_FLOAT32_C(   -0.00),
                         SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(   -0.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -853.91), SIMDE_FLOAT32_C(  837.38),
                         SIMDE_FLOAT32_C( -478.03), SIMDE_FLOAT32_C(  330.06),
                         SIMDE_FLOAT32_C(  627.16), SIMDE_FLOAT32_C(  535.10),
                         SIMDE_FLOAT32_C( -787.00), SIMDE_FLOAT32_C(  376.04)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   -0.00), SIMDE_FLOAT32_C(    0.00),
                         SIMDE_FLOAT32_C(   -0.00), SIMDE_FLOAT32_C(    0.00),
                         SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00),
                         SIMDE_FLOAT32_C(   -0.00), SIMDE_FLOAT32_C(    0.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -244.65), SIMDE_FLOAT32_C(  415.43),
                         SIMDE_FLOAT32_C(  415.27), SIMDE_FLOAT32_C(  243.86),
                         SIMDE_FLOAT32_C(  475.16), SIMDE_FLOAT32_C(    0.53),
                         SIMDE_FLOAT32_C( -509.99), SIMDE_FLOAT32_C( -861.80)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   -0.00), SIMDE_FLOAT32_C(    0.00),
                         SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00),
                         SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    1.89),
                         SIMDE_FLOAT32_C(   -0.00), SIMDE_FLOAT32_C(   -0.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -819.61), SIMDE_FLOAT32_C( -441.38),
                         SIMDE_FLOAT32_C( -736.01), SIMDE_FLOAT32_C(  681.16),
                         SIMDE_FLOAT32_C( -798.05), SIMDE_FLOAT32_C(  561.39),
                         SIMDE_FLOAT32_C(  116.98), SIMDE_FLOAT32_C( -372.62)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   -0.00), SIMDE_FLOAT32_C(   -0.00),
                         SIMDE_FLOAT32_C(   -0.00), SIMDE_FLOAT32_C(    0.00),
                         SIMDE_FLOAT32_C(   -0.00), SIMDE_FLOAT32_C(    0.00),
                         SIMDE_FLOAT32_C(    0.01), SIMDE_FLOAT32_C(   -0.00)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256 r = simde_mm256_rcp_ps(test_vec[i].a);
    simde_assert_m256_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_round_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde__m256 nearest;
    simde__m256 neg_inf;
    simde__m256 pos_inf;
    simde__m256 truncate;
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -437.99), SIMDE_FLOAT32_C(  332.86),
                         SIMDE_FLOAT32_C(  531.55), SIMDE_FLOAT32_C(  188.24),
                         SIMDE_FLOAT32_C(  135.31), SIMDE_FLOAT32_C( -341.69),
                         SIMDE_FLOAT32_C( -995.08), SIMDE_FLOAT32_C(  -84.86)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -438.00), SIMDE_FLOAT32_C(  333.00),
                         SIMDE_FLOAT32_C(  532.00), SIMDE_FLOAT32_C(  188.00),
                         SIMDE_FLOAT32_C(  135.00), SIMDE_FLOAT32_C( -342.00),
                         SIMDE_FLOAT32_C( -995.00), SIMDE_FLOAT32_C(  -85.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -438.00), SIMDE_FLOAT32_C(  332.00),
                         SIMDE_FLOAT32_C(  531.00), SIMDE_FLOAT32_C(  188.00),
                         SIMDE_FLOAT32_C(  135.00), SIMDE_FLOAT32_C( -342.00),
                         SIMDE_FLOAT32_C( -996.00), SIMDE_FLOAT32_C(  -85.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -437.00), SIMDE_FLOAT32_C(  333.00),
                         SIMDE_FLOAT32_C(  532.00), SIMDE_FLOAT32_C(  189.00),
                         SIMDE_FLOAT32_C(  136.00), SIMDE_FLOAT32_C( -341.00),
                         SIMDE_FLOAT32_C( -995.00), SIMDE_FLOAT32_C(  -84.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -437.00), SIMDE_FLOAT32_C(  332.00),
                         SIMDE_FLOAT32_C(  531.00), SIMDE_FLOAT32_C(  188.00),
                         SIMDE_FLOAT32_C(  135.00), SIMDE_FLOAT32_C( -341.00),
                         SIMDE_FLOAT32_C( -995.00), SIMDE_FLOAT32_C(  -84.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -271.77), SIMDE_FLOAT32_C( -902.26),
                         SIMDE_FLOAT32_C(  960.96), SIMDE_FLOAT32_C(  885.00),
                         SIMDE_FLOAT32_C(  184.99), SIMDE_FLOAT32_C(  273.55),
                         SIMDE_FLOAT32_C( -508.74), SIMDE_FLOAT32_C(  304.51)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -272.00), SIMDE_FLOAT32_C( -902.00),
                         SIMDE_FLOAT32_C(  961.00), SIMDE_FLOAT32_C(  885.00),
                         SIMDE_FLOAT32_C(  185.00), SIMDE_FLOAT32_C(  274.00),
                         SIMDE_FLOAT32_C( -509.00), SIMDE_FLOAT32_C(  305.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -272.00), SIMDE_FLOAT32_C( -903.00),
                         SIMDE_FLOAT32_C(  960.00), SIMDE_FLOAT32_C(  885.00),
                         SIMDE_FLOAT32_C(  184.00), SIMDE_FLOAT32_C(  273.00),
                         SIMDE_FLOAT32_C( -509.00), SIMDE_FLOAT32_C(  304.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -271.00), SIMDE_FLOAT32_C( -902.00),
                         SIMDE_FLOAT32_C(  961.00), SIMDE_FLOAT32_C(  885.00),
                         SIMDE_FLOAT32_C(  185.00), SIMDE_FLOAT32_C(  274.00),
                         SIMDE_FLOAT32_C( -508.00), SIMDE_FLOAT32_C(  305.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -271.00), SIMDE_FLOAT32_C( -902.00),
                         SIMDE_FLOAT32_C(  960.00), SIMDE_FLOAT32_C(  885.00),
                         SIMDE_FLOAT32_C(  184.00), SIMDE_FLOAT32_C(  273.00),
                         SIMDE_FLOAT32_C( -508.00), SIMDE_FLOAT32_C(  304.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  970.76), SIMDE_FLOAT32_C( -833.91),
                         SIMDE_FLOAT32_C( -187.58), SIMDE_FLOAT32_C(   27.59),
                         SIMDE_FLOAT32_C(  181.38), SIMDE_FLOAT32_C( -399.46),
                         SIMDE_FLOAT32_C( -127.86), SIMDE_FLOAT32_C( -393.23)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  971.00), SIMDE_FLOAT32_C( -834.00),
                         SIMDE_FLOAT32_C( -188.00), SIMDE_FLOAT32_C(   28.00),
                         SIMDE_FLOAT32_C(  181.00), SIMDE_FLOAT32_C( -399.00),
                         SIMDE_FLOAT32_C( -128.00), SIMDE_FLOAT32_C( -393.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  970.00), SIMDE_FLOAT32_C( -834.00),
                         SIMDE_FLOAT32_C( -188.00), SIMDE_FLOAT32_C(   27.00),
                         SIMDE_FLOAT32_C(  181.00), SIMDE_FLOAT32_C( -400.00),
                         SIMDE_FLOAT32_C( -128.00), SIMDE_FLOAT32_C( -394.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  971.00), SIMDE_FLOAT32_C( -833.00),
                         SIMDE_FLOAT32_C( -187.00), SIMDE_FLOAT32_C(   28.00),
                         SIMDE_FLOAT32_C(  182.00), SIMDE_FLOAT32_C( -399.00),
                         SIMDE_FLOAT32_C( -127.00), SIMDE_FLOAT32_C( -393.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  970.00), SIMDE_FLOAT32_C( -833.00),
                         SIMDE_FLOAT32_C( -187.00), SIMDE_FLOAT32_C(   27.00),
                         SIMDE_FLOAT32_C(  181.00), SIMDE_FLOAT32_C( -399.00),
                         SIMDE_FLOAT32_C( -127.00), SIMDE_FLOAT32_C( -393.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  259.90), SIMDE_FLOAT32_C( -282.33),
                         SIMDE_FLOAT32_C(  766.19), SIMDE_FLOAT32_C(  948.74),
                         SIMDE_FLOAT32_C( -533.05), SIMDE_FLOAT32_C(  397.75),
                         SIMDE_FLOAT32_C(  998.83), SIMDE_FLOAT32_C( -841.13)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  260.00), SIMDE_FLOAT32_C( -282.00),
                         SIMDE_FLOAT32_C(  766.00), SIMDE_FLOAT32_C(  949.00),
                         SIMDE_FLOAT32_C( -533.00), SIMDE_FLOAT32_C(  398.00),
                         SIMDE_FLOAT32_C(  999.00), SIMDE_FLOAT32_C( -841.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  259.00), SIMDE_FLOAT32_C( -283.00),
                         SIMDE_FLOAT32_C(  766.00), SIMDE_FLOAT32_C(  948.00),
                         SIMDE_FLOAT32_C( -534.00), SIMDE_FLOAT32_C(  397.00),
                         SIMDE_FLOAT32_C(  998.00), SIMDE_FLOAT32_C( -842.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  260.00), SIMDE_FLOAT32_C( -282.00),
                         SIMDE_FLOAT32_C(  767.00), SIMDE_FLOAT32_C(  949.00),
                         SIMDE_FLOAT32_C( -533.00), SIMDE_FLOAT32_C(  398.00),
                         SIMDE_FLOAT32_C(  999.00), SIMDE_FLOAT32_C( -841.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  259.00), SIMDE_FLOAT32_C( -282.00),
                         SIMDE_FLOAT32_C(  766.00), SIMDE_FLOAT32_C(  948.00),
                         SIMDE_FLOAT32_C( -533.00), SIMDE_FLOAT32_C(  397.00),
                         SIMDE_FLOAT32_C(  998.00), SIMDE_FLOAT32_C( -841.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -178.69), SIMDE_FLOAT32_C(  880.71),
                         SIMDE_FLOAT32_C( -928.72), SIMDE_FLOAT32_C( -201.24),
                         SIMDE_FLOAT32_C(  -99.45), SIMDE_FLOAT32_C(  785.84),
                         SIMDE_FLOAT32_C(  542.02), SIMDE_FLOAT32_C(  -81.93)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -179.00), SIMDE_FLOAT32_C(  881.00),
                         SIMDE_FLOAT32_C( -929.00), SIMDE_FLOAT32_C( -201.00),
                         SIMDE_FLOAT32_C(  -99.00), SIMDE_FLOAT32_C(  786.00),
                         SIMDE_FLOAT32_C(  542.00), SIMDE_FLOAT32_C(  -82.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -179.00), SIMDE_FLOAT32_C(  880.00),
                         SIMDE_FLOAT32_C( -929.00), SIMDE_FLOAT32_C( -202.00),
                         SIMDE_FLOAT32_C( -100.00), SIMDE_FLOAT32_C(  785.00),
                         SIMDE_FLOAT32_C(  542.00), SIMDE_FLOAT32_C(  -82.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -178.00), SIMDE_FLOAT32_C(  881.00),
                         SIMDE_FLOAT32_C( -928.00), SIMDE_FLOAT32_C( -201.00),
                         SIMDE_FLOAT32_C(  -99.00), SIMDE_FLOAT32_C(  786.00),
                         SIMDE_FLOAT32_C(  543.00), SIMDE_FLOAT32_C(  -81.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -178.00), SIMDE_FLOAT32_C(  880.00),
                         SIMDE_FLOAT32_C( -928.00), SIMDE_FLOAT32_C( -201.00),
                         SIMDE_FLOAT32_C(  -99.00), SIMDE_FLOAT32_C(  785.00),
                         SIMDE_FLOAT32_C(  542.00), SIMDE_FLOAT32_C(  -81.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -937.16), SIMDE_FLOAT32_C(  854.52),
                         SIMDE_FLOAT32_C(  980.48), SIMDE_FLOAT32_C(  -86.24),
                         SIMDE_FLOAT32_C(  473.38), SIMDE_FLOAT32_C(  104.75),
                         SIMDE_FLOAT32_C(   14.33), SIMDE_FLOAT32_C(   91.35)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -937.00), SIMDE_FLOAT32_C(  855.00),
                         SIMDE_FLOAT32_C(  980.00), SIMDE_FLOAT32_C(  -86.00),
                         SIMDE_FLOAT32_C(  473.00), SIMDE_FLOAT32_C(  105.00),
                         SIMDE_FLOAT32_C(   14.00), SIMDE_FLOAT32_C(   91.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -938.00), SIMDE_FLOAT32_C(  854.00),
                         SIMDE_FLOAT32_C(  980.00), SIMDE_FLOAT32_C(  -87.00),
                         SIMDE_FLOAT32_C(  473.00), SIMDE_FLOAT32_C(  104.00),
                         SIMDE_FLOAT32_C(   14.00), SIMDE_FLOAT32_C(   91.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -937.00), SIMDE_FLOAT32_C(  855.00),
                         SIMDE_FLOAT32_C(  981.00), SIMDE_FLOAT32_C(  -86.00),
                         SIMDE_FLOAT32_C(  474.00), SIMDE_FLOAT32_C(  105.00),
                         SIMDE_FLOAT32_C(   15.00), SIMDE_FLOAT32_C(   92.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -937.00), SIMDE_FLOAT32_C(  854.00),
                         SIMDE_FLOAT32_C(  980.00), SIMDE_FLOAT32_C(  -86.00),
                         SIMDE_FLOAT32_C(  473.00), SIMDE_FLOAT32_C(  104.00),
                         SIMDE_FLOAT32_C(   14.00), SIMDE_FLOAT32_C(   91.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  529.30), SIMDE_FLOAT32_C(  148.64),
                         SIMDE_FLOAT32_C(  820.35), SIMDE_FLOAT32_C(  265.99),
                         SIMDE_FLOAT32_C(  701.82), SIMDE_FLOAT32_C(  479.73),
                         SIMDE_FLOAT32_C(  432.96), SIMDE_FLOAT32_C(  276.42)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  529.00), SIMDE_FLOAT32_C(  149.00),
                         SIMDE_FLOAT32_C(  820.00), SIMDE_FLOAT32_C(  266.00),
                         SIMDE_FLOAT32_C(  702.00), SIMDE_FLOAT32_C(  480.00),
                         SIMDE_FLOAT32_C(  433.00), SIMDE_FLOAT32_C(  276.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  529.00), SIMDE_FLOAT32_C(  148.00),
                         SIMDE_FLOAT32_C(  820.00), SIMDE_FLOAT32_C(  265.00),
                         SIMDE_FLOAT32_C(  701.00), SIMDE_FLOAT32_C(  479.00),
                         SIMDE_FLOAT32_C(  432.00), SIMDE_FLOAT32_C(  276.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  530.00), SIMDE_FLOAT32_C(  149.00),
                         SIMDE_FLOAT32_C(  821.00), SIMDE_FLOAT32_C(  266.00),
                         SIMDE_FLOAT32_C(  702.00), SIMDE_FLOAT32_C(  480.00),
                         SIMDE_FLOAT32_C(  433.00), SIMDE_FLOAT32_C(  277.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  529.00), SIMDE_FLOAT32_C(  148.00),
                         SIMDE_FLOAT32_C(  820.00), SIMDE_FLOAT32_C(  265.00),
                         SIMDE_FLOAT32_C(  701.00), SIMDE_FLOAT32_C(  479.00),
                         SIMDE_FLOAT32_C(  432.00), SIMDE_FLOAT32_C(  276.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  -33.90), SIMDE_FLOAT32_C( -334.90),
                         SIMDE_FLOAT32_C( -399.58), SIMDE_FLOAT32_C(  824.28),
                         SIMDE_FLOAT32_C(  442.40), SIMDE_FLOAT32_C(  699.22),
                         SIMDE_FLOAT32_C( -143.02), SIMDE_FLOAT32_C( -465.79)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  -34.00), SIMDE_FLOAT32_C( -335.00),
                         SIMDE_FLOAT32_C( -400.00), SIMDE_FLOAT32_C(  824.00),
                         SIMDE_FLOAT32_C(  442.00), SIMDE_FLOAT32_C(  699.00),
                         SIMDE_FLOAT32_C( -143.00), SIMDE_FLOAT32_C( -466.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  -34.00), SIMDE_FLOAT32_C( -335.00),
                         SIMDE_FLOAT32_C( -400.00), SIMDE_FLOAT32_C(  824.00),
                         SIMDE_FLOAT32_C(  442.00), SIMDE_FLOAT32_C(  699.00),
                         SIMDE_FLOAT32_C( -144.00), SIMDE_FLOAT32_C( -466.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  -33.00), SIMDE_FLOAT32_C( -334.00),
                         SIMDE_FLOAT32_C( -399.00), SIMDE_FLOAT32_C(  825.00),
                         SIMDE_FLOAT32_C(  443.00), SIMDE_FLOAT32_C(  700.00),
                         SIMDE_FLOAT32_C( -143.00), SIMDE_FLOAT32_C( -465.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  -33.00), SIMDE_FLOAT32_C( -334.00),
                         SIMDE_FLOAT32_C( -399.00), SIMDE_FLOAT32_C(  824.00),
                         SIMDE_FLOAT32_C(  442.00), SIMDE_FLOAT32_C(  699.00),
                         SIMDE_FLOAT32_C( -143.00), SIMDE_FLOAT32_C( -465.00)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256 r;

    r = simde_mm256_round_ps(test_vec[i].a, SIMDE_MM_FROUND_TO_NEAREST_INT);
    simde_assert_m256_close(r, test_vec[i].nearest, 1);

    r = simde_mm256_round_ps(test_vec[i].a, SIMDE_MM_FROUND_TO_NEG_INF);
    simde_assert_m256_close(r, test_vec[i].neg_inf, 1);

    r = simde_mm256_round_ps(test_vec[i].a, SIMDE_MM_FROUND_TO_POS_INF);
    simde_assert_m256_close(r, test_vec[i].pos_inf, 1);

    r = simde_mm256_round_ps(test_vec[i].a, SIMDE_MM_FROUND_TO_ZERO);
    simde_assert_m256_close(r, test_vec[i].truncate, 1);
  }

  return 0;
}

static int
test_simde_mm256_round_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256d a;
    simde__m256d nearest;
    simde__m256d neg_inf;
    simde__m256d pos_inf;
    simde__m256d truncate;
  } test_vec[8] = {
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  312.12), SIMDE_FLOAT64_C(  818.22),
                         SIMDE_FLOAT64_C(   62.47), SIMDE_FLOAT64_C(  918.37)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  312.00), SIMDE_FLOAT64_C(  818.00),
                         SIMDE_FLOAT64_C(   62.00), SIMDE_FLOAT64_C(  918.00)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  312.00), SIMDE_FLOAT64_C(  818.00),
                         SIMDE_FLOAT64_C(   62.00), SIMDE_FLOAT64_C(  918.00)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  313.00), SIMDE_FLOAT64_C(  819.00),
                         SIMDE_FLOAT64_C(   63.00), SIMDE_FLOAT64_C(  919.00)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  312.00), SIMDE_FLOAT64_C(  818.00),
                         SIMDE_FLOAT64_C(   62.00), SIMDE_FLOAT64_C(  918.00)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  651.78), SIMDE_FLOAT64_C( -771.04),
                         SIMDE_FLOAT64_C(  544.48), SIMDE_FLOAT64_C(  333.27)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  652.00), SIMDE_FLOAT64_C( -771.00),
                         SIMDE_FLOAT64_C(  544.00), SIMDE_FLOAT64_C(  333.00)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  651.00), SIMDE_FLOAT64_C( -772.00),
                         SIMDE_FLOAT64_C(  544.00), SIMDE_FLOAT64_C(  333.00)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  652.00), SIMDE_FLOAT64_C( -771.00),
                         SIMDE_FLOAT64_C(  545.00), SIMDE_FLOAT64_C(  334.00)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  651.00), SIMDE_FLOAT64_C( -771.00),
                         SIMDE_FLOAT64_C(  544.00), SIMDE_FLOAT64_C(  333.00)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -661.62), SIMDE_FLOAT64_C(  921.42),
                         SIMDE_FLOAT64_C(   23.03), SIMDE_FLOAT64_C(  143.14)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -662.00), SIMDE_FLOAT64_C(  921.00),
                         SIMDE_FLOAT64_C(   23.00), SIMDE_FLOAT64_C(  143.00)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -662.00), SIMDE_FLOAT64_C(  921.00),
                         SIMDE_FLOAT64_C(   23.00), SIMDE_FLOAT64_C(  143.00)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -661.00), SIMDE_FLOAT64_C(  922.00),
                         SIMDE_FLOAT64_C(   24.00), SIMDE_FLOAT64_C(  144.00)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -661.00), SIMDE_FLOAT64_C(  921.00),
                         SIMDE_FLOAT64_C(   23.00), SIMDE_FLOAT64_C(  143.00)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  -70.00), SIMDE_FLOAT64_C( -189.29),
                         SIMDE_FLOAT64_C( -644.20), SIMDE_FLOAT64_C( -788.03)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  -70.00), SIMDE_FLOAT64_C( -189.00),
                         SIMDE_FLOAT64_C( -644.00), SIMDE_FLOAT64_C( -788.00)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  -70.00), SIMDE_FLOAT64_C( -190.00),
                         SIMDE_FLOAT64_C( -645.00), SIMDE_FLOAT64_C( -789.00)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  -70.00), SIMDE_FLOAT64_C( -189.00),
                         SIMDE_FLOAT64_C( -644.00), SIMDE_FLOAT64_C( -788.00)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  -70.00), SIMDE_FLOAT64_C( -189.00),
                         SIMDE_FLOAT64_C( -644.00), SIMDE_FLOAT64_C( -788.00)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -999.31), SIMDE_FLOAT64_C(  917.83),
                         SIMDE_FLOAT64_C( -173.85), SIMDE_FLOAT64_C( -622.25)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -999.00), SIMDE_FLOAT64_C(  918.00),
                         SIMDE_FLOAT64_C( -174.00), SIMDE_FLOAT64_C( -622.00)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(-1000.00), SIMDE_FLOAT64_C(  917.00),
                         SIMDE_FLOAT64_C( -174.00), SIMDE_FLOAT64_C( -623.00)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -999.00), SIMDE_FLOAT64_C(  918.00),
                         SIMDE_FLOAT64_C( -173.00), SIMDE_FLOAT64_C( -622.00)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -999.00), SIMDE_FLOAT64_C(  917.00),
                         SIMDE_FLOAT64_C( -173.00), SIMDE_FLOAT64_C( -622.00)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -905.08), SIMDE_FLOAT64_C(   96.40),
                         SIMDE_FLOAT64_C(  481.12), SIMDE_FLOAT64_C(  989.53)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -905.00), SIMDE_FLOAT64_C(   96.00),
                         SIMDE_FLOAT64_C(  481.00), SIMDE_FLOAT64_C(  990.00)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -906.00), SIMDE_FLOAT64_C(   96.00),
                         SIMDE_FLOAT64_C(  481.00), SIMDE_FLOAT64_C(  989.00)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -905.00), SIMDE_FLOAT64_C(   97.00),
                         SIMDE_FLOAT64_C(  482.00), SIMDE_FLOAT64_C(  990.00)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -905.00), SIMDE_FLOAT64_C(   96.00),
                         SIMDE_FLOAT64_C(  481.00), SIMDE_FLOAT64_C(  989.00)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  380.53), SIMDE_FLOAT64_C(  251.75),
                         SIMDE_FLOAT64_C( -843.75), SIMDE_FLOAT64_C( -890.74)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  381.00), SIMDE_FLOAT64_C(  252.00),
                         SIMDE_FLOAT64_C( -844.00), SIMDE_FLOAT64_C( -891.00)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  380.00), SIMDE_FLOAT64_C(  251.00),
                         SIMDE_FLOAT64_C( -844.00), SIMDE_FLOAT64_C( -891.00)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  381.00), SIMDE_FLOAT64_C(  252.00),
                         SIMDE_FLOAT64_C( -843.00), SIMDE_FLOAT64_C( -890.00)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  380.00), SIMDE_FLOAT64_C(  251.00),
                         SIMDE_FLOAT64_C( -843.00), SIMDE_FLOAT64_C( -890.00)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -382.52), SIMDE_FLOAT64_C( -590.14),
                         SIMDE_FLOAT64_C(    3.25), SIMDE_FLOAT64_C(  599.23)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -383.00), SIMDE_FLOAT64_C( -590.00),
                         SIMDE_FLOAT64_C(    3.00), SIMDE_FLOAT64_C(  599.00)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -383.00), SIMDE_FLOAT64_C( -591.00),
                         SIMDE_FLOAT64_C(    3.00), SIMDE_FLOAT64_C(  599.00)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -382.00), SIMDE_FLOAT64_C( -590.00),
                         SIMDE_FLOAT64_C(    4.00), SIMDE_FLOAT64_C(  600.00)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -382.00), SIMDE_FLOAT64_C( -590.00),
                         SIMDE_FLOAT64_C(    3.00), SIMDE_FLOAT64_C(  599.00)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256d r;

    r = simde_mm256_round_pd(test_vec[i].a, SIMDE_MM_FROUND_TO_NEAREST_INT);
    simde_assert_m256d_close(r, test_vec[i].nearest, 1);

    r = simde_mm256_round_pd(test_vec[i].a, SIMDE_MM_FROUND_TO_NEG_INF);
    simde_assert_m256d_close(r, test_vec[i].neg_inf, 1);

    r = simde_mm256_round_pd(test_vec[i].a, SIMDE_MM_FROUND_TO_POS_INF);
    simde_assert_m256d_close(r, test_vec[i].pos_inf, 1);

    r = simde_mm256_round_pd(test_vec[i].a, SIMDE_MM_FROUND_TO_ZERO);
    simde_assert_m256d_close(r, test_vec[i].truncate, 1);
  }

  return 0;
}

static int
test_simde_mm256_rsqrt_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde__m256 r;
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  376.34), SIMDE_FLOAT32_C(  781.09),
                         SIMDE_FLOAT32_C(  426.92), SIMDE_FLOAT32_C(  127.71),
                         SIMDE_FLOAT32_C(  308.06), SIMDE_FLOAT32_C(  169.26),
                         SIMDE_FLOAT32_C(  264.24), SIMDE_FLOAT32_C(   87.72)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(    0.05), SIMDE_FLOAT32_C(    0.04),
                         SIMDE_FLOAT32_C(    0.05), SIMDE_FLOAT32_C(    0.09),
                         SIMDE_FLOAT32_C(    0.06), SIMDE_FLOAT32_C(    0.08),
                         SIMDE_FLOAT32_C(    0.06), SIMDE_FLOAT32_C(    0.11)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  840.99), SIMDE_FLOAT32_C(  641.73),
                         SIMDE_FLOAT32_C(  425.88), SIMDE_FLOAT32_C(  794.85),
                         SIMDE_FLOAT32_C(  374.41), SIMDE_FLOAT32_C(  576.54),
                         SIMDE_FLOAT32_C(  840.83), SIMDE_FLOAT32_C(  886.63)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(    0.03), SIMDE_FLOAT32_C(    0.04),
                         SIMDE_FLOAT32_C(    0.05), SIMDE_FLOAT32_C(    0.04),
                         SIMDE_FLOAT32_C(    0.05), SIMDE_FLOAT32_C(    0.04),
                         SIMDE_FLOAT32_C(    0.03), SIMDE_FLOAT32_C(    0.03)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  314.85), SIMDE_FLOAT32_C(  671.43),
                         SIMDE_FLOAT32_C(  540.12), SIMDE_FLOAT32_C(  529.67),
                         SIMDE_FLOAT32_C(  498.35), SIMDE_FLOAT32_C(  224.61),
                         SIMDE_FLOAT32_C(  518.07), SIMDE_FLOAT32_C(  759.15)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(    0.06), SIMDE_FLOAT32_C(    0.04),
                         SIMDE_FLOAT32_C(    0.04), SIMDE_FLOAT32_C(    0.04),
                         SIMDE_FLOAT32_C(    0.04), SIMDE_FLOAT32_C(    0.07),
                         SIMDE_FLOAT32_C(    0.04), SIMDE_FLOAT32_C(    0.04)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  990.90), SIMDE_FLOAT32_C(  800.35),
                         SIMDE_FLOAT32_C(   95.53), SIMDE_FLOAT32_C(  852.74),
                         SIMDE_FLOAT32_C(  140.49), SIMDE_FLOAT32_C(  379.21),
                         SIMDE_FLOAT32_C(  930.80), SIMDE_FLOAT32_C(   70.01)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(    0.03), SIMDE_FLOAT32_C(    0.04),
                         SIMDE_FLOAT32_C(    0.10), SIMDE_FLOAT32_C(    0.03),
                         SIMDE_FLOAT32_C(    0.08), SIMDE_FLOAT32_C(    0.05),
                         SIMDE_FLOAT32_C(    0.03), SIMDE_FLOAT32_C(    0.12)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  251.14), SIMDE_FLOAT32_C(  612.05),
                         SIMDE_FLOAT32_C(   55.90), SIMDE_FLOAT32_C(  550.93),
                         SIMDE_FLOAT32_C(   71.18), SIMDE_FLOAT32_C(  968.41),
                         SIMDE_FLOAT32_C(   36.22), SIMDE_FLOAT32_C(  986.88)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(    0.06), SIMDE_FLOAT32_C(    0.04),
                         SIMDE_FLOAT32_C(    0.13), SIMDE_FLOAT32_C(    0.04),
                         SIMDE_FLOAT32_C(    0.12), SIMDE_FLOAT32_C(    0.03),
                         SIMDE_FLOAT32_C(    0.17), SIMDE_FLOAT32_C(    0.03)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  657.13), SIMDE_FLOAT32_C(  431.08),
                         SIMDE_FLOAT32_C(  717.98), SIMDE_FLOAT32_C(   27.05),
                         SIMDE_FLOAT32_C(  195.42), SIMDE_FLOAT32_C(  859.20),
                         SIMDE_FLOAT32_C(  157.91), SIMDE_FLOAT32_C(  578.79)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(    0.04), SIMDE_FLOAT32_C(    0.05),
                         SIMDE_FLOAT32_C(    0.04), SIMDE_FLOAT32_C(    0.19),
                         SIMDE_FLOAT32_C(    0.07), SIMDE_FLOAT32_C(    0.03),
                         SIMDE_FLOAT32_C(    0.08), SIMDE_FLOAT32_C(    0.04)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  738.73), SIMDE_FLOAT32_C(  198.62),
                         SIMDE_FLOAT32_C(  544.16), SIMDE_FLOAT32_C(  379.62),
                         SIMDE_FLOAT32_C(  782.12), SIMDE_FLOAT32_C(   91.05),
                         SIMDE_FLOAT32_C(  650.65), SIMDE_FLOAT32_C(  315.52)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(    0.04), SIMDE_FLOAT32_C(    0.07),
                         SIMDE_FLOAT32_C(    0.04), SIMDE_FLOAT32_C(    0.05),
                         SIMDE_FLOAT32_C(    0.04), SIMDE_FLOAT32_C(    0.10),
                         SIMDE_FLOAT32_C(    0.04), SIMDE_FLOAT32_C(    0.06)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  788.79), SIMDE_FLOAT32_C(  929.94),
                         SIMDE_FLOAT32_C(   55.55), SIMDE_FLOAT32_C(  137.30),
                         SIMDE_FLOAT32_C(  612.48), SIMDE_FLOAT32_C(    6.47),
                         SIMDE_FLOAT32_C(  828.22), SIMDE_FLOAT32_C(  971.40)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(    0.04), SIMDE_FLOAT32_C(    0.03),
                         SIMDE_FLOAT32_C(    0.13), SIMDE_FLOAT32_C(    0.09),
                         SIMDE_FLOAT32_C(    0.04), SIMDE_FLOAT32_C(    0.39),
                         SIMDE_FLOAT32_C(    0.03), SIMDE_FLOAT32_C(    0.03)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256 r = simde_mm256_rsqrt_ps(test_vec[i].a);
    simde_assert_m256_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_setr_epi8(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    int8_t a[32];
    simde__m256i r;
  } test_vec[8] = {
    { { INT8_C(  -4), INT8_C(  97), INT8_C( -85), INT8_C( -82),
        INT8_C(  42), INT8_C(  35), INT8_C(  11), INT8_C(  62),
        INT8_C( -47), INT8_C(  10), INT8_C(-127), INT8_C(  56),
        INT8_C(  44), INT8_C(  59), INT8_C( -13), INT8_C(  22),
        INT8_C( -14), INT8_C(  77), INT8_C( -49), INT8_C( -46),
        INT8_C(  53), INT8_C(-109), INT8_C(  30), INT8_C(  70),
        INT8_C(-110), INT8_C(  70), INT8_C(  95), INT8_C( -22),
        INT8_C(  89), INT8_C( -50), INT8_C( -28), INT8_C(-122) },
      simde_mm256_set_epi8(INT8_C(-122), INT8_C( -28), INT8_C( -50), INT8_C(  89),
                           INT8_C( -22), INT8_C(  95), INT8_C(  70), INT8_C(-110),
                           INT8_C(  70), INT8_C(  30), INT8_C(-109), INT8_C(  53),
                           INT8_C( -46), INT8_C( -49), INT8_C(  77), INT8_C( -14),
                           INT8_C(  22), INT8_C( -13), INT8_C(  59), INT8_C(  44),
                           INT8_C(  56), INT8_C(-127), INT8_C(  10), INT8_C( -47),
                           INT8_C(  62), INT8_C(  11), INT8_C(  35), INT8_C(  42),
                           INT8_C( -82), INT8_C( -85), INT8_C(  97), INT8_C(  -4)) },
    { { INT8_C( 127), INT8_C(  42), INT8_C( -70), INT8_C( -73),
        INT8_C( -56), INT8_C(-116), INT8_C( -43), INT8_C(  20),
        INT8_C(  -7), INT8_C(-120), INT8_C( -33), INT8_C(   3),
        INT8_C(  87), INT8_C(  58), INT8_C(  61), INT8_C( -32),
        INT8_C(  37), INT8_C(-114), INT8_C(  14), INT8_C(  80),
        INT8_C( -87), INT8_C(  43), INT8_C( -56), INT8_C(  51),
        INT8_C(  64), INT8_C(-107), INT8_C(  80), INT8_C(  59),
        INT8_C( -99), INT8_C( -49), INT8_C(  22), INT8_C( 109) },
      simde_mm256_set_epi8(INT8_C( 109), INT8_C(  22), INT8_C( -49), INT8_C( -99),
                           INT8_C(  59), INT8_C(  80), INT8_C(-107), INT8_C(  64),
                           INT8_C(  51), INT8_C( -56), INT8_C(  43), INT8_C( -87),
                           INT8_C(  80), INT8_C(  14), INT8_C(-114), INT8_C(  37),
                           INT8_C( -32), INT8_C(  61), INT8_C(  58), INT8_C(  87),
                           INT8_C(   3), INT8_C( -33), INT8_C(-120), INT8_C(  -7),
                           INT8_C(  20), INT8_C( -43), INT8_C(-116), INT8_C( -56),
                           INT8_C( -73), INT8_C( -70), INT8_C(  42), INT8_C( 127)) },
    { { INT8_C(  18), INT8_C( 106), INT8_C( -14), INT8_C( -63),
        INT8_C(  49), INT8_C(  26), INT8_C( 111), INT8_C( 121),
        INT8_C(-109), INT8_C(  19), INT8_C(  59), INT8_C( -42),
        INT8_C( -61), INT8_C(  44), INT8_C(  95), INT8_C(   0),
        INT8_C(  14), INT8_C(  62), INT8_C(  88), INT8_C(  98),
        INT8_C(  26), INT8_C(  58), INT8_C(  76), INT8_C( -18),
        INT8_C(-104), INT8_C(  -9), INT8_C( -67), INT8_C(  20),
        INT8_C( -43), INT8_C( -63), INT8_C(  30), INT8_C( 123) },
      simde_mm256_set_epi8(INT8_C( 123), INT8_C(  30), INT8_C( -63), INT8_C( -43),
                           INT8_C(  20), INT8_C( -67), INT8_C(  -9), INT8_C(-104),
                           INT8_C( -18), INT8_C(  76), INT8_C(  58), INT8_C(  26),
                           INT8_C(  98), INT8_C(  88), INT8_C(  62), INT8_C(  14),
                           INT8_C(   0), INT8_C(  95), INT8_C(  44), INT8_C( -61),
                           INT8_C( -42), INT8_C(  59), INT8_C(  19), INT8_C(-109),
                           INT8_C( 121), INT8_C( 111), INT8_C(  26), INT8_C(  49),
                           INT8_C( -63), INT8_C( -14), INT8_C( 106), INT8_C(  18)) },
    { { INT8_C(-122), INT8_C( 106), INT8_C( -25), INT8_C(  57),
        INT8_C(-110), INT8_C(  80), INT8_C(  35), INT8_C( -81),
        INT8_C(-111), INT8_C(   7), INT8_C(  90), INT8_C( -14),
        INT8_C(  64), INT8_C(  90), INT8_C( -51), INT8_C(  87),
        INT8_C(  49), INT8_C(  77), INT8_C( 127), INT8_C( -93),
        INT8_C( -57), INT8_C( 112), INT8_C( -74), INT8_C(  26),
        INT8_C(-113), INT8_C( -77), INT8_C( -29), INT8_C( -29),
        INT8_C( 117), INT8_C(  31), INT8_C(-100), INT8_C( -86) },
      simde_mm256_set_epi8(INT8_C( -86), INT8_C(-100), INT8_C(  31), INT8_C( 117),
                           INT8_C( -29), INT8_C( -29), INT8_C( -77), INT8_C(-113),
                           INT8_C(  26), INT8_C( -74), INT8_C( 112), INT8_C( -57),
                           INT8_C( -93), INT8_C( 127), INT8_C(  77), INT8_C(  49),
                           INT8_C(  87), INT8_C( -51), INT8_C(  90), INT8_C(  64),
                           INT8_C( -14), INT8_C(  90), INT8_C(   7), INT8_C(-111),
                           INT8_C( -81), INT8_C(  35), INT8_C(  80), INT8_C(-110),
                           INT8_C(  57), INT8_C( -25), INT8_C( 106), INT8_C(-122)) },
    { { INT8_C(  58), INT8_C(   6), INT8_C( 118), INT8_C(  36),
        INT8_C( 115), INT8_C( -15), INT8_C(  37), INT8_C( 119),
        INT8_C( -89), INT8_C( -10), INT8_C( -50), INT8_C(-119),
        INT8_C(   6), INT8_C( -77), INT8_C(  70), INT8_C( 117),
        INT8_C( -12), INT8_C( -22), INT8_C( 114), INT8_C( -39),
        INT8_C( 100), INT8_C( 122), INT8_C(-102), INT8_C( -55),
        INT8_C( 116), INT8_C( -23), INT8_C( -29), INT8_C( -57),
        INT8_C( -40), INT8_C(  41), INT8_C( 119), INT8_C( 121) },
      simde_mm256_set_epi8(INT8_C( 121), INT8_C( 119), INT8_C(  41), INT8_C( -40),
                           INT8_C( -57), INT8_C( -29), INT8_C( -23), INT8_C( 116),
                           INT8_C( -55), INT8_C(-102), INT8_C( 122), INT8_C( 100),
                           INT8_C( -39), INT8_C( 114), INT8_C( -22), INT8_C( -12),
                           INT8_C( 117), INT8_C(  70), INT8_C( -77), INT8_C(   6),
                           INT8_C(-119), INT8_C( -50), INT8_C( -10), INT8_C( -89),
                           INT8_C( 119), INT8_C(  37), INT8_C( -15), INT8_C( 115),
                           INT8_C(  36), INT8_C( 118), INT8_C(   6), INT8_C(  58)) },
    { { INT8_C(  47), INT8_C(  33), INT8_C( -28), INT8_C(-105),
        INT8_C(  -6), INT8_C( -69), INT8_C( 111), INT8_C( -17),
        INT8_C(  43), INT8_C(-123), INT8_C(  56), INT8_C( 119),
        INT8_C(  18), INT8_C(  -6), INT8_C( -96), INT8_C(-126),
        INT8_C( 113), INT8_C(-107), INT8_C(  83), INT8_C(  24),
        INT8_C( -84), INT8_C(-124), INT8_C( -72), INT8_C( -86),
        INT8_C(  80), INT8_C(  33), INT8_C(  -6), INT8_C( -30),
        INT8_C(  85), INT8_C( -74), INT8_C(  58), INT8_C( -88) },
      simde_mm256_set_epi8(INT8_C( -88), INT8_C(  58), INT8_C( -74), INT8_C(  85),
                           INT8_C( -30), INT8_C(  -6), INT8_C(  33), INT8_C(  80),
                           INT8_C( -86), INT8_C( -72), INT8_C(-124), INT8_C( -84),
                           INT8_C(  24), INT8_C(  83), INT8_C(-107), INT8_C( 113),
                           INT8_C(-126), INT8_C( -96), INT8_C(  -6), INT8_C(  18),
                           INT8_C( 119), INT8_C(  56), INT8_C(-123), INT8_C(  43),
                           INT8_C( -17), INT8_C( 111), INT8_C( -69), INT8_C(  -6),
                           INT8_C(-105), INT8_C( -28), INT8_C(  33), INT8_C(  47)) },
    { { INT8_C(  12), INT8_C(  93), INT8_C( -74), INT8_C( 117),
        INT8_C( -55), INT8_C( -56), INT8_C(   9), INT8_C( -48),
        INT8_C( 100), INT8_C(  -4), INT8_C( 101), INT8_C(  -1),
        INT8_C( -41), INT8_C( -98), INT8_C(-128), INT8_C( -73),
        INT8_C( -47), INT8_C(  35), INT8_C( -89), INT8_C( -36),
        INT8_C(-117), INT8_C( -95), INT8_C( -70), INT8_C( -94),
        INT8_C( -61), INT8_C( -88), INT8_C( -41), INT8_C( -56),
        INT8_C(  -5), INT8_C( -90), INT8_C( -61), INT8_C(  58) },
      simde_mm256_set_epi8(INT8_C(  58), INT8_C( -61), INT8_C( -90), INT8_C(  -5),
                           INT8_C( -56), INT8_C( -41), INT8_C( -88), INT8_C( -61),
                           INT8_C( -94), INT8_C( -70), INT8_C( -95), INT8_C(-117),
                           INT8_C( -36), INT8_C( -89), INT8_C(  35), INT8_C( -47),
                           INT8_C( -73), INT8_C(-128), INT8_C( -98), INT8_C( -41),
                           INT8_C(  -1), INT8_C( 101), INT8_C(  -4), INT8_C( 100),
                           INT8_C( -48), INT8_C(   9), INT8_C( -56), INT8_C( -55),
                           INT8_C( 117), INT8_C( -74), INT8_C(  93), INT8_C(  12)) },
    { { INT8_C( -62), INT8_C( 106), INT8_C(  33), INT8_C( -86),
        INT8_C(  50), INT8_C(  51), INT8_C(   1), INT8_C(  83),
        INT8_C( -24), INT8_C(  24), INT8_C( 119), INT8_C( -35),
        INT8_C(  55), INT8_C( 109), INT8_C( -56), INT8_C( -46),
        INT8_C( -64), INT8_C( 124), INT8_C(  -1), INT8_C( -71),
        INT8_C(  27), INT8_C( 108), INT8_C(-113), INT8_C( -86),
        INT8_C(  94), INT8_C(  46), INT8_C( -59), INT8_C( -32),
        INT8_C( -63), INT8_C( -39), INT8_C( -52), INT8_C( 101) },
      simde_mm256_set_epi8(INT8_C( 101), INT8_C( -52), INT8_C( -39), INT8_C( -63),
                           INT8_C( -32), INT8_C( -59), INT8_C(  46), INT8_C(  94),
                           INT8_C( -86), INT8_C(-113), INT8_C( 108), INT8_C(  27),
                           INT8_C( -71), INT8_C(  -1), INT8_C( 124), INT8_C( -64),
                           INT8_C( -46), INT8_C( -56), INT8_C( 109), INT8_C(  55),
                           INT8_C( -35), INT8_C( 119), INT8_C(  24), INT8_C( -24),
                           INT8_C(  83), INT8_C(   1), INT8_C(  51), INT8_C(  50),
                           INT8_C( -86), INT8_C(  33), INT8_C( 106), INT8_C( -62)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256i r = simde_mm256_setr_epi8(
        test_vec[i].a[ 0], test_vec[i].a[ 1], test_vec[i].a[ 2], test_vec[i].a[ 3],
        test_vec[i].a[ 4], test_vec[i].a[ 5], test_vec[i].a[ 6], test_vec[i].a[ 7],
        test_vec[i].a[ 8], test_vec[i].a[ 9], test_vec[i].a[10], test_vec[i].a[11],
        test_vec[i].a[12], test_vec[i].a[13], test_vec[i].a[14], test_vec[i].a[15],
        test_vec[i].a[16], test_vec[i].a[17], test_vec[i].a[18], test_vec[i].a[19],
        test_vec[i].a[20], test_vec[i].a[21], test_vec[i].a[22], test_vec[i].a[23],
        test_vec[i].a[24], test_vec[i].a[25], test_vec[i].a[26], test_vec[i].a[27],
        test_vec[i].a[28], test_vec[i].a[29], test_vec[i].a[30], test_vec[i].a[31]);
    simde_assert_m256i_i8(r, ==, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_setr_epi16(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    int16_t a[16];
    simde__m256i r;
  } test_vec[8] = {
    { { INT16_C(-20822), INT16_C(  4719), INT16_C( 13700), INT16_C( 26280),
        INT16_C( -8393), INT16_C( 13684), INT16_C(-27950), INT16_C(-18508),
        INT16_C( 32037), INT16_C(-24299), INT16_C(-21546), INT16_C(  1669),
        INT16_C(   957), INT16_C( 10001), INT16_C(-15549), INT16_C(-30917) },
      simde_mm256_set_epi16(INT16_C(-30917), INT16_C(-15549), INT16_C( 10001), INT16_C(   957),
                            INT16_C(  1669), INT16_C(-21546), INT16_C(-24299), INT16_C( 32037),
                            INT16_C(-18508), INT16_C(-27950), INT16_C( 13684), INT16_C( -8393),
                            INT16_C( 26280), INT16_C( 13700), INT16_C(  4719), INT16_C(-20822)) },
    { { INT16_C(-21993), INT16_C(-20656), INT16_C( 29326), INT16_C( 28940),
        INT16_C(-31152), INT16_C(-19248), INT16_C(-26052), INT16_C(-19065),
        INT16_C(-11006), INT16_C( -7550), INT16_C( 14017), INT16_C( 19342),
        INT16_C(-32339), INT16_C(  3580), INT16_C( 28313), INT16_C(-13882) },
      simde_mm256_set_epi16(INT16_C(-13882), INT16_C( 28313), INT16_C(  3580), INT16_C(-32339),
                            INT16_C( 19342), INT16_C( 14017), INT16_C( -7550), INT16_C(-11006),
                            INT16_C(-19065), INT16_C(-26052), INT16_C(-19248), INT16_C(-31152),
                            INT16_C( 28940), INT16_C( 29326), INT16_C(-20656), INT16_C(-21993)) },
    { { INT16_C( 10866), INT16_C(  9786), INT16_C(  3944), INT16_C(-19272),
        INT16_C(-30670), INT16_C( 14551), INT16_C(  8410), INT16_C( -6777),
        INT16_C(-16568), INT16_C(-18107), INT16_C(-20605), INT16_C( 22309),
        INT16_C(-22975), INT16_C( 30575), INT16_C( -4285), INT16_C( 10884) },
      simde_mm256_set_epi16(INT16_C( 10884), INT16_C( -4285), INT16_C( 30575), INT16_C(-22975),
                            INT16_C( 22309), INT16_C(-20605), INT16_C(-18107), INT16_C(-16568),
                            INT16_C( -6777), INT16_C(  8410), INT16_C( 14551), INT16_C(-30670),
                            INT16_C(-19272), INT16_C(  3944), INT16_C(  9786), INT16_C( 10866)) },
    { { INT16_C(  3382), INT16_C(-18461), INT16_C( 23033), INT16_C(-12757),
        INT16_C(  -812), INT16_C( 15509), INT16_C(-23059), INT16_C(  2475),
        INT16_C(-26254), INT16_C(-14528), INT16_C(-12769), INT16_C( -6867),
        INT16_C(-17924), INT16_C( 22705), INT16_C(-26548), INT16_C(-32025) },
      simde_mm256_set_epi16(INT16_C(-32025), INT16_C(-26548), INT16_C( 22705), INT16_C(-17924),
                            INT16_C( -6867), INT16_C(-12769), INT16_C(-14528), INT16_C(-26254),
                            INT16_C(  2475), INT16_C(-23059), INT16_C( 15509), INT16_C(  -812),
                            INT16_C(-12757), INT16_C( 23033), INT16_C(-18461), INT16_C(  3382)) },
    { { INT16_C(-16227), INT16_C( 12780), INT16_C( 24958), INT16_C( 10168),
        INT16_C(-24922), INT16_C(-26733), INT16_C(  3884), INT16_C(  8130),
        INT16_C(  -363), INT16_C( -2828), INT16_C( -7524), INT16_C( 28685),
        INT16_C( -7215), INT16_C(  7765), INT16_C( 25104), INT16_C(-23004) },
      simde_mm256_set_epi16(INT16_C(-23004), INT16_C( 25104), INT16_C(  7765), INT16_C( -7215),
                            INT16_C( 28685), INT16_C( -7524), INT16_C( -2828), INT16_C(  -363),
                            INT16_C(  8130), INT16_C(  3884), INT16_C(-26733), INT16_C(-24922),
                            INT16_C( 10168), INT16_C( 24958), INT16_C( 12780), INT16_C(-16227)) },
    { { INT16_C(-23604), INT16_C(-17002), INT16_C( -3804), INT16_C(-31486),
        INT16_C(-31316), INT16_C(  8603), INT16_C( 13936), INT16_C(-30323),
        INT16_C( 17911), INT16_C(-25284), INT16_C( 11323), INT16_C( -3450),
        INT16_C( -2379), INT16_C( -4748), INT16_C( -1701), INT16_C(-14575) },
      simde_mm256_set_epi16(INT16_C(-14575), INT16_C( -1701), INT16_C( -4748), INT16_C( -2379),
                            INT16_C( -3450), INT16_C( 11323), INT16_C(-25284), INT16_C( 17911),
                            INT16_C(-30323), INT16_C( 13936), INT16_C(  8603), INT16_C(-31316),
                            INT16_C(-31486), INT16_C( -3804), INT16_C(-17002), INT16_C(-23604)) },
    { { INT16_C(  2504), INT16_C(  3886), INT16_C( -8527), INT16_C( 15137),
        INT16_C( -2956), INT16_C(  3741), INT16_C(-30624), INT16_C(-26724),
        INT16_C(  6830), INT16_C( 31838), INT16_C( 31654), INT16_C(-13744),
        INT16_C( -1202), INT16_C( 10750), INT16_C(  5862), INT16_C(-29772) },
      simde_mm256_set_epi16(INT16_C(-29772), INT16_C(  5862), INT16_C( 10750), INT16_C( -1202),
                            INT16_C(-13744), INT16_C( 31654), INT16_C( 31838), INT16_C(  6830),
                            INT16_C(-26724), INT16_C(-30624), INT16_C(  3741), INT16_C( -2956),
                            INT16_C( 15137), INT16_C( -8527), INT16_C(  3886), INT16_C(  2504)) },
    { { INT16_C(  9166), INT16_C( 24566), INT16_C(-20956), INT16_C( 25846),
        INT16_C( -9797), INT16_C(-30693), INT16_C( 17134), INT16_C(-20898),
        INT16_C(-11673), INT16_C( -1066), INT16_C( 24186), INT16_C( 15486),
        INT16_C( -6894), INT16_C( -1878), INT16_C(-19558), INT16_C( 25792) },
      simde_mm256_set_epi16(INT16_C( 25792), INT16_C(-19558), INT16_C( -1878), INT16_C( -6894),
                            INT16_C( 15486), INT16_C( 24186), INT16_C( -1066), INT16_C(-11673),
                            INT16_C(-20898), INT16_C( 17134), INT16_C(-30693), INT16_C( -9797),
                            INT16_C( 25846), INT16_C(-20956), INT16_C( 24566), INT16_C(  9166)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256i r = simde_mm256_setr_epi16(
        test_vec[i].a[ 0], test_vec[i].a[ 1], test_vec[i].a[ 2], test_vec[i].a[ 3],
        test_vec[i].a[ 4], test_vec[i].a[ 5], test_vec[i].a[ 6], test_vec[i].a[ 7],
        test_vec[i].a[ 8], test_vec[i].a[ 9], test_vec[i].a[10], test_vec[i].a[11],
        test_vec[i].a[12], test_vec[i].a[13], test_vec[i].a[14], test_vec[i].a[15]);
    simde_assert_m256i_i16(r, ==, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_setr_epi32(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    int32_t a[8];
    simde__m256i r;
  } test_vec[8] = {
    { { INT32_C(  932849909), INT32_C( -456580424), INT32_C(-1072840342), INT32_C(  187025165),
        INT32_C(  -54386372), INT32_C(-1527557226), INT32_C(  842765893), INT32_C(-1371730077) },
      simde_mm256_set_epi32(INT32_C(-1371730077), INT32_C(  842765893), INT32_C(-1527557226), INT32_C(  -54386372),
                            INT32_C(  187025165), INT32_C(-1072840342), INT32_C( -456580424), INT32_C(  932849909)) },
    { { INT32_C( 1893614455), INT32_C( 1294871072), INT32_C( 1552259151), INT32_C(  946045936),
        INT32_C(   -7047247), INT32_C(  177282155), INT32_C( -581856304), INT32_C(  673832922) },
      simde_mm256_set_epi32(INT32_C(  673832922), INT32_C( -581856304), INT32_C(  177282155), INT32_C(   -7047247),
                            INT32_C(  946045936), INT32_C( 1552259151), INT32_C( 1294871072), INT32_C( 1893614455)) },
    { { INT32_C(-1610219922), INT32_C(  -94583836), INT32_C( -424768577), INT32_C( -880788885),
        INT32_C(  602433069), INT32_C( -274391227), INT32_C( -328110003), INT32_C(  499660384) },
      simde_mm256_set_epi32(INT32_C(  499660384), INT32_C( -328110003), INT32_C( -274391227), INT32_C(  602433069),
                            INT32_C( -880788885), INT32_C( -424768577), INT32_C(  -94583836), INT32_C(-1610219922)) },
    { { INT32_C( 1302188877), INT32_C( -801832432), INT32_C( 1655080701), INT32_C(-1605614771),
        INT32_C( 1846614190), INT32_C( 1570676076), INT32_C(  -68393412), INT32_C( 1031272058) },
      simde_mm256_set_epi32(INT32_C( 1031272058), INT32_C(  -68393412), INT32_C( 1570676076), INT32_C( 1846614190),
                            INT32_C(-1605614771), INT32_C( 1655080701), INT32_C( -801832432), INT32_C( 1302188877)) },
    { { INT32_C(   25897078), INT32_C(-1241591361), INT32_C( -592602700), INT32_C( -348865550),
        INT32_C( 1694164628), INT32_C( -856795223), INT32_C( -997978026), INT32_C( 1280081679) },
      simde_mm256_set_epi32(INT32_C( 1280081679), INT32_C( -997978026), INT32_C( -856795223), INT32_C( 1694164628),
                            INT32_C( -348865550), INT32_C( -592602700), INT32_C(-1241591361), INT32_C(   25897078)) },
    { { INT32_C(  -87546396), INT32_C( 1852814507), INT32_C( -373825552), INT32_C( 1866208106),
        INT32_C(  910270627), INT32_C( 1550266609), INT32_C( 1485123950), INT32_C( -498285483) },
      simde_mm256_set_epi32(INT32_C( -498285483), INT32_C( 1485123950), INT32_C( 1550266609), INT32_C(  910270627),
                            INT32_C( 1866208106), INT32_C( -373825552), INT32_C( 1852814507), INT32_C(  -87546396)) },
    { { INT32_C( -786490570), INT32_C( -486650057), INT32_C(-1901610760), INT32_C(-1385527729),
        INT32_C( 1837621475), INT32_C(  362332872), INT32_C( 1409187239), INT32_C( -294514311) },
      simde_mm256_set_epi32(INT32_C( -294514311), INT32_C( 1409187239), INT32_C(  362332872), INT32_C( 1837621475),
                            INT32_C(-1385527729), INT32_C(-1901610760), INT32_C( -486650057), INT32_C( -786490570)) },
    { { INT32_C(-2037006285), INT32_C(-1237137601), INT32_C(-1490902854), INT32_C(-1337182966),
        INT32_C( -732587886), INT32_C(-1907285545), INT32_C(  165118547), INT32_C(-1097315632) },
      simde_mm256_set_epi32(INT32_C(-1097315632), INT32_C(  165118547), INT32_C(-1907285545), INT32_C( -732587886),
                            INT32_C(-1337182966), INT32_C(-1490902854), INT32_C(-1237137601), INT32_C(-2037006285)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256i r = simde_mm256_setr_epi32(
        test_vec[i].a[ 0], test_vec[i].a[ 1], test_vec[i].a[ 2], test_vec[i].a[ 3],
        test_vec[i].a[ 4], test_vec[i].a[ 5], test_vec[i].a[ 6], test_vec[i].a[ 7]);
    simde_assert_m256i_i32(r, ==, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_setr_epi64x(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    int64_t a[4];
    simde__m256i r;
  } test_vec[8] = {
    { { INT64_C( 3013620110861784505), INT64_C(-9156069624919168580),
        INT64_C( 1343723656449999612), INT64_C(-3830101585267880776) },
      simde_mm256_set_epi64x(INT64_C(-3830101585267880776), INT64_C( 1343723656449999612),
                             INT64_C(-9156069624919168580), INT64_C( 3013620110861784505)) },
    { { INT64_C( -470898397325052178), INT64_C(-1684256644586675245),
        INT64_C(-8451403171467723697), INT64_C( 5467852576317781229) },
      simde_mm256_set_epi64x(INT64_C( 5467852576317781229), INT64_C(-8451403171467723697),
                             INT64_C(-1684256644586675245), INT64_C( -470898397325052178)) },
    { { INT64_C(-8481091302015892038), INT64_C(-5840489628108018840),
        INT64_C( 8103807582752765524), INT64_C( 9048592296921391543) },
      simde_mm256_set_epi64x(INT64_C( 9048592296921391543), INT64_C( 8103807582752765524),
                             INT64_C(-5840489628108018840), INT64_C(-8481091302015892038)) },
    { { INT64_C( 1422449841795305675), INT64_C( 2887994309822364165),
        INT64_C( 7807032920035636816), INT64_C(-3076736950419346689) },
      simde_mm256_set_epi64x(INT64_C(-3076736950419346689), INT64_C( 7807032920035636816),
                             INT64_C( 2887994309822364165), INT64_C( 1422449841795305675)) },
    { { INT64_C( 3070310353568185156), INT64_C(-8852504885484410210),
        INT64_C( 8605078790751557478), INT64_C(-3993303917440615301) },
      simde_mm256_set_epi64x(INT64_C(-3993303917440615301), INT64_C( 8605078790751557478),
                             INT64_C(-8852504885484410210), INT64_C( 3070310353568185156)) },
    { { INT64_C( 8628903781070638905), INT64_C( 7741876512722404057),
        INT64_C(-7211506260596057593), INT64_C( 4414889885954661792) },
      simde_mm256_set_epi64x(INT64_C( 4414889885954661792), INT64_C(-7211506260596057593),
                             INT64_C( 7741876512722404057), INT64_C( 8628903781070638905)) },
    { { INT64_C( 5522184073273144975), INT64_C(-7081867462548166489),
        INT64_C( 9175542926859973104), INT64_C( 1769179143810464101) },
      simde_mm256_set_epi64x(INT64_C( 1769179143810464101), INT64_C( 9175542926859973104),
                             INT64_C(-7081867462548166489), INT64_C( 5522184073273144975)) },
    { { INT64_C(-8500631716292798858), INT64_C( 4882720816332117442),
        INT64_C(  328133580565148934), INT64_C( 3537144852497440140) },
      simde_mm256_set_epi64x(INT64_C( 3537144852497440140), INT64_C(  328133580565148934),
                             INT64_C( 4882720816332117442), INT64_C(-8500631716292798858)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256i r = simde_mm256_setr_epi64x(
        test_vec[i].a[ 0], test_vec[i].a[ 1], test_vec[i].a[ 2], test_vec[i].a[ 3]);
    simde_assert_m256i_i64(r, ==, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_setr_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde_float32 a[8];
    simde__m256 r;
  } test_vec[8] = {
    { { SIMDE_FLOAT32_C(  -98.84), SIMDE_FLOAT32_C(  882.16),
        SIMDE_FLOAT32_C(  306.69), SIMDE_FLOAT32_C( -539.67),
        SIMDE_FLOAT32_C( -947.14), SIMDE_FLOAT32_C( -871.17),
        SIMDE_FLOAT32_C(  -26.40), SIMDE_FLOAT32_C( -202.75) },
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -202.75), SIMDE_FLOAT32_C(  -26.40),
                         SIMDE_FLOAT32_C( -871.17), SIMDE_FLOAT32_C( -947.14),
                         SIMDE_FLOAT32_C( -539.67), SIMDE_FLOAT32_C(  306.69),
                         SIMDE_FLOAT32_C(  882.16), SIMDE_FLOAT32_C(  -98.84)) },
    { { SIMDE_FLOAT32_C(  499.74), SIMDE_FLOAT32_C( -810.04),
        SIMDE_FLOAT32_C(  499.26), SIMDE_FLOAT32_C( -519.32),
        SIMDE_FLOAT32_C(  852.97), SIMDE_FLOAT32_C(  119.58),
        SIMDE_FLOAT32_C(   88.58), SIMDE_FLOAT32_C(  364.48) },
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  364.48), SIMDE_FLOAT32_C(   88.58),
                         SIMDE_FLOAT32_C(  119.58), SIMDE_FLOAT32_C(  852.97),
                         SIMDE_FLOAT32_C( -519.32), SIMDE_FLOAT32_C(  499.26),
                         SIMDE_FLOAT32_C( -810.04), SIMDE_FLOAT32_C(  499.74)) },
    { { SIMDE_FLOAT32_C(  127.60), SIMDE_FLOAT32_C(  904.28),
        SIMDE_FLOAT32_C(  -45.75), SIMDE_FLOAT32_C( -900.72),
        SIMDE_FLOAT32_C(  277.91), SIMDE_FLOAT32_C( -221.10),
        SIMDE_FLOAT32_C(  935.26), SIMDE_FLOAT32_C( -125.20) },
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -125.20), SIMDE_FLOAT32_C(  935.26),
                         SIMDE_FLOAT32_C( -221.10), SIMDE_FLOAT32_C(  277.91),
                         SIMDE_FLOAT32_C( -900.72), SIMDE_FLOAT32_C(  -45.75),
                         SIMDE_FLOAT32_C(  904.28), SIMDE_FLOAT32_C(  127.60)) },
    { { SIMDE_FLOAT32_C( -252.48), SIMDE_FLOAT32_C( -889.53),
        SIMDE_FLOAT32_C(  628.46), SIMDE_FLOAT32_C(  326.01),
        SIMDE_FLOAT32_C(  211.05), SIMDE_FLOAT32_C( -703.39),
        SIMDE_FLOAT32_C( -581.63), SIMDE_FLOAT32_C( -367.12) },
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -367.12), SIMDE_FLOAT32_C( -581.63),
                         SIMDE_FLOAT32_C( -703.39), SIMDE_FLOAT32_C(  211.05),
                         SIMDE_FLOAT32_C(  326.01), SIMDE_FLOAT32_C(  628.46),
                         SIMDE_FLOAT32_C( -889.53), SIMDE_FLOAT32_C( -252.48)) },
    { { SIMDE_FLOAT32_C( -852.61), SIMDE_FLOAT32_C(  168.93),
        SIMDE_FLOAT32_C(  -51.67), SIMDE_FLOAT32_C( -699.78),
        SIMDE_FLOAT32_C( -215.36), SIMDE_FLOAT32_C(  505.82),
        SIMDE_FLOAT32_C(  -83.94), SIMDE_FLOAT32_C( -117.98) },
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -117.98), SIMDE_FLOAT32_C(  -83.94),
                         SIMDE_FLOAT32_C(  505.82), SIMDE_FLOAT32_C( -215.36),
                         SIMDE_FLOAT32_C( -699.78), SIMDE_FLOAT32_C(  -51.67),
                         SIMDE_FLOAT32_C(  168.93), SIMDE_FLOAT32_C( -852.61)) },
    { { SIMDE_FLOAT32_C(  422.80), SIMDE_FLOAT32_C(  684.40),
        SIMDE_FLOAT32_C(  497.91), SIMDE_FLOAT32_C( -511.24),
        SIMDE_FLOAT32_C(  504.14), SIMDE_FLOAT32_C(  871.91),
        SIMDE_FLOAT32_C(  175.65), SIMDE_FLOAT32_C( -754.38) },
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -754.38), SIMDE_FLOAT32_C(  175.65),
                         SIMDE_FLOAT32_C(  871.91), SIMDE_FLOAT32_C(  504.14),
                         SIMDE_FLOAT32_C( -511.24), SIMDE_FLOAT32_C(  497.91),
                         SIMDE_FLOAT32_C(  684.40), SIMDE_FLOAT32_C(  422.80)) },
    { { SIMDE_FLOAT32_C( -712.98), SIMDE_FLOAT32_C(   92.05),
        SIMDE_FLOAT32_C( -155.74), SIMDE_FLOAT32_C(  933.89),
        SIMDE_FLOAT32_C(  385.65), SIMDE_FLOAT32_C( -406.91),
        SIMDE_FLOAT32_C( -999.59), SIMDE_FLOAT32_C( -851.48) },
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -851.48), SIMDE_FLOAT32_C( -999.59),
                         SIMDE_FLOAT32_C( -406.91), SIMDE_FLOAT32_C(  385.65),
                         SIMDE_FLOAT32_C(  933.89), SIMDE_FLOAT32_C( -155.74),
                         SIMDE_FLOAT32_C(   92.05), SIMDE_FLOAT32_C( -712.98)) },
    { { SIMDE_FLOAT32_C( -182.06), SIMDE_FLOAT32_C( -447.19),
        SIMDE_FLOAT32_C( -170.21), SIMDE_FLOAT32_C( -504.91),
        SIMDE_FLOAT32_C(  448.84), SIMDE_FLOAT32_C( -232.24),
        SIMDE_FLOAT32_C( -688.18), SIMDE_FLOAT32_C( -405.72) },
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -405.72), SIMDE_FLOAT32_C( -688.18),
                         SIMDE_FLOAT32_C( -232.24), SIMDE_FLOAT32_C(  448.84),
                         SIMDE_FLOAT32_C( -504.91), SIMDE_FLOAT32_C( -170.21),
                         SIMDE_FLOAT32_C( -447.19), SIMDE_FLOAT32_C( -182.06)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256 r = simde_mm256_setr_ps(
        test_vec[i].a[ 0], test_vec[i].a[ 1], test_vec[i].a[ 2], test_vec[i].a[ 3],
        test_vec[i].a[ 4], test_vec[i].a[ 5], test_vec[i].a[ 6], test_vec[i].a[ 7]);
    simde_assert_m256_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_setr_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde_float64 a[4];
    simde__m256d r;
  } test_vec[8] = {
    { { SIMDE_FLOAT64_C(  648.06), SIMDE_FLOAT64_C( -427.64),
        SIMDE_FLOAT64_C(  870.51), SIMDE_FLOAT64_C( -400.08) },
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -400.08), SIMDE_FLOAT64_C(  870.51),
                         SIMDE_FLOAT64_C( -427.64), SIMDE_FLOAT64_C(  648.06)) },
    { { SIMDE_FLOAT64_C(  631.12), SIMDE_FLOAT64_C(  452.84),
        SIMDE_FLOAT64_C(  521.67), SIMDE_FLOAT64_C(  516.74) },
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  516.74), SIMDE_FLOAT64_C(  521.67),
                         SIMDE_FLOAT64_C(  452.84), SIMDE_FLOAT64_C(  631.12)) },
    { { SIMDE_FLOAT64_C( -967.92), SIMDE_FLOAT64_C(   20.70),
        SIMDE_FLOAT64_C(  301.61), SIMDE_FLOAT64_C( -721.26) },
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -721.26), SIMDE_FLOAT64_C(  301.61),
                         SIMDE_FLOAT64_C(   20.70), SIMDE_FLOAT64_C( -967.92)) },
    { { SIMDE_FLOAT64_C(  324.87), SIMDE_FLOAT64_C( -688.66),
        SIMDE_FLOAT64_C( -942.28), SIMDE_FLOAT64_C( -476.77) },
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -476.77), SIMDE_FLOAT64_C( -942.28),
                         SIMDE_FLOAT64_C( -688.66), SIMDE_FLOAT64_C(  324.87)) },
    { { SIMDE_FLOAT64_C( -951.83), SIMDE_FLOAT64_C(   77.38),
        SIMDE_FLOAT64_C(   95.18), SIMDE_FLOAT64_C( -682.02) },
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -682.02), SIMDE_FLOAT64_C(   95.18),
                         SIMDE_FLOAT64_C(   77.38), SIMDE_FLOAT64_C( -951.83)) },
    { { SIMDE_FLOAT64_C( -650.77), SIMDE_FLOAT64_C( -285.31),
        SIMDE_FLOAT64_C(  662.58), SIMDE_FLOAT64_C(  693.61) },
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  693.61), SIMDE_FLOAT64_C(  662.58),
                         SIMDE_FLOAT64_C( -285.31), SIMDE_FLOAT64_C( -650.77)) },
    { { SIMDE_FLOAT64_C(  209.43), SIMDE_FLOAT64_C(  188.93),
        SIMDE_FLOAT64_C( -264.78), SIMDE_FLOAT64_C(  938.62) },
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  938.62), SIMDE_FLOAT64_C( -264.78),
                         SIMDE_FLOAT64_C(  188.93), SIMDE_FLOAT64_C(  209.43)) },
    { { SIMDE_FLOAT64_C(  887.57), SIMDE_FLOAT64_C(  787.01),
        SIMDE_FLOAT64_C( -658.13), SIMDE_FLOAT64_C(  241.09) },
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  241.09), SIMDE_FLOAT64_C( -658.13),
                         SIMDE_FLOAT64_C(  787.01), SIMDE_FLOAT64_C(  887.57)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256d r = simde_mm256_setr_pd(
        test_vec[i].a[ 0], test_vec[i].a[ 1], test_vec[i].a[ 2], test_vec[i].a[ 3]);
    simde_assert_m256d_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_setr_m128(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m128 a;
    simde__m128 b;
    simde__m256 r;
  } test_vec[8] = {
    { simde_mm_set_ps(SIMDE_FLOAT32_C( -682.25), SIMDE_FLOAT32_C( -899.79), SIMDE_FLOAT32_C( -478.94), SIMDE_FLOAT32_C(  364.00)),
      simde_mm_set_ps(SIMDE_FLOAT32_C( -650.11), SIMDE_FLOAT32_C( -192.16), SIMDE_FLOAT32_C(  808.30), SIMDE_FLOAT32_C(  519.14)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -650.11), SIMDE_FLOAT32_C( -192.16),
                         SIMDE_FLOAT32_C(  808.30), SIMDE_FLOAT32_C(  519.14),
                         SIMDE_FLOAT32_C( -682.25), SIMDE_FLOAT32_C( -899.79),
                         SIMDE_FLOAT32_C( -478.94), SIMDE_FLOAT32_C(  364.00)) },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(   16.48), SIMDE_FLOAT32_C(  517.23), SIMDE_FLOAT32_C( -546.20), SIMDE_FLOAT32_C(  -61.05)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  715.06), SIMDE_FLOAT32_C( -476.50), SIMDE_FLOAT32_C( -479.17), SIMDE_FLOAT32_C( -869.09)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  715.06), SIMDE_FLOAT32_C( -476.50),
                         SIMDE_FLOAT32_C( -479.17), SIMDE_FLOAT32_C( -869.09),
                         SIMDE_FLOAT32_C(   16.48), SIMDE_FLOAT32_C(  517.23),
                         SIMDE_FLOAT32_C( -546.20), SIMDE_FLOAT32_C(  -61.05)) },
    { simde_mm_set_ps(SIMDE_FLOAT32_C( -779.37), SIMDE_FLOAT32_C(   30.06), SIMDE_FLOAT32_C( -690.77), SIMDE_FLOAT32_C(  921.96)),
      simde_mm_set_ps(SIMDE_FLOAT32_C( -173.53), SIMDE_FLOAT32_C(  887.42), SIMDE_FLOAT32_C(  309.36), SIMDE_FLOAT32_C(  929.48)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -173.53), SIMDE_FLOAT32_C(  887.42),
                         SIMDE_FLOAT32_C(  309.36), SIMDE_FLOAT32_C(  929.48),
                         SIMDE_FLOAT32_C( -779.37), SIMDE_FLOAT32_C(   30.06),
                         SIMDE_FLOAT32_C( -690.77), SIMDE_FLOAT32_C(  921.96)) },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(  766.53), SIMDE_FLOAT32_C( -675.92), SIMDE_FLOAT32_C( -948.96), SIMDE_FLOAT32_C(  521.94)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  725.37), SIMDE_FLOAT32_C( -802.67), SIMDE_FLOAT32_C( -800.62), SIMDE_FLOAT32_C(  419.68)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  725.37), SIMDE_FLOAT32_C( -802.67),
                         SIMDE_FLOAT32_C( -800.62), SIMDE_FLOAT32_C(  419.68),
                         SIMDE_FLOAT32_C(  766.53), SIMDE_FLOAT32_C( -675.92),
                         SIMDE_FLOAT32_C( -948.96), SIMDE_FLOAT32_C(  521.94)) },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(  133.15), SIMDE_FLOAT32_C(  853.30), SIMDE_FLOAT32_C(  295.19), SIMDE_FLOAT32_C( -233.49)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  973.48), SIMDE_FLOAT32_C(  235.18), SIMDE_FLOAT32_C(  111.09), SIMDE_FLOAT32_C( -515.37)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  973.48), SIMDE_FLOAT32_C(  235.18),
                         SIMDE_FLOAT32_C(  111.09), SIMDE_FLOAT32_C( -515.37),
                         SIMDE_FLOAT32_C(  133.15), SIMDE_FLOAT32_C(  853.30),
                         SIMDE_FLOAT32_C(  295.19), SIMDE_FLOAT32_C( -233.49)) },
    { simde_mm_set_ps(SIMDE_FLOAT32_C( -131.35), SIMDE_FLOAT32_C(  737.21), SIMDE_FLOAT32_C(  816.16), SIMDE_FLOAT32_C(  442.16)),
      simde_mm_set_ps(SIMDE_FLOAT32_C( -614.82), SIMDE_FLOAT32_C( -170.44), SIMDE_FLOAT32_C(  851.94), SIMDE_FLOAT32_C(  235.41)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -614.82), SIMDE_FLOAT32_C( -170.44),
                         SIMDE_FLOAT32_C(  851.94), SIMDE_FLOAT32_C(  235.41),
                         SIMDE_FLOAT32_C( -131.35), SIMDE_FLOAT32_C(  737.21),
                         SIMDE_FLOAT32_C(  816.16), SIMDE_FLOAT32_C(  442.16)) },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(  291.38), SIMDE_FLOAT32_C( -442.22), SIMDE_FLOAT32_C(  756.36), SIMDE_FLOAT32_C( -768.65)),
      simde_mm_set_ps(SIMDE_FLOAT32_C( -266.91), SIMDE_FLOAT32_C( -275.67), SIMDE_FLOAT32_C( -687.10), SIMDE_FLOAT32_C(  236.32)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -266.91), SIMDE_FLOAT32_C( -275.67),
                         SIMDE_FLOAT32_C( -687.10), SIMDE_FLOAT32_C(  236.32),
                         SIMDE_FLOAT32_C(  291.38), SIMDE_FLOAT32_C( -442.22),
                         SIMDE_FLOAT32_C(  756.36), SIMDE_FLOAT32_C( -768.65)) },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(  561.83), SIMDE_FLOAT32_C(  979.61), SIMDE_FLOAT32_C(   43.21), SIMDE_FLOAT32_C( -386.38)),
      simde_mm_set_ps(SIMDE_FLOAT32_C( -879.64), SIMDE_FLOAT32_C( -192.97), SIMDE_FLOAT32_C( -876.27), SIMDE_FLOAT32_C(  -36.00)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -879.64), SIMDE_FLOAT32_C( -192.97),
                         SIMDE_FLOAT32_C( -876.27), SIMDE_FLOAT32_C(  -36.00),
                         SIMDE_FLOAT32_C(  561.83), SIMDE_FLOAT32_C(  979.61),
                         SIMDE_FLOAT32_C(   43.21), SIMDE_FLOAT32_C( -386.38)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256 r = simde_mm256_setr_m128(test_vec[i].a, test_vec[i].b);
    simde_assert_m256_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_setr_m128d(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m128d a;
    simde__m128d b;
    simde__m256d r;
  } test_vec[8] = {
    { simde_mm_set_pd(SIMDE_FLOAT64_C( -456.75), SIMDE_FLOAT64_C( -671.00)),
      simde_mm_set_pd(SIMDE_FLOAT64_C( -831.34), SIMDE_FLOAT64_C(  280.05)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -831.34), SIMDE_FLOAT64_C(  280.05),
                         SIMDE_FLOAT64_C( -456.75), SIMDE_FLOAT64_C( -671.00)) },
    { simde_mm_set_pd(SIMDE_FLOAT64_C(  937.15), SIMDE_FLOAT64_C( -608.20)),
      simde_mm_set_pd(SIMDE_FLOAT64_C( -231.75), SIMDE_FLOAT64_C( -301.21)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -231.75), SIMDE_FLOAT64_C( -301.21),
                         SIMDE_FLOAT64_C(  937.15), SIMDE_FLOAT64_C( -608.20)) },
    { simde_mm_set_pd(SIMDE_FLOAT64_C( -418.68), SIMDE_FLOAT64_C( -219.09)),
      simde_mm_set_pd(SIMDE_FLOAT64_C( -262.95), SIMDE_FLOAT64_C( -857.27)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -262.95), SIMDE_FLOAT64_C( -857.27),
                         SIMDE_FLOAT64_C( -418.68), SIMDE_FLOAT64_C( -219.09)) },
    { simde_mm_set_pd(SIMDE_FLOAT64_C(  154.88), SIMDE_FLOAT64_C(   64.12)),
      simde_mm_set_pd(SIMDE_FLOAT64_C(  231.57), SIMDE_FLOAT64_C(  996.12)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  231.57), SIMDE_FLOAT64_C(  996.12),
                         SIMDE_FLOAT64_C(  154.88), SIMDE_FLOAT64_C(   64.12)) },
    { simde_mm_set_pd(SIMDE_FLOAT64_C(  -46.48), SIMDE_FLOAT64_C( -511.22)),
      simde_mm_set_pd(SIMDE_FLOAT64_C(  951.46), SIMDE_FLOAT64_C(  771.21)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  951.46), SIMDE_FLOAT64_C(  771.21),
                         SIMDE_FLOAT64_C(  -46.48), SIMDE_FLOAT64_C( -511.22)) },
    { simde_mm_set_pd(SIMDE_FLOAT64_C( -492.75), SIMDE_FLOAT64_C( -725.08)),
      simde_mm_set_pd(SIMDE_FLOAT64_C( -545.59), SIMDE_FLOAT64_C( -960.12)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -545.59), SIMDE_FLOAT64_C( -960.12),
                         SIMDE_FLOAT64_C( -492.75), SIMDE_FLOAT64_C( -725.08)) },
    { simde_mm_set_pd(SIMDE_FLOAT64_C(   -9.74), SIMDE_FLOAT64_C(  -44.37)),
      simde_mm_set_pd(SIMDE_FLOAT64_C(  854.62), SIMDE_FLOAT64_C( -942.41)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  854.62), SIMDE_FLOAT64_C( -942.41),
                         SIMDE_FLOAT64_C(   -9.74), SIMDE_FLOAT64_C(  -44.37)) },
    { simde_mm_set_pd(SIMDE_FLOAT64_C(  575.33), SIMDE_FLOAT64_C( -493.55)),
      simde_mm_set_pd(SIMDE_FLOAT64_C(   73.10), SIMDE_FLOAT64_C(   90.67)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   73.10), SIMDE_FLOAT64_C(   90.67),
                         SIMDE_FLOAT64_C(  575.33), SIMDE_FLOAT64_C( -493.55)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256d r = simde_mm256_setr_m128d(test_vec[i].a, test_vec[i].b);
    simde_assert_m256d_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_setr_m128i(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m128i a;
    simde__m128i b;
    simde__m256i r;
  } test_vec[8] = {
    { simde_mm_set_epi32(INT32_C(-1742712724), INT32_C( -314784100), INT32_C(  986737210), INT32_C( 1275380805)),
      simde_mm_set_epi32(INT32_C( -652328462), INT32_C(-1178876865), INT32_C(-2116026355), INT32_C(  283851183)),
      simde_mm256_set_epi32(INT32_C( -652328462), INT32_C(-1178876865), INT32_C(-2116026355), INT32_C(  283851183),
                            INT32_C(-1742712724), INT32_C( -314784100), INT32_C(  986737210), INT32_C( 1275380805)) },
    { simde_mm_set_epi32(INT32_C( 1950785462), INT32_C(-1647057227), INT32_C( 1610379205), INT32_C( -779524107)),
      simde_mm_set_epi32(INT32_C(  463748536), INT32_C( -797772071), INT32_C( 1736524491), INT32_C( 1281308863)),
      simde_mm256_set_epi32(INT32_C(  463748536), INT32_C( -797772071), INT32_C( 1736524491), INT32_C( 1281308863),
                            INT32_C( 1950785462), INT32_C(-1647057227), INT32_C( 1610379205), INT32_C( -779524107)) },
    { simde_mm_set_epi32(INT32_C(-2008212267), INT32_C(-2138916541), INT32_C(-1006728926), INT32_C(-1435438838)),
      simde_mm_set_epi32(INT32_C( -133349630), INT32_C(-1192564707), INT32_C(-2002224298), INT32_C(  917327905)),
      simde_mm256_set_epi32(INT32_C( -133349630), INT32_C(-1192564707), INT32_C(-2002224298), INT32_C(  917327905),
                            INT32_C(-2008212267), INT32_C(-2138916541), INT32_C(-1006728926), INT32_C(-1435438838)) },
    { simde_mm_set_epi32(INT32_C( -870567789), INT32_C(-1650884654), INT32_C(  516950890), INT32_C(-1478935293)),
      simde_mm_set_epi32(INT32_C(  346251173), INT32_C(   44036763), INT32_C( -453299917), INT32_C( 1313402969)),
      simde_mm256_set_epi32(INT32_C(  346251173), INT32_C(   44036763), INT32_C( -453299917), INT32_C( 1313402969),
                            INT32_C( -870567789), INT32_C(-1650884654), INT32_C(  516950890), INT32_C(-1478935293)) },
    { simde_mm_set_epi32(INT32_C( 1685745491), INT32_C(-1092039924), INT32_C( 1442866872), INT32_C(-1523614432)),
      simde_mm_set_epi32(INT32_C(  863519834), INT32_C(  230110187), INT32_C(  812017634), INT32_C( 1688191143)),
      simde_mm256_set_epi32(INT32_C(  863519834), INT32_C(  230110187), INT32_C(  812017634), INT32_C( 1688191143),
                            INT32_C( 1685745491), INT32_C(-1092039924), INT32_C( 1442866872), INT32_C(-1523614432)) },
    { simde_mm_set_epi32(INT32_C(  245453619), INT32_C( 1778016121), INT32_C(   58675090), INT32_C( 1219256368)),
      simde_mm_set_epi32(INT32_C( 1174470085), INT32_C( -388376691), INT32_C( -990477533), INT32_C( -476034642)),
      simde_mm256_set_epi32(INT32_C( 1174470085), INT32_C( -388376691), INT32_C( -990477533), INT32_C( -476034642),
                            INT32_C(  245453619), INT32_C( 1778016121), INT32_C(   58675090), INT32_C( 1219256368)) },
    { simde_mm_set_epi32(INT32_C(    4875253), INT32_C(-1938130041), INT32_C( -829985839), INT32_C( 1737785848)),
      simde_mm_set_epi32(INT32_C(  645358488), INT32_C(   69189244), INT32_C( 1744086784), INT32_C(  473310154)),
      simde_mm256_set_epi32(INT32_C(  645358488), INT32_C(   69189244), INT32_C( 1744086784), INT32_C(  473310154),
                            INT32_C(    4875253), INT32_C(-1938130041), INT32_C( -829985839), INT32_C( 1737785848)) },
    { simde_mm_set_epi32(INT32_C(  804470839), INT32_C(-1989324616), INT32_C( 2138294939), INT32_C(  -20370473)),
      simde_mm_set_epi32(INT32_C(  587534668), INT32_C(  665646160), INT32_C(-1572975914), INT32_C( 1262599280)),
      simde_mm256_set_epi32(INT32_C(  587534668), INT32_C(  665646160), INT32_C(-1572975914), INT32_C( 1262599280),
                            INT32_C(  804470839), INT32_C(-1989324616), INT32_C( 2138294939), INT32_C(  -20370473)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256i r = simde_mm256_setr_m128i(test_vec[i].a, test_vec[i].b);
    simde_assert_m256i_i32(r, ==, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_shuffle_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde__m256 b;
    simde__m256 r1;
    simde__m256 r2;
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  -37.53), SIMDE_FLOAT32_C(  505.45),
                         SIMDE_FLOAT32_C( -772.05), SIMDE_FLOAT32_C( -524.38),
                         SIMDE_FLOAT32_C(   32.28), SIMDE_FLOAT32_C(  575.28),
                         SIMDE_FLOAT32_C(  459.50), SIMDE_FLOAT32_C( -869.92)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  190.31), SIMDE_FLOAT32_C( -827.59),
                         SIMDE_FLOAT32_C( -501.09), SIMDE_FLOAT32_C(  667.40),
                         SIMDE_FLOAT32_C( -205.26), SIMDE_FLOAT32_C(  908.59),
                         SIMDE_FLOAT32_C(  448.39), SIMDE_FLOAT32_C( -264.01)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -501.09), SIMDE_FLOAT32_C( -501.09),
                         SIMDE_FLOAT32_C( -772.05), SIMDE_FLOAT32_C( -772.05),
                         SIMDE_FLOAT32_C(  448.39), SIMDE_FLOAT32_C(  448.39),
                         SIMDE_FLOAT32_C(  459.50), SIMDE_FLOAT32_C(  459.50)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -827.59), SIMDE_FLOAT32_C( -827.59),
                         SIMDE_FLOAT32_C(  505.45), SIMDE_FLOAT32_C(  505.45),
                         SIMDE_FLOAT32_C(  908.59), SIMDE_FLOAT32_C(  908.59),
                         SIMDE_FLOAT32_C(  575.28), SIMDE_FLOAT32_C(  575.28)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -651.57), SIMDE_FLOAT32_C( -282.66),
                         SIMDE_FLOAT32_C( -530.16), SIMDE_FLOAT32_C( -552.16),
                         SIMDE_FLOAT32_C(  586.68), SIMDE_FLOAT32_C(  706.29),
                         SIMDE_FLOAT32_C(  537.21), SIMDE_FLOAT32_C( -450.04)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -642.32), SIMDE_FLOAT32_C( -725.64),
                         SIMDE_FLOAT32_C(  162.03), SIMDE_FLOAT32_C(  624.91),
                         SIMDE_FLOAT32_C(  415.33), SIMDE_FLOAT32_C(  -62.25),
                         SIMDE_FLOAT32_C(  445.83), SIMDE_FLOAT32_C( -888.88)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  162.03), SIMDE_FLOAT32_C(  162.03),
                         SIMDE_FLOAT32_C( -530.16), SIMDE_FLOAT32_C( -530.16),
                         SIMDE_FLOAT32_C(  445.83), SIMDE_FLOAT32_C(  445.83),
                         SIMDE_FLOAT32_C(  537.21), SIMDE_FLOAT32_C(  537.21)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -725.64), SIMDE_FLOAT32_C( -725.64),
                         SIMDE_FLOAT32_C( -282.66), SIMDE_FLOAT32_C( -282.66),
                         SIMDE_FLOAT32_C(  -62.25), SIMDE_FLOAT32_C(  -62.25),
                         SIMDE_FLOAT32_C(  706.29), SIMDE_FLOAT32_C(  706.29)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -586.61), SIMDE_FLOAT32_C( -444.58),
                         SIMDE_FLOAT32_C(  804.56), SIMDE_FLOAT32_C( -661.78),
                         SIMDE_FLOAT32_C( -398.96), SIMDE_FLOAT32_C(  555.99),
                         SIMDE_FLOAT32_C(  255.05), SIMDE_FLOAT32_C(  326.05)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   59.74), SIMDE_FLOAT32_C(  544.15),
                         SIMDE_FLOAT32_C(  414.09), SIMDE_FLOAT32_C(   11.73),
                         SIMDE_FLOAT32_C(  678.11), SIMDE_FLOAT32_C(  264.09),
                         SIMDE_FLOAT32_C(  492.67), SIMDE_FLOAT32_C( -690.47)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  414.09), SIMDE_FLOAT32_C(  414.09),
                         SIMDE_FLOAT32_C(  804.56), SIMDE_FLOAT32_C(  804.56),
                         SIMDE_FLOAT32_C(  492.67), SIMDE_FLOAT32_C(  492.67),
                         SIMDE_FLOAT32_C(  255.05), SIMDE_FLOAT32_C(  255.05)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  544.15), SIMDE_FLOAT32_C(  544.15),
                         SIMDE_FLOAT32_C( -444.58), SIMDE_FLOAT32_C( -444.58),
                         SIMDE_FLOAT32_C(  264.09), SIMDE_FLOAT32_C(  264.09),
                         SIMDE_FLOAT32_C(  555.99), SIMDE_FLOAT32_C(  555.99)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -738.46), SIMDE_FLOAT32_C(  931.97),
                         SIMDE_FLOAT32_C( -722.34), SIMDE_FLOAT32_C( -600.75),
                         SIMDE_FLOAT32_C( -215.41), SIMDE_FLOAT32_C( -472.40),
                         SIMDE_FLOAT32_C(  -60.64), SIMDE_FLOAT32_C(  120.78)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  773.86), SIMDE_FLOAT32_C( -298.57),
                         SIMDE_FLOAT32_C(  440.00), SIMDE_FLOAT32_C( -205.51),
                         SIMDE_FLOAT32_C( -237.18), SIMDE_FLOAT32_C( -760.22),
                         SIMDE_FLOAT32_C( -446.09), SIMDE_FLOAT32_C( -381.56)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  440.00), SIMDE_FLOAT32_C(  440.00),
                         SIMDE_FLOAT32_C( -722.34), SIMDE_FLOAT32_C( -722.34),
                         SIMDE_FLOAT32_C( -446.09), SIMDE_FLOAT32_C( -446.09),
                         SIMDE_FLOAT32_C(  -60.64), SIMDE_FLOAT32_C(  -60.64)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -298.57), SIMDE_FLOAT32_C( -298.57),
                         SIMDE_FLOAT32_C(  931.97), SIMDE_FLOAT32_C(  931.97),
                         SIMDE_FLOAT32_C( -760.22), SIMDE_FLOAT32_C( -760.22),
                         SIMDE_FLOAT32_C( -472.40), SIMDE_FLOAT32_C( -472.40)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -868.52), SIMDE_FLOAT32_C( -561.35),
                         SIMDE_FLOAT32_C( -571.37), SIMDE_FLOAT32_C(  511.95),
                         SIMDE_FLOAT32_C(  794.40), SIMDE_FLOAT32_C(  468.29),
                         SIMDE_FLOAT32_C(  949.07), SIMDE_FLOAT32_C(  504.01)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -600.88), SIMDE_FLOAT32_C( -128.06),
                         SIMDE_FLOAT32_C(   -3.70), SIMDE_FLOAT32_C( -620.63),
                         SIMDE_FLOAT32_C(  888.33), SIMDE_FLOAT32_C(  864.93),
                         SIMDE_FLOAT32_C( -548.30), SIMDE_FLOAT32_C(  693.70)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   -3.70), SIMDE_FLOAT32_C(   -3.70),
                         SIMDE_FLOAT32_C( -571.37), SIMDE_FLOAT32_C( -571.37),
                         SIMDE_FLOAT32_C( -548.30), SIMDE_FLOAT32_C( -548.30),
                         SIMDE_FLOAT32_C(  949.07), SIMDE_FLOAT32_C(  949.07)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -128.06), SIMDE_FLOAT32_C( -128.06),
                         SIMDE_FLOAT32_C( -561.35), SIMDE_FLOAT32_C( -561.35),
                         SIMDE_FLOAT32_C(  864.93), SIMDE_FLOAT32_C(  864.93),
                         SIMDE_FLOAT32_C(  468.29), SIMDE_FLOAT32_C(  468.29)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -274.24), SIMDE_FLOAT32_C( -910.17),
                         SIMDE_FLOAT32_C(  548.80), SIMDE_FLOAT32_C( -838.00),
                         SIMDE_FLOAT32_C( -379.63), SIMDE_FLOAT32_C(  775.00),
                         SIMDE_FLOAT32_C( -238.61), SIMDE_FLOAT32_C( -278.26)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   28.03), SIMDE_FLOAT32_C( -206.70),
                         SIMDE_FLOAT32_C(  -80.05), SIMDE_FLOAT32_C(  380.68),
                         SIMDE_FLOAT32_C(  342.48), SIMDE_FLOAT32_C(  525.81),
                         SIMDE_FLOAT32_C( -202.62), SIMDE_FLOAT32_C(  412.48)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  -80.05), SIMDE_FLOAT32_C(  -80.05),
                         SIMDE_FLOAT32_C(  548.80), SIMDE_FLOAT32_C(  548.80),
                         SIMDE_FLOAT32_C( -202.62), SIMDE_FLOAT32_C( -202.62),
                         SIMDE_FLOAT32_C( -238.61), SIMDE_FLOAT32_C( -238.61)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -206.70), SIMDE_FLOAT32_C( -206.70),
                         SIMDE_FLOAT32_C( -910.17), SIMDE_FLOAT32_C( -910.17),
                         SIMDE_FLOAT32_C(  525.81), SIMDE_FLOAT32_C(  525.81),
                         SIMDE_FLOAT32_C(  775.00), SIMDE_FLOAT32_C(  775.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  270.95), SIMDE_FLOAT32_C(  727.79),
                         SIMDE_FLOAT32_C(  361.48), SIMDE_FLOAT32_C(  843.29),
                         SIMDE_FLOAT32_C( -519.67), SIMDE_FLOAT32_C( -181.50),
                         SIMDE_FLOAT32_C( -112.74), SIMDE_FLOAT32_C(  545.62)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -132.55), SIMDE_FLOAT32_C( -718.86),
                         SIMDE_FLOAT32_C(  142.59), SIMDE_FLOAT32_C(  742.01),
                         SIMDE_FLOAT32_C(  593.39), SIMDE_FLOAT32_C(  515.42),
                         SIMDE_FLOAT32_C(  897.24), SIMDE_FLOAT32_C(  759.74)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  142.59), SIMDE_FLOAT32_C(  142.59),
                         SIMDE_FLOAT32_C(  361.48), SIMDE_FLOAT32_C(  361.48),
                         SIMDE_FLOAT32_C(  897.24), SIMDE_FLOAT32_C(  897.24),
                         SIMDE_FLOAT32_C( -112.74), SIMDE_FLOAT32_C( -112.74)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -718.86), SIMDE_FLOAT32_C( -718.86),
                         SIMDE_FLOAT32_C(  727.79), SIMDE_FLOAT32_C(  727.79),
                         SIMDE_FLOAT32_C(  515.42), SIMDE_FLOAT32_C(  515.42),
                         SIMDE_FLOAT32_C( -181.50), SIMDE_FLOAT32_C( -181.50)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -964.03), SIMDE_FLOAT32_C(  334.31),
                         SIMDE_FLOAT32_C( -520.63), SIMDE_FLOAT32_C(  -60.01),
                         SIMDE_FLOAT32_C(  788.31), SIMDE_FLOAT32_C( -532.00),
                         SIMDE_FLOAT32_C(  146.02), SIMDE_FLOAT32_C(  -45.94)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -225.66), SIMDE_FLOAT32_C( -255.31),
                         SIMDE_FLOAT32_C(  440.71), SIMDE_FLOAT32_C( -673.25),
                         SIMDE_FLOAT32_C( -649.50), SIMDE_FLOAT32_C( -704.29),
                         SIMDE_FLOAT32_C(  340.20), SIMDE_FLOAT32_C( -395.47)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  440.71), SIMDE_FLOAT32_C(  440.71),
                         SIMDE_FLOAT32_C( -520.63), SIMDE_FLOAT32_C( -520.63),
                         SIMDE_FLOAT32_C(  340.20), SIMDE_FLOAT32_C(  340.20),
                         SIMDE_FLOAT32_C(  146.02), SIMDE_FLOAT32_C(  146.02)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -255.31), SIMDE_FLOAT32_C( -255.31),
                         SIMDE_FLOAT32_C(  334.31), SIMDE_FLOAT32_C(  334.31),
                         SIMDE_FLOAT32_C( -704.29), SIMDE_FLOAT32_C( -704.29),
                         SIMDE_FLOAT32_C( -532.00), SIMDE_FLOAT32_C( -532.00)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256 r;

    r = simde_mm256_shuffle_ps(test_vec[i].a, test_vec[i].b, 0x55);
    simde_assert_m256_close(r, test_vec[i].r1, 1);

    r = simde_mm256_shuffle_ps(test_vec[i].a, test_vec[i].b, 0xaa);
    simde_assert_m256_close(r, test_vec[i].r2, 1);
  }

  return 0;
}

static int
test_simde_mm256_shuffle_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256d a;
    simde__m256d b;
    simde__m256d r1;
    simde__m256d r2;
  } test_vec[8] = {
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  934.66), SIMDE_FLOAT64_C( -881.67),
                         SIMDE_FLOAT64_C(  836.94), SIMDE_FLOAT64_C( -777.20)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -249.31), SIMDE_FLOAT64_C(  364.30),
                         SIMDE_FLOAT64_C( -553.11), SIMDE_FLOAT64_C( -269.32)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  364.30), SIMDE_FLOAT64_C(  934.66),
                         SIMDE_FLOAT64_C( -269.32), SIMDE_FLOAT64_C(  836.94)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -249.31), SIMDE_FLOAT64_C( -881.67),
                         SIMDE_FLOAT64_C( -553.11), SIMDE_FLOAT64_C( -777.20)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -570.38), SIMDE_FLOAT64_C(  768.57),
                         SIMDE_FLOAT64_C(  912.15), SIMDE_FLOAT64_C(  -23.81)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -107.98), SIMDE_FLOAT64_C( -226.33),
                         SIMDE_FLOAT64_C(  924.14), SIMDE_FLOAT64_C( -792.70)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -226.33), SIMDE_FLOAT64_C( -570.38),
                         SIMDE_FLOAT64_C( -792.70), SIMDE_FLOAT64_C(  912.15)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -107.98), SIMDE_FLOAT64_C(  768.57),
                         SIMDE_FLOAT64_C(  924.14), SIMDE_FLOAT64_C(  -23.81)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -307.34), SIMDE_FLOAT64_C(  256.70),
                         SIMDE_FLOAT64_C(  615.34), SIMDE_FLOAT64_C(  966.02)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   80.56), SIMDE_FLOAT64_C( -102.88),
                         SIMDE_FLOAT64_C(  558.25), SIMDE_FLOAT64_C(  907.54)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -102.88), SIMDE_FLOAT64_C( -307.34),
                         SIMDE_FLOAT64_C(  907.54), SIMDE_FLOAT64_C(  615.34)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   80.56), SIMDE_FLOAT64_C(  256.70),
                         SIMDE_FLOAT64_C(  558.25), SIMDE_FLOAT64_C(  966.02)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -428.91), SIMDE_FLOAT64_C( -946.94),
                         SIMDE_FLOAT64_C( -242.51), SIMDE_FLOAT64_C(  207.30)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  871.74), SIMDE_FLOAT64_C(  294.25),
                         SIMDE_FLOAT64_C(  -23.76), SIMDE_FLOAT64_C(  857.02)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  294.25), SIMDE_FLOAT64_C( -428.91),
                         SIMDE_FLOAT64_C(  857.02), SIMDE_FLOAT64_C( -242.51)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  871.74), SIMDE_FLOAT64_C( -946.94),
                         SIMDE_FLOAT64_C(  -23.76), SIMDE_FLOAT64_C(  207.30)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  684.37), SIMDE_FLOAT64_C(  -77.07),
                         SIMDE_FLOAT64_C( -492.40), SIMDE_FLOAT64_C( -711.90)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  911.18), SIMDE_FLOAT64_C( -875.79),
                         SIMDE_FLOAT64_C(  168.17), SIMDE_FLOAT64_C( -582.90)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -875.79), SIMDE_FLOAT64_C(  684.37),
                         SIMDE_FLOAT64_C( -582.90), SIMDE_FLOAT64_C( -492.40)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  911.18), SIMDE_FLOAT64_C(  -77.07),
                         SIMDE_FLOAT64_C(  168.17), SIMDE_FLOAT64_C( -711.90)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  844.28), SIMDE_FLOAT64_C( -547.02),
                         SIMDE_FLOAT64_C( -536.51), SIMDE_FLOAT64_C( -341.28)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -205.14), SIMDE_FLOAT64_C(   35.47),
                         SIMDE_FLOAT64_C(  536.74), SIMDE_FLOAT64_C(  843.54)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   35.47), SIMDE_FLOAT64_C(  844.28),
                         SIMDE_FLOAT64_C(  843.54), SIMDE_FLOAT64_C( -536.51)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -205.14), SIMDE_FLOAT64_C( -547.02),
                         SIMDE_FLOAT64_C(  536.74), SIMDE_FLOAT64_C( -341.28)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  597.24), SIMDE_FLOAT64_C(   73.58),
                         SIMDE_FLOAT64_C(  575.62), SIMDE_FLOAT64_C( -337.42)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  430.69), SIMDE_FLOAT64_C( -764.62),
                         SIMDE_FLOAT64_C(  152.29), SIMDE_FLOAT64_C(  529.08)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -764.62), SIMDE_FLOAT64_C(  597.24),
                         SIMDE_FLOAT64_C(  529.08), SIMDE_FLOAT64_C(  575.62)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  430.69), SIMDE_FLOAT64_C(   73.58),
                         SIMDE_FLOAT64_C(  152.29), SIMDE_FLOAT64_C( -337.42)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  276.59), SIMDE_FLOAT64_C(  918.52),
                         SIMDE_FLOAT64_C(  859.45), SIMDE_FLOAT64_C(   26.68)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -365.57), SIMDE_FLOAT64_C(  780.68),
                         SIMDE_FLOAT64_C(  333.70), SIMDE_FLOAT64_C( -391.20)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  780.68), SIMDE_FLOAT64_C(  276.59),
                         SIMDE_FLOAT64_C( -391.20), SIMDE_FLOAT64_C(  859.45)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -365.57), SIMDE_FLOAT64_C(  918.52),
                         SIMDE_FLOAT64_C(  333.70), SIMDE_FLOAT64_C(   26.68)) }
  };
  uint64_t a[] = {1, 0, 0, 0};
  uint64_t b[] = {0, 0, 1, 0};
  int64_t target[4] = {INT64_C(1),  INT64_C(0),  INT64_C(0),  INT64_C(0) };
  simde__m256d r, tmp_0_yd, tmp_1_yd;

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {

    r = simde_mm256_shuffle_pd(test_vec[i].a, test_vec[i].b, 0x5);
    simde_assert_m256d_close(r, test_vec[i].r1, 1);

    r = simde_mm256_shuffle_pd(test_vec[i].a, test_vec[i].b, 0xa);
    simde_assert_m256d_close(r, test_vec[i].r2, 1);
  }

  tmp_0_yd = simde_mm256_loadu_pd(HEDLEY_REINTERPRET_CAST(double*, a));
  tmp_1_yd = simde_mm256_loadu_pd(HEDLEY_REINTERPRET_CAST(double*, b));
  r = simde_mm256_shuffle_pd(tmp_0_yd, tmp_1_yd, 0xc); // 0b1100

  simde_test_x86_assert_equal_i64x4(simde_mm256_castpd_si256(r), simde_mm256_loadu_epi64(target));

  //simde_test_x86_write_i64x4(2, simde_mm256_castpd_si256(r), SIMDE_TEST_VEC_POS_LAST);

  return 0;
}

static int
test_simde_mm256_sqrt_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde__m256 r;
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   37.27), SIMDE_FLOAT32_C(  842.37),
                         SIMDE_FLOAT32_C(  821.35), SIMDE_FLOAT32_C(  882.42),
                         SIMDE_FLOAT32_C(  506.85), SIMDE_FLOAT32_C(  418.78),
                         SIMDE_FLOAT32_C(  759.20), SIMDE_FLOAT32_C(  903.29)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(    6.10), SIMDE_FLOAT32_C(   29.02),
                         SIMDE_FLOAT32_C(   28.66), SIMDE_FLOAT32_C(   29.71),
                         SIMDE_FLOAT32_C(   22.51), SIMDE_FLOAT32_C(   20.46),
                         SIMDE_FLOAT32_C(   27.55), SIMDE_FLOAT32_C(   30.05)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  675.11), SIMDE_FLOAT32_C(  473.44),
                         SIMDE_FLOAT32_C(  936.76), SIMDE_FLOAT32_C(  315.53),
                         SIMDE_FLOAT32_C(  585.70), SIMDE_FLOAT32_C(  466.99),
                         SIMDE_FLOAT32_C(  876.99), SIMDE_FLOAT32_C(  421.09)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   25.98), SIMDE_FLOAT32_C(   21.76),
                         SIMDE_FLOAT32_C(   30.61), SIMDE_FLOAT32_C(   17.76),
                         SIMDE_FLOAT32_C(   24.20), SIMDE_FLOAT32_C(   21.61),
                         SIMDE_FLOAT32_C(   29.61), SIMDE_FLOAT32_C(   20.52)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  455.63), SIMDE_FLOAT32_C(  708.48),
                         SIMDE_FLOAT32_C(  426.65), SIMDE_FLOAT32_C(   16.24),
                         SIMDE_FLOAT32_C(  899.49), SIMDE_FLOAT32_C(  710.23),
                         SIMDE_FLOAT32_C(  195.07), SIMDE_FLOAT32_C(  877.55)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   21.35), SIMDE_FLOAT32_C(   26.62),
                         SIMDE_FLOAT32_C(   20.66), SIMDE_FLOAT32_C(    4.03),
                         SIMDE_FLOAT32_C(   29.99), SIMDE_FLOAT32_C(   26.65),
                         SIMDE_FLOAT32_C(   13.97), SIMDE_FLOAT32_C(   29.62)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  247.65), SIMDE_FLOAT32_C(  650.69),
                         SIMDE_FLOAT32_C(  691.01), SIMDE_FLOAT32_C(  931.91),
                         SIMDE_FLOAT32_C(  760.76), SIMDE_FLOAT32_C(  925.05),
                         SIMDE_FLOAT32_C(  438.39), SIMDE_FLOAT32_C(  204.75)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   15.74), SIMDE_FLOAT32_C(   25.51),
                         SIMDE_FLOAT32_C(   26.29), SIMDE_FLOAT32_C(   30.53),
                         SIMDE_FLOAT32_C(   27.58), SIMDE_FLOAT32_C(   30.41),
                         SIMDE_FLOAT32_C(   20.94), SIMDE_FLOAT32_C(   14.31)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  281.85), SIMDE_FLOAT32_C(  525.43),
                         SIMDE_FLOAT32_C(   50.88), SIMDE_FLOAT32_C(  685.15),
                         SIMDE_FLOAT32_C(  223.40), SIMDE_FLOAT32_C(  911.30),
                         SIMDE_FLOAT32_C(   97.50), SIMDE_FLOAT32_C(  436.55)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   16.79), SIMDE_FLOAT32_C(   22.92),
                         SIMDE_FLOAT32_C(    7.13), SIMDE_FLOAT32_C(   26.18),
                         SIMDE_FLOAT32_C(   14.95), SIMDE_FLOAT32_C(   30.19),
                         SIMDE_FLOAT32_C(    9.87), SIMDE_FLOAT32_C(   20.89)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  420.63), SIMDE_FLOAT32_C(  643.40),
                         SIMDE_FLOAT32_C(  474.44), SIMDE_FLOAT32_C(  474.06),
                         SIMDE_FLOAT32_C(  331.02), SIMDE_FLOAT32_C(  191.18),
                         SIMDE_FLOAT32_C(  614.70), SIMDE_FLOAT32_C(  135.59)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   20.51), SIMDE_FLOAT32_C(   25.37),
                         SIMDE_FLOAT32_C(   21.78), SIMDE_FLOAT32_C(   21.77),
                         SIMDE_FLOAT32_C(   18.19), SIMDE_FLOAT32_C(   13.83),
                         SIMDE_FLOAT32_C(   24.79), SIMDE_FLOAT32_C(   11.64)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  777.57), SIMDE_FLOAT32_C(  684.09),
                         SIMDE_FLOAT32_C(  183.20), SIMDE_FLOAT32_C(  761.60),
                         SIMDE_FLOAT32_C(  226.72), SIMDE_FLOAT32_C(  710.47),
                         SIMDE_FLOAT32_C(  853.48), SIMDE_FLOAT32_C(  115.80)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   27.88), SIMDE_FLOAT32_C(   26.16),
                         SIMDE_FLOAT32_C(   13.54), SIMDE_FLOAT32_C(   27.60),
                         SIMDE_FLOAT32_C(   15.06), SIMDE_FLOAT32_C(   26.65),
                         SIMDE_FLOAT32_C(   29.21), SIMDE_FLOAT32_C(   10.76)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  797.47), SIMDE_FLOAT32_C(  634.08),
                         SIMDE_FLOAT32_C(  881.12), SIMDE_FLOAT32_C(  697.30),
                         SIMDE_FLOAT32_C(  189.46), SIMDE_FLOAT32_C(   47.99),
                         SIMDE_FLOAT32_C(   85.88), SIMDE_FLOAT32_C(  938.36)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   28.24), SIMDE_FLOAT32_C(   25.18),
                         SIMDE_FLOAT32_C(   29.68), SIMDE_FLOAT32_C(   26.41),
                         SIMDE_FLOAT32_C(   13.76), SIMDE_FLOAT32_C(    6.93),
                         SIMDE_FLOAT32_C(    9.27), SIMDE_FLOAT32_C(   30.63)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256 r = simde_mm256_sqrt_ps(test_vec[i].a);
    simde_assert_m256_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_setzero_ps(SIMDE_MUNIT_TEST_ARGS) {
  simde__m256 r =
    simde_mm256_set_ps(SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00),
                       SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00),
                       SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00),
                       SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00));

  simde__m256 res = simde_mm256_setzero_ps();
  simde_assert_m256_close(r, res, 1);

  return 0;
}

static int
test_simde_mm256_setzero_pd(SIMDE_MUNIT_TEST_ARGS) {
  simde__m256d r =
    simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
                       SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00));

  simde__m256d res = simde_mm256_setzero_pd();
  simde_assert_m256d_close(r, res, 1);

  return 0;
}

static int
test_simde_mm256_setzero_si256(SIMDE_MUNIT_TEST_ARGS) {
  simde__m256i r =
    simde_mm256_set_epi32(INT32_C(0), INT32_C(0), INT32_C(0), INT32_C(0),
                          INT32_C(0), INT32_C(0), INT32_C(0), INT32_C(0));

  simde__m256i res = simde_mm256_setzero_si256();
  simde_assert_m256i_i32(r, ==, res);

  return 0;
}

static int
test_simde_mm256_sqrt_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256d a;
    simde__m256d r;
  } test_vec[8] = {
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  121.95), SIMDE_FLOAT64_C(  169.21),
                         SIMDE_FLOAT64_C(  224.34), SIMDE_FLOAT64_C(  661.75)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   11.04), SIMDE_FLOAT64_C(   13.01),
                         SIMDE_FLOAT64_C(   14.98), SIMDE_FLOAT64_C(   25.72)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(   41.79), SIMDE_FLOAT64_C(   48.53),
                         SIMDE_FLOAT64_C(   17.25), SIMDE_FLOAT64_C(  585.21)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(    6.46), SIMDE_FLOAT64_C(    6.97),
                         SIMDE_FLOAT64_C(    4.15), SIMDE_FLOAT64_C(   24.19)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  323.54), SIMDE_FLOAT64_C(   12.60),
                         SIMDE_FLOAT64_C(  916.80), SIMDE_FLOAT64_C(  392.02)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   17.99), SIMDE_FLOAT64_C(    3.55),
                         SIMDE_FLOAT64_C(   30.28), SIMDE_FLOAT64_C(   19.80)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  317.36), SIMDE_FLOAT64_C(  248.26),
                         SIMDE_FLOAT64_C(   48.91), SIMDE_FLOAT64_C(  291.13)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   17.81), SIMDE_FLOAT64_C(   15.76),
                         SIMDE_FLOAT64_C(    6.99), SIMDE_FLOAT64_C(   17.06)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  476.37), SIMDE_FLOAT64_C(  799.71),
                         SIMDE_FLOAT64_C(  234.23), SIMDE_FLOAT64_C(  908.93)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   21.83), SIMDE_FLOAT64_C(   28.28),
                         SIMDE_FLOAT64_C(   15.30), SIMDE_FLOAT64_C(   30.15)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  937.16), SIMDE_FLOAT64_C(  886.92),
                         SIMDE_FLOAT64_C(  703.77), SIMDE_FLOAT64_C(  383.22)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   30.61), SIMDE_FLOAT64_C(   29.78),
                         SIMDE_FLOAT64_C(   26.53), SIMDE_FLOAT64_C(   19.58)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(   36.08), SIMDE_FLOAT64_C(  932.02),
                         SIMDE_FLOAT64_C(  592.55), SIMDE_FLOAT64_C(  593.01)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(    6.01), SIMDE_FLOAT64_C(   30.53),
                         SIMDE_FLOAT64_C(   24.34), SIMDE_FLOAT64_C(   24.35)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  436.31), SIMDE_FLOAT64_C(  915.76),
                         SIMDE_FLOAT64_C(  575.57), SIMDE_FLOAT64_C(  268.70)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   20.89), SIMDE_FLOAT64_C(   30.26),
                         SIMDE_FLOAT64_C(   23.99), SIMDE_FLOAT64_C(   16.39)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256d r = simde_mm256_sqrt_pd(test_vec[i].a);
    simde_assert_m256d_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_store_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    SIMDE_ALIGN_LIKE_32(simde__m256) simde_float32 r[8];
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  256.09), SIMDE_FLOAT32_C(  768.79),
                         SIMDE_FLOAT32_C(  201.90), SIMDE_FLOAT32_C(  339.33),
                         SIMDE_FLOAT32_C(  957.46), SIMDE_FLOAT32_C(  728.44),
                         SIMDE_FLOAT32_C(   73.67), SIMDE_FLOAT32_C(  440.11)),
      { SIMDE_FLOAT32_C(  440.11), SIMDE_FLOAT32_C(   73.67),
        SIMDE_FLOAT32_C(  728.44), SIMDE_FLOAT32_C(  957.46),
        SIMDE_FLOAT32_C(  339.33), SIMDE_FLOAT32_C(  201.90),
        SIMDE_FLOAT32_C(  768.79), SIMDE_FLOAT32_C(  256.09) } },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  -72.04), SIMDE_FLOAT32_C( -425.25),
                         SIMDE_FLOAT32_C(  471.77), SIMDE_FLOAT32_C(  976.75),
                         SIMDE_FLOAT32_C( -510.20), SIMDE_FLOAT32_C(  696.54),
                         SIMDE_FLOAT32_C( -843.54), SIMDE_FLOAT32_C( -868.41)),
      { SIMDE_FLOAT32_C( -868.41), SIMDE_FLOAT32_C( -843.54),
        SIMDE_FLOAT32_C(  696.54), SIMDE_FLOAT32_C( -510.20),
        SIMDE_FLOAT32_C(  976.75), SIMDE_FLOAT32_C(  471.77),
        SIMDE_FLOAT32_C( -425.25), SIMDE_FLOAT32_C(  -72.04) } },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -304.23), SIMDE_FLOAT32_C(  477.48),
                         SIMDE_FLOAT32_C(  356.58), SIMDE_FLOAT32_C(  955.81),
                         SIMDE_FLOAT32_C(  999.99), SIMDE_FLOAT32_C(  487.33),
                         SIMDE_FLOAT32_C(  633.61), SIMDE_FLOAT32_C(  518.11)),
      { SIMDE_FLOAT32_C(  518.11), SIMDE_FLOAT32_C(  633.61),
        SIMDE_FLOAT32_C(  487.33), SIMDE_FLOAT32_C(  999.99),
        SIMDE_FLOAT32_C(  955.81), SIMDE_FLOAT32_C(  356.58),
        SIMDE_FLOAT32_C(  477.48), SIMDE_FLOAT32_C( -304.23) } },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   88.04), SIMDE_FLOAT32_C( -296.25),
                         SIMDE_FLOAT32_C(  948.33), SIMDE_FLOAT32_C( -584.17),
                         SIMDE_FLOAT32_C( -796.11), SIMDE_FLOAT32_C(  -38.84),
                         SIMDE_FLOAT32_C( -706.11), SIMDE_FLOAT32_C(  347.32)),
      { SIMDE_FLOAT32_C(  347.32), SIMDE_FLOAT32_C( -706.11),
        SIMDE_FLOAT32_C(  -38.84), SIMDE_FLOAT32_C( -796.11),
        SIMDE_FLOAT32_C( -584.17), SIMDE_FLOAT32_C(  948.33),
        SIMDE_FLOAT32_C( -296.25), SIMDE_FLOAT32_C(   88.04) } },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -143.76), SIMDE_FLOAT32_C(  504.36),
                         SIMDE_FLOAT32_C( -154.12), SIMDE_FLOAT32_C(  375.43),
                         SIMDE_FLOAT32_C( -307.18), SIMDE_FLOAT32_C(  256.93),
                         SIMDE_FLOAT32_C(   78.86), SIMDE_FLOAT32_C(  526.77)),
      { SIMDE_FLOAT32_C(  526.77), SIMDE_FLOAT32_C(   78.86),
        SIMDE_FLOAT32_C(  256.93), SIMDE_FLOAT32_C( -307.18),
        SIMDE_FLOAT32_C(  375.43), SIMDE_FLOAT32_C( -154.12),
        SIMDE_FLOAT32_C(  504.36), SIMDE_FLOAT32_C( -143.76) } },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  597.82), SIMDE_FLOAT32_C(  697.68),
                         SIMDE_FLOAT32_C( -285.13), SIMDE_FLOAT32_C(  354.51),
                         SIMDE_FLOAT32_C(   41.32), SIMDE_FLOAT32_C( -445.78),
                         SIMDE_FLOAT32_C( -483.17), SIMDE_FLOAT32_C( -727.28)),
      { SIMDE_FLOAT32_C( -727.28), SIMDE_FLOAT32_C( -483.17),
        SIMDE_FLOAT32_C( -445.78), SIMDE_FLOAT32_C(   41.32),
        SIMDE_FLOAT32_C(  354.51), SIMDE_FLOAT32_C( -285.13),
        SIMDE_FLOAT32_C(  697.68), SIMDE_FLOAT32_C(  597.82) } },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -441.93), SIMDE_FLOAT32_C( -382.04),
                         SIMDE_FLOAT32_C(  392.67), SIMDE_FLOAT32_C(  690.10),
                         SIMDE_FLOAT32_C(  -30.26), SIMDE_FLOAT32_C( -968.87),
                         SIMDE_FLOAT32_C( -246.46), SIMDE_FLOAT32_C(  625.73)),
      { SIMDE_FLOAT32_C(  625.73), SIMDE_FLOAT32_C( -246.46),
        SIMDE_FLOAT32_C( -968.87), SIMDE_FLOAT32_C(  -30.26),
        SIMDE_FLOAT32_C(  690.10), SIMDE_FLOAT32_C(  392.67),
        SIMDE_FLOAT32_C( -382.04), SIMDE_FLOAT32_C( -441.93) } },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  442.97), SIMDE_FLOAT32_C(  -20.37),
                         SIMDE_FLOAT32_C(  758.01), SIMDE_FLOAT32_C( -507.47),
                         SIMDE_FLOAT32_C(  529.68), SIMDE_FLOAT32_C( -598.71),
                         SIMDE_FLOAT32_C(  952.31), SIMDE_FLOAT32_C( -565.36)),
      { SIMDE_FLOAT32_C( -565.36), SIMDE_FLOAT32_C(  952.31),
        SIMDE_FLOAT32_C( -598.71), SIMDE_FLOAT32_C(  529.68),
        SIMDE_FLOAT32_C( -507.47), SIMDE_FLOAT32_C(  758.01),
        SIMDE_FLOAT32_C(  -20.37), SIMDE_FLOAT32_C(  442.97) } }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    SIMDE_ALIGN_LIKE_32(simde__m256) simde_float32 r[8];
    simde_mm256_store_ps(r, test_vec[i].a);
    simde_assert_equal_vf32(sizeof(r) / sizeof(r[0]), r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_store_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256d a;
    SIMDE_ALIGN_LIKE_32(simde__m256d) simde_float64 r[4];
  } test_vec[8] = {
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  771.84), SIMDE_FLOAT64_C(  578.19),
                         SIMDE_FLOAT64_C(  287.63), SIMDE_FLOAT64_C(  196.16)),
      { SIMDE_FLOAT64_C(  196.16), SIMDE_FLOAT64_C(  287.63),
        SIMDE_FLOAT64_C(  578.19), SIMDE_FLOAT64_C(  771.84) } },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -941.73), SIMDE_FLOAT64_C( -687.45),
                         SIMDE_FLOAT64_C( -865.09), SIMDE_FLOAT64_C(  586.03)),
      { SIMDE_FLOAT64_C(  586.03), SIMDE_FLOAT64_C( -865.09),
        SIMDE_FLOAT64_C( -687.45), SIMDE_FLOAT64_C( -941.73) } },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -342.90), SIMDE_FLOAT64_C( -658.61),
                         SIMDE_FLOAT64_C(  882.05), SIMDE_FLOAT64_C( -607.89)),
      { SIMDE_FLOAT64_C( -607.89), SIMDE_FLOAT64_C(  882.05),
        SIMDE_FLOAT64_C( -658.61), SIMDE_FLOAT64_C( -342.90) } },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -248.91), SIMDE_FLOAT64_C( -473.20),
                         SIMDE_FLOAT64_C(  170.76), SIMDE_FLOAT64_C( -407.02)),
      { SIMDE_FLOAT64_C( -407.02), SIMDE_FLOAT64_C(  170.76),
        SIMDE_FLOAT64_C( -473.20), SIMDE_FLOAT64_C( -248.91) } },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  181.69), SIMDE_FLOAT64_C(  697.67),
                         SIMDE_FLOAT64_C(  911.25), SIMDE_FLOAT64_C( -299.04)),
      { SIMDE_FLOAT64_C( -299.04), SIMDE_FLOAT64_C(  911.25),
        SIMDE_FLOAT64_C(  697.67), SIMDE_FLOAT64_C(  181.69) } },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -630.92), SIMDE_FLOAT64_C( -612.42),
                         SIMDE_FLOAT64_C(  645.34), SIMDE_FLOAT64_C( -379.90)),
      { SIMDE_FLOAT64_C( -379.90), SIMDE_FLOAT64_C(  645.34),
        SIMDE_FLOAT64_C( -612.42), SIMDE_FLOAT64_C( -630.92) } },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -339.32), SIMDE_FLOAT64_C(  404.98),
                         SIMDE_FLOAT64_C( -361.76), SIMDE_FLOAT64_C(  391.60)),
      { SIMDE_FLOAT64_C(  391.60), SIMDE_FLOAT64_C( -361.76),
        SIMDE_FLOAT64_C(  404.98), SIMDE_FLOAT64_C( -339.32) } },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  714.72), SIMDE_FLOAT64_C(  997.58),
                         SIMDE_FLOAT64_C(  807.47), SIMDE_FLOAT64_C(  948.80)),
      { SIMDE_FLOAT64_C(  948.80), SIMDE_FLOAT64_C(  807.47),
        SIMDE_FLOAT64_C(  997.58), SIMDE_FLOAT64_C(  714.72) } }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    SIMDE_ALIGN_LIKE_32(simde__m256d) simde_float64 r[4];
    simde_mm256_store_pd(r, test_vec[i].a);
    simde_assert_equal_vf64(sizeof(r) / sizeof(r[0]), r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_store_si256(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256i a;
    simde__m256i r;
  } test_vec[8] = {
    { simde_mm256_set_epi32(INT32_C( -495387953), INT32_C( 1389422093), INT32_C( 1549613541), INT32_C( 1621396930),
                            INT32_C(  431885981), INT32_C( -495493978), INT32_C(  957980176), INT32_C( -756622382)),
      simde_mm256_set_epi32(INT32_C( -495387953), INT32_C( 1389422093), INT32_C( 1549613541), INT32_C( 1621396930),
                            INT32_C(  431885981), INT32_C( -495493978), INT32_C(  957980176), INT32_C( -756622382)) },
    { simde_mm256_set_epi32(INT32_C(-1537563225), INT32_C( -111752931), INT32_C( 2068479386), INT32_C( 2004807479),
                            INT32_C( 2110162316), INT32_C( 1854708769), INT32_C(  -83811592), INT32_C( -892599604)),
      simde_mm256_set_epi32(INT32_C(-1537563225), INT32_C( -111752931), INT32_C( 2068479386), INT32_C( 2004807479),
                            INT32_C( 2110162316), INT32_C( 1854708769), INT32_C(  -83811592), INT32_C( -892599604)) },
    { simde_mm256_set_epi32(INT32_C( 1682126570), INT32_C(  340006289), INT32_C(  149083722), INT32_C( 1734045351),
                            INT32_C(-1572830580), INT32_C( 1824421914), INT32_C( 1423738129), INT32_C( -492096848)),
      simde_mm256_set_epi32(INT32_C( 1682126570), INT32_C(  340006289), INT32_C(  149083722), INT32_C( 1734045351),
                            INT32_C(-1572830580), INT32_C( 1824421914), INT32_C( 1423738129), INT32_C( -492096848)) },
    { simde_mm256_set_epi32(INT32_C(-2079347795), INT32_C( -336455233), INT32_C( -761216501), INT32_C( 1784601451),
                            INT32_C(  386854500), INT32_C(  177253765), INT32_C(  797476379), INT32_C( -848434210)),
      simde_mm256_set_epi32(INT32_C(-2079347795), INT32_C( -336455233), INT32_C( -761216501), INT32_C( 1784601451),
                            INT32_C(  386854500), INT32_C(  177253765), INT32_C(  797476379), INT32_C( -848434210)) },
    { simde_mm256_set_epi32(INT32_C(-1024397654), INT32_C(  273228891), INT32_C( -327343542), INT32_C(  941152347),
                            INT32_C(-1943801853), INT32_C( -571606335), INT32_C(-1600503753), INT32_C(    3657489)),
      simde_mm256_set_epi32(INT32_C(-1024397654), INT32_C(  273228891), INT32_C( -327343542), INT32_C(  941152347),
                            INT32_C(-1943801853), INT32_C( -571606335), INT32_C(-1600503753), INT32_C(    3657489)) },
    { simde_mm256_set_epi32(INT32_C(  392666418), INT32_C(-1141495552), INT32_C(-1265226558), INT32_C( -341769681),
                            INT32_C(  784056885), INT32_C(   -8791049), INT32_C( -255179514), INT32_C( 1505512077)),
      simde_mm256_set_epi32(INT32_C(  392666418), INT32_C(-1141495552), INT32_C(-1265226558), INT32_C( -341769681),
                            INT32_C(  784056885), INT32_C(   -8791049), INT32_C( -255179514), INT32_C( 1505512077)) },
    { simde_mm256_set_epi32(INT32_C(-2051731929), INT32_C( 1367430487), INT32_C( -142986568), INT32_C( 1381573702),
                            INT32_C( -856833247), INT32_C(  665026143), INT32_C( 1196790497), INT32_C( -507260176)),
      simde_mm256_set_epi32(INT32_C(-2051731929), INT32_C( 1367430487), INT32_C( -142986568), INT32_C( 1381573702),
                            INT32_C( -856833247), INT32_C(  665026143), INT32_C( 1196790497), INT32_C( -507260176)) },
    { simde_mm256_set_epi32(INT32_C( -878005657), INT32_C( -546637276), INT32_C(-1056155816), INT32_C(  259320365),
                            INT32_C(-1537222115), INT32_C(  895058753), INT32_C( -970999316), INT32_C(  224281618)),
      simde_mm256_set_epi32(INT32_C( -878005657), INT32_C( -546637276), INT32_C(-1056155816), INT32_C(  259320365),
                            INT32_C(-1537222115), INT32_C(  895058753), INT32_C( -970999316), INT32_C(  224281618)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256i r;
    simde_mm256_store_si256(&r, test_vec[i].a);
    simde_assert_m256i_i32(r, ==, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_storeu_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde_float32 r[8];
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  389.47), SIMDE_FLOAT32_C(  -23.53),
                         SIMDE_FLOAT32_C(  971.41), SIMDE_FLOAT32_C(  968.93),
                         SIMDE_FLOAT32_C(  388.52), SIMDE_FLOAT32_C(  400.32),
                         SIMDE_FLOAT32_C( -988.67), SIMDE_FLOAT32_C(  867.57)),
      { SIMDE_FLOAT32_C(  867.57), SIMDE_FLOAT32_C( -988.67),
        SIMDE_FLOAT32_C(  400.32), SIMDE_FLOAT32_C(  388.52),
        SIMDE_FLOAT32_C(  968.93), SIMDE_FLOAT32_C(  971.41),
        SIMDE_FLOAT32_C(  -23.53), SIMDE_FLOAT32_C(  389.47) } },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -904.63), SIMDE_FLOAT32_C(  373.49),
                         SIMDE_FLOAT32_C( -535.56), SIMDE_FLOAT32_C(  674.97),
                         SIMDE_FLOAT32_C( -321.09), SIMDE_FLOAT32_C( -666.72),
                         SIMDE_FLOAT32_C(  574.65), SIMDE_FLOAT32_C( -486.68)),
      { SIMDE_FLOAT32_C( -486.68), SIMDE_FLOAT32_C(  574.65),
        SIMDE_FLOAT32_C( -666.72), SIMDE_FLOAT32_C( -321.09),
        SIMDE_FLOAT32_C(  674.97), SIMDE_FLOAT32_C( -535.56),
        SIMDE_FLOAT32_C(  373.49), SIMDE_FLOAT32_C( -904.63) } },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  716.68), SIMDE_FLOAT32_C( -902.50),
                         SIMDE_FLOAT32_C(  689.19), SIMDE_FLOAT32_C(  562.96),
                         SIMDE_FLOAT32_C(  218.97), SIMDE_FLOAT32_C( -717.02),
                         SIMDE_FLOAT32_C(   50.08), SIMDE_FLOAT32_C(  473.03)),
      { SIMDE_FLOAT32_C(  473.03), SIMDE_FLOAT32_C(   50.08),
        SIMDE_FLOAT32_C( -717.02), SIMDE_FLOAT32_C(  218.97),
        SIMDE_FLOAT32_C(  562.96), SIMDE_FLOAT32_C(  689.19),
        SIMDE_FLOAT32_C( -902.50), SIMDE_FLOAT32_C(  716.68) } },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -748.65), SIMDE_FLOAT32_C( -546.25),
                         SIMDE_FLOAT32_C( -755.41), SIMDE_FLOAT32_C(  720.41),
                         SIMDE_FLOAT32_C(  469.62), SIMDE_FLOAT32_C( -529.37),
                         SIMDE_FLOAT32_C(   68.16), SIMDE_FLOAT32_C( -880.26)),
      { SIMDE_FLOAT32_C( -880.26), SIMDE_FLOAT32_C(   68.16),
        SIMDE_FLOAT32_C( -529.37), SIMDE_FLOAT32_C(  469.62),
        SIMDE_FLOAT32_C(  720.41), SIMDE_FLOAT32_C( -755.41),
        SIMDE_FLOAT32_C( -546.25), SIMDE_FLOAT32_C( -748.65) } },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -639.31), SIMDE_FLOAT32_C(  210.80),
                         SIMDE_FLOAT32_C( -481.50), SIMDE_FLOAT32_C( -773.33),
                         SIMDE_FLOAT32_C(  766.24), SIMDE_FLOAT32_C(  722.05),
                         SIMDE_FLOAT32_C(  569.99), SIMDE_FLOAT32_C(   78.20)),
      { SIMDE_FLOAT32_C(   78.20), SIMDE_FLOAT32_C(  569.99),
        SIMDE_FLOAT32_C(  722.05), SIMDE_FLOAT32_C(  766.24),
        SIMDE_FLOAT32_C( -773.33), SIMDE_FLOAT32_C( -481.50),
        SIMDE_FLOAT32_C(  210.80), SIMDE_FLOAT32_C( -639.31) } },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  219.96), SIMDE_FLOAT32_C( -967.95),
                         SIMDE_FLOAT32_C( -966.73), SIMDE_FLOAT32_C( -375.54),
                         SIMDE_FLOAT32_C( -872.08), SIMDE_FLOAT32_C( -211.68),
                         SIMDE_FLOAT32_C(  797.84), SIMDE_FLOAT32_C(  819.26)),
      { SIMDE_FLOAT32_C(  819.26), SIMDE_FLOAT32_C(  797.84),
        SIMDE_FLOAT32_C( -211.68), SIMDE_FLOAT32_C( -872.08),
        SIMDE_FLOAT32_C( -375.54), SIMDE_FLOAT32_C( -966.73),
        SIMDE_FLOAT32_C( -967.95), SIMDE_FLOAT32_C(  219.96) } },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  601.98), SIMDE_FLOAT32_C( -827.42),
                         SIMDE_FLOAT32_C(  747.06), SIMDE_FLOAT32_C( -914.70),
                         SIMDE_FLOAT32_C(  111.41), SIMDE_FLOAT32_C(  873.12),
                         SIMDE_FLOAT32_C(  763.60), SIMDE_FLOAT32_C(  161.15)),
      { SIMDE_FLOAT32_C(  161.15), SIMDE_FLOAT32_C(  763.60),
        SIMDE_FLOAT32_C(  873.12), SIMDE_FLOAT32_C(  111.41),
        SIMDE_FLOAT32_C( -914.70), SIMDE_FLOAT32_C(  747.06),
        SIMDE_FLOAT32_C( -827.42), SIMDE_FLOAT32_C(  601.98) } },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  800.45), SIMDE_FLOAT32_C(  526.22),
                         SIMDE_FLOAT32_C(  670.34), SIMDE_FLOAT32_C(  433.87),
                         SIMDE_FLOAT32_C(  651.08), SIMDE_FLOAT32_C( -532.01),
                         SIMDE_FLOAT32_C( -619.94), SIMDE_FLOAT32_C(   88.39)),
      { SIMDE_FLOAT32_C(   88.39), SIMDE_FLOAT32_C( -619.94),
        SIMDE_FLOAT32_C( -532.01), SIMDE_FLOAT32_C(  651.08),
        SIMDE_FLOAT32_C(  433.87), SIMDE_FLOAT32_C(  670.34),
        SIMDE_FLOAT32_C(  526.22), SIMDE_FLOAT32_C(  800.45) } }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde_float32 r[8];
    simde_mm256_storeu_ps(r, test_vec[i].a);
    simde_assert_equal_vf32(sizeof(r) / sizeof(r[0]), r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_storeu_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256d a;
    simde_float64 r[4];
  } test_vec[8] = {
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -416.91), SIMDE_FLOAT64_C( -266.91),
                         SIMDE_FLOAT64_C(  400.77), SIMDE_FLOAT64_C(  614.06)),
      { SIMDE_FLOAT64_C(  614.06), SIMDE_FLOAT64_C(  400.77),
        SIMDE_FLOAT64_C( -266.91), SIMDE_FLOAT64_C( -416.91) } },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  -82.84), SIMDE_FLOAT64_C(  375.26),
                         SIMDE_FLOAT64_C( -316.62), SIMDE_FLOAT64_C(  608.04)),
      { SIMDE_FLOAT64_C(  608.04), SIMDE_FLOAT64_C( -316.62),
        SIMDE_FLOAT64_C(  375.26), SIMDE_FLOAT64_C(  -82.84) } },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  218.37), SIMDE_FLOAT64_C( -388.98),
                         SIMDE_FLOAT64_C( -164.15), SIMDE_FLOAT64_C(   66.39)),
      { SIMDE_FLOAT64_C(   66.39), SIMDE_FLOAT64_C( -164.15),
        SIMDE_FLOAT64_C( -388.98), SIMDE_FLOAT64_C(  218.37) } },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  414.66), SIMDE_FLOAT64_C(  373.86),
                         SIMDE_FLOAT64_C(  387.85), SIMDE_FLOAT64_C(  140.99)),
      { SIMDE_FLOAT64_C(  140.99), SIMDE_FLOAT64_C(  387.85),
        SIMDE_FLOAT64_C(  373.86), SIMDE_FLOAT64_C(  414.66) } },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  513.43), SIMDE_FLOAT64_C( -671.43),
                         SIMDE_FLOAT64_C( -383.59), SIMDE_FLOAT64_C(  476.58)),
      { SIMDE_FLOAT64_C(  476.58), SIMDE_FLOAT64_C( -383.59),
        SIMDE_FLOAT64_C( -671.43), SIMDE_FLOAT64_C(  513.43) } },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -620.74), SIMDE_FLOAT64_C(  593.91),
                         SIMDE_FLOAT64_C(  595.45), SIMDE_FLOAT64_C(  326.69)),
      { SIMDE_FLOAT64_C(  326.69), SIMDE_FLOAT64_C(  595.45),
        SIMDE_FLOAT64_C(  593.91), SIMDE_FLOAT64_C( -620.74) } },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  933.41), SIMDE_FLOAT64_C( -583.63),
                         SIMDE_FLOAT64_C(  451.59), SIMDE_FLOAT64_C(   17.38)),
      { SIMDE_FLOAT64_C(   17.38), SIMDE_FLOAT64_C(  451.59),
        SIMDE_FLOAT64_C( -583.63), SIMDE_FLOAT64_C(  933.41) } },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -951.90), SIMDE_FLOAT64_C(  -96.08),
                         SIMDE_FLOAT64_C( -475.76), SIMDE_FLOAT64_C( -920.22)),
      { SIMDE_FLOAT64_C( -920.22), SIMDE_FLOAT64_C( -475.76),
        SIMDE_FLOAT64_C(  -96.08), SIMDE_FLOAT64_C( -951.90) } }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde_float64 r[4];
    simde_mm256_storeu_pd(r, test_vec[i].a);
    simde_assert_equal_vf64(sizeof(r) / sizeof(r[0]), r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_storeu_si256(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256i a;
    simde__m256i r;
  } test_vec[8] = {
    { simde_mm256_set_epi32(INT32_C(-1690076372), INT32_C(  273159718), INT32_C(  661600261), INT32_C( -431509063),
                            INT32_C(-1410315245), INT32_C(  938478074), INT32_C( -325173074), INT32_C( -955068873)),
      simde_mm256_set_epi32(INT32_C(-1690076372), INT32_C(  273159718), INT32_C(  661600261), INT32_C( -431509063),
                            INT32_C(-1410315245), INT32_C(  938478074), INT32_C( -325173074), INT32_C( -955068873)) },
    { simde_mm256_set_epi32(INT32_C( 1349804757), INT32_C( -716302605), INT32_C( -407964159), INT32_C( 1438548072),
                            INT32_C(-1765250498), INT32_C(-1398568590), INT32_C( -166142303), INT32_C(-1616708423)),
      simde_mm256_set_epi32(INT32_C( 1349804757), INT32_C( -716302605), INT32_C( -407964159), INT32_C( 1438548072),
                            INT32_C(-1765250498), INT32_C(-1398568590), INT32_C( -166142303), INT32_C(-1616708423)) },
    { simde_mm256_set_epi32(INT32_C( 1299583779), INT32_C( 1018639695), INT32_C(  378838390), INT32_C(  823542835),
                            INT32_C(  107040332), INT32_C( 1160607838), INT32_C(-1073772085), INT32_C(  550633253)),
      simde_mm256_set_epi32(INT32_C( 1299583779), INT32_C( 1018639695), INT32_C(  378838390), INT32_C(  823542835),
                            INT32_C(  107040332), INT32_C( 1160607838), INT32_C(-1073772085), INT32_C(  550633253)) },
    { simde_mm256_set_epi32(INT32_C(-2020164947), INT32_C( 1097566074), INT32_C(  838709016), INT32_C(-1310900036),
                            INT32_C(  205435207), INT32_C(-1570208834), INT32_C( -866634640), INT32_C(-1469292111)),
      simde_mm256_set_epi32(INT32_C(-2020164947), INT32_C( 1097566074), INT32_C(  838709016), INT32_C(-1310900036),
                            INT32_C(  205435207), INT32_C(-1570208834), INT32_C( -866634640), INT32_C(-1469292111)) },
    { simde_mm256_set_epi32(INT32_C( 1996197805), INT32_C(-1742000211), INT32_C( -252812234), INT32_C(  126353816),
                            INT32_C(-1209789142), INT32_C(-1818044476), INT32_C(-1843734346), INT32_C( 1208980142)),
      simde_mm256_set_epi32(INT32_C( 1996197805), INT32_C(-1742000211), INT32_C( -252812234), INT32_C(  126353816),
                            INT32_C(-1209789142), INT32_C(-1818044476), INT32_C(-1843734346), INT32_C( 1208980142)) },
    { simde_mm256_set_epi32(INT32_C(  264233747), INT32_C(   65047959), INT32_C(-2078914587), INT32_C(  -76956293),
                            INT32_C(-1404669906), INT32_C(-1580100987), INT32_C(-1585720935), INT32_C( -962400296)),
      simde_mm256_set_epi32(INT32_C(  264233747), INT32_C(   65047959), INT32_C(-2078914587), INT32_C(  -76956293),
                            INT32_C(-1404669906), INT32_C(-1580100987), INT32_C(-1585720935), INT32_C( -962400296)) },
    { simde_mm256_set_epi32(INT32_C(-2048043478), INT32_C( -746745729), INT32_C(  515423412), INT32_C(-1288873149),
                            INT32_C(  -50167373), INT32_C(  751152155), INT32_C(   63560258), INT32_C(  839041982)),
      simde_mm256_set_epi32(INT32_C(-2048043478), INT32_C( -746745729), INT32_C(  515423412), INT32_C(-1288873149),
                            INT32_C(  -50167373), INT32_C(  751152155), INT32_C(   63560258), INT32_C(  839041982)) },
    { simde_mm256_set_epi32(INT32_C(-1066512345), INT32_C(-1608586608), INT32_C( 2001494396), INT32_C(  667109925),
                            INT32_C(  134968304), INT32_C(  154885492), INT32_C(  204100449), INT32_C(-2103566856)),
      simde_mm256_set_epi32(INT32_C(-1066512345), INT32_C(-1608586608), INT32_C( 2001494396), INT32_C(  667109925),
                            INT32_C(  134968304), INT32_C(  154885492), INT32_C(  204100449), INT32_C(-2103566856)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256i r;
    simde_mm256_storeu_si256(&r, test_vec[i].a);
    simde_assert_m256i_i32(r, ==, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_storeu2_m128d(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256d a;
    simde_float64 lo[2];
    simde_float64 hi[2];
  } test_vec[8] = {
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -194.98), SIMDE_FLOAT64_C(  916.70),
                         SIMDE_FLOAT64_C(  887.89), SIMDE_FLOAT64_C( -369.82)),
      { SIMDE_FLOAT64_C( -369.82), SIMDE_FLOAT64_C(  887.89) },
      { SIMDE_FLOAT64_C(  916.70), SIMDE_FLOAT64_C( -194.98) } },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -641.49), SIMDE_FLOAT64_C( -881.69),
                         SIMDE_FLOAT64_C(  627.53), SIMDE_FLOAT64_C(  575.62)),
      { SIMDE_FLOAT64_C(  575.62), SIMDE_FLOAT64_C(  627.53) },
      { SIMDE_FLOAT64_C( -881.69), SIMDE_FLOAT64_C( -641.49) } },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  518.30), SIMDE_FLOAT64_C( -433.95),
                         SIMDE_FLOAT64_C( -285.84), SIMDE_FLOAT64_C( -221.03)),
      { SIMDE_FLOAT64_C( -221.03), SIMDE_FLOAT64_C( -285.84) },
      { SIMDE_FLOAT64_C( -433.95), SIMDE_FLOAT64_C(  518.30) } },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -662.71), SIMDE_FLOAT64_C(  122.75),
                         SIMDE_FLOAT64_C( -172.81), SIMDE_FLOAT64_C(  852.48)),
      { SIMDE_FLOAT64_C(  852.48), SIMDE_FLOAT64_C( -172.81) },
      { SIMDE_FLOAT64_C(  122.75), SIMDE_FLOAT64_C( -662.71) } },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  223.39), SIMDE_FLOAT64_C(   81.02),
                         SIMDE_FLOAT64_C( -389.17), SIMDE_FLOAT64_C( -925.92)),
      { SIMDE_FLOAT64_C( -925.92), SIMDE_FLOAT64_C( -389.17) },
      { SIMDE_FLOAT64_C(   81.02), SIMDE_FLOAT64_C(  223.39) } },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -179.05), SIMDE_FLOAT64_C( -523.56),
                         SIMDE_FLOAT64_C( -888.14), SIMDE_FLOAT64_C( -890.71)),
      { SIMDE_FLOAT64_C( -890.71), SIMDE_FLOAT64_C( -888.14) },
      { SIMDE_FLOAT64_C( -523.56), SIMDE_FLOAT64_C( -179.05) } },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  495.30), SIMDE_FLOAT64_C(  776.16),
                         SIMDE_FLOAT64_C(  945.09), SIMDE_FLOAT64_C( -993.27)),
      { SIMDE_FLOAT64_C( -993.27), SIMDE_FLOAT64_C(  945.09) },
      { SIMDE_FLOAT64_C(  776.16), SIMDE_FLOAT64_C(  495.30) } },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -570.57), SIMDE_FLOAT64_C(  -54.05),
                         SIMDE_FLOAT64_C(   18.98), SIMDE_FLOAT64_C(  273.66)),
      { SIMDE_FLOAT64_C(  273.66), SIMDE_FLOAT64_C(   18.98) },
      { SIMDE_FLOAT64_C(  -54.05), SIMDE_FLOAT64_C( -570.57) } }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde_float64 lo[2];
    simde_float64 hi[2];
    simde_mm256_storeu2_m128d(hi, lo, test_vec[i].a);
    simde_assert_equal_vf64(sizeof(lo) / sizeof(lo[0]), lo, test_vec[i].lo, 1);
    simde_assert_equal_vf64(sizeof(hi) / sizeof(hi[0]), hi, test_vec[i].hi, 1);
  }

  return 0;
}

static int
test_simde_mm256_storeu2_m128(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde_float32 lo[4];
    simde_float32 hi[4];
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  443.79), SIMDE_FLOAT32_C( -943.66),
                         SIMDE_FLOAT32_C( -617.03), SIMDE_FLOAT32_C(  623.90),
                         SIMDE_FLOAT32_C(  762.13), SIMDE_FLOAT32_C( -191.81),
                         SIMDE_FLOAT32_C( -640.60), SIMDE_FLOAT32_C( -234.64)),
      { SIMDE_FLOAT32_C( -234.64), SIMDE_FLOAT32_C( -640.60),
        SIMDE_FLOAT32_C( -191.81), SIMDE_FLOAT32_C(  762.13) },
      { SIMDE_FLOAT32_C(  623.90), SIMDE_FLOAT32_C( -617.03),
        SIMDE_FLOAT32_C( -943.66), SIMDE_FLOAT32_C(  443.79) } },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  182.89), SIMDE_FLOAT32_C(  873.05),
                         SIMDE_FLOAT32_C( -272.49), SIMDE_FLOAT32_C(  736.89),
                         SIMDE_FLOAT32_C(  847.09), SIMDE_FLOAT32_C( -558.86),
                         SIMDE_FLOAT32_C(  408.24), SIMDE_FLOAT32_C(  859.69)),
      { SIMDE_FLOAT32_C(  859.69), SIMDE_FLOAT32_C(  408.24),
        SIMDE_FLOAT32_C( -558.86), SIMDE_FLOAT32_C(  847.09) },
      { SIMDE_FLOAT32_C(  736.89), SIMDE_FLOAT32_C( -272.49),
        SIMDE_FLOAT32_C(  873.05), SIMDE_FLOAT32_C(  182.89) } },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -136.90), SIMDE_FLOAT32_C(  907.77),
                         SIMDE_FLOAT32_C(  406.39), SIMDE_FLOAT32_C( -278.95),
                         SIMDE_FLOAT32_C( -644.43), SIMDE_FLOAT32_C( -382.39),
                         SIMDE_FLOAT32_C( -628.10), SIMDE_FLOAT32_C(  477.81)),
      { SIMDE_FLOAT32_C(  477.81), SIMDE_FLOAT32_C( -628.10),
        SIMDE_FLOAT32_C( -382.39), SIMDE_FLOAT32_C( -644.43) },
      { SIMDE_FLOAT32_C( -278.95), SIMDE_FLOAT32_C(  406.39),
        SIMDE_FLOAT32_C(  907.77), SIMDE_FLOAT32_C( -136.90) } },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -403.18), SIMDE_FLOAT32_C( -297.11),
                         SIMDE_FLOAT32_C( -839.59), SIMDE_FLOAT32_C(  925.44),
                         SIMDE_FLOAT32_C(   -4.12), SIMDE_FLOAT32_C(  223.77),
                         SIMDE_FLOAT32_C(  124.27), SIMDE_FLOAT32_C( -589.05)),
      { SIMDE_FLOAT32_C( -589.05), SIMDE_FLOAT32_C(  124.27),
        SIMDE_FLOAT32_C(  223.77), SIMDE_FLOAT32_C(   -4.12) },
      { SIMDE_FLOAT32_C(  925.44), SIMDE_FLOAT32_C( -839.59),
        SIMDE_FLOAT32_C( -297.11), SIMDE_FLOAT32_C( -403.18) } },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  375.51), SIMDE_FLOAT32_C(  712.93),
                         SIMDE_FLOAT32_C(  259.42), SIMDE_FLOAT32_C(  -11.11),
                         SIMDE_FLOAT32_C( -941.70), SIMDE_FLOAT32_C(  747.97),
                         SIMDE_FLOAT32_C( -604.59), SIMDE_FLOAT32_C(  959.68)),
      { SIMDE_FLOAT32_C(  959.68), SIMDE_FLOAT32_C( -604.59),
        SIMDE_FLOAT32_C(  747.97), SIMDE_FLOAT32_C( -941.70) },
      { SIMDE_FLOAT32_C(  -11.11), SIMDE_FLOAT32_C(  259.42),
        SIMDE_FLOAT32_C(  712.93), SIMDE_FLOAT32_C(  375.51) } },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  836.60), SIMDE_FLOAT32_C(  294.15),
                         SIMDE_FLOAT32_C( -609.69), SIMDE_FLOAT32_C( -302.95),
                         SIMDE_FLOAT32_C(   53.57), SIMDE_FLOAT32_C(  -19.22),
                         SIMDE_FLOAT32_C( -957.62), SIMDE_FLOAT32_C(  661.17)),
      { SIMDE_FLOAT32_C(  661.17), SIMDE_FLOAT32_C( -957.62),
        SIMDE_FLOAT32_C(  -19.22), SIMDE_FLOAT32_C(   53.57) },
      { SIMDE_FLOAT32_C( -302.95), SIMDE_FLOAT32_C( -609.69),
        SIMDE_FLOAT32_C(  294.15), SIMDE_FLOAT32_C(  836.60) } },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -436.80), SIMDE_FLOAT32_C( -424.39),
                         SIMDE_FLOAT32_C(  570.24), SIMDE_FLOAT32_C( -821.65),
                         SIMDE_FLOAT32_C( -881.33), SIMDE_FLOAT32_C( -593.81),
                         SIMDE_FLOAT32_C( -486.59), SIMDE_FLOAT32_C(  962.05)),
      { SIMDE_FLOAT32_C(  962.05), SIMDE_FLOAT32_C( -486.59),
        SIMDE_FLOAT32_C( -593.81), SIMDE_FLOAT32_C( -881.33) },
      { SIMDE_FLOAT32_C( -821.65), SIMDE_FLOAT32_C(  570.24),
        SIMDE_FLOAT32_C( -424.39), SIMDE_FLOAT32_C( -436.80) } },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -876.51), SIMDE_FLOAT32_C(  339.14),
                         SIMDE_FLOAT32_C(  805.13), SIMDE_FLOAT32_C(  -98.57),
                         SIMDE_FLOAT32_C(  486.75), SIMDE_FLOAT32_C( -826.76),
                         SIMDE_FLOAT32_C( -802.86), SIMDE_FLOAT32_C(  864.61)),
      { SIMDE_FLOAT32_C(  864.61), SIMDE_FLOAT32_C( -802.86),
        SIMDE_FLOAT32_C( -826.76), SIMDE_FLOAT32_C(  486.75) },
      { SIMDE_FLOAT32_C(  -98.57), SIMDE_FLOAT32_C(  805.13),
        SIMDE_FLOAT32_C(  339.14), SIMDE_FLOAT32_C( -876.51) } }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde_float32 lo[4];
    simde_float32 hi[4];
    simde_mm256_storeu2_m128(hi, lo, test_vec[i].a);
    simde_assert_equal_vf32(sizeof(lo) / sizeof(lo[0]), lo, test_vec[i].lo, 1);
    simde_assert_equal_vf32(sizeof(hi) / sizeof(hi[0]), hi, test_vec[i].hi, 1);
  }

  return 0;
}

static int
test_simde_mm256_storeu2_m128i(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256i a;
    simde__m128i lo;
    simde__m128i hi;
  } test_vec[8] = {
    { simde_mm256_set_epi32(INT32_C(  393618896), INT32_C(-2001591323), INT32_C(  571243540), INT32_C( -991131551),
                            INT32_C(-1628428871), INT32_C(-1785170070), INT32_C(-1344585991), INT32_C(  394549136)),
      simde_mm_set_epi32(INT32_C(-1628428871), INT32_C(-1785170070), INT32_C(-1344585991), INT32_C(  394549136)),
      simde_mm_set_epi32(INT32_C(  393618896), INT32_C(-2001591323), INT32_C(  571243540), INT32_C( -991131551)) },
    { simde_mm256_set_epi32(INT32_C(-1934140687), INT32_C(-1810421284), INT32_C( 1425686798), INT32_C( -866335309),
                            INT32_C(  -95249521), INT32_C( 1994067869), INT32_C( -221558182), INT32_C(-1252244061)),
      simde_mm_set_epi32(INT32_C(  -95249521), INT32_C( 1994067869), INT32_C( -221558182), INT32_C(-1252244061)),
      simde_mm_set_epi32(INT32_C(-1934140687), INT32_C(-1810421284), INT32_C( 1425686798), INT32_C( -866335309)) },
    { simde_mm256_set_epi32(INT32_C( -246697484), INT32_C(-1956819884), INT32_C(-1699719942), INT32_C( -979363348),
                            INT32_C( -887855577), INT32_C(-1489598373), INT32_C(  -35728240), INT32_C(-1964323946)),
      simde_mm_set_epi32(INT32_C( -887855577), INT32_C(-1489598373), INT32_C(  -35728240), INT32_C(-1964323946)),
      simde_mm_set_epi32(INT32_C( -246697484), INT32_C(-1956819884), INT32_C(-1699719942), INT32_C( -979363348)) },
    { simde_mm256_set_epi32(INT32_C( 1386381884), INT32_C(   37784267), INT32_C(-1684378143), INT32_C( -594239665),
                            INT32_C( 1400213774), INT32_C( -622529784), INT32_C(  401959227), INT32_C(  971273192)),
      simde_mm_set_epi32(INT32_C( 1400213774), INT32_C( -622529784), INT32_C(  401959227), INT32_C(  971273192)),
      simde_mm_set_epi32(INT32_C( 1386381884), INT32_C(   37784267), INT32_C(-1684378143), INT32_C( -594239665)) },
    { simde_mm256_set_epi32(INT32_C(-1612998305), INT32_C( 1288430921), INT32_C(-1609225142), INT32_C( -537331182),
                            INT32_C(-1310393347), INT32_C(-1547450104), INT32_C( 1731121387), INT32_C( 1158176208)),
      simde_mm_set_epi32(INT32_C(-1310393347), INT32_C(-1547450104), INT32_C( 1731121387), INT32_C( 1158176208)),
      simde_mm_set_epi32(INT32_C(-1612998305), INT32_C( 1288430921), INT32_C(-1609225142), INT32_C( -537331182)) },
    { simde_mm256_set_epi32(INT32_C(  853720407), INT32_C( 1963572434), INT32_C(-1461958617), INT32_C(    -948574),
                            INT32_C(  440127588), INT32_C( -575649939), INT32_C( -647922801), INT32_C( 1292269475)),
      simde_mm_set_epi32(INT32_C(  440127588), INT32_C( -575649939), INT32_C( -647922801), INT32_C( 1292269475)),
      simde_mm_set_epi32(INT32_C(  853720407), INT32_C( 1963572434), INT32_C(-1461958617), INT32_C(    -948574)) },
    { simde_mm256_set_epi32(INT32_C( 1035304658), INT32_C(-1477195307), INT32_C( 1255581892), INT32_C( -187826179),
                            INT32_C( -553614821), INT32_C(-1529210253), INT32_C(  524369675), INT32_C(-1409815299)),
      simde_mm_set_epi32(INT32_C( -553614821), INT32_C(-1529210253), INT32_C(  524369675), INT32_C(-1409815299)),
      simde_mm_set_epi32(INT32_C( 1035304658), INT32_C(-1477195307), INT32_C( 1255581892), INT32_C( -187826179)) },
    { simde_mm256_set_epi32(INT32_C(-1147733206), INT32_C(-1982126005), INT32_C( 1233979928), INT32_C(-1413154458),
                            INT32_C(   36276938), INT32_C(  -66222229), INT32_C(-1746900300), INT32_C(  533326126)),
      simde_mm_set_epi32(INT32_C(   36276938), INT32_C(  -66222229), INT32_C(-1746900300), INT32_C(  533326126)),
      simde_mm_set_epi32(INT32_C(-1147733206), INT32_C(-1982126005), INT32_C( 1233979928), INT32_C(-1413154458)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m128i lo, hi;
    simde_mm256_storeu2_m128i(&hi, &lo, test_vec[i].a);
    simde_test_x86_assert_equal_i32x4(lo, test_vec[i].lo);
    simde_test_x86_assert_equal_i32x4(hi, test_vec[i].hi);
  }

  return 0;
}

static int
test_simde_mm256_stream_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    SIMDE_ALIGN_LIKE_32(simde__m256) simde_float32 r[8];
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  256.09), SIMDE_FLOAT32_C(  768.79),
                         SIMDE_FLOAT32_C(  201.90), SIMDE_FLOAT32_C(  339.33),
                         SIMDE_FLOAT32_C(  957.46), SIMDE_FLOAT32_C(  728.44),
                         SIMDE_FLOAT32_C(   73.67), SIMDE_FLOAT32_C(  440.11)),
      { SIMDE_FLOAT32_C(  440.11), SIMDE_FLOAT32_C(   73.67),
        SIMDE_FLOAT32_C(  728.44), SIMDE_FLOAT32_C(  957.46),
        SIMDE_FLOAT32_C(  339.33), SIMDE_FLOAT32_C(  201.90),
        SIMDE_FLOAT32_C(  768.79), SIMDE_FLOAT32_C(  256.09) } },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  -72.04), SIMDE_FLOAT32_C( -425.25),
                         SIMDE_FLOAT32_C(  471.77), SIMDE_FLOAT32_C(  976.75),
                         SIMDE_FLOAT32_C( -510.20), SIMDE_FLOAT32_C(  696.54),
                         SIMDE_FLOAT32_C( -843.54), SIMDE_FLOAT32_C( -868.41)),
      { SIMDE_FLOAT32_C( -868.41), SIMDE_FLOAT32_C( -843.54),
        SIMDE_FLOAT32_C(  696.54), SIMDE_FLOAT32_C( -510.20),
        SIMDE_FLOAT32_C(  976.75), SIMDE_FLOAT32_C(  471.77),
        SIMDE_FLOAT32_C( -425.25), SIMDE_FLOAT32_C(  -72.04) } },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -304.23), SIMDE_FLOAT32_C(  477.48),
                         SIMDE_FLOAT32_C(  356.58), SIMDE_FLOAT32_C(  955.81),
                         SIMDE_FLOAT32_C(  999.99), SIMDE_FLOAT32_C(  487.33),
                         SIMDE_FLOAT32_C(  633.61), SIMDE_FLOAT32_C(  518.11)),
      { SIMDE_FLOAT32_C(  518.11), SIMDE_FLOAT32_C(  633.61),
        SIMDE_FLOAT32_C(  487.33), SIMDE_FLOAT32_C(  999.99),
        SIMDE_FLOAT32_C(  955.81), SIMDE_FLOAT32_C(  356.58),
        SIMDE_FLOAT32_C(  477.48), SIMDE_FLOAT32_C( -304.23) } },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   88.04), SIMDE_FLOAT32_C( -296.25),
                         SIMDE_FLOAT32_C(  948.33), SIMDE_FLOAT32_C( -584.17),
                         SIMDE_FLOAT32_C( -796.11), SIMDE_FLOAT32_C(  -38.84),
                         SIMDE_FLOAT32_C( -706.11), SIMDE_FLOAT32_C(  347.32)),
      { SIMDE_FLOAT32_C(  347.32), SIMDE_FLOAT32_C( -706.11),
        SIMDE_FLOAT32_C(  -38.84), SIMDE_FLOAT32_C( -796.11),
        SIMDE_FLOAT32_C( -584.17), SIMDE_FLOAT32_C(  948.33),
        SIMDE_FLOAT32_C( -296.25), SIMDE_FLOAT32_C(   88.04) } },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -143.76), SIMDE_FLOAT32_C(  504.36),
                         SIMDE_FLOAT32_C( -154.12), SIMDE_FLOAT32_C(  375.43),
                         SIMDE_FLOAT32_C( -307.18), SIMDE_FLOAT32_C(  256.93),
                         SIMDE_FLOAT32_C(   78.86), SIMDE_FLOAT32_C(  526.77)),
      { SIMDE_FLOAT32_C(  526.77), SIMDE_FLOAT32_C(   78.86),
        SIMDE_FLOAT32_C(  256.93), SIMDE_FLOAT32_C( -307.18),
        SIMDE_FLOAT32_C(  375.43), SIMDE_FLOAT32_C( -154.12),
        SIMDE_FLOAT32_C(  504.36), SIMDE_FLOAT32_C( -143.76) } },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  597.82), SIMDE_FLOAT32_C(  697.68),
                         SIMDE_FLOAT32_C( -285.13), SIMDE_FLOAT32_C(  354.51),
                         SIMDE_FLOAT32_C(   41.32), SIMDE_FLOAT32_C( -445.78),
                         SIMDE_FLOAT32_C( -483.17), SIMDE_FLOAT32_C( -727.28)),
      { SIMDE_FLOAT32_C( -727.28), SIMDE_FLOAT32_C( -483.17),
        SIMDE_FLOAT32_C( -445.78), SIMDE_FLOAT32_C(   41.32),
        SIMDE_FLOAT32_C(  354.51), SIMDE_FLOAT32_C( -285.13),
        SIMDE_FLOAT32_C(  697.68), SIMDE_FLOAT32_C(  597.82) } },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -441.93), SIMDE_FLOAT32_C( -382.04),
                         SIMDE_FLOAT32_C(  392.67), SIMDE_FLOAT32_C(  690.10),
                         SIMDE_FLOAT32_C(  -30.26), SIMDE_FLOAT32_C( -968.87),
                         SIMDE_FLOAT32_C( -246.46), SIMDE_FLOAT32_C(  625.73)),
      { SIMDE_FLOAT32_C(  625.73), SIMDE_FLOAT32_C( -246.46),
        SIMDE_FLOAT32_C( -968.87), SIMDE_FLOAT32_C(  -30.26),
        SIMDE_FLOAT32_C(  690.10), SIMDE_FLOAT32_C(  392.67),
        SIMDE_FLOAT32_C( -382.04), SIMDE_FLOAT32_C( -441.93) } },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  442.97), SIMDE_FLOAT32_C(  -20.37),
                         SIMDE_FLOAT32_C(  758.01), SIMDE_FLOAT32_C( -507.47),
                         SIMDE_FLOAT32_C(  529.68), SIMDE_FLOAT32_C( -598.71),
                         SIMDE_FLOAT32_C(  952.31), SIMDE_FLOAT32_C( -565.36)),
      { SIMDE_FLOAT32_C( -565.36), SIMDE_FLOAT32_C(  952.31),
        SIMDE_FLOAT32_C( -598.71), SIMDE_FLOAT32_C(  529.68),
        SIMDE_FLOAT32_C( -507.47), SIMDE_FLOAT32_C(  758.01),
        SIMDE_FLOAT32_C(  -20.37), SIMDE_FLOAT32_C(  442.97) } }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    SIMDE_ALIGN_LIKE_32(simde__m256) simde_float32 r[8];
    simde_mm256_stream_ps(r, test_vec[i].a);
    simde_assert_equal_vf32(sizeof(r) / sizeof(r[0]), r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_stream_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256d a;
    SIMDE_ALIGN_LIKE_32(simde__m256d) simde_float64 r[4];
  } test_vec[8] = {
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  771.84), SIMDE_FLOAT64_C(  578.19),
                         SIMDE_FLOAT64_C(  287.63), SIMDE_FLOAT64_C(  196.16)),
      { SIMDE_FLOAT64_C(  196.16), SIMDE_FLOAT64_C(  287.63),
        SIMDE_FLOAT64_C(  578.19), SIMDE_FLOAT64_C(  771.84) } },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -941.73), SIMDE_FLOAT64_C( -687.45),
                         SIMDE_FLOAT64_C( -865.09), SIMDE_FLOAT64_C(  586.03)),
      { SIMDE_FLOAT64_C(  586.03), SIMDE_FLOAT64_C( -865.09),
        SIMDE_FLOAT64_C( -687.45), SIMDE_FLOAT64_C( -941.73) } },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -342.90), SIMDE_FLOAT64_C( -658.61),
                         SIMDE_FLOAT64_C(  882.05), SIMDE_FLOAT64_C( -607.89)),
      { SIMDE_FLOAT64_C( -607.89), SIMDE_FLOAT64_C(  882.05),
        SIMDE_FLOAT64_C( -658.61), SIMDE_FLOAT64_C( -342.90) } },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -248.91), SIMDE_FLOAT64_C( -473.20),
                         SIMDE_FLOAT64_C(  170.76), SIMDE_FLOAT64_C( -407.02)),
      { SIMDE_FLOAT64_C( -407.02), SIMDE_FLOAT64_C(  170.76),
        SIMDE_FLOAT64_C( -473.20), SIMDE_FLOAT64_C( -248.91) } },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  181.69), SIMDE_FLOAT64_C(  697.67),
                         SIMDE_FLOAT64_C(  911.25), SIMDE_FLOAT64_C( -299.04)),
      { SIMDE_FLOAT64_C( -299.04), SIMDE_FLOAT64_C(  911.25),
        SIMDE_FLOAT64_C(  697.67), SIMDE_FLOAT64_C(  181.69) } },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -630.92), SIMDE_FLOAT64_C( -612.42),
                         SIMDE_FLOAT64_C(  645.34), SIMDE_FLOAT64_C( -379.90)),
      { SIMDE_FLOAT64_C( -379.90), SIMDE_FLOAT64_C(  645.34),
        SIMDE_FLOAT64_C( -612.42), SIMDE_FLOAT64_C( -630.92) } },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -339.32), SIMDE_FLOAT64_C(  404.98),
                         SIMDE_FLOAT64_C( -361.76), SIMDE_FLOAT64_C(  391.60)),
      { SIMDE_FLOAT64_C(  391.60), SIMDE_FLOAT64_C( -361.76),
        SIMDE_FLOAT64_C(  404.98), SIMDE_FLOAT64_C( -339.32) } },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  714.72), SIMDE_FLOAT64_C(  997.58),
                         SIMDE_FLOAT64_C(  807.47), SIMDE_FLOAT64_C(  948.80)),
      { SIMDE_FLOAT64_C(  948.80), SIMDE_FLOAT64_C(  807.47),
        SIMDE_FLOAT64_C(  997.58), SIMDE_FLOAT64_C(  714.72) } }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    SIMDE_ALIGN_LIKE_32(simde__m256d) simde_float64 r[4];
    simde_mm256_stream_pd(r, test_vec[i].a);
    simde_assert_equal_vf64(sizeof(r) / sizeof(r[0]), r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_stream_si256(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256i a;
    simde__m256i r;
  } test_vec[8] = {
    { simde_mm256_set_epi32(INT32_C( -495387953), INT32_C( 1389422093), INT32_C( 1549613541), INT32_C( 1621396930),
                            INT32_C(  431885981), INT32_C( -495493978), INT32_C(  957980176), INT32_C( -756622382)),
      simde_mm256_set_epi32(INT32_C( -495387953), INT32_C( 1389422093), INT32_C( 1549613541), INT32_C( 1621396930),
                            INT32_C(  431885981), INT32_C( -495493978), INT32_C(  957980176), INT32_C( -756622382)) },
    { simde_mm256_set_epi32(INT32_C(-1537563225), INT32_C( -111752931), INT32_C( 2068479386), INT32_C( 2004807479),
                            INT32_C( 2110162316), INT32_C( 1854708769), INT32_C(  -83811592), INT32_C( -892599604)),
      simde_mm256_set_epi32(INT32_C(-1537563225), INT32_C( -111752931), INT32_C( 2068479386), INT32_C( 2004807479),
                            INT32_C( 2110162316), INT32_C( 1854708769), INT32_C(  -83811592), INT32_C( -892599604)) },
    { simde_mm256_set_epi32(INT32_C( 1682126570), INT32_C(  340006289), INT32_C(  149083722), INT32_C( 1734045351),
                            INT32_C(-1572830580), INT32_C( 1824421914), INT32_C( 1423738129), INT32_C( -492096848)),
      simde_mm256_set_epi32(INT32_C( 1682126570), INT32_C(  340006289), INT32_C(  149083722), INT32_C( 1734045351),
                            INT32_C(-1572830580), INT32_C( 1824421914), INT32_C( 1423738129), INT32_C( -492096848)) },
    { simde_mm256_set_epi32(INT32_C(-2079347795), INT32_C( -336455233), INT32_C( -761216501), INT32_C( 1784601451),
                            INT32_C(  386854500), INT32_C(  177253765), INT32_C(  797476379), INT32_C( -848434210)),
      simde_mm256_set_epi32(INT32_C(-2079347795), INT32_C( -336455233), INT32_C( -761216501), INT32_C( 1784601451),
                            INT32_C(  386854500), INT32_C(  177253765), INT32_C(  797476379), INT32_C( -848434210)) },
    { simde_mm256_set_epi32(INT32_C(-1024397654), INT32_C(  273228891), INT32_C( -327343542), INT32_C(  941152347),
                            INT32_C(-1943801853), INT32_C( -571606335), INT32_C(-1600503753), INT32_C(    3657489)),
      simde_mm256_set_epi32(INT32_C(-1024397654), INT32_C(  273228891), INT32_C( -327343542), INT32_C(  941152347),
                            INT32_C(-1943801853), INT32_C( -571606335), INT32_C(-1600503753), INT32_C(    3657489)) },
    { simde_mm256_set_epi32(INT32_C(  392666418), INT32_C(-1141495552), INT32_C(-1265226558), INT32_C( -341769681),
                            INT32_C(  784056885), INT32_C(   -8791049), INT32_C( -255179514), INT32_C( 1505512077)),
      simde_mm256_set_epi32(INT32_C(  392666418), INT32_C(-1141495552), INT32_C(-1265226558), INT32_C( -341769681),
                            INT32_C(  784056885), INT32_C(   -8791049), INT32_C( -255179514), INT32_C( 1505512077)) },
    { simde_mm256_set_epi32(INT32_C(-2051731929), INT32_C( 1367430487), INT32_C( -142986568), INT32_C( 1381573702),
                            INT32_C( -856833247), INT32_C(  665026143), INT32_C( 1196790497), INT32_C( -507260176)),
      simde_mm256_set_epi32(INT32_C(-2051731929), INT32_C( 1367430487), INT32_C( -142986568), INT32_C( 1381573702),
                            INT32_C( -856833247), INT32_C(  665026143), INT32_C( 1196790497), INT32_C( -507260176)) },
    { simde_mm256_set_epi32(INT32_C( -878005657), INT32_C( -546637276), INT32_C(-1056155816), INT32_C(  259320365),
                            INT32_C(-1537222115), INT32_C(  895058753), INT32_C( -970999316), INT32_C(  224281618)),
      simde_mm256_set_epi32(INT32_C( -878005657), INT32_C( -546637276), INT32_C(-1056155816), INT32_C(  259320365),
                            INT32_C(-1537222115), INT32_C(  895058753), INT32_C( -970999316), INT32_C(  224281618)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256i r;
    simde_mm256_stream_si256(&r, test_vec[i].a);
    simde_assert_m256i_i32(r, ==, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_sub_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde__m256 b;
    simde__m256 r;
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  895.54), SIMDE_FLOAT32_C( -418.39),
                         SIMDE_FLOAT32_C( -695.61), SIMDE_FLOAT32_C( -703.30),
                         SIMDE_FLOAT32_C( -607.73), SIMDE_FLOAT32_C(  485.65),
                         SIMDE_FLOAT32_C(  755.18), SIMDE_FLOAT32_C(   41.77)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -396.67), SIMDE_FLOAT32_C( -773.83),
                         SIMDE_FLOAT32_C( -672.24), SIMDE_FLOAT32_C(  931.02),
                         SIMDE_FLOAT32_C( -562.65), SIMDE_FLOAT32_C( -945.51),
                         SIMDE_FLOAT32_C(  938.88), SIMDE_FLOAT32_C(  508.62)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( 1292.21), SIMDE_FLOAT32_C(  355.44),
                         SIMDE_FLOAT32_C(  -23.37), SIMDE_FLOAT32_C(-1634.32),
                         SIMDE_FLOAT32_C(  -45.08), SIMDE_FLOAT32_C( 1431.16),
                         SIMDE_FLOAT32_C( -183.70), SIMDE_FLOAT32_C( -466.85)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -470.99), SIMDE_FLOAT32_C( -584.82),
                         SIMDE_FLOAT32_C(  594.88), SIMDE_FLOAT32_C( -970.99),
                         SIMDE_FLOAT32_C(  -61.62), SIMDE_FLOAT32_C(    8.56),
                         SIMDE_FLOAT32_C( -149.02), SIMDE_FLOAT32_C(  992.11)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -290.52), SIMDE_FLOAT32_C(  724.83),
                         SIMDE_FLOAT32_C(  -46.66), SIMDE_FLOAT32_C( -959.87),
                         SIMDE_FLOAT32_C( -350.83), SIMDE_FLOAT32_C( -742.59),
                         SIMDE_FLOAT32_C( -154.10), SIMDE_FLOAT32_C(  297.07)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -180.47), SIMDE_FLOAT32_C(-1309.65),
                         SIMDE_FLOAT32_C(  641.54), SIMDE_FLOAT32_C(  -11.12),
                         SIMDE_FLOAT32_C(  289.21), SIMDE_FLOAT32_C(  751.15),
                         SIMDE_FLOAT32_C(    5.08), SIMDE_FLOAT32_C(  695.04)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -970.60), SIMDE_FLOAT32_C(  -80.01),
                         SIMDE_FLOAT32_C(  -52.72), SIMDE_FLOAT32_C(  126.54),
                         SIMDE_FLOAT32_C( -671.14), SIMDE_FLOAT32_C( -767.97),
                         SIMDE_FLOAT32_C( -218.43), SIMDE_FLOAT32_C(  532.20)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  605.24), SIMDE_FLOAT32_C(  -39.09),
                         SIMDE_FLOAT32_C(  863.80), SIMDE_FLOAT32_C( -150.76),
                         SIMDE_FLOAT32_C( -836.71), SIMDE_FLOAT32_C(  584.17),
                         SIMDE_FLOAT32_C(  207.01), SIMDE_FLOAT32_C(  321.52)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(-1575.84), SIMDE_FLOAT32_C(  -40.92),
                         SIMDE_FLOAT32_C( -916.52), SIMDE_FLOAT32_C(  277.30),
                         SIMDE_FLOAT32_C(  165.57), SIMDE_FLOAT32_C(-1352.14),
                         SIMDE_FLOAT32_C( -425.44), SIMDE_FLOAT32_C(  210.68)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  342.27), SIMDE_FLOAT32_C( -662.10),
                         SIMDE_FLOAT32_C( -934.33), SIMDE_FLOAT32_C( -742.68),
                         SIMDE_FLOAT32_C( -973.49), SIMDE_FLOAT32_C(   11.46),
                         SIMDE_FLOAT32_C(  125.25), SIMDE_FLOAT32_C( -964.36)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  604.39), SIMDE_FLOAT32_C(  789.04),
                         SIMDE_FLOAT32_C( -177.72), SIMDE_FLOAT32_C(  -86.37),
                         SIMDE_FLOAT32_C( -125.89), SIMDE_FLOAT32_C(  264.15),
                         SIMDE_FLOAT32_C(  690.78), SIMDE_FLOAT32_C(  529.89)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -262.12), SIMDE_FLOAT32_C(-1451.14),
                         SIMDE_FLOAT32_C( -756.61), SIMDE_FLOAT32_C( -656.31),
                         SIMDE_FLOAT32_C( -847.60), SIMDE_FLOAT32_C( -252.69),
                         SIMDE_FLOAT32_C( -565.53), SIMDE_FLOAT32_C(-1494.25)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   25.31), SIMDE_FLOAT32_C(  539.95),
                         SIMDE_FLOAT32_C(  423.13), SIMDE_FLOAT32_C(  781.76),
                         SIMDE_FLOAT32_C(  417.34), SIMDE_FLOAT32_C(  842.38),
                         SIMDE_FLOAT32_C( -253.59), SIMDE_FLOAT32_C( -916.97)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  772.83), SIMDE_FLOAT32_C(  517.22),
                         SIMDE_FLOAT32_C(  908.12), SIMDE_FLOAT32_C( -320.25),
                         SIMDE_FLOAT32_C(  304.42), SIMDE_FLOAT32_C( -692.34),
                         SIMDE_FLOAT32_C( -714.07), SIMDE_FLOAT32_C( -793.24)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -747.52), SIMDE_FLOAT32_C(   22.73),
                         SIMDE_FLOAT32_C( -484.99), SIMDE_FLOAT32_C( 1102.01),
                         SIMDE_FLOAT32_C(  112.92), SIMDE_FLOAT32_C( 1534.72),
                         SIMDE_FLOAT32_C(  460.48), SIMDE_FLOAT32_C( -123.73)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  393.40), SIMDE_FLOAT32_C( -394.71),
                         SIMDE_FLOAT32_C(  -86.25), SIMDE_FLOAT32_C(  978.22),
                         SIMDE_FLOAT32_C(  983.88), SIMDE_FLOAT32_C(  704.75),
                         SIMDE_FLOAT32_C(  982.77), SIMDE_FLOAT32_C(  368.33)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -436.22), SIMDE_FLOAT32_C( -898.24),
                         SIMDE_FLOAT32_C( -332.96), SIMDE_FLOAT32_C(  552.30),
                         SIMDE_FLOAT32_C(  889.88), SIMDE_FLOAT32_C( -709.13),
                         SIMDE_FLOAT32_C( -308.74), SIMDE_FLOAT32_C(  240.99)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  829.62), SIMDE_FLOAT32_C(  503.53),
                         SIMDE_FLOAT32_C(  246.71), SIMDE_FLOAT32_C(  425.92),
                         SIMDE_FLOAT32_C(   94.00), SIMDE_FLOAT32_C( 1413.88),
                         SIMDE_FLOAT32_C( 1291.51), SIMDE_FLOAT32_C(  127.34)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  338.33), SIMDE_FLOAT32_C(  742.66),
                         SIMDE_FLOAT32_C( -662.36), SIMDE_FLOAT32_C(  193.25),
                         SIMDE_FLOAT32_C( -791.36), SIMDE_FLOAT32_C(  864.59),
                         SIMDE_FLOAT32_C( -234.67), SIMDE_FLOAT32_C( -697.85)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -154.56), SIMDE_FLOAT32_C(  577.30),
                         SIMDE_FLOAT32_C(  801.65), SIMDE_FLOAT32_C(  520.59),
                         SIMDE_FLOAT32_C( -742.87), SIMDE_FLOAT32_C( -868.99),
                         SIMDE_FLOAT32_C(   16.41), SIMDE_FLOAT32_C(  377.46)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  492.89), SIMDE_FLOAT32_C(  165.36),
                         SIMDE_FLOAT32_C(-1464.01), SIMDE_FLOAT32_C( -327.34),
                         SIMDE_FLOAT32_C(  -48.49), SIMDE_FLOAT32_C( 1733.58),
                         SIMDE_FLOAT32_C( -251.08), SIMDE_FLOAT32_C(-1075.31)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  301.89), SIMDE_FLOAT32_C(  110.31),
                         SIMDE_FLOAT32_C( -669.00), SIMDE_FLOAT32_C( -603.43),
                         SIMDE_FLOAT32_C(  552.74), SIMDE_FLOAT32_C(  111.39),
                         SIMDE_FLOAT32_C(  485.92), SIMDE_FLOAT32_C(   89.23)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  222.86), SIMDE_FLOAT32_C(  451.25),
                         SIMDE_FLOAT32_C(  422.47), SIMDE_FLOAT32_C( -182.63),
                         SIMDE_FLOAT32_C( -845.87), SIMDE_FLOAT32_C( -863.72),
                         SIMDE_FLOAT32_C( -400.45), SIMDE_FLOAT32_C(  543.79)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   79.03), SIMDE_FLOAT32_C( -340.94),
                         SIMDE_FLOAT32_C(-1091.47), SIMDE_FLOAT32_C( -420.80),
                         SIMDE_FLOAT32_C( 1398.61), SIMDE_FLOAT32_C(  975.11),
                         SIMDE_FLOAT32_C(  886.37), SIMDE_FLOAT32_C( -454.56)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256 r = simde_mm256_sub_ps(test_vec[i].a, test_vec[i].b);
    simde_assert_m256_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_sub_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256d a;
    simde__m256d b;
    simde__m256d r;
  } test_vec[8] = {
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -472.29), SIMDE_FLOAT64_C(  818.19),
                         SIMDE_FLOAT64_C( -310.33), SIMDE_FLOAT64_C( -307.48)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  349.11), SIMDE_FLOAT64_C(  984.47),
                         SIMDE_FLOAT64_C(  184.55), SIMDE_FLOAT64_C(  274.42)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -821.40), SIMDE_FLOAT64_C( -166.28),
                         SIMDE_FLOAT64_C( -494.88), SIMDE_FLOAT64_C( -581.90)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -992.33), SIMDE_FLOAT64_C( -503.60),
                         SIMDE_FLOAT64_C( -575.41), SIMDE_FLOAT64_C(  497.58)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  203.77), SIMDE_FLOAT64_C( -296.83),
                         SIMDE_FLOAT64_C( -970.76), SIMDE_FLOAT64_C(  837.97)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(-1196.10), SIMDE_FLOAT64_C( -206.77),
                         SIMDE_FLOAT64_C(  395.35), SIMDE_FLOAT64_C( -340.39)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  691.42), SIMDE_FLOAT64_C(  124.38),
                         SIMDE_FLOAT64_C( -117.46), SIMDE_FLOAT64_C(  -44.64)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  865.33), SIMDE_FLOAT64_C( -985.94),
                         SIMDE_FLOAT64_C( -427.40), SIMDE_FLOAT64_C(  247.61)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -173.91), SIMDE_FLOAT64_C( 1110.32),
                         SIMDE_FLOAT64_C(  309.94), SIMDE_FLOAT64_C( -292.25)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -811.54), SIMDE_FLOAT64_C( -682.27),
                         SIMDE_FLOAT64_C( -138.35), SIMDE_FLOAT64_C(  149.95)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -356.84), SIMDE_FLOAT64_C( -870.72),
                         SIMDE_FLOAT64_C(  278.05), SIMDE_FLOAT64_C(  725.66)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -454.70), SIMDE_FLOAT64_C(  188.45),
                         SIMDE_FLOAT64_C( -416.40), SIMDE_FLOAT64_C( -575.71)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -372.68), SIMDE_FLOAT64_C( -973.76),
                         SIMDE_FLOAT64_C( -655.95), SIMDE_FLOAT64_C(  -13.49)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  132.41), SIMDE_FLOAT64_C( -317.72),
                         SIMDE_FLOAT64_C(  685.31), SIMDE_FLOAT64_C( -205.90)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -505.09), SIMDE_FLOAT64_C( -656.04),
                         SIMDE_FLOAT64_C(-1341.26), SIMDE_FLOAT64_C(  192.41)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -904.59), SIMDE_FLOAT64_C(  450.57),
                         SIMDE_FLOAT64_C(  462.97), SIMDE_FLOAT64_C( -213.02)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  256.78), SIMDE_FLOAT64_C(  248.73),
                         SIMDE_FLOAT64_C( -329.49), SIMDE_FLOAT64_C(  126.76)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(-1161.37), SIMDE_FLOAT64_C(  201.84),
                         SIMDE_FLOAT64_C(  792.46), SIMDE_FLOAT64_C( -339.78)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  425.49), SIMDE_FLOAT64_C( -968.50),
                         SIMDE_FLOAT64_C( -130.01), SIMDE_FLOAT64_C(  908.84)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  529.10), SIMDE_FLOAT64_C(   40.66),
                         SIMDE_FLOAT64_C(  677.87), SIMDE_FLOAT64_C( -349.20)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -103.61), SIMDE_FLOAT64_C(-1009.16),
                         SIMDE_FLOAT64_C( -807.88), SIMDE_FLOAT64_C( 1258.04)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  385.72), SIMDE_FLOAT64_C(  135.17),
                         SIMDE_FLOAT64_C( -935.76), SIMDE_FLOAT64_C(  307.38)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  799.62), SIMDE_FLOAT64_C(  219.20),
                         SIMDE_FLOAT64_C(  812.15), SIMDE_FLOAT64_C(   33.47)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -413.90), SIMDE_FLOAT64_C(  -84.03),
                         SIMDE_FLOAT64_C(-1747.91), SIMDE_FLOAT64_C(  273.91)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256d r = simde_mm256_sub_pd(test_vec[i].a, test_vec[i].b);
    simde_assert_m256d_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_undefined_ps(SIMDE_MUNIT_TEST_ARGS) {
  simde__m256 r;
  simde__m256 e = simde_mm256_setzero_ps();

  r = simde_mm256_undefined_ps();
  r = simde_mm256_xor_ps(r, r);

  simde_assert_m256_close(r, e, 1);

  return 0;
}

static int
test_simde_mm256_undefined_pd(SIMDE_MUNIT_TEST_ARGS) {
  simde__m256d r;
  simde__m256d e = simde_mm256_setzero_pd();

  r = simde_mm256_undefined_pd();
  r = simde_mm256_xor_pd(r, r);

  simde_assert_m256d_close(r, e, 1);

  return 0;
}

static int
test_simde_mm256_undefined_si256(SIMDE_MUNIT_TEST_ARGS) {
  simde__m256d r;
  simde__m256d e = simde_mm256_setzero_pd();

  r = simde_mm256_undefined_pd();
  r = simde_mm256_xor_pd(r, r);

  simde_assert_m256i_equal(simde_mm256_castpd_si256(r), simde_mm256_castpd_si256(e));
  return 0;
}

static int
test_simde_mm256_unpackhi_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde__m256 b;
    simde__m256 r;
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  807.72), SIMDE_FLOAT32_C(  100.14),
                         SIMDE_FLOAT32_C(  187.05), SIMDE_FLOAT32_C( -298.31),
                         SIMDE_FLOAT32_C(  -34.37), SIMDE_FLOAT32_C(  964.34),
                         SIMDE_FLOAT32_C(  191.73), SIMDE_FLOAT32_C(  188.36)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -734.87), SIMDE_FLOAT32_C( -828.29),
                         SIMDE_FLOAT32_C( -280.75), SIMDE_FLOAT32_C(  955.06),
                         SIMDE_FLOAT32_C(  436.60), SIMDE_FLOAT32_C( -584.60),
                         SIMDE_FLOAT32_C(  158.18), SIMDE_FLOAT32_C(   60.28)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -734.87), SIMDE_FLOAT32_C(  807.72),
                         SIMDE_FLOAT32_C( -828.29), SIMDE_FLOAT32_C(  100.14),
                         SIMDE_FLOAT32_C(  436.60), SIMDE_FLOAT32_C(  -34.37),
                         SIMDE_FLOAT32_C( -584.60), SIMDE_FLOAT32_C(  964.34)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -931.86), SIMDE_FLOAT32_C( -611.79),
                         SIMDE_FLOAT32_C( -274.19), SIMDE_FLOAT32_C( -226.15),
                         SIMDE_FLOAT32_C( -145.52), SIMDE_FLOAT32_C(  128.94),
                         SIMDE_FLOAT32_C( -102.01), SIMDE_FLOAT32_C( -500.66)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -438.58), SIMDE_FLOAT32_C( -771.61),
                         SIMDE_FLOAT32_C(  661.02), SIMDE_FLOAT32_C( -824.40),
                         SIMDE_FLOAT32_C(  837.69), SIMDE_FLOAT32_C(   62.03),
                         SIMDE_FLOAT32_C(  350.22), SIMDE_FLOAT32_C(  -94.71)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -438.58), SIMDE_FLOAT32_C( -931.86),
                         SIMDE_FLOAT32_C( -771.61), SIMDE_FLOAT32_C( -611.79),
                         SIMDE_FLOAT32_C(  837.69), SIMDE_FLOAT32_C( -145.52),
                         SIMDE_FLOAT32_C(   62.03), SIMDE_FLOAT32_C(  128.94)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -514.10), SIMDE_FLOAT32_C(  798.26),
                         SIMDE_FLOAT32_C(  453.29), SIMDE_FLOAT32_C( -723.59),
                         SIMDE_FLOAT32_C(  488.64), SIMDE_FLOAT32_C( -551.49),
                         SIMDE_FLOAT32_C( -160.63), SIMDE_FLOAT32_C(   78.66)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  525.47), SIMDE_FLOAT32_C( -613.64),
                         SIMDE_FLOAT32_C(  666.94), SIMDE_FLOAT32_C( -806.63),
                         SIMDE_FLOAT32_C(  409.97), SIMDE_FLOAT32_C(  221.24),
                         SIMDE_FLOAT32_C(  721.07), SIMDE_FLOAT32_C( -434.84)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  525.47), SIMDE_FLOAT32_C( -514.10),
                         SIMDE_FLOAT32_C( -613.64), SIMDE_FLOAT32_C(  798.26),
                         SIMDE_FLOAT32_C(  409.97), SIMDE_FLOAT32_C(  488.64),
                         SIMDE_FLOAT32_C(  221.24), SIMDE_FLOAT32_C( -551.49)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -951.19), SIMDE_FLOAT32_C(  -28.42),
                         SIMDE_FLOAT32_C(  106.10), SIMDE_FLOAT32_C( -926.30),
                         SIMDE_FLOAT32_C( -891.33), SIMDE_FLOAT32_C( -910.68),
                         SIMDE_FLOAT32_C(  859.23), SIMDE_FLOAT32_C( -534.18)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -774.25), SIMDE_FLOAT32_C( -509.69),
                         SIMDE_FLOAT32_C( -863.30), SIMDE_FLOAT32_C( -245.43),
                         SIMDE_FLOAT32_C( -949.52), SIMDE_FLOAT32_C( -135.53),
                         SIMDE_FLOAT32_C(  390.61), SIMDE_FLOAT32_C( -616.91)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -774.25), SIMDE_FLOAT32_C( -951.19),
                         SIMDE_FLOAT32_C( -509.69), SIMDE_FLOAT32_C(  -28.42),
                         SIMDE_FLOAT32_C( -949.52), SIMDE_FLOAT32_C( -891.33),
                         SIMDE_FLOAT32_C( -135.53), SIMDE_FLOAT32_C( -910.68)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  854.52), SIMDE_FLOAT32_C( -781.40),
                         SIMDE_FLOAT32_C(  848.96), SIMDE_FLOAT32_C(  755.16),
                         SIMDE_FLOAT32_C(  991.03), SIMDE_FLOAT32_C( -213.85),
                         SIMDE_FLOAT32_C(  907.55), SIMDE_FLOAT32_C( -711.16)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  456.01), SIMDE_FLOAT32_C( -206.18),
                         SIMDE_FLOAT32_C( -786.69), SIMDE_FLOAT32_C(  940.75),
                         SIMDE_FLOAT32_C( -664.64), SIMDE_FLOAT32_C( -614.97),
                         SIMDE_FLOAT32_C(  524.63), SIMDE_FLOAT32_C(  291.78)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  456.01), SIMDE_FLOAT32_C(  854.52),
                         SIMDE_FLOAT32_C( -206.18), SIMDE_FLOAT32_C( -781.40),
                         SIMDE_FLOAT32_C( -664.64), SIMDE_FLOAT32_C(  991.03),
                         SIMDE_FLOAT32_C( -614.97), SIMDE_FLOAT32_C( -213.85)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  -51.56), SIMDE_FLOAT32_C(  716.82),
                         SIMDE_FLOAT32_C(  820.37), SIMDE_FLOAT32_C( -556.55),
                         SIMDE_FLOAT32_C( -748.23), SIMDE_FLOAT32_C( -191.87),
                         SIMDE_FLOAT32_C(  886.02), SIMDE_FLOAT32_C( -964.97)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  942.40), SIMDE_FLOAT32_C( -388.17),
                         SIMDE_FLOAT32_C(  620.64), SIMDE_FLOAT32_C(  768.35),
                         SIMDE_FLOAT32_C( -196.91), SIMDE_FLOAT32_C( -771.49),
                         SIMDE_FLOAT32_C( -618.58), SIMDE_FLOAT32_C( -887.04)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  942.40), SIMDE_FLOAT32_C(  -51.56),
                         SIMDE_FLOAT32_C( -388.17), SIMDE_FLOAT32_C(  716.82),
                         SIMDE_FLOAT32_C( -196.91), SIMDE_FLOAT32_C( -748.23),
                         SIMDE_FLOAT32_C( -771.49), SIMDE_FLOAT32_C( -191.87)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  934.86), SIMDE_FLOAT32_C( -147.82),
                         SIMDE_FLOAT32_C(  984.99), SIMDE_FLOAT32_C(  944.15),
                         SIMDE_FLOAT32_C(  882.67), SIMDE_FLOAT32_C(  370.21),
                         SIMDE_FLOAT32_C(  981.44), SIMDE_FLOAT32_C( -856.37)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   80.89), SIMDE_FLOAT32_C(  -20.18),
                         SIMDE_FLOAT32_C( -561.60), SIMDE_FLOAT32_C(  599.04),
                         SIMDE_FLOAT32_C( -556.62), SIMDE_FLOAT32_C( -514.91),
                         SIMDE_FLOAT32_C( -240.53), SIMDE_FLOAT32_C( -421.29)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   80.89), SIMDE_FLOAT32_C(  934.86),
                         SIMDE_FLOAT32_C(  -20.18), SIMDE_FLOAT32_C( -147.82),
                         SIMDE_FLOAT32_C( -556.62), SIMDE_FLOAT32_C(  882.67),
                         SIMDE_FLOAT32_C( -514.91), SIMDE_FLOAT32_C(  370.21)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -445.93), SIMDE_FLOAT32_C(  998.84),
                         SIMDE_FLOAT32_C( -975.41), SIMDE_FLOAT32_C(  762.47),
                         SIMDE_FLOAT32_C(  829.30), SIMDE_FLOAT32_C( -324.70),
                         SIMDE_FLOAT32_C(  745.09), SIMDE_FLOAT32_C(   12.40)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  177.17), SIMDE_FLOAT32_C(  871.02),
                         SIMDE_FLOAT32_C(  263.38), SIMDE_FLOAT32_C( -284.12),
                         SIMDE_FLOAT32_C( -407.86), SIMDE_FLOAT32_C( -554.15),
                         SIMDE_FLOAT32_C(   -7.26), SIMDE_FLOAT32_C( -655.02)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  177.17), SIMDE_FLOAT32_C( -445.93),
                         SIMDE_FLOAT32_C(  871.02), SIMDE_FLOAT32_C(  998.84),
                         SIMDE_FLOAT32_C( -407.86), SIMDE_FLOAT32_C(  829.30),
                         SIMDE_FLOAT32_C( -554.15), SIMDE_FLOAT32_C( -324.70)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256 r = simde_mm256_unpackhi_ps(test_vec[i].a, test_vec[i].b);
    simde_assert_m256_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_unpackhi_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256d a;
    simde__m256d b;
    simde__m256d r;
  } test_vec[8] = {
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  474.20), SIMDE_FLOAT64_C(  -84.92),
                         SIMDE_FLOAT64_C(  521.98), SIMDE_FLOAT64_C( -506.09)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  547.06), SIMDE_FLOAT64_C( -105.08),
                         SIMDE_FLOAT64_C(  810.31), SIMDE_FLOAT64_C(  175.50)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  547.06), SIMDE_FLOAT64_C(  474.20),
                         SIMDE_FLOAT64_C(  810.31), SIMDE_FLOAT64_C(  521.98)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -738.63), SIMDE_FLOAT64_C( -207.02),
                         SIMDE_FLOAT64_C(  624.23), SIMDE_FLOAT64_C( -787.13)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -734.37), SIMDE_FLOAT64_C(   16.93),
                         SIMDE_FLOAT64_C( -235.12), SIMDE_FLOAT64_C(  261.95)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -734.37), SIMDE_FLOAT64_C( -738.63),
                         SIMDE_FLOAT64_C( -235.12), SIMDE_FLOAT64_C(  624.23)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  713.19), SIMDE_FLOAT64_C(  906.18),
                         SIMDE_FLOAT64_C( -969.47), SIMDE_FLOAT64_C( -953.69)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  182.58), SIMDE_FLOAT64_C(  575.97),
                         SIMDE_FLOAT64_C(  870.00), SIMDE_FLOAT64_C(  681.86)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  182.58), SIMDE_FLOAT64_C(  713.19),
                         SIMDE_FLOAT64_C(  870.00), SIMDE_FLOAT64_C( -969.47)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -478.99), SIMDE_FLOAT64_C( -198.61),
                         SIMDE_FLOAT64_C( -506.78), SIMDE_FLOAT64_C( -744.29)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -105.58), SIMDE_FLOAT64_C( -594.58),
                         SIMDE_FLOAT64_C( -326.65), SIMDE_FLOAT64_C(  744.36)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -105.58), SIMDE_FLOAT64_C( -478.99),
                         SIMDE_FLOAT64_C( -326.65), SIMDE_FLOAT64_C( -506.78)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  456.60), SIMDE_FLOAT64_C( -346.15),
                         SIMDE_FLOAT64_C(  230.97), SIMDE_FLOAT64_C(  246.60)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -895.16), SIMDE_FLOAT64_C(  675.27),
                         SIMDE_FLOAT64_C( -175.34), SIMDE_FLOAT64_C( -350.18)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -895.16), SIMDE_FLOAT64_C(  456.60),
                         SIMDE_FLOAT64_C( -175.34), SIMDE_FLOAT64_C(  230.97)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  517.62), SIMDE_FLOAT64_C( -985.29),
                         SIMDE_FLOAT64_C( -720.18), SIMDE_FLOAT64_C(   52.87)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  519.19), SIMDE_FLOAT64_C(  -56.82),
                         SIMDE_FLOAT64_C(  611.63), SIMDE_FLOAT64_C(  463.94)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  519.19), SIMDE_FLOAT64_C(  517.62),
                         SIMDE_FLOAT64_C(  611.63), SIMDE_FLOAT64_C( -720.18)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -839.87), SIMDE_FLOAT64_C(  -23.85),
                         SIMDE_FLOAT64_C(  777.18), SIMDE_FLOAT64_C(  867.39)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -606.42), SIMDE_FLOAT64_C(  503.57),
                         SIMDE_FLOAT64_C(  891.19), SIMDE_FLOAT64_C(  137.98)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -606.42), SIMDE_FLOAT64_C( -839.87),
                         SIMDE_FLOAT64_C(  891.19), SIMDE_FLOAT64_C(  777.18)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -362.78), SIMDE_FLOAT64_C( -942.23),
                         SIMDE_FLOAT64_C(  577.23), SIMDE_FLOAT64_C(  747.66)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -987.53), SIMDE_FLOAT64_C(  145.74),
                         SIMDE_FLOAT64_C(  948.38), SIMDE_FLOAT64_C( -772.85)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -987.53), SIMDE_FLOAT64_C( -362.78),
                         SIMDE_FLOAT64_C(  948.38), SIMDE_FLOAT64_C(  577.23)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256d r = simde_mm256_unpackhi_pd(test_vec[i].a, test_vec[i].b);
    simde_assert_m256d_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_unpacklo_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde__m256 b;
    simde__m256 r;
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  476.45), SIMDE_FLOAT32_C(  703.11),
                         SIMDE_FLOAT32_C(  221.80), SIMDE_FLOAT32_C( -361.45),
                         SIMDE_FLOAT32_C(  645.73), SIMDE_FLOAT32_C(  420.76),
                         SIMDE_FLOAT32_C(  -23.12), SIMDE_FLOAT32_C(   96.33)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -773.95), SIMDE_FLOAT32_C(  586.39),
                         SIMDE_FLOAT32_C(  118.66), SIMDE_FLOAT32_C(    5.14),
                         SIMDE_FLOAT32_C(    9.63), SIMDE_FLOAT32_C(  896.46),
                         SIMDE_FLOAT32_C(  121.67), SIMDE_FLOAT32_C( -134.20)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  118.66), SIMDE_FLOAT32_C(  221.80),
                         SIMDE_FLOAT32_C(    5.14), SIMDE_FLOAT32_C( -361.45),
                         SIMDE_FLOAT32_C(  121.67), SIMDE_FLOAT32_C(  -23.12),
                         SIMDE_FLOAT32_C( -134.20), SIMDE_FLOAT32_C(   96.33)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -605.12), SIMDE_FLOAT32_C(  481.83),
                         SIMDE_FLOAT32_C(  757.82), SIMDE_FLOAT32_C( -782.53),
                         SIMDE_FLOAT32_C(  546.60), SIMDE_FLOAT32_C( -405.06),
                         SIMDE_FLOAT32_C( -413.20), SIMDE_FLOAT32_C( -645.12)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -646.85), SIMDE_FLOAT32_C( -619.64),
                         SIMDE_FLOAT32_C(    4.92), SIMDE_FLOAT32_C(  816.93),
                         SIMDE_FLOAT32_C( -509.30), SIMDE_FLOAT32_C(  435.06),
                         SIMDE_FLOAT32_C(  -11.96), SIMDE_FLOAT32_C( -147.23)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(    4.92), SIMDE_FLOAT32_C(  757.82),
                         SIMDE_FLOAT32_C(  816.93), SIMDE_FLOAT32_C( -782.53),
                         SIMDE_FLOAT32_C(  -11.96), SIMDE_FLOAT32_C( -413.20),
                         SIMDE_FLOAT32_C( -147.23), SIMDE_FLOAT32_C( -645.12)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  850.74), SIMDE_FLOAT32_C(  -85.68),
                         SIMDE_FLOAT32_C( -210.45), SIMDE_FLOAT32_C(  -73.45),
                         SIMDE_FLOAT32_C(  532.06), SIMDE_FLOAT32_C(  709.20),
                         SIMDE_FLOAT32_C(  882.78), SIMDE_FLOAT32_C( -768.32)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -922.57), SIMDE_FLOAT32_C(   42.72),
                         SIMDE_FLOAT32_C(  514.25), SIMDE_FLOAT32_C( -144.83),
                         SIMDE_FLOAT32_C(  -74.58), SIMDE_FLOAT32_C( -573.39),
                         SIMDE_FLOAT32_C( -176.90), SIMDE_FLOAT32_C( -171.10)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  514.25), SIMDE_FLOAT32_C( -210.45),
                         SIMDE_FLOAT32_C( -144.83), SIMDE_FLOAT32_C(  -73.45),
                         SIMDE_FLOAT32_C( -176.90), SIMDE_FLOAT32_C(  882.78),
                         SIMDE_FLOAT32_C( -171.10), SIMDE_FLOAT32_C( -768.32)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -573.82), SIMDE_FLOAT32_C(  486.51),
                         SIMDE_FLOAT32_C(  332.79), SIMDE_FLOAT32_C( -446.48),
                         SIMDE_FLOAT32_C(  110.94), SIMDE_FLOAT32_C(  515.10),
                         SIMDE_FLOAT32_C(  513.81), SIMDE_FLOAT32_C( -806.87)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  206.71), SIMDE_FLOAT32_C( -250.67),
                         SIMDE_FLOAT32_C(  127.20), SIMDE_FLOAT32_C(  -93.11),
                         SIMDE_FLOAT32_C( -774.94), SIMDE_FLOAT32_C( -230.88),
                         SIMDE_FLOAT32_C(  631.35), SIMDE_FLOAT32_C(  231.15)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  127.20), SIMDE_FLOAT32_C(  332.79),
                         SIMDE_FLOAT32_C(  -93.11), SIMDE_FLOAT32_C( -446.48),
                         SIMDE_FLOAT32_C(  631.35), SIMDE_FLOAT32_C(  513.81),
                         SIMDE_FLOAT32_C(  231.15), SIMDE_FLOAT32_C( -806.87)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  149.45), SIMDE_FLOAT32_C(  726.97),
                         SIMDE_FLOAT32_C(  -55.39), SIMDE_FLOAT32_C(  -82.15),
                         SIMDE_FLOAT32_C(  549.77), SIMDE_FLOAT32_C(  954.11),
                         SIMDE_FLOAT32_C(  -93.98), SIMDE_FLOAT32_C( -820.28)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  456.52), SIMDE_FLOAT32_C( -978.21),
                         SIMDE_FLOAT32_C(  560.56), SIMDE_FLOAT32_C(  178.87),
                         SIMDE_FLOAT32_C(  916.04), SIMDE_FLOAT32_C( -801.57),
                         SIMDE_FLOAT32_C( -369.99), SIMDE_FLOAT32_C(   24.70)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  560.56), SIMDE_FLOAT32_C(  -55.39),
                         SIMDE_FLOAT32_C(  178.87), SIMDE_FLOAT32_C(  -82.15),
                         SIMDE_FLOAT32_C( -369.99), SIMDE_FLOAT32_C(  -93.98),
                         SIMDE_FLOAT32_C(   24.70), SIMDE_FLOAT32_C( -820.28)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  683.93), SIMDE_FLOAT32_C( -442.40),
                         SIMDE_FLOAT32_C( -321.81), SIMDE_FLOAT32_C(  -47.02),
                         SIMDE_FLOAT32_C( -854.54), SIMDE_FLOAT32_C(  -65.39),
                         SIMDE_FLOAT32_C( -879.02), SIMDE_FLOAT32_C( -144.43)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -204.43), SIMDE_FLOAT32_C(  186.43),
                         SIMDE_FLOAT32_C( -537.46), SIMDE_FLOAT32_C( -851.25),
                         SIMDE_FLOAT32_C( -312.32), SIMDE_FLOAT32_C( -630.06),
                         SIMDE_FLOAT32_C( -737.72), SIMDE_FLOAT32_C(  475.72)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -537.46), SIMDE_FLOAT32_C( -321.81),
                         SIMDE_FLOAT32_C( -851.25), SIMDE_FLOAT32_C(  -47.02),
                         SIMDE_FLOAT32_C( -737.72), SIMDE_FLOAT32_C( -879.02),
                         SIMDE_FLOAT32_C(  475.72), SIMDE_FLOAT32_C( -144.43)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -948.98), SIMDE_FLOAT32_C(  497.67),
                         SIMDE_FLOAT32_C(  650.06), SIMDE_FLOAT32_C(  741.02),
                         SIMDE_FLOAT32_C( -984.88), SIMDE_FLOAT32_C( -952.48),
                         SIMDE_FLOAT32_C( -355.06), SIMDE_FLOAT32_C(  845.88)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  984.39), SIMDE_FLOAT32_C( -147.65),
                         SIMDE_FLOAT32_C( -608.72), SIMDE_FLOAT32_C(  798.45),
                         SIMDE_FLOAT32_C( -191.22), SIMDE_FLOAT32_C( -819.43),
                         SIMDE_FLOAT32_C(  651.13), SIMDE_FLOAT32_C(  878.58)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -608.72), SIMDE_FLOAT32_C(  650.06),
                         SIMDE_FLOAT32_C(  798.45), SIMDE_FLOAT32_C(  741.02),
                         SIMDE_FLOAT32_C(  651.13), SIMDE_FLOAT32_C( -355.06),
                         SIMDE_FLOAT32_C(  878.58), SIMDE_FLOAT32_C(  845.88)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  860.59), SIMDE_FLOAT32_C(  -10.76),
                         SIMDE_FLOAT32_C( -198.30), SIMDE_FLOAT32_C(   77.85),
                         SIMDE_FLOAT32_C(  -62.31), SIMDE_FLOAT32_C(   -4.21),
                         SIMDE_FLOAT32_C(  365.71), SIMDE_FLOAT32_C(  937.33)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -309.45), SIMDE_FLOAT32_C(  297.29),
                         SIMDE_FLOAT32_C(  986.26), SIMDE_FLOAT32_C( -531.67),
                         SIMDE_FLOAT32_C(  648.25), SIMDE_FLOAT32_C( -225.86),
                         SIMDE_FLOAT32_C( -897.83), SIMDE_FLOAT32_C(  816.08)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  986.26), SIMDE_FLOAT32_C( -198.30),
                         SIMDE_FLOAT32_C( -531.67), SIMDE_FLOAT32_C(   77.85),
                         SIMDE_FLOAT32_C( -897.83), SIMDE_FLOAT32_C(  365.71),
                         SIMDE_FLOAT32_C(  816.08), SIMDE_FLOAT32_C(  937.33)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256 r = simde_mm256_unpacklo_ps(test_vec[i].a, test_vec[i].b);
    simde_assert_m256_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_unpacklo_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256d a;
    simde__m256d b;
    simde__m256d r;
  } test_vec[8] = {
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -600.90), SIMDE_FLOAT64_C( -534.18),
                         SIMDE_FLOAT64_C( -294.96), SIMDE_FLOAT64_C(  194.68)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  653.08), SIMDE_FLOAT64_C( -555.28),
                         SIMDE_FLOAT64_C(  745.15), SIMDE_FLOAT64_C( -216.67)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -555.28), SIMDE_FLOAT64_C( -534.18),
                         SIMDE_FLOAT64_C( -216.67), SIMDE_FLOAT64_C(  194.68)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  421.87), SIMDE_FLOAT64_C(  397.23),
                         SIMDE_FLOAT64_C(  303.53), SIMDE_FLOAT64_C(  285.42)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -720.94), SIMDE_FLOAT64_C( -472.31),
                         SIMDE_FLOAT64_C(  488.28), SIMDE_FLOAT64_C( -308.40)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -472.31), SIMDE_FLOAT64_C(  397.23),
                         SIMDE_FLOAT64_C( -308.40), SIMDE_FLOAT64_C(  285.42)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -109.61), SIMDE_FLOAT64_C(  180.86),
                         SIMDE_FLOAT64_C(  399.64), SIMDE_FLOAT64_C(  594.61)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -866.29), SIMDE_FLOAT64_C(  935.36),
                         SIMDE_FLOAT64_C(  680.83), SIMDE_FLOAT64_C(  371.83)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  935.36), SIMDE_FLOAT64_C(  180.86),
                         SIMDE_FLOAT64_C(  371.83), SIMDE_FLOAT64_C(  594.61)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(   90.32), SIMDE_FLOAT64_C(  277.68),
                         SIMDE_FLOAT64_C(  879.43), SIMDE_FLOAT64_C( -100.14)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  615.95), SIMDE_FLOAT64_C( -913.08),
                         SIMDE_FLOAT64_C(  109.38), SIMDE_FLOAT64_C(  735.81)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -913.08), SIMDE_FLOAT64_C(  277.68),
                         SIMDE_FLOAT64_C(  735.81), SIMDE_FLOAT64_C( -100.14)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  932.30), SIMDE_FLOAT64_C(  361.71),
                         SIMDE_FLOAT64_C( -106.90), SIMDE_FLOAT64_C( -236.07)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -388.60), SIMDE_FLOAT64_C( -254.78),
                         SIMDE_FLOAT64_C(   -8.15), SIMDE_FLOAT64_C( -517.38)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -254.78), SIMDE_FLOAT64_C(  361.71),
                         SIMDE_FLOAT64_C( -517.38), SIMDE_FLOAT64_C( -236.07)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  420.24), SIMDE_FLOAT64_C(  915.08),
                         SIMDE_FLOAT64_C( -310.09), SIMDE_FLOAT64_C(  924.29)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   -6.45), SIMDE_FLOAT64_C(  943.38),
                         SIMDE_FLOAT64_C( -842.17), SIMDE_FLOAT64_C(  303.10)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  943.38), SIMDE_FLOAT64_C(  915.08),
                         SIMDE_FLOAT64_C(  303.10), SIMDE_FLOAT64_C(  924.29)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  198.81), SIMDE_FLOAT64_C(  823.67),
                         SIMDE_FLOAT64_C(   21.23), SIMDE_FLOAT64_C(  275.37)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -789.28), SIMDE_FLOAT64_C(  222.39),
                         SIMDE_FLOAT64_C( -125.82), SIMDE_FLOAT64_C( -521.52)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  222.39), SIMDE_FLOAT64_C(  823.67),
                         SIMDE_FLOAT64_C( -521.52), SIMDE_FLOAT64_C(  275.37)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(   71.55), SIMDE_FLOAT64_C( -915.84),
                         SIMDE_FLOAT64_C( -246.51), SIMDE_FLOAT64_C( -206.93)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -663.61), SIMDE_FLOAT64_C(  763.05),
                         SIMDE_FLOAT64_C( -365.16), SIMDE_FLOAT64_C( -475.21)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  763.05), SIMDE_FLOAT64_C( -915.84),
                         SIMDE_FLOAT64_C( -475.21), SIMDE_FLOAT64_C( -206.93)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256d r = simde_mm256_unpacklo_pd(test_vec[i].a, test_vec[i].b);
    simde_assert_m256d_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_xor_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256d a;
    simde__m256d b;
    simde__m256d r;
  } test_vec[8] = {
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  125.09), SIMDE_FLOAT64_C(  533.33),
                         SIMDE_FLOAT64_C(  190.03), SIMDE_FLOAT64_C( -352.74)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  208.67), SIMDE_FLOAT64_C( -937.37),
                         SIMDE_FLOAT64_C(  842.10), SIMDE_FLOAT64_C(  692.29)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(   -0.00),
                         SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(   -0.00)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -785.19), SIMDE_FLOAT64_C( -227.52),
                         SIMDE_FLOAT64_C( -675.22), SIMDE_FLOAT64_C(  927.05)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  333.25), SIMDE_FLOAT64_C(  653.61),
                         SIMDE_FLOAT64_C(  853.07), SIMDE_FLOAT64_C(  580.55)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   -0.00), SIMDE_FLOAT64_C(   -0.00),
                         SIMDE_FLOAT64_C(   -0.00), SIMDE_FLOAT64_C(    0.00)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  846.59), SIMDE_FLOAT64_C( -306.35),
                         SIMDE_FLOAT64_C(  201.33), SIMDE_FLOAT64_C( -591.74)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  539.65), SIMDE_FLOAT64_C(  901.07),
                         SIMDE_FLOAT64_C( -281.86), SIMDE_FLOAT64_C( -385.60)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(   -0.00),
                         SIMDE_FLOAT64_C(   -0.00), SIMDE_FLOAT64_C(    0.00)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -208.55), SIMDE_FLOAT64_C( -102.16),
                         SIMDE_FLOAT64_C(  741.78), SIMDE_FLOAT64_C( -841.86)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   42.61), SIMDE_FLOAT64_C(  866.30),
                         SIMDE_FLOAT64_C( -734.78), SIMDE_FLOAT64_C( -363.89)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   -0.00), SIMDE_FLOAT64_C(   -0.00),
                         SIMDE_FLOAT64_C(   -0.00), SIMDE_FLOAT64_C(    0.00)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  -80.10), SIMDE_FLOAT64_C(   -6.79),
                         SIMDE_FLOAT64_C(   45.81), SIMDE_FLOAT64_C( -402.99)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -431.36), SIMDE_FLOAT64_C(  229.84),
                         SIMDE_FLOAT64_C( -298.07), SIMDE_FLOAT64_C( -459.61)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(   -0.00),
                         SIMDE_FLOAT64_C(   -0.00), SIMDE_FLOAT64_C(    0.00)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -252.25), SIMDE_FLOAT64_C( -434.28),
                         SIMDE_FLOAT64_C( -802.07), SIMDE_FLOAT64_C(  931.61)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  494.93), SIMDE_FLOAT64_C( -455.26),
                         SIMDE_FLOAT64_C(  781.09), SIMDE_FLOAT64_C(  819.90)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(   -0.00), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C(   -0.00), SIMDE_FLOAT64_C(    0.00)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  114.61), SIMDE_FLOAT64_C(  574.95),
                         SIMDE_FLOAT64_C( -900.56), SIMDE_FLOAT64_C( -784.93)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  405.36), SIMDE_FLOAT64_C(  885.34),
                         SIMDE_FLOAT64_C( -606.18), SIMDE_FLOAT64_C(  785.23)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(   -0.00)) },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -477.77), SIMDE_FLOAT64_C( -377.20),
                         SIMDE_FLOAT64_C( -207.72), SIMDE_FLOAT64_C(  319.51)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -449.36), SIMDE_FLOAT64_C(  638.76),
                         SIMDE_FLOAT64_C( -315.99), SIMDE_FLOAT64_C(  136.54)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(   -0.00),
                         SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00)) },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256d r = simde_mm256_xor_pd(test_vec[i].a, test_vec[i].b);
    simde_assert_m256d_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_xor_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde__m256 b;
    simde__m256 r;
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   548.70), SIMDE_FLOAT32_C(  -868.78),
                         SIMDE_FLOAT32_C(    -8.43), SIMDE_FLOAT32_C(   -89.68),
                         SIMDE_FLOAT32_C(  -222.56), SIMDE_FLOAT32_C(   837.57),
                         SIMDE_FLOAT32_C(  -514.53), SIMDE_FLOAT32_C(   769.22)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  -145.72), SIMDE_FLOAT32_C(  -597.70),
                         SIMDE_FLOAT32_C(  -427.69), SIMDE_FLOAT32_C(  -216.99),
                         SIMDE_FLOAT32_C(   665.42), SIMDE_FLOAT32_C(    -3.00),
                         SIMDE_FLOAT32_C(  -694.73), SIMDE_FLOAT32_C(   203.68)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(    -0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(    -0.00), SIMDE_FLOAT32_C(    -0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   476.58), SIMDE_FLOAT32_C(  -306.29),
                         SIMDE_FLOAT32_C(   588.53), SIMDE_FLOAT32_C(   127.68),
                         SIMDE_FLOAT32_C(  -500.35), SIMDE_FLOAT32_C(   955.55),
                         SIMDE_FLOAT32_C(   220.89), SIMDE_FLOAT32_C(  -767.99)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   445.28), SIMDE_FLOAT32_C(   141.81),
                         SIMDE_FLOAT32_C(  -713.76), SIMDE_FLOAT32_C(  -354.21),
                         SIMDE_FLOAT32_C(   679.03), SIMDE_FLOAT32_C(  -912.95),
                         SIMDE_FLOAT32_C(   204.18), SIMDE_FLOAT32_C(   506.07)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(    -0.00),
                         SIMDE_FLOAT32_C(    -0.00), SIMDE_FLOAT32_C(    -0.00),
                         SIMDE_FLOAT32_C(    -0.00), SIMDE_FLOAT32_C(    -0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(    -0.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   933.45), SIMDE_FLOAT32_C(     5.37),
                         SIMDE_FLOAT32_C(  -777.73), SIMDE_FLOAT32_C(   798.82),
                         SIMDE_FLOAT32_C(   443.43), SIMDE_FLOAT32_C(    -5.06),
                         SIMDE_FLOAT32_C(   288.87), SIMDE_FLOAT32_C(  -504.88)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   239.90), SIMDE_FLOAT32_C(  -955.68),
                         SIMDE_FLOAT32_C(  -266.36), SIMDE_FLOAT32_C(   865.21),
                         SIMDE_FLOAT32_C(   416.82), SIMDE_FLOAT32_C(   -51.58),
                         SIMDE_FLOAT32_C(   122.82), SIMDE_FLOAT32_C(   125.02)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(    -0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(    -0.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   802.73), SIMDE_FLOAT32_C(  -683.98),
                         SIMDE_FLOAT32_C(  -844.98), SIMDE_FLOAT32_C(   391.53),
                         SIMDE_FLOAT32_C(  -895.03), SIMDE_FLOAT32_C(  -743.00),
                         SIMDE_FLOAT32_C(  -811.16), SIMDE_FLOAT32_C(  -926.14)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   136.72), SIMDE_FLOAT32_C(  -962.56),
                         SIMDE_FLOAT32_C(   589.78), SIMDE_FLOAT32_C(   684.43),
                         SIMDE_FLOAT32_C(  -510.18), SIMDE_FLOAT32_C(   881.66),
                         SIMDE_FLOAT32_C(  -753.43), SIMDE_FLOAT32_C(   713.54)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(    -0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(    -0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(    -0.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  -483.96), SIMDE_FLOAT32_C(  -109.20),
                         SIMDE_FLOAT32_C(  -641.20), SIMDE_FLOAT32_C(   454.31),
                         SIMDE_FLOAT32_C(   511.51), SIMDE_FLOAT32_C(  -732.98),
                         SIMDE_FLOAT32_C(   946.00), SIMDE_FLOAT32_C(  -922.25)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  -819.03), SIMDE_FLOAT32_C(  -496.99),
                         SIMDE_FLOAT32_C(    85.62), SIMDE_FLOAT32_C(  -569.10),
                         SIMDE_FLOAT32_C(  -386.34), SIMDE_FLOAT32_C(   216.80),
                         SIMDE_FLOAT32_C(  -244.13), SIMDE_FLOAT32_C(   -77.34)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(    -0.00), SIMDE_FLOAT32_C(    -0.00),
                         SIMDE_FLOAT32_C(    -0.00), SIMDE_FLOAT32_C(    -0.00),
                         SIMDE_FLOAT32_C(    -0.00), SIMDE_FLOAT32_C(     0.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   727.77), SIMDE_FLOAT32_C(  -477.08),
                         SIMDE_FLOAT32_C(     7.90), SIMDE_FLOAT32_C(   499.42),
                         SIMDE_FLOAT32_C(  -256.10), SIMDE_FLOAT32_C(  -756.97),
                         SIMDE_FLOAT32_C(   383.44), SIMDE_FLOAT32_C(  -510.60)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  -270.31), SIMDE_FLOAT32_C(  -502.66),
                         SIMDE_FLOAT32_C(   467.87), SIMDE_FLOAT32_C(   445.96),
                         SIMDE_FLOAT32_C(  -357.92), SIMDE_FLOAT32_C(  -586.04),
                         SIMDE_FLOAT32_C(   -63.05), SIMDE_FLOAT32_C(   391.11)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(    -0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(    -0.00), SIMDE_FLOAT32_C(    -0.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  -426.87), SIMDE_FLOAT32_C(   -96.04),
                         SIMDE_FLOAT32_C(   625.98), SIMDE_FLOAT32_C(   704.53),
                         SIMDE_FLOAT32_C(   227.86), SIMDE_FLOAT32_C(  -411.45),
                         SIMDE_FLOAT32_C(   -17.45), SIMDE_FLOAT32_C(   -10.30)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   456.59), SIMDE_FLOAT32_C(   656.00),
                         SIMDE_FLOAT32_C(    17.64), SIMDE_FLOAT32_C(   602.75),
                         SIMDE_FLOAT32_C(   153.79), SIMDE_FLOAT32_C(  -466.92),
                         SIMDE_FLOAT32_C(  -648.89), SIMDE_FLOAT32_C(  -965.57)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(    -0.00), SIMDE_FLOAT32_C(    -0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00)) },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  -404.61), SIMDE_FLOAT32_C(  -361.93),
                         SIMDE_FLOAT32_C(     8.96), SIMDE_FLOAT32_C(  -813.96),
                         SIMDE_FLOAT32_C(   760.95), SIMDE_FLOAT32_C(   953.74),
                         SIMDE_FLOAT32_C(   288.70), SIMDE_FLOAT32_C(   347.99)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  -441.96), SIMDE_FLOAT32_C(   232.27),
                         SIMDE_FLOAT32_C(    51.60), SIMDE_FLOAT32_C(  -387.30),
                         SIMDE_FLOAT32_C(  -615.38), SIMDE_FLOAT32_C(   162.60),
                         SIMDE_FLOAT32_C(  -145.41), SIMDE_FLOAT32_C(   683.61)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(    -0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(    -0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(    -0.00), SIMDE_FLOAT32_C(     0.00)) },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256 r = simde_mm256_xor_ps(test_vec[i].a, test_vec[i].b);
    simde_assert_m256_close(r, test_vec[i].r, 1);
  }

  return 0;
}


static int
test_simde_mm256_zextps128_ps256(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m128 a;
    simde__m256 r;
  } test_vec[8] = {
    {    simde_mm_set_ps(SIMDE_FLOAT32_C( -312.77), SIMDE_FLOAT32_C(  594.20),
                         SIMDE_FLOAT32_C( -325.59), SIMDE_FLOAT32_C( -490.02)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00),
                         SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00),
                         SIMDE_FLOAT32_C( -312.77), SIMDE_FLOAT32_C(  594.20),
                         SIMDE_FLOAT32_C( -325.59), SIMDE_FLOAT32_C( -490.02)) },
    {    simde_mm_set_ps(SIMDE_FLOAT32_C( -164.79), SIMDE_FLOAT32_C( -934.42),
                         SIMDE_FLOAT32_C(  921.14), SIMDE_FLOAT32_C(   62.10)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00),
                         SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00),
                         SIMDE_FLOAT32_C( -164.79), SIMDE_FLOAT32_C( -934.42),
                         SIMDE_FLOAT32_C(  921.14), SIMDE_FLOAT32_C(   62.10)) },
    {    simde_mm_set_ps(SIMDE_FLOAT32_C( -517.66), SIMDE_FLOAT32_C(  967.01),
                         SIMDE_FLOAT32_C(  846.07), SIMDE_FLOAT32_C(  311.22)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00),
                         SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00),
                         SIMDE_FLOAT32_C( -517.66), SIMDE_FLOAT32_C(  967.01),
                         SIMDE_FLOAT32_C(  846.07), SIMDE_FLOAT32_C(  311.22)) },
    {    simde_mm_set_ps(SIMDE_FLOAT32_C(  258.19), SIMDE_FLOAT32_C(    3.23),
                         SIMDE_FLOAT32_C( -975.57), SIMDE_FLOAT32_C(  -36.42)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00),
                         SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00),
                         SIMDE_FLOAT32_C(  258.19), SIMDE_FLOAT32_C(    3.23),
                         SIMDE_FLOAT32_C( -975.57), SIMDE_FLOAT32_C(  -36.42)) },
    {    simde_mm_set_ps(SIMDE_FLOAT32_C( -435.42), SIMDE_FLOAT32_C(  892.30),
                         SIMDE_FLOAT32_C( -907.17), SIMDE_FLOAT32_C( -773.85)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00),
                         SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00),
                         SIMDE_FLOAT32_C( -435.42), SIMDE_FLOAT32_C(  892.30),
                         SIMDE_FLOAT32_C( -907.17), SIMDE_FLOAT32_C( -773.85)) },
    {    simde_mm_set_ps(SIMDE_FLOAT32_C(  555.74), SIMDE_FLOAT32_C( -152.72),
                         SIMDE_FLOAT32_C(  264.72), SIMDE_FLOAT32_C(  888.72)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00),
                         SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00),
                         SIMDE_FLOAT32_C(  555.74), SIMDE_FLOAT32_C( -152.72),
                         SIMDE_FLOAT32_C(  264.72), SIMDE_FLOAT32_C(  888.72)) },
    {    simde_mm_set_ps(SIMDE_FLOAT32_C( -118.52), SIMDE_FLOAT32_C( -258.55),
                         SIMDE_FLOAT32_C(  -89.99), SIMDE_FLOAT32_C(  -84.84)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00),
                         SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00),
                         SIMDE_FLOAT32_C( -118.52), SIMDE_FLOAT32_C( -258.55),
                         SIMDE_FLOAT32_C(  -89.99), SIMDE_FLOAT32_C(  -84.84)) },
    {    simde_mm_set_ps(SIMDE_FLOAT32_C(  270.43), SIMDE_FLOAT32_C( -194.76),
                         SIMDE_FLOAT32_C( -351.14), SIMDE_FLOAT32_C(  335.42)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00),
                         SIMDE_FLOAT32_C(    0.00), SIMDE_FLOAT32_C(    0.00),
                         SIMDE_FLOAT32_C(  270.43), SIMDE_FLOAT32_C( -194.76),
                         SIMDE_FLOAT32_C( -351.14), SIMDE_FLOAT32_C(  335.42)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256 r = simde_mm256_zextps128_ps256(test_vec[i].a);
    simde_assert_m256_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_zextpd128_pd256(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m128d a;
    simde__m256d r;
  } test_vec[8] = {
    { simde_mm_set_pd(SIMDE_FLOAT64_C(  376.29), SIMDE_FLOAT64_C( -625.09)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C(  376.29), SIMDE_FLOAT64_C( -625.09)) },
    { simde_mm_set_pd(SIMDE_FLOAT64_C( -371.24), SIMDE_FLOAT64_C( -550.26)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C( -371.24), SIMDE_FLOAT64_C( -550.26)) },
    { simde_mm_set_pd(SIMDE_FLOAT64_C( -354.92), SIMDE_FLOAT64_C( -801.74)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C( -354.92), SIMDE_FLOAT64_C( -801.74)) },
    { simde_mm_set_pd(SIMDE_FLOAT64_C( -686.18), SIMDE_FLOAT64_C(  492.11)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C( -686.18), SIMDE_FLOAT64_C(  492.11)) },
    { simde_mm_set_pd(SIMDE_FLOAT64_C( -504.19), SIMDE_FLOAT64_C( -186.92)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C( -504.19), SIMDE_FLOAT64_C( -186.92)) },
    { simde_mm_set_pd(SIMDE_FLOAT64_C(  116.22), SIMDE_FLOAT64_C(  481.86)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C(  116.22), SIMDE_FLOAT64_C(  481.86)) },
    { simde_mm_set_pd(SIMDE_FLOAT64_C(  436.67), SIMDE_FLOAT64_C(  524.04)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C(  436.67), SIMDE_FLOAT64_C(  524.04)) },
    { simde_mm_set_pd(SIMDE_FLOAT64_C( -466.66), SIMDE_FLOAT64_C(  855.76)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C( -466.66), SIMDE_FLOAT64_C(  855.76)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m256d r = simde_mm256_zextpd128_pd256(test_vec[i].a);
    simde_assert_m256d_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm256_zextsi128_si256 (SIMDE_MUNIT_TEST_ARGS) {
  static const struct {
    const int64_t a[2];
    const int64_t r[4];
  } test_vec[] = {
    { {  INT64_C( 3659960757603206795),  INT64_C( 2308273045282314341) },
      {  INT64_C( 3659960757603206795),  INT64_C( 2308273045282314341),  INT64_C(0),  INT64_C(0) } },
    { { -INT64_C( 7909899133659387641), -INT64_C( 6643096323114624760) },
      { -INT64_C( 7909899133659387641), -INT64_C( 6643096323114624760),  INT64_C(0),  INT64_C(0) } },
    { { -INT64_C( 3738447939738821375),  INT64_C( 8210257193021786038) },
      { -INT64_C( 3738447939738821375),  INT64_C( 8210257193021786038),  INT64_C(0),  INT64_C(0) } },
    { {  INT64_C( 7841089534433099674), -INT64_C( 2704280898271388226) },
      {  INT64_C( 7841089534433099674), -INT64_C( 2704280898271388226),  INT64_C(0),  INT64_C(0) } },
    { {  INT64_C( 2253740904739638291),  INT64_C( 4217866929705054124) },
      {  INT64_C( 2253740904739638291),  INT64_C( 4217866929705054124),  INT64_C(0),  INT64_C(0) } },
    { {  INT64_C( 6173955252198929118), -INT64_C( 2243738413454109144) },
      {  INT64_C( 6173955252198929118), -INT64_C( 2243738413454109144),  INT64_C(0),  INT64_C(0) } },
    { {  INT64_C( 3762935090286142127), -INT64_C( 1843430169138026352) },
      {  INT64_C( 3762935090286142127), -INT64_C( 1843430169138026352),  INT64_C(0),  INT64_C(0) } },
    { {  INT64_C( 6283319931180737605), -INT64_C( 5703187699811656404) },
      {  INT64_C( 6283319931180737605), -INT64_C( 5703187699811656404),  INT64_C(0),  INT64_C(0) } }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde__m128i a = simde_x_mm_loadu_epi64(test_vec[i].a);
    simde__m256i r = simde_mm256_zextsi128_si256(a);
    simde_test_x86_assert_equal_i64x4(r, simde_x_mm256_loadu_epi64(test_vec[i].r));
  }

  return 0;
}

static int
test_simde_mm_testc_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m128 a;
    simde__m128 b;
    int r;
  } test_vec[8] = {
    { simde_mm_set_ps(SIMDE_FLOAT32_C( -975.49), SIMDE_FLOAT32_C(  483.21), SIMDE_FLOAT32_C( -728.28), SIMDE_FLOAT32_C(   87.20)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  838.35), SIMDE_FLOAT32_C(  502.70), SIMDE_FLOAT32_C(  259.53), SIMDE_FLOAT32_C(  492.16)),
      1 },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(  145.89), SIMDE_FLOAT32_C(  703.10), SIMDE_FLOAT32_C(  934.08), SIMDE_FLOAT32_C(  486.65)),
      simde_mm_set_ps(SIMDE_FLOAT32_C( -729.11), SIMDE_FLOAT32_C( -285.01), SIMDE_FLOAT32_C(  936.71), SIMDE_FLOAT32_C( -581.95)),
      0 },
    { simde_mm_set_ps(SIMDE_FLOAT32_C( -465.31), SIMDE_FLOAT32_C(  947.68), SIMDE_FLOAT32_C(  581.66), SIMDE_FLOAT32_C(  632.88)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  892.71), SIMDE_FLOAT32_C(  965.49), SIMDE_FLOAT32_C( -562.05), SIMDE_FLOAT32_C(   23.24)),
      0 },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(  527.52), SIMDE_FLOAT32_C(  684.72), SIMDE_FLOAT32_C( -444.91), SIMDE_FLOAT32_C(  864.11)),
      simde_mm_set_ps(SIMDE_FLOAT32_C( -726.99), SIMDE_FLOAT32_C(  870.43), SIMDE_FLOAT32_C(  880.94), SIMDE_FLOAT32_C(  503.59)),
      0 },
    { simde_mm_set_ps(SIMDE_FLOAT32_C( -313.88), SIMDE_FLOAT32_C(  663.71), SIMDE_FLOAT32_C( -545.28), SIMDE_FLOAT32_C(  409.96)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(   31.21), SIMDE_FLOAT32_C(  -81.33), SIMDE_FLOAT32_C( -792.56), SIMDE_FLOAT32_C(  868.13)),
      0 },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(  844.22), SIMDE_FLOAT32_C( -506.15), SIMDE_FLOAT32_C( -527.87), SIMDE_FLOAT32_C( -352.42)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  765.09), SIMDE_FLOAT32_C(  315.48), SIMDE_FLOAT32_C(  792.46), SIMDE_FLOAT32_C(  202.31)),
      1 },
    { simde_mm_set_ps(SIMDE_FLOAT32_C( -116.04), SIMDE_FLOAT32_C(  223.43), SIMDE_FLOAT32_C(  582.43), SIMDE_FLOAT32_C(  806.86)),
      simde_mm_set_ps(SIMDE_FLOAT32_C( -409.50), SIMDE_FLOAT32_C(  334.07), SIMDE_FLOAT32_C( -959.71), SIMDE_FLOAT32_C( -395.22)),
      0 },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(  -17.46), SIMDE_FLOAT32_C(  569.91), SIMDE_FLOAT32_C( -620.83), SIMDE_FLOAT32_C(  411.71)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  294.19), SIMDE_FLOAT32_C(  545.09), SIMDE_FLOAT32_C(  315.96), SIMDE_FLOAT32_C( -698.39)),
      0 }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    int r = simde_mm_testc_ps(test_vec[i].a, test_vec[i].b);
    simde_assert_equal_i(r, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm_testc_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m128d a;
    simde__m128d b;
    int r;
  } test_vec[8] = {
    { simde_mm_set_pd(SIMDE_FLOAT64_C(  403.40), SIMDE_FLOAT64_C( -277.35)),
      simde_mm_set_pd(SIMDE_FLOAT64_C(  458.69), SIMDE_FLOAT64_C( -453.43)),
      1 },
    { simde_mm_set_pd(SIMDE_FLOAT64_C( -528.69), SIMDE_FLOAT64_C(   40.46)),
      simde_mm_set_pd(SIMDE_FLOAT64_C(  548.92), SIMDE_FLOAT64_C(  -42.14)),
      0 },
    { simde_mm_set_pd(SIMDE_FLOAT64_C( -931.64), SIMDE_FLOAT64_C( -909.64)),
      simde_mm_set_pd(SIMDE_FLOAT64_C( -112.03), SIMDE_FLOAT64_C(  413.67)),
      1 },
    { simde_mm_set_pd(SIMDE_FLOAT64_C( -611.37), SIMDE_FLOAT64_C(   85.99)),
      simde_mm_set_pd(SIMDE_FLOAT64_C(  527.48), SIMDE_FLOAT64_C( -378.25)),
      0 },
    { simde_mm_set_pd(SIMDE_FLOAT64_C( -343.28), SIMDE_FLOAT64_C( -471.39)),
      simde_mm_set_pd(SIMDE_FLOAT64_C(  984.73), SIMDE_FLOAT64_C(  518.21)),
      1 },
    { simde_mm_set_pd(SIMDE_FLOAT64_C(  965.66), SIMDE_FLOAT64_C( -647.86)),
      simde_mm_set_pd(SIMDE_FLOAT64_C(  395.59), SIMDE_FLOAT64_C(  961.89)),
      1 },
    { simde_mm_set_pd(SIMDE_FLOAT64_C(  763.28), SIMDE_FLOAT64_C(  421.62)),
      simde_mm_set_pd(SIMDE_FLOAT64_C( -682.67), SIMDE_FLOAT64_C( -348.51)),
      0 },
    { simde_mm_set_pd(SIMDE_FLOAT64_C( -947.12), SIMDE_FLOAT64_C(  147.81)),
      simde_mm_set_pd(SIMDE_FLOAT64_C(  745.97), SIMDE_FLOAT64_C( -540.47)),
      0 }
  };
  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    int r = simde_mm_testc_pd(test_vec[i].a, test_vec[i].b);
    simde_assert_equal_i(r, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_testc_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde__m256 b;
    int r;
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -169.00), SIMDE_FLOAT32_C( -295.41),
                         SIMDE_FLOAT32_C(  260.09), SIMDE_FLOAT32_C( -617.68),
                         SIMDE_FLOAT32_C(  318.47), SIMDE_FLOAT32_C( -889.00),
                         SIMDE_FLOAT32_C(  991.56), SIMDE_FLOAT32_C(  -25.06)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  252.34), SIMDE_FLOAT32_C(  -77.52),
                         SIMDE_FLOAT32_C( -724.69), SIMDE_FLOAT32_C(  823.10),
                         SIMDE_FLOAT32_C( -653.61), SIMDE_FLOAT32_C( -673.14),
                         SIMDE_FLOAT32_C(  294.16), SIMDE_FLOAT32_C(  969.47)),
      0 },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  269.05), SIMDE_FLOAT32_C(  535.88),
                         SIMDE_FLOAT32_C(  534.89), SIMDE_FLOAT32_C( -793.57),
                         SIMDE_FLOAT32_C( -723.99), SIMDE_FLOAT32_C( -951.14),
                         SIMDE_FLOAT32_C( -834.84), SIMDE_FLOAT32_C( -924.19)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -369.85), SIMDE_FLOAT32_C( -791.09),
                         SIMDE_FLOAT32_C(  -28.29), SIMDE_FLOAT32_C(  -28.76),
                         SIMDE_FLOAT32_C(  912.84), SIMDE_FLOAT32_C( -660.86),
                         SIMDE_FLOAT32_C( -511.48), SIMDE_FLOAT32_C( -116.65)),
      0 },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  491.90), SIMDE_FLOAT32_C( -371.75),
                         SIMDE_FLOAT32_C( -693.29), SIMDE_FLOAT32_C(  554.30),
                         SIMDE_FLOAT32_C( -859.01), SIMDE_FLOAT32_C( -958.17),
                         SIMDE_FLOAT32_C(  272.98), SIMDE_FLOAT32_C(  829.99)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  783.82), SIMDE_FLOAT32_C( -735.12),
                         SIMDE_FLOAT32_C(  265.82), SIMDE_FLOAT32_C( -598.04),
                         SIMDE_FLOAT32_C( -693.48), SIMDE_FLOAT32_C(  798.61),
                         SIMDE_FLOAT32_C( -618.96), SIMDE_FLOAT32_C(  625.43)),
      0 },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  321.41), SIMDE_FLOAT32_C( -827.42),
                         SIMDE_FLOAT32_C( -235.24), SIMDE_FLOAT32_C(  914.82),
                         SIMDE_FLOAT32_C(    3.35), SIMDE_FLOAT32_C(  -99.95),
                         SIMDE_FLOAT32_C( -932.57), SIMDE_FLOAT32_C(  846.75)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  827.87), SIMDE_FLOAT32_C(  782.35),
                         SIMDE_FLOAT32_C(  364.26), SIMDE_FLOAT32_C(  589.04),
                         SIMDE_FLOAT32_C(   72.17), SIMDE_FLOAT32_C(  906.51),
                         SIMDE_FLOAT32_C(  816.64), SIMDE_FLOAT32_C(  975.90)),
      1 },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -175.70), SIMDE_FLOAT32_C( -858.68),
                         SIMDE_FLOAT32_C(  205.72), SIMDE_FLOAT32_C(  623.26),
                         SIMDE_FLOAT32_C( -971.72), SIMDE_FLOAT32_C( -925.85),
                         SIMDE_FLOAT32_C( -832.18), SIMDE_FLOAT32_C(  290.40)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  995.07), SIMDE_FLOAT32_C(  482.43),
                         SIMDE_FLOAT32_C(  148.85), SIMDE_FLOAT32_C(  851.08),
                         SIMDE_FLOAT32_C( -260.21), SIMDE_FLOAT32_C( -679.27),
                         SIMDE_FLOAT32_C(  612.96), SIMDE_FLOAT32_C( -131.17)),
      0 },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -930.60), SIMDE_FLOAT32_C(  310.01),
                         SIMDE_FLOAT32_C(  768.42), SIMDE_FLOAT32_C( -620.68),
                         SIMDE_FLOAT32_C( -106.57), SIMDE_FLOAT32_C( -657.44),
                         SIMDE_FLOAT32_C(  384.33), SIMDE_FLOAT32_C( -279.72)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   43.01), SIMDE_FLOAT32_C( -312.85),
                         SIMDE_FLOAT32_C( -161.92), SIMDE_FLOAT32_C( -359.59),
                         SIMDE_FLOAT32_C( -839.05), SIMDE_FLOAT32_C(   39.24),
                         SIMDE_FLOAT32_C(  321.97), SIMDE_FLOAT32_C(  303.19)),
      0 },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(   58.24), SIMDE_FLOAT32_C( -990.13),
                         SIMDE_FLOAT32_C(  132.06), SIMDE_FLOAT32_C( -797.37),
                         SIMDE_FLOAT32_C(  843.65), SIMDE_FLOAT32_C( -987.25),
                         SIMDE_FLOAT32_C( -376.56), SIMDE_FLOAT32_C( -319.36)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -543.47), SIMDE_FLOAT32_C( -525.74),
                         SIMDE_FLOAT32_C( -613.35), SIMDE_FLOAT32_C(  390.35),
                         SIMDE_FLOAT32_C( -782.19), SIMDE_FLOAT32_C(  -13.25),
                         SIMDE_FLOAT32_C(  978.40), SIMDE_FLOAT32_C(  796.97)),
      0 },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  904.12), SIMDE_FLOAT32_C( -477.03),
                         SIMDE_FLOAT32_C( -234.30), SIMDE_FLOAT32_C( -407.00),
                         SIMDE_FLOAT32_C( -205.27), SIMDE_FLOAT32_C(  -89.25),
                         SIMDE_FLOAT32_C( -245.34), SIMDE_FLOAT32_C( -973.70)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  359.42), SIMDE_FLOAT32_C(  340.47),
                         SIMDE_FLOAT32_C( -928.36), SIMDE_FLOAT32_C(  988.69),
                         SIMDE_FLOAT32_C(  898.92), SIMDE_FLOAT32_C( -682.31),
                         SIMDE_FLOAT32_C( -259.92), SIMDE_FLOAT32_C(  333.26)),
      1 }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    int r = simde_mm256_testc_ps(test_vec[i].a, test_vec[i].b);
    simde_assert_equal_i(r, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_testc_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256d a;
    simde__m256d b;
    int r;
  } test_vec[8] = {
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  123.47), SIMDE_FLOAT64_C(  212.54),
                         SIMDE_FLOAT64_C(  522.75), SIMDE_FLOAT64_C(    1.15)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -709.99), SIMDE_FLOAT64_C(  514.03),
                         SIMDE_FLOAT64_C(  845.48), SIMDE_FLOAT64_C( -789.13)),
      0 },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  684.95), SIMDE_FLOAT64_C( -284.02),
                         SIMDE_FLOAT64_C(  731.17), SIMDE_FLOAT64_C( -676.64)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -937.45), SIMDE_FLOAT64_C( -128.99),
                         SIMDE_FLOAT64_C( -272.42), SIMDE_FLOAT64_C(  828.88)),
      0 },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  792.09), SIMDE_FLOAT64_C(  380.65),
                         SIMDE_FLOAT64_C( -640.40), SIMDE_FLOAT64_C(  320.89)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  952.36), SIMDE_FLOAT64_C( -153.20),
                         SIMDE_FLOAT64_C( -728.44), SIMDE_FLOAT64_C(  534.46)),
      0 },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -746.07), SIMDE_FLOAT64_C( -762.31),
                         SIMDE_FLOAT64_C( -109.79), SIMDE_FLOAT64_C(  660.25)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -321.84), SIMDE_FLOAT64_C(  811.70),
                         SIMDE_FLOAT64_C( -839.71), SIMDE_FLOAT64_C(  614.83)),
      1 },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  484.63), SIMDE_FLOAT64_C(  471.47),
                         SIMDE_FLOAT64_C( -100.70), SIMDE_FLOAT64_C(  887.09)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -761.94), SIMDE_FLOAT64_C( -263.49),
                         SIMDE_FLOAT64_C( -928.32), SIMDE_FLOAT64_C( -481.21)),
      0 },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  563.75), SIMDE_FLOAT64_C( -564.39),
                         SIMDE_FLOAT64_C(    2.49), SIMDE_FLOAT64_C(  514.36)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  928.41), SIMDE_FLOAT64_C(  792.30),
                         SIMDE_FLOAT64_C( -596.24), SIMDE_FLOAT64_C(  365.58)),
      0 },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -909.73), SIMDE_FLOAT64_C(  892.46),
                         SIMDE_FLOAT64_C( -678.05), SIMDE_FLOAT64_C(  778.72)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -258.15), SIMDE_FLOAT64_C(  100.48),
                         SIMDE_FLOAT64_C(  -77.87), SIMDE_FLOAT64_C( -152.48)),
      0 },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -613.30), SIMDE_FLOAT64_C( -567.86),
                         SIMDE_FLOAT64_C(  674.67), SIMDE_FLOAT64_C( -566.07)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  -57.83), SIMDE_FLOAT64_C( -183.14),
                         SIMDE_FLOAT64_C(  852.20), SIMDE_FLOAT64_C( -939.00)),
      1 }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    int r = simde_mm256_testc_pd(test_vec[i].a, test_vec[i].b);
    simde_assert_equal_i(r, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_testc_si256(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256i a;
    simde__m256i b;
    int r;
  } test_vec[8] = {
    { simde_mm256_set_epi32(INT32_C( 1590541233), INT32_C( -436989526), INT32_C(-1581572624), INT32_C(-1048507105),
                            INT32_C(-1251227046), INT32_C( -111355701), INT32_C(  463981150), INT32_C(-1310282310)),
      simde_mm256_set_epi32(INT32_C(-1730174443), INT32_C(  962749992), INT32_C( 1889650969), INT32_C(-1644227432),
                            INT32_C(-1044962626), INT32_C( 2047573026), INT32_C(-1475613534), INT32_C( -143917251)),
      0 },
    { simde_mm256_set_epi32(INT32_C(-1338083145), INT32_C( 1764771144), INT32_C( -397147050), INT32_C( -289476710),
                            INT32_C( 1323271828), INT32_C(  -86062147), INT32_C( -642595378), INT32_C( -876487591)),
      simde_mm256_set_epi32(INT32_C( -876677989), INT32_C( 1319440399), INT32_C(  561344787), INT32_C( 2014642071),
                            INT32_C( 1196573650), INT32_C(  773018631), INT32_C( 1292104201), INT32_C( 1045703036)),
      0 },
    { simde_mm256_set_epi32(INT32_C(  283890165), INT32_C( -214227023), INT32_C(  601751308), INT32_C( -649446863),
                            INT32_C( -948918925), INT32_C( 1931664941), INT32_C( -846451204), INT32_C( 1136409049)),
      simde_mm256_set_epi32(INT32_C( -384402282), INT32_C( -992732365), INT32_C(-1540963980), INT32_C(  244471001),
                            INT32_C( -395648516), INT32_C( 1146402181), INT32_C( -520478107), INT32_C(-1866567951)),
      0 },
    { simde_mm256_set_epi32(INT32_C(-1798222531), INT32_C(-1196367171), INT32_C( 1622696128), INT32_C(  716668488),
                            INT32_C( 1277881561), INT32_C(-1886059507), INT32_C(-1722396956), INT32_C(  904397943)),
      simde_mm256_set_epi32(INT32_C( 1590185315), INT32_C(-2054583206), INT32_C( -524141746), INT32_C( 1070740740),
                            INT32_C(  228023403), INT32_C(-1312111237), INT32_C(-1647173119), INT32_C(-1984225652)),
      0 },
    { simde_mm256_set_epi32(INT32_C( -291109931), INT32_C(  864813403), INT32_C( 1389239783), INT32_C( 1410930820),
                            INT32_C(  876721304), INT32_C( 1356075339), INT32_C( -969519815), INT32_C( 1884376513)),
      simde_mm256_set_epi32(INT32_C( -348088337), INT32_C( 1648834089), INT32_C(  799153644), INT32_C(-1690149060),
                            INT32_C( -552425726), INT32_C(  889492544), INT32_C( -332273251), INT32_C(-1382843562)),
      0 },
    { simde_mm256_set_epi32(INT32_C( 1282291341), INT32_C( 1395600177), INT32_C( -618520147), INT32_C(  318386342),
                            INT32_C(-1071446046), INT32_C( 1914859572), INT32_C(-1754705496), INT32_C( -643641727)),
      simde_mm256_set_epi32(INT32_C( 1620891909), INT32_C(-1744463022), INT32_C( 1083709334), INT32_C( 1908851820),
                            INT32_C(-1141617057), INT32_C(-1138459296), INT32_C( -288617760), INT32_C(-1727368553)),
      0 },
    { simde_mm256_set_epi32(INT32_C( 1523147892), INT32_C( 1037444310), INT32_C(  -23711686), INT32_C(-1269181771),
                            INT32_C( 1945791614), INT32_C( -804519478), INT32_C(  -20906646), INT32_C( 1310709876)),
      simde_mm256_set_epi32(INT32_C( -504237752), INT32_C(  883986365), INT32_C( 1802809300), INT32_C(-1859897822),
                            INT32_C(-1272698163), INT32_C( -143410874), INT32_C(  638495924), INT32_C(-1299515093)),
      0 },
    { simde_mm256_set_epi32(INT32_C(         -1), INT32_C(         -1), INT32_C(         -1), INT32_C(         -1),
                            INT32_C(         -1), INT32_C(         -1), INT32_C(         -1), INT32_C(         -1)),
      simde_mm256_set_epi32(INT32_C(          0), INT32_C(          0), INT32_C(          0), INT32_C(          0),
                            INT32_C(          0), INT32_C(          0), INT32_C(          0), INT32_C(          0)),
      1 }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    int r = simde_mm256_testc_si256(test_vec[i].a, test_vec[i].b);
    simde_assert_equal_i(r, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm_testz_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m128 a;
    simde__m128 b;
    int r;
  } test_vec[8] = {
    { simde_mm_set_ps(SIMDE_FLOAT32_C( -535.65), SIMDE_FLOAT32_C( -770.48), SIMDE_FLOAT32_C(  566.67), SIMDE_FLOAT32_C(  159.53)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  117.32), SIMDE_FLOAT32_C( -915.32), SIMDE_FLOAT32_C( -244.51), SIMDE_FLOAT32_C(  139.82)),
      0 },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(  688.86), SIMDE_FLOAT32_C(  962.46), SIMDE_FLOAT32_C(  502.62), SIMDE_FLOAT32_C( -759.82)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  447.13), SIMDE_FLOAT32_C(  569.82), SIMDE_FLOAT32_C(  813.87), SIMDE_FLOAT32_C(  -41.23)),
      0 },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(  717.58), SIMDE_FLOAT32_C( -388.95), SIMDE_FLOAT32_C(  405.99), SIMDE_FLOAT32_C( -505.21)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  651.17), SIMDE_FLOAT32_C(   43.00), SIMDE_FLOAT32_C( -865.65), SIMDE_FLOAT32_C(  116.25)),
      1 },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(  748.82), SIMDE_FLOAT32_C( -519.63), SIMDE_FLOAT32_C(  940.52), SIMDE_FLOAT32_C( -776.61)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  -86.61), SIMDE_FLOAT32_C(  528.66), SIMDE_FLOAT32_C(  315.29), SIMDE_FLOAT32_C( -836.37)),
      0 },
    { simde_mm_set_ps(SIMDE_FLOAT32_C( -930.47), SIMDE_FLOAT32_C(  385.27), SIMDE_FLOAT32_C(  328.25), SIMDE_FLOAT32_C( -891.42)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  769.90), SIMDE_FLOAT32_C(  203.87), SIMDE_FLOAT32_C(   70.77), SIMDE_FLOAT32_C(  153.64)),
      1 },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(  110.09), SIMDE_FLOAT32_C( -474.31), SIMDE_FLOAT32_C( -205.82), SIMDE_FLOAT32_C( -912.60)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  690.10), SIMDE_FLOAT32_C( -177.50), SIMDE_FLOAT32_C(   69.56), SIMDE_FLOAT32_C( -722.94)),
      0 },
    { simde_mm_set_ps(SIMDE_FLOAT32_C( -854.45), SIMDE_FLOAT32_C( -233.74), SIMDE_FLOAT32_C(  792.75), SIMDE_FLOAT32_C(  911.93)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  835.88), SIMDE_FLOAT32_C( -477.16), SIMDE_FLOAT32_C(  481.40), SIMDE_FLOAT32_C( -325.48)),
      0 },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(  349.66), SIMDE_FLOAT32_C(  852.75), SIMDE_FLOAT32_C(  630.50), SIMDE_FLOAT32_C(  599.35)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  -12.39), SIMDE_FLOAT32_C(  669.65), SIMDE_FLOAT32_C(   19.88), SIMDE_FLOAT32_C( -104.79)),
      1 }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    int r = simde_mm_testz_ps(test_vec[i].a, test_vec[i].b);
    simde_assert_equal_i(r, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm_testz_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m128d a;
    simde__m128d b;
    int r;
  } test_vec[8] = {
    { simde_mm_set_pd(SIMDE_FLOAT64_C( -133.70), SIMDE_FLOAT64_C( -364.47)),
      simde_mm_set_pd(SIMDE_FLOAT64_C(  299.27), SIMDE_FLOAT64_C(  706.73)),
      1 },
    { simde_mm_set_pd(SIMDE_FLOAT64_C(  411.42), SIMDE_FLOAT64_C( -916.18)),
      simde_mm_set_pd(SIMDE_FLOAT64_C(  443.76), SIMDE_FLOAT64_C(  616.70)),
      1 },
    { simde_mm_set_pd(SIMDE_FLOAT64_C(  177.79), SIMDE_FLOAT64_C( -562.30)),
      simde_mm_set_pd(SIMDE_FLOAT64_C(  491.38), SIMDE_FLOAT64_C(  437.67)),
      1 },
    { simde_mm_set_pd(SIMDE_FLOAT64_C( -601.90), SIMDE_FLOAT64_C(  130.89)),
      simde_mm_set_pd(SIMDE_FLOAT64_C( -297.66), SIMDE_FLOAT64_C( -243.36)),
      0 },
    { simde_mm_set_pd(SIMDE_FLOAT64_C( -461.95), SIMDE_FLOAT64_C( -708.04)),
      simde_mm_set_pd(SIMDE_FLOAT64_C( -179.91), SIMDE_FLOAT64_C(  436.91)),
      0 },
    { simde_mm_set_pd(SIMDE_FLOAT64_C( -477.48), SIMDE_FLOAT64_C(  546.05)),
      simde_mm_set_pd(SIMDE_FLOAT64_C( -804.65), SIMDE_FLOAT64_C(  660.18)),
      0 },
    { simde_mm_set_pd(SIMDE_FLOAT64_C(  366.33), SIMDE_FLOAT64_C( -393.70)),
      simde_mm_set_pd(SIMDE_FLOAT64_C(  758.77), SIMDE_FLOAT64_C( -413.77)),
      0 },
    { simde_mm_set_pd(SIMDE_FLOAT64_C( -605.04), SIMDE_FLOAT64_C(  186.44)),
      simde_mm_set_pd(SIMDE_FLOAT64_C( -113.05), SIMDE_FLOAT64_C(  709.60)),
      0 }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    int r = simde_mm_testz_pd(test_vec[i].a, test_vec[i].b);
    simde_assert_equal_i(r, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_testz_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde__m256 b;
    int r;
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  203.89), SIMDE_FLOAT32_C(  929.87),
                         SIMDE_FLOAT32_C( -921.04), SIMDE_FLOAT32_C( -927.33),
                         SIMDE_FLOAT32_C(  876.23), SIMDE_FLOAT32_C(  583.50),
                         SIMDE_FLOAT32_C(  560.83), SIMDE_FLOAT32_C( -996.47)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(   41.17), SIMDE_FLOAT32_C(  356.76),
                         SIMDE_FLOAT32_C( -537.40), SIMDE_FLOAT32_C( -959.48),
                         SIMDE_FLOAT32_C( -224.29), SIMDE_FLOAT32_C(  -28.33),
                         SIMDE_FLOAT32_C( -153.96), SIMDE_FLOAT32_C( -377.38)),
      0 },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  417.43), SIMDE_FLOAT32_C( -235.27),
                         SIMDE_FLOAT32_C( -869.92), SIMDE_FLOAT32_C( -107.51),
                         SIMDE_FLOAT32_C(  353.07), SIMDE_FLOAT32_C(  989.26),
                         SIMDE_FLOAT32_C(   19.42), SIMDE_FLOAT32_C(  737.36)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -799.55), SIMDE_FLOAT32_C( -863.03),
                         SIMDE_FLOAT32_C(  787.36), SIMDE_FLOAT32_C(  884.07),
                         SIMDE_FLOAT32_C( -646.88), SIMDE_FLOAT32_C(  348.23),
                         SIMDE_FLOAT32_C(  -19.97), SIMDE_FLOAT32_C(  231.76)),
      0 },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -434.95), SIMDE_FLOAT32_C(  367.82),
                         SIMDE_FLOAT32_C( -198.30), SIMDE_FLOAT32_C(  569.25),
                         SIMDE_FLOAT32_C(   37.80), SIMDE_FLOAT32_C(  656.68),
                         SIMDE_FLOAT32_C( -154.19), SIMDE_FLOAT32_C( -268.68)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  679.38), SIMDE_FLOAT32_C(  416.08),
                         SIMDE_FLOAT32_C(  591.38), SIMDE_FLOAT32_C( -410.17),
                         SIMDE_FLOAT32_C( -434.20), SIMDE_FLOAT32_C( -656.84),
                         SIMDE_FLOAT32_C( -369.35), SIMDE_FLOAT32_C( -216.32)),
      0 },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  -37.47), SIMDE_FLOAT32_C(  -40.21),
                         SIMDE_FLOAT32_C(    5.31), SIMDE_FLOAT32_C(  651.03),
                         SIMDE_FLOAT32_C(   91.95), SIMDE_FLOAT32_C(  136.83),
                         SIMDE_FLOAT32_C(  215.58), SIMDE_FLOAT32_C(  976.43)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  791.68), SIMDE_FLOAT32_C(  -97.52),
                         SIMDE_FLOAT32_C(   49.28), SIMDE_FLOAT32_C(  -47.67),
                         SIMDE_FLOAT32_C( -520.82), SIMDE_FLOAT32_C(  775.18),
                         SIMDE_FLOAT32_C( -311.24), SIMDE_FLOAT32_C(   87.06)),
      0 },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  974.54), SIMDE_FLOAT32_C( -572.67),
                         SIMDE_FLOAT32_C(  228.68), SIMDE_FLOAT32_C( -268.11),
                         SIMDE_FLOAT32_C(   83.97), SIMDE_FLOAT32_C( -607.98),
                         SIMDE_FLOAT32_C(  317.68), SIMDE_FLOAT32_C( -118.11)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -579.32), SIMDE_FLOAT32_C( -684.32),
                         SIMDE_FLOAT32_C(  -14.94), SIMDE_FLOAT32_C(  840.53),
                         SIMDE_FLOAT32_C( -875.18), SIMDE_FLOAT32_C( -264.19),
                         SIMDE_FLOAT32_C( -675.61), SIMDE_FLOAT32_C(  236.61)),
      0 },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  268.13), SIMDE_FLOAT32_C(  524.74),
                         SIMDE_FLOAT32_C( -846.94), SIMDE_FLOAT32_C(  539.16),
                         SIMDE_FLOAT32_C( -824.88), SIMDE_FLOAT32_C(  966.22),
                         SIMDE_FLOAT32_C( -319.64), SIMDE_FLOAT32_C(  463.07)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -484.03), SIMDE_FLOAT32_C( -785.67),
                         SIMDE_FLOAT32_C(  818.22), SIMDE_FLOAT32_C(  722.83),
                         SIMDE_FLOAT32_C( -933.76), SIMDE_FLOAT32_C( -804.32),
                         SIMDE_FLOAT32_C(  -18.04), SIMDE_FLOAT32_C(  790.55)),
      0 },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  496.61), SIMDE_FLOAT32_C(  895.69),
                         SIMDE_FLOAT32_C(   83.61), SIMDE_FLOAT32_C( -625.29),
                         SIMDE_FLOAT32_C( -963.29), SIMDE_FLOAT32_C( -202.04),
                         SIMDE_FLOAT32_C( -184.94), SIMDE_FLOAT32_C(  102.69)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -121.97), SIMDE_FLOAT32_C( -483.26),
                         SIMDE_FLOAT32_C( -796.68), SIMDE_FLOAT32_C(  593.94),
                         SIMDE_FLOAT32_C( -642.73), SIMDE_FLOAT32_C( -850.47),
                         SIMDE_FLOAT32_C( -793.37), SIMDE_FLOAT32_C( -202.72)),
      0 },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  824.10), SIMDE_FLOAT32_C( -794.74),
                         SIMDE_FLOAT32_C( -876.82), SIMDE_FLOAT32_C(   50.96),
                         SIMDE_FLOAT32_C( -281.18), SIMDE_FLOAT32_C( -527.70),
                         SIMDE_FLOAT32_C( -453.71), SIMDE_FLOAT32_C( -588.71)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  755.45), SIMDE_FLOAT32_C( -252.04),
                         SIMDE_FLOAT32_C( -915.68), SIMDE_FLOAT32_C(  -54.75),
                         SIMDE_FLOAT32_C(  -63.75), SIMDE_FLOAT32_C(  413.61),
                         SIMDE_FLOAT32_C( -347.26), SIMDE_FLOAT32_C(  540.31)),
      0 }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    int r = simde_mm256_testz_ps(test_vec[i].a, test_vec[i].b);
    simde_assert_equal_i(r, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_testz_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256d a;
    simde__m256d b;
    int r;
  } test_vec[8] = {
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  374.19), SIMDE_FLOAT64_C( -934.66),
                         SIMDE_FLOAT64_C(  991.69), SIMDE_FLOAT64_C(  768.86)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  772.38), SIMDE_FLOAT64_C(  118.89),
                         SIMDE_FLOAT64_C( -913.18), SIMDE_FLOAT64_C(  220.47)),
      1 },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -659.01), SIMDE_FLOAT64_C( -495.78),
                         SIMDE_FLOAT64_C(  343.83), SIMDE_FLOAT64_C( -984.74)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  485.80), SIMDE_FLOAT64_C(  393.82),
                         SIMDE_FLOAT64_C( -663.76), SIMDE_FLOAT64_C(  -48.15)),
      0 },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(   49.22), SIMDE_FLOAT64_C( -581.06),
                         SIMDE_FLOAT64_C(  568.03), SIMDE_FLOAT64_C( -985.31)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -336.00), SIMDE_FLOAT64_C( -139.33),
                         SIMDE_FLOAT64_C(  617.24), SIMDE_FLOAT64_C(  953.30)),
      0 },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -274.93), SIMDE_FLOAT64_C( -900.75),
                         SIMDE_FLOAT64_C( -102.71), SIMDE_FLOAT64_C( -472.84)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -901.78), SIMDE_FLOAT64_C(   12.36),
                         SIMDE_FLOAT64_C(  689.29), SIMDE_FLOAT64_C( -976.30)),
      0 },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  995.09), SIMDE_FLOAT64_C( -313.13),
                         SIMDE_FLOAT64_C( -440.17), SIMDE_FLOAT64_C(  189.57)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  355.51), SIMDE_FLOAT64_C( -932.21),
                         SIMDE_FLOAT64_C( -616.46), SIMDE_FLOAT64_C( -552.77)),
      0 },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -528.18), SIMDE_FLOAT64_C(   45.66),
                         SIMDE_FLOAT64_C(  363.59), SIMDE_FLOAT64_C(  611.34)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -921.78), SIMDE_FLOAT64_C(  818.71),
                         SIMDE_FLOAT64_C( -177.51), SIMDE_FLOAT64_C(  690.85)),
      0 },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -323.41), SIMDE_FLOAT64_C( -699.06),
                         SIMDE_FLOAT64_C( -250.77), SIMDE_FLOAT64_C(  136.95)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  793.97), SIMDE_FLOAT64_C( -124.81),
                         SIMDE_FLOAT64_C( -222.21), SIMDE_FLOAT64_C(    0.47)),
      0 },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  499.90), SIMDE_FLOAT64_C(   53.18),
                         SIMDE_FLOAT64_C(  122.29), SIMDE_FLOAT64_C( -348.92)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  656.41), SIMDE_FLOAT64_C(  401.79),
                         SIMDE_FLOAT64_C(  913.30), SIMDE_FLOAT64_C(  939.03)),
      1 }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    int r = simde_mm256_testz_pd(test_vec[i].a, test_vec[i].b);
    simde_assert_equal_i(r, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_testz_si256(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256i a;
    simde__m256i b;
    int r;
  } test_vec[8] = {
    { simde_mm256_set_epi64x(INT64_C( 6293711937966483210), INT64_C( 1880458700636896550),
                             INT64_C(-2395812271494697349), INT64_C(-3219984426865676065)),
      simde_mm256_set_epi64x(INT64_C(-5944145716236985819), INT64_C( 3393778583556144207),
                             INT64_C(-7902030010445655740), INT64_C( 1343831900549571141)),
      0 },
    { simde_mm256_set_epi64x(INT64_C(-4587433109256837328), INT64_C( 4600839100559586303),
                             INT64_C(-4228750003309626741), INT64_C( 8478339671631213897)),
      simde_mm256_set_epi64x(INT64_C(-2398862596123305272), INT64_C( -195553556197471185),
                             INT64_C(-1163267556607256299), INT64_C( 8724663478814299088)),
      0 },
    { simde_mm256_set_epi64x(INT64_C( 6318565256204443110), INT64_C( 8197829483289572776),
                             INT64_C(-5241286122396602839), INT64_C( 8034039929823396869)),
      simde_mm256_set_epi64x(INT64_C( 2316518055936499365), INT64_C(-3827103871459261221),
                             INT64_C(-1074153741299789825), INT64_C(-5706377024354090462)),
      0 },
    { simde_mm256_set_epi64x(INT64_C( 6337382312890404250), INT64_C( 1040004396151504333),
                             INT64_C(-6858337698693557354), INT64_C(-3290810792006167916)),
      simde_mm256_set_epi64x(INT64_C(-5980280665599952377), INT64_C(-4826455948616871632),
                             INT64_C( 3955163730046162798), INT64_C(-5561662165703631134)),
      0 },
    { simde_mm256_set_epi64x(INT64_C(-3638435057324933583), INT64_C(-9111798730377633063),
                             INT64_C(-2892856737256268180), INT64_C( 4241350171537373665)),
      simde_mm256_set_epi64x(INT64_C(-1517017303777947826), INT64_C( 1106019512787868766),
                             INT64_C(-4154459162475494220), INT64_C( 2458562407439632505)),
      0 },
    { simde_mm256_set_epi64x(INT64_C(-8613849652924649480), INT64_C( 4502213447815150777),
                             INT64_C(  964826197151294912), INT64_C(-2062422363128377394)),
      simde_mm256_set_epi64x(INT64_C(  420430988932892588), INT64_C( 7089052628145876495),
                             INT64_C(  964826197151294912), INT64_C(-2062422363128377394)),
      0 },
    { simde_mm256_set_epi64x(INT64_C( 2313467387214959309), INT64_C( 1954089676203891706),
                             INT64_C(-5992642054331042599), INT64_C( 2987244174038246250)),
      simde_mm256_set_epi64x(~INT64_C( 2313467387214959309), ~INT64_C( 1954089676203891706),
                             ~INT64_C(-5992642054331042599), ~INT64_C( 2987244174038246250)),
      1 },
    { simde_mm256_set_epi64x(INT64_C(                   0), INT64_C(                   0),
                             INT64_C(                   0), INT64_C(                   0)),
      simde_mm256_set_epi64x(INT64_C(                   0), INT64_C(                   0),
                             INT64_C(                   0), INT64_C(                   0)),
      1 }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    int r = simde_mm256_testz_si256(test_vec[i].a, test_vec[i].b);
    simde_assert_equal_i(r, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm_testnzc_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m128 a;
    simde__m128 b;
    int r;
  } test_vec[8] = {
    { simde_mm_set_ps(SIMDE_FLOAT32_C( -677.80), SIMDE_FLOAT32_C(  923.51), SIMDE_FLOAT32_C(   12.34), SIMDE_FLOAT32_C(  570.37)),
      simde_mm_set_ps(SIMDE_FLOAT32_C( -986.13), SIMDE_FLOAT32_C(  240.32), SIMDE_FLOAT32_C(  591.49), SIMDE_FLOAT32_C(  161.31)),
      0 },
    { simde_mm_set_ps(SIMDE_FLOAT32_C( -901.76), SIMDE_FLOAT32_C( -346.47), SIMDE_FLOAT32_C(  361.48), SIMDE_FLOAT32_C(  579.94)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(   37.29), SIMDE_FLOAT32_C(  138.07), SIMDE_FLOAT32_C(  -20.49), SIMDE_FLOAT32_C(  183.91)),
      0 },
    { simde_mm_set_ps(SIMDE_FLOAT32_C( -126.05), SIMDE_FLOAT32_C( -737.54), SIMDE_FLOAT32_C(  797.63), SIMDE_FLOAT32_C(  -91.26)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  622.90), SIMDE_FLOAT32_C(  921.88), SIMDE_FLOAT32_C( -199.46), SIMDE_FLOAT32_C( -960.51)),
      1 },
    { simde_mm_set_ps(SIMDE_FLOAT32_C( -724.79), SIMDE_FLOAT32_C(  401.73), SIMDE_FLOAT32_C(  459.33), SIMDE_FLOAT32_C( -257.11)),
      simde_mm_set_ps(SIMDE_FLOAT32_C( -483.83), SIMDE_FLOAT32_C( -357.19), SIMDE_FLOAT32_C(  660.48), SIMDE_FLOAT32_C( -967.49)),
      1 },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(  987.08), SIMDE_FLOAT32_C(  -85.77), SIMDE_FLOAT32_C(  750.67), SIMDE_FLOAT32_C( -384.35)),
      simde_mm_set_ps(SIMDE_FLOAT32_C( -846.85), SIMDE_FLOAT32_C(  171.98), SIMDE_FLOAT32_C(   38.30), SIMDE_FLOAT32_C( -999.02)),
      1 },
    { simde_mm_set_ps(SIMDE_FLOAT32_C( -535.41), SIMDE_FLOAT32_C(  674.36), SIMDE_FLOAT32_C(  853.75), SIMDE_FLOAT32_C(  423.18)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  436.68), SIMDE_FLOAT32_C( -556.22), SIMDE_FLOAT32_C( -733.91), SIMDE_FLOAT32_C( -508.00)),
      0 },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(   87.42), SIMDE_FLOAT32_C(  -99.53), SIMDE_FLOAT32_C( -449.18), SIMDE_FLOAT32_C(  694.82)),
      simde_mm_set_ps(SIMDE_FLOAT32_C( -853.63), SIMDE_FLOAT32_C( -112.00), SIMDE_FLOAT32_C(   87.42), SIMDE_FLOAT32_C(  -97.80)),
      1 },
    { simde_mm_set_ps(SIMDE_FLOAT32_C(  342.14), SIMDE_FLOAT32_C(  347.96), SIMDE_FLOAT32_C( -638.14), SIMDE_FLOAT32_C( -357.36)),
      simde_mm_set_ps(SIMDE_FLOAT32_C(  103.59), SIMDE_FLOAT32_C(  685.51), SIMDE_FLOAT32_C(   13.48), SIMDE_FLOAT32_C(  108.92)),
      0 }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    int r = simde_mm_testnzc_ps(test_vec[i].a, test_vec[i].b);
    simde_assert_equal_i(r, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm_testnzc_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m128d a;
    simde__m128d b;
    int r;
  } test_vec[8] = {
   { simde_mm_set_pd(SIMDE_FLOAT64_C( -120.11), SIMDE_FLOAT64_C(  530.28)),
      simde_mm_set_pd(SIMDE_FLOAT64_C( -886.61), SIMDE_FLOAT64_C(  297.97)),
      0 },
    { simde_mm_set_pd(SIMDE_FLOAT64_C(  660.15), SIMDE_FLOAT64_C(  462.46)),
      simde_mm_set_pd(SIMDE_FLOAT64_C(  753.92), SIMDE_FLOAT64_C( -475.11)),
      0 },
    { simde_mm_set_pd(SIMDE_FLOAT64_C(  195.21), SIMDE_FLOAT64_C(  577.36)),
      simde_mm_set_pd(SIMDE_FLOAT64_C(  977.83), SIMDE_FLOAT64_C(  562.50)),
      0 },
    { simde_mm_set_pd(SIMDE_FLOAT64_C(  184.20), SIMDE_FLOAT64_C( -531.42)),
      simde_mm_set_pd(SIMDE_FLOAT64_C( -597.14), SIMDE_FLOAT64_C(   63.31)),
      0 },
    { simde_mm_set_pd(SIMDE_FLOAT64_C(  591.68), SIMDE_FLOAT64_C( -753.83)),
      simde_mm_set_pd(SIMDE_FLOAT64_C(   42.69), SIMDE_FLOAT64_C( -626.35)),
      0 },
    { simde_mm_set_pd(SIMDE_FLOAT64_C(  799.46), SIMDE_FLOAT64_C(  415.70)),
      simde_mm_set_pd(SIMDE_FLOAT64_C( -755.76), SIMDE_FLOAT64_C( -637.19)),
      0 },
    { simde_mm_set_pd(SIMDE_FLOAT64_C(  708.86), SIMDE_FLOAT64_C( -480.39)),
      simde_mm_set_pd(SIMDE_FLOAT64_C(  417.06), SIMDE_FLOAT64_C( -687.07)),
      0 },
    { simde_mm_set_pd(SIMDE_FLOAT64_C(  -48.08), SIMDE_FLOAT64_C(  617.37)),
      simde_mm_set_pd(SIMDE_FLOAT64_C( -937.79), SIMDE_FLOAT64_C( -565.45)),
      1 }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    int r = simde_mm_testnzc_pd(test_vec[i].a, test_vec[i].b);
    simde_assert_equal_i(r, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_testnzc_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256 a;
    simde__m256 b;
    int r;
  } test_vec[8] = {
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  583.89), SIMDE_FLOAT32_C( -712.24),
                         SIMDE_FLOAT32_C( -125.89), SIMDE_FLOAT32_C(  188.79),
                         SIMDE_FLOAT32_C(  520.73), SIMDE_FLOAT32_C(  -68.12),
                         SIMDE_FLOAT32_C(  822.52), SIMDE_FLOAT32_C( -595.06)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  671.97), SIMDE_FLOAT32_C(  390.57),
                         SIMDE_FLOAT32_C( -318.49), SIMDE_FLOAT32_C( -885.66),
                         SIMDE_FLOAT32_C( -314.30), SIMDE_FLOAT32_C( -285.04),
                         SIMDE_FLOAT32_C( -162.81), SIMDE_FLOAT32_C( -410.54)),
      1 },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -820.54), SIMDE_FLOAT32_C( -790.46),
                         SIMDE_FLOAT32_C(  711.91), SIMDE_FLOAT32_C(  907.30),
                         SIMDE_FLOAT32_C( -112.02), SIMDE_FLOAT32_C(  599.13),
                         SIMDE_FLOAT32_C(  409.13), SIMDE_FLOAT32_C( -352.81)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  176.49), SIMDE_FLOAT32_C(  775.58),
                         SIMDE_FLOAT32_C(  -44.34), SIMDE_FLOAT32_C( -968.49),
                         SIMDE_FLOAT32_C(   67.85), SIMDE_FLOAT32_C(  437.32),
                         SIMDE_FLOAT32_C( -839.45), SIMDE_FLOAT32_C( -726.44)),
      1 },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  967.58), SIMDE_FLOAT32_C( -926.13),
                         SIMDE_FLOAT32_C( -667.55), SIMDE_FLOAT32_C(  983.87),
                         SIMDE_FLOAT32_C(  566.68), SIMDE_FLOAT32_C(  720.39),
                         SIMDE_FLOAT32_C(   81.27), SIMDE_FLOAT32_C( -180.83)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -556.40), SIMDE_FLOAT32_C(   58.13),
                         SIMDE_FLOAT32_C( -255.30), SIMDE_FLOAT32_C( -733.19),
                         SIMDE_FLOAT32_C(  141.91), SIMDE_FLOAT32_C(   83.86),
                         SIMDE_FLOAT32_C(  265.25), SIMDE_FLOAT32_C(  380.17)),
      1 },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -290.71), SIMDE_FLOAT32_C( -838.97),
                         SIMDE_FLOAT32_C(  -21.50), SIMDE_FLOAT32_C(  222.89),
                         SIMDE_FLOAT32_C(  710.43), SIMDE_FLOAT32_C( -683.80),
                         SIMDE_FLOAT32_C( -751.33), SIMDE_FLOAT32_C(  356.34)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  328.43), SIMDE_FLOAT32_C(  897.92),
                         SIMDE_FLOAT32_C( -115.62), SIMDE_FLOAT32_C(  410.36),
                         SIMDE_FLOAT32_C(  613.67), SIMDE_FLOAT32_C( -980.39),
                         SIMDE_FLOAT32_C(  791.41), SIMDE_FLOAT32_C(  271.47)),
      0 },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C(  -54.57), SIMDE_FLOAT32_C(  595.88),
                         SIMDE_FLOAT32_C(   92.56), SIMDE_FLOAT32_C(  -69.35),
                         SIMDE_FLOAT32_C(  525.25), SIMDE_FLOAT32_C(  150.31),
                         SIMDE_FLOAT32_C(  507.37), SIMDE_FLOAT32_C(  171.79)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -147.77), SIMDE_FLOAT32_C(  635.99),
                         SIMDE_FLOAT32_C(  922.13), SIMDE_FLOAT32_C( -150.43),
                         SIMDE_FLOAT32_C( -599.09), SIMDE_FLOAT32_C(  969.81),
                         SIMDE_FLOAT32_C(  -52.12), SIMDE_FLOAT32_C(  931.26)),
      1 },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -925.77), SIMDE_FLOAT32_C( -819.13),
                         SIMDE_FLOAT32_C( -387.03), SIMDE_FLOAT32_C(  369.31),
                         SIMDE_FLOAT32_C(  816.32), SIMDE_FLOAT32_C( -110.60),
                         SIMDE_FLOAT32_C(  155.71), SIMDE_FLOAT32_C( -467.73)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C( -249.07), SIMDE_FLOAT32_C(  262.13),
                         SIMDE_FLOAT32_C( -955.31), SIMDE_FLOAT32_C( -680.63),
                         SIMDE_FLOAT32_C( -662.36), SIMDE_FLOAT32_C(   38.93),
                         SIMDE_FLOAT32_C(  136.68), SIMDE_FLOAT32_C(  432.80)),
      1 },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -753.72), SIMDE_FLOAT32_C(  933.35),
                         SIMDE_FLOAT32_C(  780.23), SIMDE_FLOAT32_C(  299.81),
                         SIMDE_FLOAT32_C( -790.25), SIMDE_FLOAT32_C(  868.49),
                         SIMDE_FLOAT32_C( -966.55), SIMDE_FLOAT32_C( -856.58)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  584.14), SIMDE_FLOAT32_C( -395.66),
                         SIMDE_FLOAT32_C( -690.53), SIMDE_FLOAT32_C( -230.79),
                         SIMDE_FLOAT32_C( -409.16), SIMDE_FLOAT32_C( -954.27),
                         SIMDE_FLOAT32_C( -286.31), SIMDE_FLOAT32_C(  -72.81)),
      1 },
    { simde_mm256_set_ps(SIMDE_FLOAT32_C( -458.63), SIMDE_FLOAT32_C( -211.79),
                         SIMDE_FLOAT32_C(  179.21), SIMDE_FLOAT32_C( -282.23),
                         SIMDE_FLOAT32_C(  901.33), SIMDE_FLOAT32_C(  545.46),
                         SIMDE_FLOAT32_C(  300.44), SIMDE_FLOAT32_C(  545.25)),
      simde_mm256_set_ps(SIMDE_FLOAT32_C(  816.92), SIMDE_FLOAT32_C( -195.51),
                         SIMDE_FLOAT32_C( -422.20), SIMDE_FLOAT32_C(  587.24),
                         SIMDE_FLOAT32_C(  -85.60), SIMDE_FLOAT32_C(  249.83),
                         SIMDE_FLOAT32_C( -348.91), SIMDE_FLOAT32_C(  259.84)),
      1 }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    int r = simde_mm256_testnzc_ps(test_vec[i].a, test_vec[i].b);
    simde_assert_equal_i(r, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_testnzc_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256d a;
    simde__m256d b;
    int r;
  } test_vec[8] = {
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -740.05), SIMDE_FLOAT64_C( -803.89),
                         SIMDE_FLOAT64_C( -738.69), SIMDE_FLOAT64_C( -907.97)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -601.20), SIMDE_FLOAT64_C(  873.56),
                         SIMDE_FLOAT64_C( -427.28), SIMDE_FLOAT64_C( -539.59)),
      0 },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -679.84), SIMDE_FLOAT64_C(  334.20),
                         SIMDE_FLOAT64_C(  374.46), SIMDE_FLOAT64_C(  -17.90)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  933.19), SIMDE_FLOAT64_C(  255.92),
                         SIMDE_FLOAT64_C( -527.33), SIMDE_FLOAT64_C(  651.28)),
      0 },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -960.47), SIMDE_FLOAT64_C(   47.50),
                         SIMDE_FLOAT64_C(  839.01), SIMDE_FLOAT64_C( -388.45)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -230.23), SIMDE_FLOAT64_C( -286.70),
                         SIMDE_FLOAT64_C( -578.79), SIMDE_FLOAT64_C(  287.52)),
      1 },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -128.67), SIMDE_FLOAT64_C( -282.41),
                         SIMDE_FLOAT64_C( -741.53), SIMDE_FLOAT64_C(  405.60)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -927.14), SIMDE_FLOAT64_C( -105.58),
                         SIMDE_FLOAT64_C( -674.42), SIMDE_FLOAT64_C( -434.93)),
      1 },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  469.51), SIMDE_FLOAT64_C( -726.27),
                         SIMDE_FLOAT64_C(  -57.54), SIMDE_FLOAT64_C(   10.85)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -629.68), SIMDE_FLOAT64_C(  193.64),
                         SIMDE_FLOAT64_C( -188.44), SIMDE_FLOAT64_C( -942.28)),
      1 },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C(  717.44), SIMDE_FLOAT64_C( -428.23),
                         SIMDE_FLOAT64_C( -903.34), SIMDE_FLOAT64_C(  963.44)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -806.29), SIMDE_FLOAT64_C(  928.14),
                         SIMDE_FLOAT64_C( -419.31), SIMDE_FLOAT64_C( -536.05)),
      1 },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -682.64), SIMDE_FLOAT64_C(  364.27),
                         SIMDE_FLOAT64_C(  -11.12), SIMDE_FLOAT64_C(  923.42)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C( -496.96), SIMDE_FLOAT64_C( -698.68),
                         SIMDE_FLOAT64_C(  762.99), SIMDE_FLOAT64_C(  104.59)),
      1 },
    { simde_mm256_set_pd(SIMDE_FLOAT64_C( -867.55), SIMDE_FLOAT64_C(  263.90),
                         SIMDE_FLOAT64_C( -169.35), SIMDE_FLOAT64_C(  237.91)),
      simde_mm256_set_pd(SIMDE_FLOAT64_C(  768.02), SIMDE_FLOAT64_C(  326.08),
                         SIMDE_FLOAT64_C(  577.75), SIMDE_FLOAT64_C( -405.14)),
      0 }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    int r = simde_mm256_testnzc_pd(test_vec[i].a, test_vec[i].b);
    simde_assert_equal_i(r, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm256_testnzc_si256(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m256i a;
    simde__m256i b;
    int r;
  } test_vec[8] = {
    { simde_mm256_set_epi64x(INT64_C(-6804708873655136040), INT64_C( 4446918229480945172),
                             INT64_C(-6458803806102185271), INT64_C( 6419639704555297719)),
      simde_mm256_set_epi64x(INT64_C( 4086527184939990173), INT64_C(-4592254743728630867),
                             INT64_C( 4970594815150486048), INT64_C(-7583682924010349946)),
      1 },
    { simde_mm256_set_epi64x(INT64_C(-1928057325376684019), INT64_C(-8724716645086732256),
                             INT64_C(-3860992505389240967), INT64_C( 2464414912339664108)),
      simde_mm256_set_epi64x(INT64_C( 2743122637609340204), INT64_C( 1297961604072261704),
                             INT64_C( 3905148821277274727), INT64_C( 7711768841031320482)),
      1 },
    { simde_mm256_set_epi64x(INT64_C(-1757300674109662463), INT64_C( 3540874093748815164),
                             INT64_C( 6199345139492343278), INT64_C(-2392213781376855007)),
      simde_mm256_set_epi64x(INT64_C( 3074780231229279065), INT64_C( 3565435212917289013),
                             INT64_C( 4586940771077894472), INT64_C(-7584245251433225890)),
      1 },
    { simde_mm256_set_epi64x(INT64_C(  494161565528569426), INT64_C( 6322507550162055397),
                             INT64_C(-5323201274204502385), INT64_C(-1289213418743081892)),
      simde_mm256_set_epi64x(INT64_C(-6476107628412075124), INT64_C(-6021204385531569231),
                             INT64_C(-1583794509252285729), INT64_C( 3089826828243401077)),
      1 },
    { simde_mm256_set_epi64x(INT64_C( 8385406147133094169), INT64_C( 8814670790512562044),
                             INT64_C(-3816462967170746071), INT64_C( 6122654749309721394)),
      simde_mm256_set_epi64x(INT64_C( 3128481605987261169), INT64_C( 5408589980237811609),
                             INT64_C(  884520455099049673), INT64_C( 8133398980467634343)),
      1 },
    { simde_mm256_set_epi64x(INT64_C(-8329161804206964235), INT64_C(  636927422382767873),
                             INT64_C( 3009146061842021624), INT64_C(-1851032033415757843)),
      simde_mm256_set_epi64x(INT64_C( 6472691381239458493), INT64_C( -333790812247230429),
                             INT64_C(-8827165560999629213), INT64_C(-6808896659071721867)),
      1 },
    { simde_mm256_set_epi64x(INT64_C( 6104921182164936438), INT64_C(-1838247589228581946),
                             INT64_C( 4047419838992777892), INT64_C(-7001360392396553117)),
      simde_mm256_set_epi64x(INT64_C( 5238813195851712113), INT64_C( -198251833482699615),
                             INT64_C(-2396015894110422309), INT64_C(-6041072787160554283)),
      1 },
    { simde_mm256_set_epi64x(INT64_C(                  -1), INT64_C(                  -1),
                             INT64_C(                  -1), INT64_C(                  -1)),
      simde_mm256_set_epi64x(INT64_C(                   0), INT64_C(                   0),
                             INT64_C(                   0), INT64_C(                   0)),
      0 }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    int r = simde_mm256_testnzc_si256(test_vec[i].a, test_vec[i].b);
    simde_assert_equal_i(r, test_vec[i].r);
  }

  return 0;
}

SIMDE_TEST_FUNC_LIST_BEGIN
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_set_epi8)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_set_epi16)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_set_epi32)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_set_epi64x)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_set_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_set_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_set_m128)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_set_m128i)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_set_m128d)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_set1_epi8)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_set1_epi16)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_set1_epi32)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_set1_epi64x)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_set1_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_set1_pd)

  SIMDE_TEST_FUNC_LIST_ENTRY(x_mm256_deinterleaveeven_epi16)
  SIMDE_TEST_FUNC_LIST_ENTRY(x_mm256_deinterleaveodd_epi16)
  SIMDE_TEST_FUNC_LIST_ENTRY(x_mm256_deinterleaveeven_epi32)
  SIMDE_TEST_FUNC_LIST_ENTRY(x_mm256_deinterleaveodd_epi32)
  SIMDE_TEST_FUNC_LIST_ENTRY(x_mm256_deinterleaveeven_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(x_mm256_deinterleaveodd_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(x_mm256_deinterleaveeven_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(x_mm256_deinterleaveodd_pd)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_add_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_add_pd)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_addsub_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_addsub_pd)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_and_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_and_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_andnot_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_andnot_pd)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_blend_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_blend_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_blendv_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_blendv_pd)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_broadcast_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_broadcast_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_broadcast_sd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm_broadcast_ss)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_broadcast_ss)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_castpd128_pd256)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_castpd256_pd128)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_castps_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_castpd_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_castps128_ps256)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_castps256_ps128)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_castsi128_si256)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_castsi256_si128)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_castps_si256)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_castpd_si256)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_castsi256_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_castsi256_pd)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_ceil_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_ceil_pd)

  #if !defined(SIMDE_FAST_MATH)
    SIMDE_TEST_FUNC_LIST_ENTRY(mm_cmp_sd)
    SIMDE_TEST_FUNC_LIST_ENTRY(mm_cmp_ss)
    SIMDE_TEST_FUNC_LIST_ENTRY(mm_cmp_pd)
    SIMDE_TEST_FUNC_LIST_ENTRY(mm_cmp_ps)
    SIMDE_TEST_FUNC_LIST_ENTRY(mm256_cmp_pd)
    SIMDE_TEST_FUNC_LIST_ENTRY(mm256_cmp_ps)
  #endif

  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_cvtepi32_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_cvtepi32_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_cvtpd_epi32)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_cvtpd_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_cvtps_epi32)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_cvtps_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_cvttpd_epi32)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_cvttps_epi32)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_cvtsd_f64)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_cvtsi256_si32)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_cvtss_f32)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_div_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_div_ps)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_dp_ps)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_extract_epi32)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_extract_epi64)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_extractf128_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_extractf128_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_extractf128_si256)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_floor_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_floor_pd)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_hadd_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_hadd_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_hsub_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_hsub_pd)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_insert_epi8)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_insert_epi16)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_insert_epi32)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_insert_epi64)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_insertf128_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_insertf128_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_insertf128_si256)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_lddqu_si256)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_load_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_load_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_load_si256)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_loadu_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_loadu_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_loadu_si256)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_loadu2_m128)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_loadu2_m128d)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_loadu2_m128i)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm_maskload_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_maskload_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm_maskload_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_maskload_ps)

  #if !defined(HEDLEY_MSVC_VERSION)
    SIMDE_TEST_FUNC_LIST_ENTRY(mm_maskload_pd_no_illegal_memory_access)
    SIMDE_TEST_FUNC_LIST_ENTRY(mm256_maskload_pd_no_illegal_memory_access)
    SIMDE_TEST_FUNC_LIST_ENTRY(mm_maskload_ps_no_illegal_memory_access)
    SIMDE_TEST_FUNC_LIST_ENTRY(mm256_maskload_ps_no_illegal_memory_access)
  #endif

  SIMDE_TEST_FUNC_LIST_ENTRY(mm_maskstore_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_maskstore_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm_maskstore_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_maskstore_ps)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_min_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_min_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_max_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_max_pd)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_movedup_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_movehdup_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_moveldup_ps)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_movemask_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_movemask_pd)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_mul_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_mul_pd)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_or_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_or_pd)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_permute_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_permute_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm_permute_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm_permute_pd)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm_permutevar_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm_permutevar_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_permutevar_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_permutevar_pd)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_permute2f128_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_permute2f128_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_permute2f128_si256)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_rcp_ps)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_round_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_round_pd)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_rsqrt_ps)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_setr_epi8)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_setr_epi16)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_setr_epi32)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_setr_epi64x)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_setr_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_setr_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_setr_m128)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_setr_m128d)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_setr_m128i)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_setzero_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_setzero_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_setzero_si256)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_shuffle_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_shuffle_pd)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_sqrt_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_sqrt_pd)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_store_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_store_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_store_si256)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_storeu_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_storeu_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_storeu_si256)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_storeu2_m128)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_storeu2_m128d)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_storeu2_m128i)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_stream_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_stream_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_stream_si256)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_sub_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_sub_pd)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm_testc_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm_testc_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_testc_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_testc_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_testc_si256)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm_testz_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm_testz_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_testz_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_testz_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_testz_si256)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm_testnzc_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm_testnzc_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_testnzc_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_testnzc_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_testnzc_si256)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_undefined_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_undefined_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_undefined_si256)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_unpackhi_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_unpackhi_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_unpacklo_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_unpacklo_pd)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_xor_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_xor_ps)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_zextps128_ps256)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_zextpd128_pd256)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_zextsi128_si256)
SIMDE_TEST_FUNC_LIST_END

#include <test/x86/test-x86-footer.h>