File: range.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 (2989 lines) | stat: -rw-r--r-- 204,394 bytes parent folder | download | duplicates (4)
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
#define SIMDE_TEST_X86_AVX512_INSN range

#include <test/x86/avx512/test-avx512.h>
#include <simde/x86/avx512/set.h>
#include <simde/x86/avx512/setzero.h>
#include <simde/x86/avx512/range.h>

static int
test_simde_mm_range_ps (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    const simde_float32 a[4];
    const simde_float32 b[4];
    const simde_float32 r[4];
  } test_vec[] = {
    { { SIMDE_FLOAT32_C(   255.95), SIMDE_FLOAT32_C(   262.13), SIMDE_FLOAT32_C(   990.40), SIMDE_FLOAT32_C(  -502.54) },
      { SIMDE_FLOAT32_C(  -837.49), SIMDE_FLOAT32_C(   145.07), SIMDE_FLOAT32_C(   710.99), SIMDE_FLOAT32_C(  -255.92) },
      { SIMDE_FLOAT32_C(   837.49), SIMDE_FLOAT32_C(   262.13), SIMDE_FLOAT32_C(   990.40), SIMDE_FLOAT32_C(   502.54) } },
    { { SIMDE_FLOAT32_C(  -196.03), SIMDE_FLOAT32_C(   640.68), SIMDE_FLOAT32_C(  -138.92), SIMDE_FLOAT32_C(  -782.11) },
      { SIMDE_FLOAT32_C(  -561.08), SIMDE_FLOAT32_C(  -912.21), SIMDE_FLOAT32_C(   957.45), SIMDE_FLOAT32_C(   859.99) },
      { SIMDE_FLOAT32_C(  -561.08), SIMDE_FLOAT32_C(  -912.21), SIMDE_FLOAT32_C(  -138.92), SIMDE_FLOAT32_C(  -782.11) } },
    { { SIMDE_FLOAT32_C(   594.70), SIMDE_FLOAT32_C(   371.33), SIMDE_FLOAT32_C(   362.58), SIMDE_FLOAT32_C(  -743.00) },
      { SIMDE_FLOAT32_C(  -691.49), SIMDE_FLOAT32_C(  -684.68), SIMDE_FLOAT32_C(   514.63), SIMDE_FLOAT32_C(   797.88) },
      { SIMDE_FLOAT32_C(   594.70), SIMDE_FLOAT32_C(   371.33), SIMDE_FLOAT32_C(   514.63), SIMDE_FLOAT32_C(  -797.88) } },
    { { SIMDE_FLOAT32_C(  -878.00), SIMDE_FLOAT32_C(  -241.00), SIMDE_FLOAT32_C(  -713.77), SIMDE_FLOAT32_C(   133.71) },
      { SIMDE_FLOAT32_C(  -955.11), SIMDE_FLOAT32_C(  -342.49), SIMDE_FLOAT32_C(   444.74), SIMDE_FLOAT32_C(   300.84) },
      { SIMDE_FLOAT32_C(  -878.00), SIMDE_FLOAT32_C(  -241.00), SIMDE_FLOAT32_C(  -444.74), SIMDE_FLOAT32_C(   133.71) } },
    { { SIMDE_FLOAT32_C(   919.63), SIMDE_FLOAT32_C(   435.14), SIMDE_FLOAT32_C(   798.30), SIMDE_FLOAT32_C(  -917.86) },
      { SIMDE_FLOAT32_C(  -419.79), SIMDE_FLOAT32_C(   509.28), SIMDE_FLOAT32_C(  -173.78), SIMDE_FLOAT32_C(   384.18) },
      { SIMDE_FLOAT32_C(   919.63), SIMDE_FLOAT32_C(   509.28), SIMDE_FLOAT32_C(   798.30), SIMDE_FLOAT32_C(  -917.86) } },
    { { SIMDE_FLOAT32_C(   149.97), SIMDE_FLOAT32_C(   687.31), SIMDE_FLOAT32_C(   602.07), SIMDE_FLOAT32_C(   588.89) },
      { SIMDE_FLOAT32_C(   775.09), SIMDE_FLOAT32_C(   559.52), SIMDE_FLOAT32_C(   448.88), SIMDE_FLOAT32_C(   369.80) },
      { SIMDE_FLOAT32_C(   775.09), SIMDE_FLOAT32_C(   687.31), SIMDE_FLOAT32_C(   602.07), SIMDE_FLOAT32_C(   588.89) } },
    { { SIMDE_FLOAT32_C(   -69.15), SIMDE_FLOAT32_C(  -188.54), SIMDE_FLOAT32_C(   626.80), SIMDE_FLOAT32_C(   239.36) },
      { SIMDE_FLOAT32_C(   126.78), SIMDE_FLOAT32_C(   141.43), SIMDE_FLOAT32_C(    37.24), SIMDE_FLOAT32_C(   248.78) },
      { SIMDE_FLOAT32_C(   126.78), SIMDE_FLOAT32_C(   141.43), SIMDE_FLOAT32_C(   626.80), SIMDE_FLOAT32_C(   248.78) } },
    { { SIMDE_FLOAT32_C(   900.43), SIMDE_FLOAT32_C(   323.47), SIMDE_FLOAT32_C(  -617.51), SIMDE_FLOAT32_C(   945.32) },
      { SIMDE_FLOAT32_C(   980.98), SIMDE_FLOAT32_C(   827.24), SIMDE_FLOAT32_C(   246.16), SIMDE_FLOAT32_C(   900.61) },
      { SIMDE_FLOAT32_C(   900.43), SIMDE_FLOAT32_C(   323.47), SIMDE_FLOAT32_C(  -617.51), SIMDE_FLOAT32_C(   900.61) } }
  };

  simde__m128 a, b, r;

  a = simde_mm_loadu_ps(test_vec[0].a);
  b = simde_mm_loadu_ps(test_vec[0].b);
  r = simde_mm_range_ps(a, b, 11);
  simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[0].r), 1);

  a = simde_mm_loadu_ps(test_vec[1].a);
  b = simde_mm_loadu_ps(test_vec[1].b);
  r = simde_mm_range_ps(a, b, 4);
  simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[1].r), 1);

  a = simde_mm_loadu_ps(test_vec[2].a);
  b = simde_mm_loadu_ps(test_vec[2].b);
  r = simde_mm_range_ps(a, b, 1);
  simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[2].r), 1);

  a = simde_mm_loadu_ps(test_vec[3].a);
  b = simde_mm_loadu_ps(test_vec[3].b);
  r = simde_mm_range_ps(a, b, 2);
  simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[3].r), 1);

  a = simde_mm_loadu_ps(test_vec[4].a);
  b = simde_mm_loadu_ps(test_vec[4].b);
  r = simde_mm_range_ps(a, b, 3);
  simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[4].r), 1);

  a = simde_mm_loadu_ps(test_vec[5].a);
  b = simde_mm_loadu_ps(test_vec[5].b);
  r = simde_mm_range_ps(a, b, 9);
  simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[5].r), 1);

  a = simde_mm_loadu_ps(test_vec[6].a);
  b = simde_mm_loadu_ps(test_vec[6].b);
  r = simde_mm_range_ps(a, b, 5);
  simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[6].r), 1);

  a = simde_mm_loadu_ps(test_vec[7].a);
  b = simde_mm_loadu_ps(test_vec[7].b);
  r = simde_mm_range_ps(a, b, 0);
  simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[7].r), 1);

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

  simde__m128 a, b, 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));
  r = simde_mm_range_ps(a, b, 11);

  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_f32x4(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));
  r = simde_mm_range_ps(a, b, 4);

  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_f32x4(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));
  r = simde_mm_range_ps(a, b, 1);

  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_f32x4(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));
  r = simde_mm_range_ps(a, b, 2);

  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_f32x4(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));
  r = simde_mm_range_ps(a, b, 3);

  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_f32x4(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));
  r = simde_mm_range_ps(a, b, 9);

  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_f32x4(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));
  r = simde_mm_range_ps(a, b, 5);

  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_f32x4(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));
  r = simde_mm_range_ps(a, b, 0);

  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_f32x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  return 1;
#endif
}

static int
test_simde_mm_mask_range_ps (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  simde__m128 src, a, b, e, r;

  src = simde_mm_set_ps(SIMDE_FLOAT32_C(  -475.13), SIMDE_FLOAT32_C(  -420.22), SIMDE_FLOAT32_C(  -562.17), SIMDE_FLOAT32_C(   187.68));
  a = simde_mm_set_ps(SIMDE_FLOAT32_C(  -756.17), SIMDE_FLOAT32_C(  -745.80), SIMDE_FLOAT32_C(  -452.78), SIMDE_FLOAT32_C(   330.45));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C(  -467.50), SIMDE_FLOAT32_C(   434.14), SIMDE_FLOAT32_C(   -54.78), SIMDE_FLOAT32_C(  -810.43));
  e = simde_mm_set_ps(SIMDE_FLOAT32_C(  -475.13), SIMDE_FLOAT32_C(  -420.22), SIMDE_FLOAT32_C(   452.78), SIMDE_FLOAT32_C(   187.68));
  r = simde_mm_mask_range_ps(src, UINT8_C(194), a, b, INT32_C(          11));
  simde_test_x86_assert_equal_f32x4(r, e, 1);

  src = simde_mm_set_ps(SIMDE_FLOAT32_C(   437.68), SIMDE_FLOAT32_C(   650.60), SIMDE_FLOAT32_C(  -352.96), SIMDE_FLOAT32_C(   637.19));
  a = simde_mm_set_ps(SIMDE_FLOAT32_C(   684.24), SIMDE_FLOAT32_C(   201.31), SIMDE_FLOAT32_C(  -376.46), SIMDE_FLOAT32_C(   518.68));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C(   410.87), SIMDE_FLOAT32_C(  -185.65), SIMDE_FLOAT32_C(  -832.96), SIMDE_FLOAT32_C(  -931.61));
  e = simde_mm_set_ps(SIMDE_FLOAT32_C(   684.24), SIMDE_FLOAT32_C(   201.31), SIMDE_FLOAT32_C(  -352.96), SIMDE_FLOAT32_C(   518.68));
  r = simde_mm_mask_range_ps(src, UINT8_C(205), a, b, INT32_C(           9));
  simde_test_x86_assert_equal_f32x4(r, e, 1);

  src = simde_mm_set_ps(SIMDE_FLOAT32_C(  -981.24), SIMDE_FLOAT32_C(   216.99), SIMDE_FLOAT32_C(   393.09), SIMDE_FLOAT32_C(  -168.92));
  a = simde_mm_set_ps(SIMDE_FLOAT32_C(   127.22), SIMDE_FLOAT32_C(   555.16), SIMDE_FLOAT32_C(  -456.37), SIMDE_FLOAT32_C(   796.77));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C(   280.43), SIMDE_FLOAT32_C(   371.05), SIMDE_FLOAT32_C(   809.37), SIMDE_FLOAT32_C(    90.86));
  e = simde_mm_set_ps(SIMDE_FLOAT32_C(  -280.43), SIMDE_FLOAT32_C(   216.99), SIMDE_FLOAT32_C(   393.09), SIMDE_FLOAT32_C(  -796.77));
  r = simde_mm_mask_range_ps(src, UINT8_C( 41), a, b, INT32_C(          15));
  simde_test_x86_assert_equal_f32x4(r, e, 1);

  src = simde_mm_set_ps(SIMDE_FLOAT32_C(  -557.61), SIMDE_FLOAT32_C(  -637.19), SIMDE_FLOAT32_C(   812.93), SIMDE_FLOAT32_C(  -194.80));
  a = simde_mm_set_ps(SIMDE_FLOAT32_C(   532.09), SIMDE_FLOAT32_C(    94.31), SIMDE_FLOAT32_C(   880.08), SIMDE_FLOAT32_C(  -986.59));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C(  -427.99), SIMDE_FLOAT32_C(   216.33), SIMDE_FLOAT32_C(  -704.37), SIMDE_FLOAT32_C(  -496.38));
  e = simde_mm_set_ps(SIMDE_FLOAT32_C(  -557.61), SIMDE_FLOAT32_C(   -94.31), SIMDE_FLOAT32_C(  -704.37), SIMDE_FLOAT32_C(  -986.59));
  r = simde_mm_mask_range_ps(src, UINT8_C(119), a, b, INT32_C(          12));
  simde_test_x86_assert_equal_f32x4(r, e, 1);

  src = simde_mm_set_ps(SIMDE_FLOAT32_C(  -138.24), SIMDE_FLOAT32_C(   -30.06), SIMDE_FLOAT32_C(   982.88), SIMDE_FLOAT32_C(  -969.32));
  a = simde_mm_set_ps(SIMDE_FLOAT32_C(   983.71), SIMDE_FLOAT32_C(   206.90), SIMDE_FLOAT32_C(  -119.48), SIMDE_FLOAT32_C(  -813.07));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C(  -484.99), SIMDE_FLOAT32_C(   110.93), SIMDE_FLOAT32_C(  -237.94), SIMDE_FLOAT32_C(   424.15));
  e = simde_mm_set_ps(SIMDE_FLOAT32_C(  -484.99), SIMDE_FLOAT32_C(   -30.06), SIMDE_FLOAT32_C(  -119.48), SIMDE_FLOAT32_C(  -969.32));
  r = simde_mm_mask_range_ps(src, UINT8_C( 58), a, b, INT32_C(           6));
  simde_test_x86_assert_equal_f32x4(r, e, 1);

  src = simde_mm_set_ps(SIMDE_FLOAT32_C(   287.18), SIMDE_FLOAT32_C(   326.02), SIMDE_FLOAT32_C(   795.44), SIMDE_FLOAT32_C(  -518.02));
  a = simde_mm_set_ps(SIMDE_FLOAT32_C(   702.24), SIMDE_FLOAT32_C(  -931.66), SIMDE_FLOAT32_C(   729.57), SIMDE_FLOAT32_C(   688.83));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C(  -886.73), SIMDE_FLOAT32_C(   234.33), SIMDE_FLOAT32_C(   162.66), SIMDE_FLOAT32_C(   609.65));
  e = simde_mm_set_ps(SIMDE_FLOAT32_C(  -886.73), SIMDE_FLOAT32_C(   326.02), SIMDE_FLOAT32_C(   795.44), SIMDE_FLOAT32_C(   688.83));
  r = simde_mm_mask_range_ps(src, UINT8_C(153), a, b, INT32_C(           7));
  simde_test_x86_assert_equal_f32x4(r, e, 1);

  src = simde_mm_set_ps(SIMDE_FLOAT32_C(  -518.66), SIMDE_FLOAT32_C(   920.95), SIMDE_FLOAT32_C(  -314.72), SIMDE_FLOAT32_C(  -549.34));
  a = simde_mm_set_ps(SIMDE_FLOAT32_C(    77.83), SIMDE_FLOAT32_C(  -955.87), SIMDE_FLOAT32_C(   343.10), SIMDE_FLOAT32_C(  -109.11));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C(   647.77), SIMDE_FLOAT32_C(    61.53), SIMDE_FLOAT32_C(   251.02), SIMDE_FLOAT32_C(  -776.38));
  e = simde_mm_set_ps(SIMDE_FLOAT32_C(  -518.66), SIMDE_FLOAT32_C(   920.95), SIMDE_FLOAT32_C(   251.02), SIMDE_FLOAT32_C(  -109.11));
  r = simde_mm_mask_range_ps(src, UINT8_C( 99), a, b, INT32_C(           2));
  simde_test_x86_assert_equal_f32x4(r, e, 1);

  src = simde_mm_set_ps(SIMDE_FLOAT32_C(  -345.55), SIMDE_FLOAT32_C(  -415.49), SIMDE_FLOAT32_C(  -837.22), SIMDE_FLOAT32_C(  -827.54));
  a = simde_mm_set_ps(SIMDE_FLOAT32_C(   599.36), SIMDE_FLOAT32_C(   566.58), SIMDE_FLOAT32_C(   941.63), SIMDE_FLOAT32_C(   910.53));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C(   280.85), SIMDE_FLOAT32_C(   301.59), SIMDE_FLOAT32_C(   634.93), SIMDE_FLOAT32_C(   671.20));
  e = simde_mm_set_ps(SIMDE_FLOAT32_C(   280.85), SIMDE_FLOAT32_C(  -415.49), SIMDE_FLOAT32_C(  -837.22), SIMDE_FLOAT32_C(   671.20));
  r = simde_mm_mask_range_ps(src, UINT8_C(153), a, b, INT32_C(           8));
  simde_test_x86_assert_equal_f32x4(r, e, 1);

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde__m128 src = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
    simde__mmask8 k = simde_test_x86_random_mmask8();
    simde__m128 a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
    simde__m128 b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
    int imm8 = simde_test_codegen_rand() & 15;
    simde__m128 r;
    SIMDE_CONSTIFY_16_(simde_mm_mask_range_ps, r, simde_mm_setzero_ps(), imm8, src, k, a, b);

    simde_test_x86_write_f32x4(2, src, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_x86_write_mmask8(2, k, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_codegen_write_i32(2, imm8, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_f32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_mm_maskz_range_ps (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  simde__m128 a, b, e, r;

  a = simde_mm_set_ps(SIMDE_FLOAT32_C(  -920.60), SIMDE_FLOAT32_C(   -13.42), SIMDE_FLOAT32_C(  -744.13), SIMDE_FLOAT32_C(   394.12));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C(    67.71), SIMDE_FLOAT32_C(  -252.44), SIMDE_FLOAT32_C(   467.92), SIMDE_FLOAT32_C(  -823.18));
  e = simde_mm_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   -13.42), SIMDE_FLOAT32_C(  -467.92), SIMDE_FLOAT32_C(     0.00));
  r = simde_mm_maskz_range_ps(UINT8_C(134), a, b, INT32_C(           2));
  simde_test_x86_assert_equal_f32x4(r, e, 1);

  a = simde_mm_set_ps(SIMDE_FLOAT32_C(   207.07), SIMDE_FLOAT32_C(  -957.29), SIMDE_FLOAT32_C(    34.64), SIMDE_FLOAT32_C(  -854.46));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C(  -154.81), SIMDE_FLOAT32_C(   379.53), SIMDE_FLOAT32_C(  -944.21), SIMDE_FLOAT32_C(  -317.59));
  e = simde_mm_set_ps(SIMDE_FLOAT32_C(  -154.81), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(    34.64), SIMDE_FLOAT32_C(     0.00));
  r = simde_mm_maskz_range_ps(UINT8_C(170), a, b, INT32_C(           6));
  simde_test_x86_assert_equal_f32x4(r, e, 1);

  a = simde_mm_set_ps(SIMDE_FLOAT32_C(  -630.01), SIMDE_FLOAT32_C(   975.61), SIMDE_FLOAT32_C(  -449.17), SIMDE_FLOAT32_C(  -196.59));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C(   451.78), SIMDE_FLOAT32_C(  -995.08), SIMDE_FLOAT32_C(   646.81), SIMDE_FLOAT32_C(  -849.81));
  e = simde_mm_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -975.61), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00));
  r = simde_mm_maskz_range_ps(UINT8_C(228), a, b, INT32_C(          13));
  simde_test_x86_assert_equal_f32x4(r, e, 1);

  a = simde_mm_set_ps(SIMDE_FLOAT32_C(   -25.72), SIMDE_FLOAT32_C(    58.38), SIMDE_FLOAT32_C(  -678.22), SIMDE_FLOAT32_C(   987.70));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C(   148.74), SIMDE_FLOAT32_C(  -557.80), SIMDE_FLOAT32_C(   235.20), SIMDE_FLOAT32_C(  -598.82));
  e = simde_mm_set_ps(SIMDE_FLOAT32_C(   148.74), SIMDE_FLOAT32_C(   557.80), SIMDE_FLOAT32_C(   678.22), SIMDE_FLOAT32_C(     0.00));
  r = simde_mm_maskz_range_ps(UINT8_C(206), a, b, INT32_C(          11));
  simde_test_x86_assert_equal_f32x4(r, e, 1);

  a = simde_mm_set_ps(SIMDE_FLOAT32_C(   983.13), SIMDE_FLOAT32_C(  -712.14), SIMDE_FLOAT32_C(  -551.55), SIMDE_FLOAT32_C(   940.42));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C(    35.05), SIMDE_FLOAT32_C(  -961.08), SIMDE_FLOAT32_C(   -29.73), SIMDE_FLOAT32_C(   655.52));
  e = simde_mm_set_ps(SIMDE_FLOAT32_C(   -35.05), SIMDE_FLOAT32_C(  -712.14), SIMDE_FLOAT32_C(   -29.73), SIMDE_FLOAT32_C(  -655.52));
  r = simde_mm_maskz_range_ps(UINT8_C(111), a, b, INT32_C(          14));
  simde_test_x86_assert_equal_f32x4(r, e, 1);

  a = simde_mm_set_ps(SIMDE_FLOAT32_C(    44.64), SIMDE_FLOAT32_C(   230.06), SIMDE_FLOAT32_C(  -381.13), SIMDE_FLOAT32_C(    69.03));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C(    -6.22), SIMDE_FLOAT32_C(  -308.55), SIMDE_FLOAT32_C(   380.25), SIMDE_FLOAT32_C(   -11.14));
  e = simde_mm_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -381.13), SIMDE_FLOAT32_C(    69.03));
  r = simde_mm_maskz_range_ps(UINT8_C( 51), a, b, INT32_C(           7));
  simde_test_x86_assert_equal_f32x4(r, e, 1);

  a = simde_mm_set_ps(SIMDE_FLOAT32_C(  -145.33), SIMDE_FLOAT32_C(   940.89), SIMDE_FLOAT32_C(  -180.26), SIMDE_FLOAT32_C(   796.29));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C(  -763.78), SIMDE_FLOAT32_C(  -910.13), SIMDE_FLOAT32_C(  -657.93), SIMDE_FLOAT32_C(   794.02));
  e = simde_mm_set_ps(SIMDE_FLOAT32_C(  -145.33), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -180.26), SIMDE_FLOAT32_C(   794.02));
  r = simde_mm_maskz_range_ps(UINT8_C( 75), a, b, INT32_C(           6));
  simde_test_x86_assert_equal_f32x4(r, e, 1);

  a = simde_mm_set_ps(SIMDE_FLOAT32_C(   777.30), SIMDE_FLOAT32_C(  -158.78), SIMDE_FLOAT32_C(   431.22), SIMDE_FLOAT32_C(   489.44));
  b = simde_mm_set_ps(SIMDE_FLOAT32_C(   453.27), SIMDE_FLOAT32_C(  -252.42), SIMDE_FLOAT32_C(  -503.26), SIMDE_FLOAT32_C(   414.35));
  e = simde_mm_set_ps(SIMDE_FLOAT32_C(   453.27), SIMDE_FLOAT32_C(   158.78), SIMDE_FLOAT32_C(   431.22), SIMDE_FLOAT32_C(   414.35));
  r = simde_mm_maskz_range_ps(UINT8_C( 47), a, b, INT32_C(          10));
  simde_test_x86_assert_equal_f32x4(r, e, 1);

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde__mmask8 k = simde_test_x86_random_mmask8();
    simde__m128 a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
    simde__m128 b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
    int imm8 = simde_test_codegen_rand() & 15;
    simde__m128 r;
    SIMDE_CONSTIFY_16_(simde_mm_maskz_range_ps, r, simde_mm_setzero_ps(), imm8, k, a, b);

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

static int
test_simde_mm256_range_ps (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    const simde_float32 a[8];
    const simde_float32 b[8];
    const simde_float32 r[8];
  } test_vec[] = {
    { { SIMDE_FLOAT32_C(   965.90), SIMDE_FLOAT32_C(   639.20), SIMDE_FLOAT32_C(   459.04), SIMDE_FLOAT32_C(  -520.02),
        SIMDE_FLOAT32_C(  -921.38), SIMDE_FLOAT32_C(  -256.36), SIMDE_FLOAT32_C(  -322.58), SIMDE_FLOAT32_C(  -975.13) },
      { SIMDE_FLOAT32_C(  -835.96), SIMDE_FLOAT32_C(   794.37), SIMDE_FLOAT32_C(   868.62), SIMDE_FLOAT32_C(  -546.74),
        SIMDE_FLOAT32_C(  -578.43), SIMDE_FLOAT32_C(   511.48), SIMDE_FLOAT32_C(  -160.60), SIMDE_FLOAT32_C(   388.19) },
      { SIMDE_FLOAT32_C(   965.90), SIMDE_FLOAT32_C(   794.37), SIMDE_FLOAT32_C(   868.62), SIMDE_FLOAT32_C(   546.74),
        SIMDE_FLOAT32_C(   921.38), SIMDE_FLOAT32_C(   511.48), SIMDE_FLOAT32_C(   322.58), SIMDE_FLOAT32_C(   975.13) } },
    { { SIMDE_FLOAT32_C(   419.06), SIMDE_FLOAT32_C(   212.58), SIMDE_FLOAT32_C(  -437.40), SIMDE_FLOAT32_C(  -767.85),
        SIMDE_FLOAT32_C(   542.50), SIMDE_FLOAT32_C(   326.58), SIMDE_FLOAT32_C(  -844.98), SIMDE_FLOAT32_C(  -122.00) },
      { SIMDE_FLOAT32_C(   668.38), SIMDE_FLOAT32_C(   663.21), SIMDE_FLOAT32_C(   157.32), SIMDE_FLOAT32_C(  -776.07),
        SIMDE_FLOAT32_C(   123.57), SIMDE_FLOAT32_C(   356.87), SIMDE_FLOAT32_C(   896.03), SIMDE_FLOAT32_C(    89.48) },
      { SIMDE_FLOAT32_C(   419.06), SIMDE_FLOAT32_C(   212.58), SIMDE_FLOAT32_C(  -437.40), SIMDE_FLOAT32_C(  -776.07),
        SIMDE_FLOAT32_C(   123.57), SIMDE_FLOAT32_C(   326.58), SIMDE_FLOAT32_C(  -844.98), SIMDE_FLOAT32_C(  -122.00) } },
    { { SIMDE_FLOAT32_C(    -3.93), SIMDE_FLOAT32_C(   355.07), SIMDE_FLOAT32_C(   569.46), SIMDE_FLOAT32_C(    74.69),
        SIMDE_FLOAT32_C(  -901.29), SIMDE_FLOAT32_C(  -753.12), SIMDE_FLOAT32_C(    99.55), SIMDE_FLOAT32_C(  -737.26) },
      { SIMDE_FLOAT32_C(  -958.76), SIMDE_FLOAT32_C(   -31.83), SIMDE_FLOAT32_C(  -284.00), SIMDE_FLOAT32_C(  -537.19),
        SIMDE_FLOAT32_C(  -520.35), SIMDE_FLOAT32_C(   555.40), SIMDE_FLOAT32_C(   851.00), SIMDE_FLOAT32_C(   898.71) },
      { SIMDE_FLOAT32_C(    -3.93), SIMDE_FLOAT32_C(   355.07), SIMDE_FLOAT32_C(   569.46), SIMDE_FLOAT32_C(    74.69),
        SIMDE_FLOAT32_C(  -520.35), SIMDE_FLOAT32_C(  -555.40), SIMDE_FLOAT32_C(   851.00), SIMDE_FLOAT32_C(  -898.71) } },
    { { SIMDE_FLOAT32_C(  -232.02), SIMDE_FLOAT32_C(  -586.40), SIMDE_FLOAT32_C(  -869.13), SIMDE_FLOAT32_C(  -689.52),
        SIMDE_FLOAT32_C(   740.18), SIMDE_FLOAT32_C(  -714.11), SIMDE_FLOAT32_C(   188.48), SIMDE_FLOAT32_C(   408.56) },
      { SIMDE_FLOAT32_C(   949.10), SIMDE_FLOAT32_C(  -654.19), SIMDE_FLOAT32_C(   632.49), SIMDE_FLOAT32_C(    72.67),
        SIMDE_FLOAT32_C(   702.67), SIMDE_FLOAT32_C(   528.51), SIMDE_FLOAT32_C(  -837.85), SIMDE_FLOAT32_C(  -301.26) },
      { SIMDE_FLOAT32_C(  -232.02), SIMDE_FLOAT32_C(  -586.40), SIMDE_FLOAT32_C(  -632.49), SIMDE_FLOAT32_C(   -72.67),
        SIMDE_FLOAT32_C(   702.67), SIMDE_FLOAT32_C(  -528.51), SIMDE_FLOAT32_C(   188.48), SIMDE_FLOAT32_C(   301.26) } },
    { { SIMDE_FLOAT32_C(  -116.42), SIMDE_FLOAT32_C(   731.60), SIMDE_FLOAT32_C(   773.42), SIMDE_FLOAT32_C(   -17.71),
        SIMDE_FLOAT32_C(   978.48), SIMDE_FLOAT32_C(  -127.03), SIMDE_FLOAT32_C(   245.03), SIMDE_FLOAT32_C(  -980.28) },
      { SIMDE_FLOAT32_C(   841.14), SIMDE_FLOAT32_C(   961.03), SIMDE_FLOAT32_C(  -517.47), SIMDE_FLOAT32_C(  -679.21),
        SIMDE_FLOAT32_C(   516.43), SIMDE_FLOAT32_C(  -666.47), SIMDE_FLOAT32_C(  -780.50), SIMDE_FLOAT32_C(  -715.59) },
      { SIMDE_FLOAT32_C(  -841.14), SIMDE_FLOAT32_C(   961.03), SIMDE_FLOAT32_C(   773.42), SIMDE_FLOAT32_C(  -679.21),
        SIMDE_FLOAT32_C(   978.48), SIMDE_FLOAT32_C(  -666.47), SIMDE_FLOAT32_C(   780.50), SIMDE_FLOAT32_C(  -980.28) } },
    { { SIMDE_FLOAT32_C(  -252.87), SIMDE_FLOAT32_C(  -649.63), SIMDE_FLOAT32_C(  -405.12), SIMDE_FLOAT32_C(  -512.69),
        SIMDE_FLOAT32_C(  -363.74), SIMDE_FLOAT32_C(   783.36), SIMDE_FLOAT32_C(   895.86), SIMDE_FLOAT32_C(  -414.64) },
      { SIMDE_FLOAT32_C(  -870.83), SIMDE_FLOAT32_C(   528.35), SIMDE_FLOAT32_C(   658.03), SIMDE_FLOAT32_C(   831.84),
        SIMDE_FLOAT32_C(    56.86), SIMDE_FLOAT32_C(   820.17), SIMDE_FLOAT32_C(  -469.42), SIMDE_FLOAT32_C(   940.44) },
      { SIMDE_FLOAT32_C(   252.87), SIMDE_FLOAT32_C(   528.35), SIMDE_FLOAT32_C(   658.03), SIMDE_FLOAT32_C(   831.84),
        SIMDE_FLOAT32_C(    56.86), SIMDE_FLOAT32_C(   820.17), SIMDE_FLOAT32_C(   895.86), SIMDE_FLOAT32_C(   940.44) } },
    { { SIMDE_FLOAT32_C(   551.78), SIMDE_FLOAT32_C(  -696.00), SIMDE_FLOAT32_C(   -77.27), SIMDE_FLOAT32_C(   530.26),
        SIMDE_FLOAT32_C(   176.97), SIMDE_FLOAT32_C(  -832.24), SIMDE_FLOAT32_C(   549.98), SIMDE_FLOAT32_C(    18.12) },
      { SIMDE_FLOAT32_C(  -871.21), SIMDE_FLOAT32_C(  -967.48), SIMDE_FLOAT32_C(   338.91), SIMDE_FLOAT32_C(   645.21),
        SIMDE_FLOAT32_C(  -633.95), SIMDE_FLOAT32_C(   558.41), SIMDE_FLOAT32_C(   929.62), SIMDE_FLOAT32_C(   113.18) },
      { SIMDE_FLOAT32_C(   551.78), SIMDE_FLOAT32_C(  -696.00), SIMDE_FLOAT32_C(   338.91), SIMDE_FLOAT32_C(   645.21),
        SIMDE_FLOAT32_C(   176.97), SIMDE_FLOAT32_C(   558.41), SIMDE_FLOAT32_C(   929.62), SIMDE_FLOAT32_C(   113.18) } },
    { { SIMDE_FLOAT32_C(   908.78), SIMDE_FLOAT32_C(  -475.50), SIMDE_FLOAT32_C(   600.49), SIMDE_FLOAT32_C(  -454.96),
        SIMDE_FLOAT32_C(  -692.13), SIMDE_FLOAT32_C(   496.35), SIMDE_FLOAT32_C(   130.40), SIMDE_FLOAT32_C(  -562.96) },
      { SIMDE_FLOAT32_C(    24.70), SIMDE_FLOAT32_C(  -211.58), SIMDE_FLOAT32_C(  -731.12), SIMDE_FLOAT32_C(  -918.44),
        SIMDE_FLOAT32_C(  -391.40), SIMDE_FLOAT32_C(  -200.55), SIMDE_FLOAT32_C(  -978.00), SIMDE_FLOAT32_C(  -839.63) },
      { SIMDE_FLOAT32_C(    24.70), SIMDE_FLOAT32_C(  -475.50), SIMDE_FLOAT32_C(   731.12), SIMDE_FLOAT32_C(  -918.44),
        SIMDE_FLOAT32_C(  -692.13), SIMDE_FLOAT32_C(   200.55), SIMDE_FLOAT32_C(   978.00), SIMDE_FLOAT32_C(  -839.63) } }
  };

  simde__m256 a, b, r;

  a = simde_mm256_loadu_ps(test_vec[0].a);
  b = simde_mm256_loadu_ps(test_vec[0].b);
  r = simde_mm256_range_ps(a, b, 11);
  simde_test_x86_assert_equal_f32x8(r, simde_mm256_loadu_ps(test_vec[0].r), 1);

  a = simde_mm256_loadu_ps(test_vec[1].a);
  b = simde_mm256_loadu_ps(test_vec[1].b);
  r = simde_mm256_range_ps(a, b, 4);
  simde_test_x86_assert_equal_f32x8(r, simde_mm256_loadu_ps(test_vec[1].r), 1);

  a = simde_mm256_loadu_ps(test_vec[2].a);
  b = simde_mm256_loadu_ps(test_vec[2].b);
  r = simde_mm256_range_ps(a, b, 1);
  simde_test_x86_assert_equal_f32x8(r, simde_mm256_loadu_ps(test_vec[2].r), 1);

  a = simde_mm256_loadu_ps(test_vec[3].a);
  b = simde_mm256_loadu_ps(test_vec[3].b);
  r = simde_mm256_range_ps(a, b, 2);
  simde_test_x86_assert_equal_f32x8(r, simde_mm256_loadu_ps(test_vec[3].r), 1);

  a = simde_mm256_loadu_ps(test_vec[4].a);
  b = simde_mm256_loadu_ps(test_vec[4].b);
  r = simde_mm256_range_ps(a, b, 3);
  simde_test_x86_assert_equal_f32x8(r, simde_mm256_loadu_ps(test_vec[4].r), 1);

  a = simde_mm256_loadu_ps(test_vec[5].a);
  b = simde_mm256_loadu_ps(test_vec[5].b);
  r = simde_mm256_range_ps(a, b, 9);
  simde_test_x86_assert_equal_f32x8(r, simde_mm256_loadu_ps(test_vec[5].r), 1);

  a = simde_mm256_loadu_ps(test_vec[6].a);
  b = simde_mm256_loadu_ps(test_vec[6].b);
  r = simde_mm256_range_ps(a, b, 5);
  simde_test_x86_assert_equal_f32x8(r, simde_mm256_loadu_ps(test_vec[6].r), 1);

  a = simde_mm256_loadu_ps(test_vec[7].a);
  b = simde_mm256_loadu_ps(test_vec[7].b);
  r = simde_mm256_range_ps(a, b, 0);
  simde_test_x86_assert_equal_f32x8(r, simde_mm256_loadu_ps(test_vec[7].r), 1);

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

  simde__m256 a, b, 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));
  r = simde_mm256_range_ps(a, b, 11);

  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_f32x8(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));
  r = simde_mm256_range_ps(a, b, 4);

  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_f32x8(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));
  r = simde_mm256_range_ps(a, b, 1);

  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_f32x8(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));
  r = simde_mm256_range_ps(a, b, 2);

  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_f32x8(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));
  r = simde_mm256_range_ps(a, b, 3);

  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_f32x8(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));
  r = simde_mm256_range_ps(a, b, 9);

  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_f32x8(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));
  r = simde_mm256_range_ps(a, b, 5);

  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_f32x8(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));
  r = simde_mm256_range_ps(a, b, 0);

  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_f32x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  return 1;
#endif
}

static int
test_simde_mm256_mask_range_ps (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  simde__m256 src, a, b, e, r;

  src = simde_mm256_set_ps(SIMDE_FLOAT32_C(  -736.24), SIMDE_FLOAT32_C(    60.00), SIMDE_FLOAT32_C(   504.80), SIMDE_FLOAT32_C(   362.18),
                           SIMDE_FLOAT32_C(  -740.22), SIMDE_FLOAT32_C(  -433.62), SIMDE_FLOAT32_C(   351.91), SIMDE_FLOAT32_C(   446.36));
  a = simde_mm256_set_ps(SIMDE_FLOAT32_C(  -438.91), SIMDE_FLOAT32_C(  -937.86), SIMDE_FLOAT32_C(  -320.64), SIMDE_FLOAT32_C(   183.88),
                         SIMDE_FLOAT32_C(   224.60), SIMDE_FLOAT32_C(   366.59), SIMDE_FLOAT32_C(  -844.51), SIMDE_FLOAT32_C(   232.20));
  b = simde_mm256_set_ps(SIMDE_FLOAT32_C(  -351.80), SIMDE_FLOAT32_C(  -734.27), SIMDE_FLOAT32_C(  -415.40), SIMDE_FLOAT32_C(   538.38),
                         SIMDE_FLOAT32_C(   402.58), SIMDE_FLOAT32_C(   590.16), SIMDE_FLOAT32_C(  -748.29), SIMDE_FLOAT32_C(  -569.46));
  e = simde_mm256_set_ps(SIMDE_FLOAT32_C(   351.80), SIMDE_FLOAT32_C(   734.27), SIMDE_FLOAT32_C(   504.80), SIMDE_FLOAT32_C(   362.18),
                         SIMDE_FLOAT32_C(   224.60), SIMDE_FLOAT32_C(   366.59), SIMDE_FLOAT32_C(   351.91), SIMDE_FLOAT32_C(   446.36));
  r = simde_mm256_mask_range_ps(src, UINT8_C(204), a, b, INT32_C(          10));
  simde_test_x86_assert_equal_f32x8(r, e, 1);

  src = simde_mm256_set_ps(SIMDE_FLOAT32_C(  -674.00), SIMDE_FLOAT32_C(   723.44), SIMDE_FLOAT32_C(  -217.15), SIMDE_FLOAT32_C(   759.63),
                           SIMDE_FLOAT32_C(  -628.48), SIMDE_FLOAT32_C(   336.49), SIMDE_FLOAT32_C(  -150.50), SIMDE_FLOAT32_C(   249.24));
  a = simde_mm256_set_ps(SIMDE_FLOAT32_C(  -846.71), SIMDE_FLOAT32_C(   504.87), SIMDE_FLOAT32_C(   334.83), SIMDE_FLOAT32_C(  -213.29),
                         SIMDE_FLOAT32_C(   349.37), SIMDE_FLOAT32_C(  -897.38), SIMDE_FLOAT32_C(   830.80), SIMDE_FLOAT32_C(    85.61));
  b = simde_mm256_set_ps(SIMDE_FLOAT32_C(  -160.01), SIMDE_FLOAT32_C(  -126.73), SIMDE_FLOAT32_C(   263.20), SIMDE_FLOAT32_C(   249.84),
                         SIMDE_FLOAT32_C(  -378.44), SIMDE_FLOAT32_C(  -167.35), SIMDE_FLOAT32_C(  -311.26), SIMDE_FLOAT32_C(  -440.57));
  e = simde_mm256_set_ps(SIMDE_FLOAT32_C(  -674.00), SIMDE_FLOAT32_C(   126.73), SIMDE_FLOAT32_C(   263.20), SIMDE_FLOAT32_C(   759.63),
                         SIMDE_FLOAT32_C(   378.44), SIMDE_FLOAT32_C(   897.38), SIMDE_FLOAT32_C(  -150.50), SIMDE_FLOAT32_C(   249.24));
  r = simde_mm256_mask_range_ps(src, UINT8_C(108), a, b, INT32_C(           8));
  simde_test_x86_assert_equal_f32x8(r, e, 1);

  src = simde_mm256_set_ps(SIMDE_FLOAT32_C(  -346.67), SIMDE_FLOAT32_C(   909.34), SIMDE_FLOAT32_C(  -819.25), SIMDE_FLOAT32_C(   316.84),
                           SIMDE_FLOAT32_C(    59.85), SIMDE_FLOAT32_C(   -68.49), SIMDE_FLOAT32_C(   424.59), SIMDE_FLOAT32_C(  -588.35));
  a = simde_mm256_set_ps(SIMDE_FLOAT32_C(  -418.58), SIMDE_FLOAT32_C(   825.78), SIMDE_FLOAT32_C(   361.32), SIMDE_FLOAT32_C(  -521.20),
                         SIMDE_FLOAT32_C(   994.98), SIMDE_FLOAT32_C(  -724.29), SIMDE_FLOAT32_C(   436.17), SIMDE_FLOAT32_C(   668.97));
  b = simde_mm256_set_ps(SIMDE_FLOAT32_C(   598.43), SIMDE_FLOAT32_C(   -95.70), SIMDE_FLOAT32_C(  -524.33), SIMDE_FLOAT32_C(  -234.22),
                         SIMDE_FLOAT32_C(  -784.44), SIMDE_FLOAT32_C(   916.25), SIMDE_FLOAT32_C(  -387.51), SIMDE_FLOAT32_C(  -289.31));
  e = simde_mm256_set_ps(SIMDE_FLOAT32_C(  -346.67), SIMDE_FLOAT32_C(   909.34), SIMDE_FLOAT32_C(  -819.25), SIMDE_FLOAT32_C(  -234.22),
                         SIMDE_FLOAT32_C(    59.85), SIMDE_FLOAT32_C(   916.25), SIMDE_FLOAT32_C(   424.59), SIMDE_FLOAT32_C(  -588.35));
  r = simde_mm256_mask_range_ps(src, UINT8_C( 20), a, b, INT32_C(           5));
  simde_test_x86_assert_equal_f32x8(r, e, 1);

  src = simde_mm256_set_ps(SIMDE_FLOAT32_C(  -541.09), SIMDE_FLOAT32_C(  -581.28), SIMDE_FLOAT32_C(  -617.85), SIMDE_FLOAT32_C(   527.40),
                           SIMDE_FLOAT32_C(    -5.87), SIMDE_FLOAT32_C(   970.51), SIMDE_FLOAT32_C(  -138.37), SIMDE_FLOAT32_C(  -845.86));
  a = simde_mm256_set_ps(SIMDE_FLOAT32_C(   467.64), SIMDE_FLOAT32_C(   825.06), SIMDE_FLOAT32_C(    20.32), SIMDE_FLOAT32_C(   191.93),
                         SIMDE_FLOAT32_C(  -611.11), SIMDE_FLOAT32_C(   351.34), SIMDE_FLOAT32_C(  -360.34), SIMDE_FLOAT32_C(   735.56));
  b = simde_mm256_set_ps(SIMDE_FLOAT32_C(  -198.47), SIMDE_FLOAT32_C(   453.56), SIMDE_FLOAT32_C(   539.66), SIMDE_FLOAT32_C(  -114.72),
                         SIMDE_FLOAT32_C(  -158.93), SIMDE_FLOAT32_C(  -171.04), SIMDE_FLOAT32_C(  -696.14), SIMDE_FLOAT32_C(    15.29));
  e = simde_mm256_set_ps(SIMDE_FLOAT32_C(  -541.09), SIMDE_FLOAT32_C(  -581.28), SIMDE_FLOAT32_C(  -539.66), SIMDE_FLOAT32_C(   527.40),
                         SIMDE_FLOAT32_C(  -611.11), SIMDE_FLOAT32_C(  -351.34), SIMDE_FLOAT32_C(  -696.14), SIMDE_FLOAT32_C(  -735.56));
  r = simde_mm256_mask_range_ps(src, UINT8_C( 47), a, b, INT32_C(          15));
  simde_test_x86_assert_equal_f32x8(r, e, 1);

  src = simde_mm256_set_ps(SIMDE_FLOAT32_C(  -655.05), SIMDE_FLOAT32_C(  -320.60), SIMDE_FLOAT32_C(  -186.34), SIMDE_FLOAT32_C(  -625.56),
                           SIMDE_FLOAT32_C(   817.77), SIMDE_FLOAT32_C(  -340.48), SIMDE_FLOAT32_C(   277.20), SIMDE_FLOAT32_C(  -780.66));
  a = simde_mm256_set_ps(SIMDE_FLOAT32_C(   520.44), SIMDE_FLOAT32_C(   305.37), SIMDE_FLOAT32_C(   962.07), SIMDE_FLOAT32_C(  -830.90),
                         SIMDE_FLOAT32_C(  -334.29), SIMDE_FLOAT32_C(  -773.49), SIMDE_FLOAT32_C(  -272.90), SIMDE_FLOAT32_C(  -793.20));
  b = simde_mm256_set_ps(SIMDE_FLOAT32_C(  -206.09), SIMDE_FLOAT32_C(  -520.12), SIMDE_FLOAT32_C(   556.05), SIMDE_FLOAT32_C(   964.95),
                         SIMDE_FLOAT32_C(  -823.98), SIMDE_FLOAT32_C(  -459.24), SIMDE_FLOAT32_C(  -502.69), SIMDE_FLOAT32_C(  -649.04));
  e = simde_mm256_set_ps(SIMDE_FLOAT32_C(  -655.05), SIMDE_FLOAT32_C(  -320.60), SIMDE_FLOAT32_C(   556.05), SIMDE_FLOAT32_C(  -830.90),
                         SIMDE_FLOAT32_C(   817.77), SIMDE_FLOAT32_C(  -340.48), SIMDE_FLOAT32_C(  -272.90), SIMDE_FLOAT32_C(  -780.66));
  r = simde_mm256_mask_range_ps(src, UINT8_C( 50), a, b, INT32_C(           2));
  simde_test_x86_assert_equal_f32x8(r, e, 1);

  src = simde_mm256_set_ps(SIMDE_FLOAT32_C(  -251.70), SIMDE_FLOAT32_C(   443.89), SIMDE_FLOAT32_C(  -929.98), SIMDE_FLOAT32_C(  -911.22),
                           SIMDE_FLOAT32_C(  -833.31), SIMDE_FLOAT32_C(   850.68), SIMDE_FLOAT32_C(  -666.44), SIMDE_FLOAT32_C(   365.16));
  a = simde_mm256_set_ps(SIMDE_FLOAT32_C(   596.25), SIMDE_FLOAT32_C(  -109.62), SIMDE_FLOAT32_C(  -226.00), SIMDE_FLOAT32_C(   369.74),
                         SIMDE_FLOAT32_C(  -836.72), SIMDE_FLOAT32_C(  -432.80), SIMDE_FLOAT32_C(   561.95), SIMDE_FLOAT32_C(   818.34));
  b = simde_mm256_set_ps(SIMDE_FLOAT32_C(   120.68), SIMDE_FLOAT32_C(   242.40), SIMDE_FLOAT32_C(   909.28), SIMDE_FLOAT32_C(  -420.08),
                         SIMDE_FLOAT32_C(  -254.91), SIMDE_FLOAT32_C(   558.32), SIMDE_FLOAT32_C(    59.48), SIMDE_FLOAT32_C(   439.72));
  e = simde_mm256_set_ps(SIMDE_FLOAT32_C(   120.68), SIMDE_FLOAT32_C(   443.89), SIMDE_FLOAT32_C(  -226.00), SIMDE_FLOAT32_C(  -911.22),
                         SIMDE_FLOAT32_C(  -833.31), SIMDE_FLOAT32_C(  -432.80), SIMDE_FLOAT32_C(    59.48), SIMDE_FLOAT32_C(   439.72));
  r = simde_mm256_mask_range_ps(src, UINT8_C(167), a, b, INT32_C(           4));
  simde_test_x86_assert_equal_f32x8(r, e, 1);

  src = simde_mm256_set_ps(SIMDE_FLOAT32_C(   -75.46), SIMDE_FLOAT32_C(  -665.19), SIMDE_FLOAT32_C(   930.33), SIMDE_FLOAT32_C(    73.85),
                           SIMDE_FLOAT32_C(  -998.75), SIMDE_FLOAT32_C(  -434.83), SIMDE_FLOAT32_C(  -323.27), SIMDE_FLOAT32_C(   207.34));
  a = simde_mm256_set_ps(SIMDE_FLOAT32_C(   449.55), SIMDE_FLOAT32_C(  -266.16), SIMDE_FLOAT32_C(   359.25), SIMDE_FLOAT32_C(  -117.65),
                         SIMDE_FLOAT32_C(   171.89), SIMDE_FLOAT32_C(   540.92), SIMDE_FLOAT32_C(    -5.44), SIMDE_FLOAT32_C(  -576.41));
  b = simde_mm256_set_ps(SIMDE_FLOAT32_C(   258.14), SIMDE_FLOAT32_C(   472.40), SIMDE_FLOAT32_C(   663.27), SIMDE_FLOAT32_C(   699.83),
                         SIMDE_FLOAT32_C(  -587.08), SIMDE_FLOAT32_C(  -776.45), SIMDE_FLOAT32_C(  -896.42), SIMDE_FLOAT32_C(   522.54));
  e = simde_mm256_set_ps(SIMDE_FLOAT32_C(   449.55), SIMDE_FLOAT32_C(  -665.19), SIMDE_FLOAT32_C(   930.33), SIMDE_FLOAT32_C(  -699.83),
                         SIMDE_FLOAT32_C(  -998.75), SIMDE_FLOAT32_C(  -434.83), SIMDE_FLOAT32_C(  -323.27), SIMDE_FLOAT32_C(  -522.54));
  r = simde_mm256_mask_range_ps(src, UINT8_C(145), a, b, INT32_C(           1));
  simde_test_x86_assert_equal_f32x8(r, e, 1);

  src = simde_mm256_set_ps(SIMDE_FLOAT32_C(   817.88), SIMDE_FLOAT32_C(   849.74), SIMDE_FLOAT32_C(  -141.90), SIMDE_FLOAT32_C(   252.71),
                           SIMDE_FLOAT32_C(   173.00), SIMDE_FLOAT32_C(   650.75), SIMDE_FLOAT32_C(   167.42), SIMDE_FLOAT32_C(  -947.68));
  a = simde_mm256_set_ps(SIMDE_FLOAT32_C(   386.16), SIMDE_FLOAT32_C(  -157.32), SIMDE_FLOAT32_C(   617.76), SIMDE_FLOAT32_C(   845.24),
                         SIMDE_FLOAT32_C(   848.12), SIMDE_FLOAT32_C(   194.16), SIMDE_FLOAT32_C(   748.22), SIMDE_FLOAT32_C(   -76.41));
  b = simde_mm256_set_ps(SIMDE_FLOAT32_C(   398.14), SIMDE_FLOAT32_C(   627.07), SIMDE_FLOAT32_C(  -732.06), SIMDE_FLOAT32_C(   174.59),
                         SIMDE_FLOAT32_C(   523.49), SIMDE_FLOAT32_C(  -254.59), SIMDE_FLOAT32_C(   725.04), SIMDE_FLOAT32_C(  -210.35));
  e = simde_mm256_set_ps(SIMDE_FLOAT32_C(   817.88), SIMDE_FLOAT32_C(   849.74), SIMDE_FLOAT32_C(  -141.90), SIMDE_FLOAT32_C(   174.59),
                         SIMDE_FLOAT32_C(   523.49), SIMDE_FLOAT32_C(   254.59), SIMDE_FLOAT32_C(   725.04), SIMDE_FLOAT32_C(  -210.35));
  r = simde_mm256_mask_range_ps(src, UINT8_C( 31), a, b, INT32_C(           0));
  simde_test_x86_assert_equal_f32x8(r, e, 1);

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde__m256 src = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
    simde__mmask8 k = simde_test_x86_random_mmask8();
    simde__m256 a = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
    simde__m256 b = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
    int imm8 = simde_test_codegen_rand() & 15;
    simde__m256 r;
    SIMDE_CONSTIFY_16_(simde_mm256_mask_range_ps, r, simde_mm256_setzero_ps(), imm8, src, k, a, b);

    simde_test_x86_write_f32x8(2, src, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_x86_write_mmask8(2, k, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_f32x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_codegen_write_i32(2, imm8, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_f32x8(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_mm256_maskz_range_ps (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  simde__m256 a, b, e, r;

  a = simde_mm256_set_ps(SIMDE_FLOAT32_C(   378.60), SIMDE_FLOAT32_C(   120.52), SIMDE_FLOAT32_C(   752.45), SIMDE_FLOAT32_C(  -794.41),
                         SIMDE_FLOAT32_C(   469.76), SIMDE_FLOAT32_C(  -414.96), SIMDE_FLOAT32_C(  -846.73), SIMDE_FLOAT32_C(    61.40));
  b = simde_mm256_set_ps(SIMDE_FLOAT32_C(  -967.88), SIMDE_FLOAT32_C(  -428.74), SIMDE_FLOAT32_C(  -848.08), SIMDE_FLOAT32_C(  -162.04),
                         SIMDE_FLOAT32_C(  -176.95), SIMDE_FLOAT32_C(   228.33), SIMDE_FLOAT32_C(   978.61), SIMDE_FLOAT32_C(     5.16));
  e = simde_mm256_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   428.74), SIMDE_FLOAT32_C(   848.08), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(   469.76), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00));
  r = simde_mm256_maskz_range_ps(UINT8_C(104), a, b, INT32_C(           3));
  simde_test_x86_assert_equal_f32x8(r, e, 1);

  a = simde_mm256_set_ps(SIMDE_FLOAT32_C(   742.35), SIMDE_FLOAT32_C(   963.02), SIMDE_FLOAT32_C(  -451.94), SIMDE_FLOAT32_C(  -432.24),
                         SIMDE_FLOAT32_C(  -560.47), SIMDE_FLOAT32_C(   802.66), SIMDE_FLOAT32_C(  -157.27), SIMDE_FLOAT32_C(   649.88));
  b = simde_mm256_set_ps(SIMDE_FLOAT32_C(   502.01), SIMDE_FLOAT32_C(   650.14), SIMDE_FLOAT32_C(  -798.11), SIMDE_FLOAT32_C(   -83.02),
                         SIMDE_FLOAT32_C(   496.87), SIMDE_FLOAT32_C(   140.49), SIMDE_FLOAT32_C(   590.08), SIMDE_FLOAT32_C(  -183.99));
  e = simde_mm256_set_ps(SIMDE_FLOAT32_C(   742.35), SIMDE_FLOAT32_C(   963.02), SIMDE_FLOAT32_C(  -451.94), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   590.08), SIMDE_FLOAT32_C(     0.00));
  r = simde_mm256_maskz_range_ps(UINT8_C(226), a, b, INT32_C(           5));
  simde_test_x86_assert_equal_f32x8(r, e, 1);

  a = simde_mm256_set_ps(SIMDE_FLOAT32_C(   608.75), SIMDE_FLOAT32_C(    82.67), SIMDE_FLOAT32_C(  -537.34), SIMDE_FLOAT32_C(  -229.21),
                         SIMDE_FLOAT32_C(  -740.37), SIMDE_FLOAT32_C(   234.33), SIMDE_FLOAT32_C(  -207.83), SIMDE_FLOAT32_C(   254.46));
  b = simde_mm256_set_ps(SIMDE_FLOAT32_C(   873.09), SIMDE_FLOAT32_C(   457.35), SIMDE_FLOAT32_C(   290.75), SIMDE_FLOAT32_C(  -929.56),
                         SIMDE_FLOAT32_C(  -385.38), SIMDE_FLOAT32_C(   640.87), SIMDE_FLOAT32_C(   653.94), SIMDE_FLOAT32_C(  -385.42));
  e = simde_mm256_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(    82.67), SIMDE_FLOAT32_C(   290.75), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   234.33), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   254.46));
  r = simde_mm256_maskz_range_ps(UINT8_C(101), a, b, INT32_C(          10));
  simde_test_x86_assert_equal_f32x8(r, e, 1);

  a = simde_mm256_set_ps(SIMDE_FLOAT32_C(  -799.64), SIMDE_FLOAT32_C(  -265.96), SIMDE_FLOAT32_C(   -92.05), SIMDE_FLOAT32_C(   283.38),
                         SIMDE_FLOAT32_C(   237.17), SIMDE_FLOAT32_C(   767.46), SIMDE_FLOAT32_C(   693.30), SIMDE_FLOAT32_C(  -578.84));
  b = simde_mm256_set_ps(SIMDE_FLOAT32_C(   474.25), SIMDE_FLOAT32_C(   573.67), SIMDE_FLOAT32_C(   -43.17), SIMDE_FLOAT32_C(  -760.08),
                         SIMDE_FLOAT32_C(  -218.50), SIMDE_FLOAT32_C(   702.37), SIMDE_FLOAT32_C(  -615.82), SIMDE_FLOAT32_C(   109.84));
  e = simde_mm256_set_ps(SIMDE_FLOAT32_C(  -799.64), SIMDE_FLOAT32_C(  -573.67), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -760.08),
                         SIMDE_FLOAT32_C(  -237.17), SIMDE_FLOAT32_C(  -767.46), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00));
  r = simde_mm256_maskz_range_ps(UINT8_C(220), a, b, INT32_C(          15));
  simde_test_x86_assert_equal_f32x8(r, e, 1);

  a = simde_mm256_set_ps(SIMDE_FLOAT32_C(  -976.49), SIMDE_FLOAT32_C(   166.11), SIMDE_FLOAT32_C(   594.07), SIMDE_FLOAT32_C(   953.07),
                         SIMDE_FLOAT32_C(  -448.51), SIMDE_FLOAT32_C(   953.20), SIMDE_FLOAT32_C(  -700.87), SIMDE_FLOAT32_C(   936.91));
  b = simde_mm256_set_ps(SIMDE_FLOAT32_C(  -583.96), SIMDE_FLOAT32_C(  -691.59), SIMDE_FLOAT32_C(  -682.24), SIMDE_FLOAT32_C(  -351.42),
                         SIMDE_FLOAT32_C(  -384.89), SIMDE_FLOAT32_C(   896.61), SIMDE_FLOAT32_C(  -376.54), SIMDE_FLOAT32_C(  -115.17));
  e = simde_mm256_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   953.07),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   953.20), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   936.91));
  r = simde_mm256_maskz_range_ps(UINT8_C( 21), a, b, INT32_C(           3));
  simde_test_x86_assert_equal_f32x8(r, e, 1);

  a = simde_mm256_set_ps(SIMDE_FLOAT32_C(   -86.92), SIMDE_FLOAT32_C(   215.33), SIMDE_FLOAT32_C(   494.51), SIMDE_FLOAT32_C(  -326.84),
                         SIMDE_FLOAT32_C(  -566.17), SIMDE_FLOAT32_C(   792.14), SIMDE_FLOAT32_C(  -711.02), SIMDE_FLOAT32_C(   323.99));
  b = simde_mm256_set_ps(SIMDE_FLOAT32_C(    86.65), SIMDE_FLOAT32_C(   966.93), SIMDE_FLOAT32_C(  -675.77), SIMDE_FLOAT32_C(   133.45),
                         SIMDE_FLOAT32_C(   667.80), SIMDE_FLOAT32_C(  -612.68), SIMDE_FLOAT32_C(  -211.00), SIMDE_FLOAT32_C(  -548.66));
  e = simde_mm256_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -675.77), SIMDE_FLOAT32_C(  -326.84),
                         SIMDE_FLOAT32_C(  -566.17), SIMDE_FLOAT32_C(  -612.68), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -548.66));
  r = simde_mm256_maskz_range_ps(UINT8_C( 61), a, b, INT32_C(           4));
  simde_test_x86_assert_equal_f32x8(r, e, 1);

  a = simde_mm256_set_ps(SIMDE_FLOAT32_C(   313.87), SIMDE_FLOAT32_C(  -819.34), SIMDE_FLOAT32_C(   840.12), SIMDE_FLOAT32_C(  -334.71),
                         SIMDE_FLOAT32_C(   565.55), SIMDE_FLOAT32_C(   943.51), SIMDE_FLOAT32_C(  -958.17), SIMDE_FLOAT32_C(  -319.28));
  b = simde_mm256_set_ps(SIMDE_FLOAT32_C(   872.99), SIMDE_FLOAT32_C(  -998.21), SIMDE_FLOAT32_C(    53.90), SIMDE_FLOAT32_C(  -919.15),
                         SIMDE_FLOAT32_C(   712.82), SIMDE_FLOAT32_C(   729.91), SIMDE_FLOAT32_C(  -510.94), SIMDE_FLOAT32_C(  -842.12));
  e = simde_mm256_set_ps(SIMDE_FLOAT32_C(  -872.99), SIMDE_FLOAT32_C(  -819.34), SIMDE_FLOAT32_C(  -840.12), SIMDE_FLOAT32_C(  -334.71),
                         SIMDE_FLOAT32_C(  -712.82), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -319.28));
  r = simde_mm256_maskz_range_ps(UINT8_C(249), a, b, INT32_C(          13));
  simde_test_x86_assert_equal_f32x8(r, e, 1);

  a = simde_mm256_set_ps(SIMDE_FLOAT32_C(  -374.49), SIMDE_FLOAT32_C(   486.64), SIMDE_FLOAT32_C(   975.36), SIMDE_FLOAT32_C(   492.06),
                         SIMDE_FLOAT32_C(   818.84), SIMDE_FLOAT32_C(   588.03), SIMDE_FLOAT32_C(  -296.94), SIMDE_FLOAT32_C(   367.50));
  b = simde_mm256_set_ps(SIMDE_FLOAT32_C(   317.09), SIMDE_FLOAT32_C(   217.13), SIMDE_FLOAT32_C(  -607.12), SIMDE_FLOAT32_C(   373.58),
                         SIMDE_FLOAT32_C(   175.31), SIMDE_FLOAT32_C(   712.16), SIMDE_FLOAT32_C(   453.57), SIMDE_FLOAT32_C(  -700.41));
  e = simde_mm256_set_ps(SIMDE_FLOAT32_C(  -317.09), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   607.12), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(   175.31), SIMDE_FLOAT32_C(   588.03), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   367.50));
  r = simde_mm256_maskz_range_ps(UINT8_C(173), a, b, INT32_C(           2));
  simde_test_x86_assert_equal_f32x8(r, e, 1);

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde__mmask8 k = simde_test_x86_random_mmask8();
    simde__m256 a = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
    simde__m256 b = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
    int imm8 = simde_test_codegen_rand() & 15;
    simde__m256 r;
    SIMDE_CONSTIFY_16_(simde_mm256_maskz_range_ps, r, simde_mm256_setzero_ps(), imm8, k, a, b);

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

static int
test_simde_mm512_range_ps (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    const simde_float32 a[16];
    const simde_float32 b[16];
    const simde_float32 r[16];
  } test_vec[] = {
    { { SIMDE_FLOAT32_C(   103.45), SIMDE_FLOAT32_C(   -55.27), SIMDE_FLOAT32_C(   690.63), SIMDE_FLOAT32_C(  -719.57),
        SIMDE_FLOAT32_C(   112.48), SIMDE_FLOAT32_C(   240.61), SIMDE_FLOAT32_C(   298.55), SIMDE_FLOAT32_C(   241.27),
        SIMDE_FLOAT32_C(   273.12), SIMDE_FLOAT32_C(  -362.54), SIMDE_FLOAT32_C(  -113.52), SIMDE_FLOAT32_C(   639.17),
        SIMDE_FLOAT32_C(  -804.13), SIMDE_FLOAT32_C(  -183.90), SIMDE_FLOAT32_C(  -247.65), SIMDE_FLOAT32_C(  -895.35) },
      { SIMDE_FLOAT32_C(   340.61), SIMDE_FLOAT32_C(  -647.16), SIMDE_FLOAT32_C(  -350.31), SIMDE_FLOAT32_C(   648.47),
        SIMDE_FLOAT32_C(   849.19), SIMDE_FLOAT32_C(   780.09), SIMDE_FLOAT32_C(  -914.49), SIMDE_FLOAT32_C(  -126.12),
        SIMDE_FLOAT32_C(  -431.49), SIMDE_FLOAT32_C(  -645.61), SIMDE_FLOAT32_C(   -44.56), SIMDE_FLOAT32_C(   177.10),
        SIMDE_FLOAT32_C(   153.84), SIMDE_FLOAT32_C(   -22.56), SIMDE_FLOAT32_C(   337.47), SIMDE_FLOAT32_C(  -742.70) },
      { SIMDE_FLOAT32_C(   340.61), SIMDE_FLOAT32_C(   647.16), SIMDE_FLOAT32_C(   690.63), SIMDE_FLOAT32_C(   719.57),
        SIMDE_FLOAT32_C(   849.19), SIMDE_FLOAT32_C(   780.09), SIMDE_FLOAT32_C(   914.49), SIMDE_FLOAT32_C(   241.27),
        SIMDE_FLOAT32_C(   431.49), SIMDE_FLOAT32_C(   645.61), SIMDE_FLOAT32_C(   113.52), SIMDE_FLOAT32_C(   639.17),
        SIMDE_FLOAT32_C(   804.13), SIMDE_FLOAT32_C(   183.90), SIMDE_FLOAT32_C(   337.47), SIMDE_FLOAT32_C(   895.35) } },
    { { SIMDE_FLOAT32_C(   922.17), SIMDE_FLOAT32_C(    28.10), SIMDE_FLOAT32_C(  -462.28), SIMDE_FLOAT32_C(    34.65),
        SIMDE_FLOAT32_C(  -731.29), SIMDE_FLOAT32_C(   836.27), SIMDE_FLOAT32_C(  -724.08), SIMDE_FLOAT32_C(   541.84),
        SIMDE_FLOAT32_C(  -526.27), SIMDE_FLOAT32_C(   162.40), SIMDE_FLOAT32_C(   181.01), SIMDE_FLOAT32_C(  -330.41),
        SIMDE_FLOAT32_C(   978.50), SIMDE_FLOAT32_C(   933.36), SIMDE_FLOAT32_C(  -225.75), SIMDE_FLOAT32_C(   319.11) },
      { SIMDE_FLOAT32_C(  -713.80), SIMDE_FLOAT32_C(   423.94), SIMDE_FLOAT32_C(   -32.42), SIMDE_FLOAT32_C(  -864.61),
        SIMDE_FLOAT32_C(   204.02), SIMDE_FLOAT32_C(    53.09), SIMDE_FLOAT32_C(     9.27), SIMDE_FLOAT32_C(   772.53),
        SIMDE_FLOAT32_C(   407.48), SIMDE_FLOAT32_C(   964.71), SIMDE_FLOAT32_C(   -50.37), SIMDE_FLOAT32_C(  -438.68),
        SIMDE_FLOAT32_C(   -57.85), SIMDE_FLOAT32_C(  -712.89), SIMDE_FLOAT32_C(  -181.38), SIMDE_FLOAT32_C(  -135.68) },
      { SIMDE_FLOAT32_C(  -713.80), SIMDE_FLOAT32_C(    28.10), SIMDE_FLOAT32_C(  -462.28), SIMDE_FLOAT32_C(  -864.61),
        SIMDE_FLOAT32_C(  -731.29), SIMDE_FLOAT32_C(    53.09), SIMDE_FLOAT32_C(  -724.08), SIMDE_FLOAT32_C(   541.84),
        SIMDE_FLOAT32_C(  -526.27), SIMDE_FLOAT32_C(   162.40), SIMDE_FLOAT32_C(   -50.37), SIMDE_FLOAT32_C(  -438.68),
        SIMDE_FLOAT32_C(   -57.85), SIMDE_FLOAT32_C(  -712.89), SIMDE_FLOAT32_C(  -225.75), SIMDE_FLOAT32_C(  -135.68) } },
    { { SIMDE_FLOAT32_C(   315.21), SIMDE_FLOAT32_C(   356.35), SIMDE_FLOAT32_C(   898.97), SIMDE_FLOAT32_C(   583.92),
        SIMDE_FLOAT32_C(   192.62), SIMDE_FLOAT32_C(  -825.11), SIMDE_FLOAT32_C(   125.76), SIMDE_FLOAT32_C(   666.34),
        SIMDE_FLOAT32_C(   337.29), SIMDE_FLOAT32_C(  -693.23), SIMDE_FLOAT32_C(  -664.06), SIMDE_FLOAT32_C(   315.79),
        SIMDE_FLOAT32_C(  -759.87), SIMDE_FLOAT32_C(   110.18), SIMDE_FLOAT32_C(  -365.10), SIMDE_FLOAT32_C(  -473.67) },
      { SIMDE_FLOAT32_C(  -465.88), SIMDE_FLOAT32_C(   602.48), SIMDE_FLOAT32_C(  -338.28), SIMDE_FLOAT32_C(   738.14),
        SIMDE_FLOAT32_C(  -344.43), SIMDE_FLOAT32_C(   670.99), SIMDE_FLOAT32_C(   510.67), SIMDE_FLOAT32_C(  -936.95),
        SIMDE_FLOAT32_C(   635.70), SIMDE_FLOAT32_C(  -539.70), SIMDE_FLOAT32_C(  -375.62), SIMDE_FLOAT32_C(  -422.14),
        SIMDE_FLOAT32_C(  -252.59), SIMDE_FLOAT32_C(   443.00), SIMDE_FLOAT32_C(   442.18), SIMDE_FLOAT32_C(  -937.38) },
      { SIMDE_FLOAT32_C(   315.21), SIMDE_FLOAT32_C(   602.48), SIMDE_FLOAT32_C(   898.97), SIMDE_FLOAT32_C(   738.14),
        SIMDE_FLOAT32_C(   192.62), SIMDE_FLOAT32_C(  -670.99), SIMDE_FLOAT32_C(   510.67), SIMDE_FLOAT32_C(   666.34),
        SIMDE_FLOAT32_C(   635.70), SIMDE_FLOAT32_C(  -539.70), SIMDE_FLOAT32_C(  -375.62), SIMDE_FLOAT32_C(   315.79),
        SIMDE_FLOAT32_C(  -252.59), SIMDE_FLOAT32_C(   443.00), SIMDE_FLOAT32_C(  -442.18), SIMDE_FLOAT32_C(  -473.67) } },
    { { SIMDE_FLOAT32_C(  -200.66), SIMDE_FLOAT32_C(   341.14), SIMDE_FLOAT32_C(   646.55), SIMDE_FLOAT32_C(   991.96),
        SIMDE_FLOAT32_C(   516.03), SIMDE_FLOAT32_C(  -227.69), SIMDE_FLOAT32_C(   658.30), SIMDE_FLOAT32_C(  -146.69),
        SIMDE_FLOAT32_C(    79.08), SIMDE_FLOAT32_C(   994.24), SIMDE_FLOAT32_C(  -830.90), SIMDE_FLOAT32_C(   319.21),
        SIMDE_FLOAT32_C(   104.42), SIMDE_FLOAT32_C(  -196.00), SIMDE_FLOAT32_C(   845.55), SIMDE_FLOAT32_C(   638.54) },
      { SIMDE_FLOAT32_C(  -593.52), SIMDE_FLOAT32_C(  -492.73), SIMDE_FLOAT32_C(   376.68), SIMDE_FLOAT32_C(    62.05),
        SIMDE_FLOAT32_C(  -821.74), SIMDE_FLOAT32_C(  -112.65), SIMDE_FLOAT32_C(   125.10), SIMDE_FLOAT32_C(   813.97),
        SIMDE_FLOAT32_C(   347.66), SIMDE_FLOAT32_C(   749.48), SIMDE_FLOAT32_C(  -608.18), SIMDE_FLOAT32_C(  -904.93),
        SIMDE_FLOAT32_C(   192.48), SIMDE_FLOAT32_C(   834.00), SIMDE_FLOAT32_C(  -842.31), SIMDE_FLOAT32_C(   991.82) },
      { SIMDE_FLOAT32_C(  -200.66), SIMDE_FLOAT32_C(   341.14), SIMDE_FLOAT32_C(   376.68), SIMDE_FLOAT32_C(    62.05),
        SIMDE_FLOAT32_C(   516.03), SIMDE_FLOAT32_C(  -112.65), SIMDE_FLOAT32_C(   125.10), SIMDE_FLOAT32_C(  -146.69),
        SIMDE_FLOAT32_C(    79.08), SIMDE_FLOAT32_C(   749.48), SIMDE_FLOAT32_C(  -608.18), SIMDE_FLOAT32_C(   319.21),
        SIMDE_FLOAT32_C(   104.42), SIMDE_FLOAT32_C(  -196.00), SIMDE_FLOAT32_C(   842.31), SIMDE_FLOAT32_C(   638.54) } },
    { { SIMDE_FLOAT32_C(   175.14), SIMDE_FLOAT32_C(   804.24), SIMDE_FLOAT32_C(   983.78), SIMDE_FLOAT32_C(  -308.83),
        SIMDE_FLOAT32_C(  -423.45), SIMDE_FLOAT32_C(   642.08), SIMDE_FLOAT32_C(   544.49), SIMDE_FLOAT32_C(   655.63),
        SIMDE_FLOAT32_C(   636.32), SIMDE_FLOAT32_C(   713.59), SIMDE_FLOAT32_C(   -25.16), SIMDE_FLOAT32_C(  -259.25),
        SIMDE_FLOAT32_C(  -482.41), SIMDE_FLOAT32_C(  -179.61), SIMDE_FLOAT32_C(  -620.71), SIMDE_FLOAT32_C(   -75.93) },
      { SIMDE_FLOAT32_C(   327.66), SIMDE_FLOAT32_C(   755.97), SIMDE_FLOAT32_C(   986.12), SIMDE_FLOAT32_C(   505.92),
        SIMDE_FLOAT32_C(  -356.68), SIMDE_FLOAT32_C(   111.23), SIMDE_FLOAT32_C(   319.89), SIMDE_FLOAT32_C(   990.98),
        SIMDE_FLOAT32_C(  -139.29), SIMDE_FLOAT32_C(   711.72), SIMDE_FLOAT32_C(  -913.95), SIMDE_FLOAT32_C(  -946.81),
        SIMDE_FLOAT32_C(   545.72), SIMDE_FLOAT32_C(  -756.26), SIMDE_FLOAT32_C(  -954.99), SIMDE_FLOAT32_C(  -279.14) },
      { SIMDE_FLOAT32_C(   327.66), SIMDE_FLOAT32_C(   804.24), SIMDE_FLOAT32_C(   986.12), SIMDE_FLOAT32_C(  -505.92),
        SIMDE_FLOAT32_C(  -423.45), SIMDE_FLOAT32_C(   642.08), SIMDE_FLOAT32_C(   544.49), SIMDE_FLOAT32_C(   990.98),
        SIMDE_FLOAT32_C(   636.32), SIMDE_FLOAT32_C(   713.59), SIMDE_FLOAT32_C(  -913.95), SIMDE_FLOAT32_C(  -946.81),
        SIMDE_FLOAT32_C(  -545.72), SIMDE_FLOAT32_C(  -756.26), SIMDE_FLOAT32_C(  -954.99), SIMDE_FLOAT32_C(  -279.14) } },
    { { SIMDE_FLOAT32_C(  -952.02), SIMDE_FLOAT32_C(  -971.20), SIMDE_FLOAT32_C(   412.03), SIMDE_FLOAT32_C(  -375.47),
        SIMDE_FLOAT32_C(   670.88), SIMDE_FLOAT32_C(   -43.48), SIMDE_FLOAT32_C(  -719.85), SIMDE_FLOAT32_C(   307.20),
        SIMDE_FLOAT32_C(  -329.89), SIMDE_FLOAT32_C(   255.00), SIMDE_FLOAT32_C(  -952.05), SIMDE_FLOAT32_C(   187.70),
        SIMDE_FLOAT32_C(  -924.61), SIMDE_FLOAT32_C(  -572.77), SIMDE_FLOAT32_C(  -888.23), SIMDE_FLOAT32_C(   403.05) },
      { SIMDE_FLOAT32_C(  -816.80), SIMDE_FLOAT32_C(  -902.10), SIMDE_FLOAT32_C(   -91.02), SIMDE_FLOAT32_C(  -173.47),
        SIMDE_FLOAT32_C(   209.12), SIMDE_FLOAT32_C(  -771.13), SIMDE_FLOAT32_C(  -182.49), SIMDE_FLOAT32_C(  -930.17),
        SIMDE_FLOAT32_C(   940.59), SIMDE_FLOAT32_C(   -96.45), SIMDE_FLOAT32_C(  -876.98), SIMDE_FLOAT32_C(   486.30),
        SIMDE_FLOAT32_C(   147.29), SIMDE_FLOAT32_C(  -831.96), SIMDE_FLOAT32_C(  -792.84), SIMDE_FLOAT32_C(   195.27) },
      { SIMDE_FLOAT32_C(   816.80), SIMDE_FLOAT32_C(   902.10), SIMDE_FLOAT32_C(   412.03), SIMDE_FLOAT32_C(   173.47),
        SIMDE_FLOAT32_C(   670.88), SIMDE_FLOAT32_C(    43.48), SIMDE_FLOAT32_C(   182.49), SIMDE_FLOAT32_C(   307.20),
        SIMDE_FLOAT32_C(   940.59), SIMDE_FLOAT32_C(   255.00), SIMDE_FLOAT32_C(   876.98), SIMDE_FLOAT32_C(   486.30),
        SIMDE_FLOAT32_C(   147.29), SIMDE_FLOAT32_C(   572.77), SIMDE_FLOAT32_C(   792.84), SIMDE_FLOAT32_C(   403.05) } },
    { { SIMDE_FLOAT32_C(  -803.17), SIMDE_FLOAT32_C(   619.20), SIMDE_FLOAT32_C(   819.80), SIMDE_FLOAT32_C(   867.71),
        SIMDE_FLOAT32_C(  -424.28), SIMDE_FLOAT32_C(  -900.05), SIMDE_FLOAT32_C(   174.91), SIMDE_FLOAT32_C(   245.83),
        SIMDE_FLOAT32_C(   354.95), SIMDE_FLOAT32_C(   222.86), SIMDE_FLOAT32_C(  -566.47), SIMDE_FLOAT32_C(   430.34),
        SIMDE_FLOAT32_C(   650.10), SIMDE_FLOAT32_C(  -454.70), SIMDE_FLOAT32_C(  -166.61), SIMDE_FLOAT32_C(   833.30) },
      { SIMDE_FLOAT32_C(  -356.80), SIMDE_FLOAT32_C(   742.37), SIMDE_FLOAT32_C(  -340.17), SIMDE_FLOAT32_C(   852.32),
        SIMDE_FLOAT32_C(   971.24), SIMDE_FLOAT32_C(   477.33), SIMDE_FLOAT32_C(   922.16), SIMDE_FLOAT32_C(   911.83),
        SIMDE_FLOAT32_C(  -619.11), SIMDE_FLOAT32_C(  -954.82), SIMDE_FLOAT32_C(   398.14), SIMDE_FLOAT32_C(   528.18),
        SIMDE_FLOAT32_C(  -786.79), SIMDE_FLOAT32_C(   605.30), SIMDE_FLOAT32_C(  -276.55), SIMDE_FLOAT32_C(  -589.95) },
      { SIMDE_FLOAT32_C(  -356.80), SIMDE_FLOAT32_C(   742.37), SIMDE_FLOAT32_C(   819.80), SIMDE_FLOAT32_C(   867.71),
        SIMDE_FLOAT32_C(   971.24), SIMDE_FLOAT32_C(   477.33), SIMDE_FLOAT32_C(   922.16), SIMDE_FLOAT32_C(   911.83),
        SIMDE_FLOAT32_C(   354.95), SIMDE_FLOAT32_C(   222.86), SIMDE_FLOAT32_C(   398.14), SIMDE_FLOAT32_C(   528.18),
        SIMDE_FLOAT32_C(   650.10), SIMDE_FLOAT32_C(   605.30), SIMDE_FLOAT32_C(  -166.61), SIMDE_FLOAT32_C(   833.30) } },
    { { SIMDE_FLOAT32_C(   224.50), SIMDE_FLOAT32_C(  -456.75), SIMDE_FLOAT32_C(  -722.24), SIMDE_FLOAT32_C(   800.22),
        SIMDE_FLOAT32_C(  -356.80), SIMDE_FLOAT32_C(   452.67), SIMDE_FLOAT32_C(    46.04), SIMDE_FLOAT32_C(   998.15),
        SIMDE_FLOAT32_C(  -324.47), SIMDE_FLOAT32_C(   479.57), SIMDE_FLOAT32_C(   428.49), SIMDE_FLOAT32_C(  -674.37),
        SIMDE_FLOAT32_C(  -975.12), SIMDE_FLOAT32_C(  -738.12), SIMDE_FLOAT32_C(  -841.07), SIMDE_FLOAT32_C(  -331.93) },
      { SIMDE_FLOAT32_C(  -995.74), SIMDE_FLOAT32_C(  -181.24), SIMDE_FLOAT32_C(  -479.60), SIMDE_FLOAT32_C(   975.50),
        SIMDE_FLOAT32_C(  -703.91), SIMDE_FLOAT32_C(  -557.45), SIMDE_FLOAT32_C(   887.33), SIMDE_FLOAT32_C(  -323.02),
        SIMDE_FLOAT32_C(  -512.27), SIMDE_FLOAT32_C(   285.47), SIMDE_FLOAT32_C(  -794.84), SIMDE_FLOAT32_C(  -299.05),
        SIMDE_FLOAT32_C(  -109.23), SIMDE_FLOAT32_C(   -71.39), SIMDE_FLOAT32_C(   110.99), SIMDE_FLOAT32_C(  -884.73) },
      { SIMDE_FLOAT32_C(   995.74), SIMDE_FLOAT32_C(  -456.75), SIMDE_FLOAT32_C(  -722.24), SIMDE_FLOAT32_C(   800.22),
        SIMDE_FLOAT32_C(  -703.91), SIMDE_FLOAT32_C(   557.45), SIMDE_FLOAT32_C(    46.04), SIMDE_FLOAT32_C(   323.02),
        SIMDE_FLOAT32_C(  -512.27), SIMDE_FLOAT32_C(   285.47), SIMDE_FLOAT32_C(   794.84), SIMDE_FLOAT32_C(  -674.37),
        SIMDE_FLOAT32_C(  -975.12), SIMDE_FLOAT32_C(  -738.12), SIMDE_FLOAT32_C(  -841.07), SIMDE_FLOAT32_C(  -884.73) } }
  };

  simde__m512 a, b, r;

  a = simde_mm512_loadu_ps(test_vec[0].a);
  b = simde_mm512_loadu_ps(test_vec[0].b);
  r = simde_mm512_range_ps(a, b, 11);
  simde_test_x86_assert_equal_f32x16(r, simde_mm512_loadu_ps(test_vec[0].r), 1);

  a = simde_mm512_loadu_ps(test_vec[1].a);
  b = simde_mm512_loadu_ps(test_vec[1].b);
  r = simde_mm512_range_ps(a, b, 4);
  simde_test_x86_assert_equal_f32x16(r, simde_mm512_loadu_ps(test_vec[1].r), 1);

  a = simde_mm512_loadu_ps(test_vec[2].a);
  b = simde_mm512_loadu_ps(test_vec[2].b);
  r = simde_mm512_range_ps(a, b, 1);
  simde_test_x86_assert_equal_f32x16(r, simde_mm512_loadu_ps(test_vec[2].r), 1);

  a = simde_mm512_loadu_ps(test_vec[3].a);
  b = simde_mm512_loadu_ps(test_vec[3].b);
  r = simde_mm512_range_ps(a, b, 2);
  simde_test_x86_assert_equal_f32x16(r, simde_mm512_loadu_ps(test_vec[3].r), 1);

  a = simde_mm512_loadu_ps(test_vec[4].a);
  b = simde_mm512_loadu_ps(test_vec[4].b);
  r = simde_mm512_range_ps(a, b, 3);
  simde_test_x86_assert_equal_f32x16(r, simde_mm512_loadu_ps(test_vec[4].r), 1);

  a = simde_mm512_loadu_ps(test_vec[5].a);
  b = simde_mm512_loadu_ps(test_vec[5].b);
  r = simde_mm512_range_ps(a, b, 9);
  simde_test_x86_assert_equal_f32x16(r, simde_mm512_loadu_ps(test_vec[5].r), 1);

  a = simde_mm512_loadu_ps(test_vec[6].a);
  b = simde_mm512_loadu_ps(test_vec[6].b);
  r = simde_mm512_range_ps(a, b, 5);
  simde_test_x86_assert_equal_f32x16(r, simde_mm512_loadu_ps(test_vec[6].r), 1);

  a = simde_mm512_loadu_ps(test_vec[7].a);
  b = simde_mm512_loadu_ps(test_vec[7].b);
  r = simde_mm512_range_ps(a, b, 0);
  simde_test_x86_assert_equal_f32x16(r, simde_mm512_loadu_ps(test_vec[7].r), 1);

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

  simde__m512 a, b, r;

  a = simde_test_x86_random_f32x16(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x16(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  r = simde_mm512_range_ps(a, b, 11);

  simde_test_x86_write_f32x16(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x16(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_f32x16(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x16(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x16(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  r = simde_mm512_range_ps(a, b, 4);

  simde_test_x86_write_f32x16(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x16(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_f32x16(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x16(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x16(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  r = simde_mm512_range_ps(a, b, 1);

  simde_test_x86_write_f32x16(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x16(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_f32x16(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x16(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x16(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  r = simde_mm512_range_ps(a, b, 2);

  simde_test_x86_write_f32x16(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x16(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_f32x16(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x16(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x16(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  r = simde_mm512_range_ps(a, b, 3);

  simde_test_x86_write_f32x16(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x16(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_f32x16(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x16(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x16(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  r = simde_mm512_range_ps(a, b, 9);

  simde_test_x86_write_f32x16(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x16(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_f32x16(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x16(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x16(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  r = simde_mm512_range_ps(a, b, 5);

  simde_test_x86_write_f32x16(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x16(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_f32x16(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f32x16(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_x86_random_f32x16(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  r = simde_mm512_range_ps(a, b, 0);

  simde_test_x86_write_f32x16(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f32x16(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_f32x16(2, r, SIMDE_TEST_VEC_POS_LAST);

  return 1;
#endif
}

static int
test_simde_mm512_mask_range_ps (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  simde__m512 src, a, b, e, r;

  src = simde_mm512_set_ps(SIMDE_FLOAT32_C(  -829.11), SIMDE_FLOAT32_C(   949.49), SIMDE_FLOAT32_C(   704.66), SIMDE_FLOAT32_C(   467.83),
                           SIMDE_FLOAT32_C(  -418.01), SIMDE_FLOAT32_C(    29.71), SIMDE_FLOAT32_C(   980.09), SIMDE_FLOAT32_C(  -291.00),
                           SIMDE_FLOAT32_C(    27.91), SIMDE_FLOAT32_C(   -73.81), SIMDE_FLOAT32_C(  -371.85), SIMDE_FLOAT32_C(   315.10),
                           SIMDE_FLOAT32_C(   196.29), SIMDE_FLOAT32_C(  -860.91), SIMDE_FLOAT32_C(   157.21), SIMDE_FLOAT32_C(   882.42));
  a = simde_mm512_set_ps(SIMDE_FLOAT32_C(  -509.00), SIMDE_FLOAT32_C(  -443.58), SIMDE_FLOAT32_C(   842.51), SIMDE_FLOAT32_C(  -648.08),
                         SIMDE_FLOAT32_C(   399.21), SIMDE_FLOAT32_C(   960.09), SIMDE_FLOAT32_C(  -606.51), SIMDE_FLOAT32_C(  -917.89),
                         SIMDE_FLOAT32_C(  -257.05), SIMDE_FLOAT32_C(  -999.39), SIMDE_FLOAT32_C(  -291.46), SIMDE_FLOAT32_C(   567.65),
                         SIMDE_FLOAT32_C(  -711.55), SIMDE_FLOAT32_C(   254.97), SIMDE_FLOAT32_C(   268.06), SIMDE_FLOAT32_C(   662.95));
  b = simde_mm512_set_ps(SIMDE_FLOAT32_C(   246.74), SIMDE_FLOAT32_C(  -872.05), SIMDE_FLOAT32_C(   -73.51), SIMDE_FLOAT32_C(   583.79),
                         SIMDE_FLOAT32_C(  -640.37), SIMDE_FLOAT32_C(   633.79), SIMDE_FLOAT32_C(   412.91), SIMDE_FLOAT32_C(  -589.86),
                         SIMDE_FLOAT32_C(   929.13), SIMDE_FLOAT32_C(   945.08), SIMDE_FLOAT32_C(   828.15), SIMDE_FLOAT32_C(  -100.58),
                         SIMDE_FLOAT32_C(   964.99), SIMDE_FLOAT32_C(   119.15), SIMDE_FLOAT32_C(   871.51), SIMDE_FLOAT32_C(    38.79));
  e = simde_mm512_set_ps(SIMDE_FLOAT32_C(  -509.00), SIMDE_FLOAT32_C(   949.49), SIMDE_FLOAT32_C(   842.51), SIMDE_FLOAT32_C(   467.83),
                         SIMDE_FLOAT32_C(   640.37), SIMDE_FLOAT32_C(   960.09), SIMDE_FLOAT32_C(   980.09), SIMDE_FLOAT32_C(  -917.89),
                         SIMDE_FLOAT32_C(  -929.13), SIMDE_FLOAT32_C(   -73.81), SIMDE_FLOAT32_C(  -371.85), SIMDE_FLOAT32_C(   315.10),
                         SIMDE_FLOAT32_C(  -964.99), SIMDE_FLOAT32_C(   254.97), SIMDE_FLOAT32_C(   871.51), SIMDE_FLOAT32_C(   882.42));
  r = simde_mm512_mask_range_ps(src, UINT16_C(44430), a, b, INT32_C(           3));
  simde_test_x86_assert_equal_f32x16(r, e, 1);

  src = simde_mm512_set_ps(SIMDE_FLOAT32_C(  -999.29), SIMDE_FLOAT32_C(   346.54), SIMDE_FLOAT32_C(  -227.79), SIMDE_FLOAT32_C(  -870.81),
                           SIMDE_FLOAT32_C(  -692.26), SIMDE_FLOAT32_C(  -718.79), SIMDE_FLOAT32_C(   572.78), SIMDE_FLOAT32_C(  -534.76),
                           SIMDE_FLOAT32_C(   929.29), SIMDE_FLOAT32_C(  -826.43), SIMDE_FLOAT32_C(  -494.85), SIMDE_FLOAT32_C(   535.80),
                           SIMDE_FLOAT32_C(  -908.54), SIMDE_FLOAT32_C(   762.20), SIMDE_FLOAT32_C(   535.19), SIMDE_FLOAT32_C(   382.92));
  a = simde_mm512_set_ps(SIMDE_FLOAT32_C(   346.30), SIMDE_FLOAT32_C(    35.23), SIMDE_FLOAT32_C(  -999.85), SIMDE_FLOAT32_C(   584.10),
                         SIMDE_FLOAT32_C(   500.04), SIMDE_FLOAT32_C(  -382.77), SIMDE_FLOAT32_C(   389.55), SIMDE_FLOAT32_C(  -746.70),
                         SIMDE_FLOAT32_C(  -510.72), SIMDE_FLOAT32_C(  -536.94), SIMDE_FLOAT32_C(  -330.49), SIMDE_FLOAT32_C(  -870.35),
                         SIMDE_FLOAT32_C(  -170.74), SIMDE_FLOAT32_C(   256.60), SIMDE_FLOAT32_C(   719.51), SIMDE_FLOAT32_C(   -99.87));
  b = simde_mm512_set_ps(SIMDE_FLOAT32_C(  -132.01), SIMDE_FLOAT32_C(   282.49), SIMDE_FLOAT32_C(   445.10), SIMDE_FLOAT32_C(   967.86),
                         SIMDE_FLOAT32_C(   970.96), SIMDE_FLOAT32_C(   553.74), SIMDE_FLOAT32_C(   967.15), SIMDE_FLOAT32_C(  -375.57),
                         SIMDE_FLOAT32_C(  -218.47), SIMDE_FLOAT32_C(   837.96), SIMDE_FLOAT32_C(  -683.31), SIMDE_FLOAT32_C(  -499.68),
                         SIMDE_FLOAT32_C(  -734.82), SIMDE_FLOAT32_C(   851.45), SIMDE_FLOAT32_C(  -428.97), SIMDE_FLOAT32_C(  -908.39));
  e = simde_mm512_set_ps(SIMDE_FLOAT32_C(   132.01), SIMDE_FLOAT32_C(    35.23), SIMDE_FLOAT32_C(  -227.79), SIMDE_FLOAT32_C(  -870.81),
                         SIMDE_FLOAT32_C(  -692.26), SIMDE_FLOAT32_C(  -718.79), SIMDE_FLOAT32_C(   572.78), SIMDE_FLOAT32_C(  -375.57),
                         SIMDE_FLOAT32_C(  -218.47), SIMDE_FLOAT32_C(  -826.43), SIMDE_FLOAT32_C(  -494.85), SIMDE_FLOAT32_C(  -499.68),
                         SIMDE_FLOAT32_C(  -170.74), SIMDE_FLOAT32_C(   256.60), SIMDE_FLOAT32_C(   428.97), SIMDE_FLOAT32_C(   382.92));
  r = simde_mm512_mask_range_ps(src, UINT16_C(49566), a, b, INT32_C(           2));
  simde_test_x86_assert_equal_f32x16(r, e, 1);

  src = simde_mm512_set_ps(SIMDE_FLOAT32_C(  -431.81), SIMDE_FLOAT32_C(  -507.46), SIMDE_FLOAT32_C(  -519.75), SIMDE_FLOAT32_C(   997.16),
                           SIMDE_FLOAT32_C(  -599.07), SIMDE_FLOAT32_C(   133.95), SIMDE_FLOAT32_C(   -38.07), SIMDE_FLOAT32_C(  -599.22),
                           SIMDE_FLOAT32_C(   549.85), SIMDE_FLOAT32_C(   461.89), SIMDE_FLOAT32_C(   783.55), SIMDE_FLOAT32_C(  -839.70),
                           SIMDE_FLOAT32_C(   208.59), SIMDE_FLOAT32_C(   294.27), SIMDE_FLOAT32_C(   697.25), SIMDE_FLOAT32_C(  -460.91));
  a = simde_mm512_set_ps(SIMDE_FLOAT32_C(   307.78), SIMDE_FLOAT32_C(    95.93), SIMDE_FLOAT32_C(    65.35), SIMDE_FLOAT32_C(  -986.49),
                         SIMDE_FLOAT32_C(   398.68), SIMDE_FLOAT32_C(  -473.73), SIMDE_FLOAT32_C(  -151.11), SIMDE_FLOAT32_C(  -469.31),
                         SIMDE_FLOAT32_C(   243.78), SIMDE_FLOAT32_C(   403.79), SIMDE_FLOAT32_C(  -437.17), SIMDE_FLOAT32_C(   272.82),
                         SIMDE_FLOAT32_C(   850.05), SIMDE_FLOAT32_C(  -404.32), SIMDE_FLOAT32_C(  -351.61), SIMDE_FLOAT32_C(    68.52));
  b = simde_mm512_set_ps(SIMDE_FLOAT32_C(  -668.36), SIMDE_FLOAT32_C(   143.30), SIMDE_FLOAT32_C(  -248.01), SIMDE_FLOAT32_C(   263.12),
                         SIMDE_FLOAT32_C(  -614.42), SIMDE_FLOAT32_C(  -579.71), SIMDE_FLOAT32_C(  -305.07), SIMDE_FLOAT32_C(   893.04),
                         SIMDE_FLOAT32_C(   940.04), SIMDE_FLOAT32_C(  -302.23), SIMDE_FLOAT32_C(   492.10), SIMDE_FLOAT32_C(  -193.92),
                         SIMDE_FLOAT32_C(   735.84), SIMDE_FLOAT32_C(    91.32), SIMDE_FLOAT32_C(   256.23), SIMDE_FLOAT32_C(  -726.05));
  e = simde_mm512_set_ps(SIMDE_FLOAT32_C(  -431.81), SIMDE_FLOAT32_C(    95.93), SIMDE_FLOAT32_C(    65.35), SIMDE_FLOAT32_C(  -263.12),
                         SIMDE_FLOAT32_C(  -599.07), SIMDE_FLOAT32_C(   133.95), SIMDE_FLOAT32_C(   -38.07), SIMDE_FLOAT32_C(  -599.22),
                         SIMDE_FLOAT32_C(   243.78), SIMDE_FLOAT32_C(   461.89), SIMDE_FLOAT32_C(  -437.17), SIMDE_FLOAT32_C(   193.92),
                         SIMDE_FLOAT32_C(   208.59), SIMDE_FLOAT32_C(   -91.32), SIMDE_FLOAT32_C(   697.25), SIMDE_FLOAT32_C(    68.52));
  r = simde_mm512_mask_range_ps(src, UINT16_C(28853), a, b, INT32_C(           2));
  simde_test_x86_assert_equal_f32x16(r, e, 1);

  src = simde_mm512_set_ps(SIMDE_FLOAT32_C(  -416.66), SIMDE_FLOAT32_C(   782.54), SIMDE_FLOAT32_C(   755.66), SIMDE_FLOAT32_C(   327.11),
                           SIMDE_FLOAT32_C(   508.59), SIMDE_FLOAT32_C(  -552.12), SIMDE_FLOAT32_C(  -768.81), SIMDE_FLOAT32_C(  -556.76),
                           SIMDE_FLOAT32_C(  -565.63), SIMDE_FLOAT32_C(  -167.49), SIMDE_FLOAT32_C(   916.97), SIMDE_FLOAT32_C(   585.48),
                           SIMDE_FLOAT32_C(  -698.18), SIMDE_FLOAT32_C(  -326.81), SIMDE_FLOAT32_C(  -818.31), SIMDE_FLOAT32_C(   738.99));
  a = simde_mm512_set_ps(SIMDE_FLOAT32_C(  -424.68), SIMDE_FLOAT32_C(  -312.49), SIMDE_FLOAT32_C(   499.99), SIMDE_FLOAT32_C(   902.12),
                         SIMDE_FLOAT32_C(  -494.18), SIMDE_FLOAT32_C(   761.01), SIMDE_FLOAT32_C(  -498.25), SIMDE_FLOAT32_C(  -825.81),
                         SIMDE_FLOAT32_C(  -382.30), SIMDE_FLOAT32_C(   749.76), SIMDE_FLOAT32_C(   -88.93), SIMDE_FLOAT32_C(  -767.88),
                         SIMDE_FLOAT32_C(   329.47), SIMDE_FLOAT32_C(  -783.86), SIMDE_FLOAT32_C(  -660.92), SIMDE_FLOAT32_C(   389.43));
  b = simde_mm512_set_ps(SIMDE_FLOAT32_C(  -834.61), SIMDE_FLOAT32_C(   745.03), SIMDE_FLOAT32_C(   757.87), SIMDE_FLOAT32_C(  -224.03),
                         SIMDE_FLOAT32_C(  -773.34), SIMDE_FLOAT32_C(   -89.11), SIMDE_FLOAT32_C(  -807.38), SIMDE_FLOAT32_C(  -555.88),
                         SIMDE_FLOAT32_C(   155.24), SIMDE_FLOAT32_C(  -134.49), SIMDE_FLOAT32_C(   -64.47), SIMDE_FLOAT32_C(  -292.64),
                         SIMDE_FLOAT32_C(  -365.68), SIMDE_FLOAT32_C(  -507.71), SIMDE_FLOAT32_C(  -727.01), SIMDE_FLOAT32_C(   801.81));
  e = simde_mm512_set_ps(SIMDE_FLOAT32_C(  -424.68), SIMDE_FLOAT32_C(  -312.49), SIMDE_FLOAT32_C(   755.66), SIMDE_FLOAT32_C(   224.03),
                         SIMDE_FLOAT32_C(  -494.18), SIMDE_FLOAT32_C(    89.11), SIMDE_FLOAT32_C(  -498.25), SIMDE_FLOAT32_C(  -556.76),
                         SIMDE_FLOAT32_C(  -565.63), SIMDE_FLOAT32_C(   134.49), SIMDE_FLOAT32_C(   -64.47), SIMDE_FLOAT32_C(  -292.64),
                         SIMDE_FLOAT32_C(   329.47), SIMDE_FLOAT32_C(  -326.81), SIMDE_FLOAT32_C(  -818.31), SIMDE_FLOAT32_C(   738.99));
  r = simde_mm512_mask_range_ps(src, UINT16_C(56952), a, b, INT32_C(           2));
  simde_test_x86_assert_equal_f32x16(r, e, 1);

  src = simde_mm512_set_ps(SIMDE_FLOAT32_C(  -487.26), SIMDE_FLOAT32_C(  -990.41), SIMDE_FLOAT32_C(  -776.19), SIMDE_FLOAT32_C(  -760.25),
                           SIMDE_FLOAT32_C(  -792.22), SIMDE_FLOAT32_C(   648.49), SIMDE_FLOAT32_C(   552.24), SIMDE_FLOAT32_C(  -292.21),
                           SIMDE_FLOAT32_C(   746.37), SIMDE_FLOAT32_C(    46.42), SIMDE_FLOAT32_C(   -53.22), SIMDE_FLOAT32_C(   244.62),
                           SIMDE_FLOAT32_C(  -127.76), SIMDE_FLOAT32_C(  -670.92), SIMDE_FLOAT32_C(   494.86), SIMDE_FLOAT32_C(   961.17));
  a = simde_mm512_set_ps(SIMDE_FLOAT32_C(   470.13), SIMDE_FLOAT32_C(  -861.73), SIMDE_FLOAT32_C(  -971.39), SIMDE_FLOAT32_C(   141.05),
                         SIMDE_FLOAT32_C(  -356.60), SIMDE_FLOAT32_C(  -932.56), SIMDE_FLOAT32_C(    44.10), SIMDE_FLOAT32_C(  -521.99),
                         SIMDE_FLOAT32_C(  -677.60), SIMDE_FLOAT32_C(   286.22), SIMDE_FLOAT32_C(   702.04), SIMDE_FLOAT32_C(  -904.25),
                         SIMDE_FLOAT32_C(  -624.67), SIMDE_FLOAT32_C(   509.42), SIMDE_FLOAT32_C(   651.63), SIMDE_FLOAT32_C(   220.10));
  b = simde_mm512_set_ps(SIMDE_FLOAT32_C(   472.10), SIMDE_FLOAT32_C(   985.98), SIMDE_FLOAT32_C(   717.65), SIMDE_FLOAT32_C(  -748.00),
                         SIMDE_FLOAT32_C(   342.07), SIMDE_FLOAT32_C(     1.55), SIMDE_FLOAT32_C(   739.26), SIMDE_FLOAT32_C(   332.48),
                         SIMDE_FLOAT32_C(  -222.26), SIMDE_FLOAT32_C(   499.51), SIMDE_FLOAT32_C(   124.70), SIMDE_FLOAT32_C(   129.25),
                         SIMDE_FLOAT32_C(   947.26), SIMDE_FLOAT32_C(  -583.09), SIMDE_FLOAT32_C(   382.88), SIMDE_FLOAT32_C(   -99.16));
  e = simde_mm512_set_ps(SIMDE_FLOAT32_C(  -487.26), SIMDE_FLOAT32_C(  -985.98), SIMDE_FLOAT32_C(  -776.19), SIMDE_FLOAT32_C(  -748.00),
                         SIMDE_FLOAT32_C(  -792.22), SIMDE_FLOAT32_C(  -932.56), SIMDE_FLOAT32_C(   552.24), SIMDE_FLOAT32_C(  -521.99),
                         SIMDE_FLOAT32_C(  -677.60), SIMDE_FLOAT32_C(  -499.51), SIMDE_FLOAT32_C(  -702.04), SIMDE_FLOAT32_C(  -904.25),
                         SIMDE_FLOAT32_C(  -127.76), SIMDE_FLOAT32_C(  -583.09), SIMDE_FLOAT32_C(   494.86), SIMDE_FLOAT32_C(  -220.10));
  r = simde_mm512_mask_range_ps(src, UINT16_C(22005), a, b, INT32_C(          15));
  simde_test_x86_assert_equal_f32x16(r, e, 1);

  src = simde_mm512_set_ps(SIMDE_FLOAT32_C(   840.01), SIMDE_FLOAT32_C(  -215.69), SIMDE_FLOAT32_C(  -211.07), SIMDE_FLOAT32_C(  -542.88),
                           SIMDE_FLOAT32_C(   883.47), SIMDE_FLOAT32_C(   318.80), SIMDE_FLOAT32_C(  -681.14), SIMDE_FLOAT32_C(   854.86),
                           SIMDE_FLOAT32_C(  -822.25), SIMDE_FLOAT32_C(   675.45), SIMDE_FLOAT32_C(   787.42), SIMDE_FLOAT32_C(   133.66),
                           SIMDE_FLOAT32_C(   197.45), SIMDE_FLOAT32_C(   465.02), SIMDE_FLOAT32_C(   847.43), SIMDE_FLOAT32_C(   495.40));
  a = simde_mm512_set_ps(SIMDE_FLOAT32_C(   300.48), SIMDE_FLOAT32_C(   541.87), SIMDE_FLOAT32_C(  -513.52), SIMDE_FLOAT32_C(   835.47),
                         SIMDE_FLOAT32_C(   694.44), SIMDE_FLOAT32_C(    -8.92), SIMDE_FLOAT32_C(  -533.81), SIMDE_FLOAT32_C(  -777.66),
                         SIMDE_FLOAT32_C(     5.10), SIMDE_FLOAT32_C(  -251.45), SIMDE_FLOAT32_C(   970.34), SIMDE_FLOAT32_C(   663.03),
                         SIMDE_FLOAT32_C(   747.00), SIMDE_FLOAT32_C(  -768.92), SIMDE_FLOAT32_C(  -669.45), SIMDE_FLOAT32_C(   -30.74));
  b = simde_mm512_set_ps(SIMDE_FLOAT32_C(   -55.37), SIMDE_FLOAT32_C(  -657.89), SIMDE_FLOAT32_C(  -833.14), SIMDE_FLOAT32_C(   975.37),
                         SIMDE_FLOAT32_C(   610.54), SIMDE_FLOAT32_C(   -38.98), SIMDE_FLOAT32_C(  -864.63), SIMDE_FLOAT32_C(  -173.77),
                         SIMDE_FLOAT32_C(  -827.92), SIMDE_FLOAT32_C(   678.24), SIMDE_FLOAT32_C(   -57.23), SIMDE_FLOAT32_C(  -146.72),
                         SIMDE_FLOAT32_C(   359.38), SIMDE_FLOAT32_C(    87.91), SIMDE_FLOAT32_C(  -324.47), SIMDE_FLOAT32_C(   683.93));
  e = simde_mm512_set_ps(SIMDE_FLOAT32_C(   840.01), SIMDE_FLOAT32_C(   541.87), SIMDE_FLOAT32_C(  -513.52), SIMDE_FLOAT32_C(  -542.88),
                         SIMDE_FLOAT32_C(   694.44), SIMDE_FLOAT32_C(   318.80), SIMDE_FLOAT32_C(  -681.14), SIMDE_FLOAT32_C(   854.86),
                         SIMDE_FLOAT32_C(     5.10), SIMDE_FLOAT32_C(  -678.24), SIMDE_FLOAT32_C(   787.42), SIMDE_FLOAT32_C(   663.03),
                         SIMDE_FLOAT32_C(   197.45), SIMDE_FLOAT32_C(   465.02), SIMDE_FLOAT32_C(  -324.47), SIMDE_FLOAT32_C(  -683.93));
  r = simde_mm512_mask_range_ps(src, UINT16_C(26835), a, b, INT32_C(           1));
  simde_test_x86_assert_equal_f32x16(r, e, 1);

  src = simde_mm512_set_ps(SIMDE_FLOAT32_C(  -322.30), SIMDE_FLOAT32_C(  -672.98), SIMDE_FLOAT32_C(    42.32), SIMDE_FLOAT32_C(  -997.83),
                           SIMDE_FLOAT32_C(  -356.91), SIMDE_FLOAT32_C(   741.84), SIMDE_FLOAT32_C(  -539.70), SIMDE_FLOAT32_C(  -843.39),
                           SIMDE_FLOAT32_C(   906.37), SIMDE_FLOAT32_C(  -234.14), SIMDE_FLOAT32_C(   165.53), SIMDE_FLOAT32_C(   440.18),
                           SIMDE_FLOAT32_C(  -456.48), SIMDE_FLOAT32_C(  -839.57), SIMDE_FLOAT32_C(  -308.37), SIMDE_FLOAT32_C(  -426.81));
  a = simde_mm512_set_ps(SIMDE_FLOAT32_C(   488.78), SIMDE_FLOAT32_C(   111.65), SIMDE_FLOAT32_C(  -574.94), SIMDE_FLOAT32_C(   328.35),
                         SIMDE_FLOAT32_C(  -579.98), SIMDE_FLOAT32_C(   851.88), SIMDE_FLOAT32_C(  -169.06), SIMDE_FLOAT32_C(   475.39),
                         SIMDE_FLOAT32_C(   509.77), SIMDE_FLOAT32_C(  -335.92), SIMDE_FLOAT32_C(   500.01), SIMDE_FLOAT32_C(   899.23),
                         SIMDE_FLOAT32_C(   703.06), SIMDE_FLOAT32_C(   364.65), SIMDE_FLOAT32_C(    73.00), SIMDE_FLOAT32_C(   530.98));
  b = simde_mm512_set_ps(SIMDE_FLOAT32_C(  -594.39), SIMDE_FLOAT32_C(   467.44), SIMDE_FLOAT32_C(   372.60), SIMDE_FLOAT32_C(  -125.37),
                         SIMDE_FLOAT32_C(   781.03), SIMDE_FLOAT32_C(   242.37), SIMDE_FLOAT32_C(  -803.07), SIMDE_FLOAT32_C(   454.01),
                         SIMDE_FLOAT32_C(  -799.96), SIMDE_FLOAT32_C(  -805.24), SIMDE_FLOAT32_C(  -189.08), SIMDE_FLOAT32_C(  -541.80),
                         SIMDE_FLOAT32_C(   734.45), SIMDE_FLOAT32_C(  -345.69), SIMDE_FLOAT32_C(  -448.17), SIMDE_FLOAT32_C(   -31.41));
  e = simde_mm512_set_ps(SIMDE_FLOAT32_C(  -488.78), SIMDE_FLOAT32_C(  -467.44), SIMDE_FLOAT32_C(    42.32), SIMDE_FLOAT32_C(  -328.35),
                         SIMDE_FLOAT32_C(  -356.91), SIMDE_FLOAT32_C(   741.84), SIMDE_FLOAT32_C(  -539.70), SIMDE_FLOAT32_C(  -843.39),
                         SIMDE_FLOAT32_C(   906.37), SIMDE_FLOAT32_C(  -335.92), SIMDE_FLOAT32_C(   165.53), SIMDE_FLOAT32_C(   440.18),
                         SIMDE_FLOAT32_C(  -456.48), SIMDE_FLOAT32_C(  -364.65), SIMDE_FLOAT32_C(  -308.37), SIMDE_FLOAT32_C(  -426.81));
  r = simde_mm512_mask_range_ps(src, UINT16_C(53316), a, b, INT32_C(          13));
  simde_test_x86_assert_equal_f32x16(r, e, 1);

  src = simde_mm512_set_ps(SIMDE_FLOAT32_C(   890.99), SIMDE_FLOAT32_C(   100.13), SIMDE_FLOAT32_C(  -579.19), SIMDE_FLOAT32_C(   339.16),
                           SIMDE_FLOAT32_C(  -868.46), SIMDE_FLOAT32_C(   -67.97), SIMDE_FLOAT32_C(  -772.49), SIMDE_FLOAT32_C(   706.48),
                           SIMDE_FLOAT32_C(   603.69), SIMDE_FLOAT32_C(   807.49), SIMDE_FLOAT32_C(   854.60), SIMDE_FLOAT32_C(  -227.25),
                           SIMDE_FLOAT32_C(  -667.89), SIMDE_FLOAT32_C(  -655.17), SIMDE_FLOAT32_C(  -891.33), SIMDE_FLOAT32_C(  -167.91));
  a = simde_mm512_set_ps(SIMDE_FLOAT32_C(   954.63), SIMDE_FLOAT32_C(  -384.81), SIMDE_FLOAT32_C(   420.61), SIMDE_FLOAT32_C(   609.80),
                         SIMDE_FLOAT32_C(  -493.49), SIMDE_FLOAT32_C(  -411.48), SIMDE_FLOAT32_C(   164.20), SIMDE_FLOAT32_C(  -899.10),
                         SIMDE_FLOAT32_C(   121.08), SIMDE_FLOAT32_C(   791.60), SIMDE_FLOAT32_C(   226.27), SIMDE_FLOAT32_C(   340.05),
                         SIMDE_FLOAT32_C(  -450.77), SIMDE_FLOAT32_C(    29.34), SIMDE_FLOAT32_C(   886.04), SIMDE_FLOAT32_C(  -650.81));
  b = simde_mm512_set_ps(SIMDE_FLOAT32_C(   367.06), SIMDE_FLOAT32_C(   581.97), SIMDE_FLOAT32_C(   419.59), SIMDE_FLOAT32_C(    17.87),
                         SIMDE_FLOAT32_C(  -252.62), SIMDE_FLOAT32_C(  -655.53), SIMDE_FLOAT32_C(   126.88), SIMDE_FLOAT32_C(   647.25),
                         SIMDE_FLOAT32_C(   923.66), SIMDE_FLOAT32_C(   787.72), SIMDE_FLOAT32_C(   515.71), SIMDE_FLOAT32_C(    -8.38),
                         SIMDE_FLOAT32_C(   560.21), SIMDE_FLOAT32_C(   809.23), SIMDE_FLOAT32_C(   387.94), SIMDE_FLOAT32_C(   752.72));
  e = simde_mm512_set_ps(SIMDE_FLOAT32_C(   890.99), SIMDE_FLOAT32_C(   100.13), SIMDE_FLOAT32_C(  -579.19), SIMDE_FLOAT32_C(    17.87),
                         SIMDE_FLOAT32_C(  -868.46), SIMDE_FLOAT32_C(   -67.97), SIMDE_FLOAT32_C(   126.88), SIMDE_FLOAT32_C(   647.25),
                         SIMDE_FLOAT32_C(   121.08), SIMDE_FLOAT32_C(   787.72), SIMDE_FLOAT32_C(   854.60), SIMDE_FLOAT32_C(  -227.25),
                         SIMDE_FLOAT32_C(  -667.89), SIMDE_FLOAT32_C(    29.34), SIMDE_FLOAT32_C(   387.94), SIMDE_FLOAT32_C(   650.81));
  r = simde_mm512_mask_range_ps(src, UINT16_C( 5063), a, b, INT32_C(          10));
  simde_test_x86_assert_equal_f32x16(r, e, 1);

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde__m512 src = simde_test_x86_random_f32x16(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
    simde__mmask16 k = simde_test_x86_random_mmask16();
    simde__m512 a = simde_test_x86_random_f32x16(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
    simde__m512 b = simde_test_x86_random_f32x16(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
    int imm8 = simde_test_codegen_rand() & 15;
    simde__m512 r;
    SIMDE_CONSTIFY_16_(simde_mm512_mask_range_ps, r, simde_mm512_setzero_ps(), imm8, src, k, a, b);

    simde_test_x86_write_f32x16(2, src, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_x86_write_mmask16(2, k, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_f32x16(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_f32x16(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_codegen_write_i32(2, imm8, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_f32x16(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_mm512_maskz_range_ps (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  simde__m512 a, b, e, r;

  a = simde_mm512_set_ps(SIMDE_FLOAT32_C(    88.80), SIMDE_FLOAT32_C(  -754.26), SIMDE_FLOAT32_C(  -551.88), SIMDE_FLOAT32_C(   528.59),
                         SIMDE_FLOAT32_C(  -563.49), SIMDE_FLOAT32_C(    60.18), SIMDE_FLOAT32_C(   775.88), SIMDE_FLOAT32_C(  -518.12),
                         SIMDE_FLOAT32_C(  -555.00), SIMDE_FLOAT32_C(  -644.73), SIMDE_FLOAT32_C(  -127.91), SIMDE_FLOAT32_C(   938.48),
                         SIMDE_FLOAT32_C(   766.75), SIMDE_FLOAT32_C(   707.89), SIMDE_FLOAT32_C(   837.58), SIMDE_FLOAT32_C(  -354.33));
  b = simde_mm512_set_ps(SIMDE_FLOAT32_C(    78.74), SIMDE_FLOAT32_C(  -695.37), SIMDE_FLOAT32_C(  -650.65), SIMDE_FLOAT32_C(  -566.92),
                         SIMDE_FLOAT32_C(  -611.66), SIMDE_FLOAT32_C(   738.04), SIMDE_FLOAT32_C(   127.45), SIMDE_FLOAT32_C(    21.28),
                         SIMDE_FLOAT32_C(  -843.93), SIMDE_FLOAT32_C(   707.87), SIMDE_FLOAT32_C(  -996.59), SIMDE_FLOAT32_C(   408.69),
                         SIMDE_FLOAT32_C(   363.40), SIMDE_FLOAT32_C(  -123.48), SIMDE_FLOAT32_C(   761.44), SIMDE_FLOAT32_C(   439.74));
  e = simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -695.37), SIMDE_FLOAT32_C(  -551.88), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -738.04), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(  -555.00), SIMDE_FLOAT32_C(  -707.87), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(  -766.75), SIMDE_FLOAT32_C(  -707.89), SIMDE_FLOAT32_C(  -837.58), SIMDE_FLOAT32_C(  -439.74));
  r = simde_mm512_maskz_range_ps(UINT16_C(25807), a, b, INT32_C(          13));
  simde_test_x86_assert_equal_f32x16(r, e, 1);

  a = simde_mm512_set_ps(SIMDE_FLOAT32_C(  -118.14), SIMDE_FLOAT32_C(  -529.44), SIMDE_FLOAT32_C(   810.18), SIMDE_FLOAT32_C(   518.46),
                         SIMDE_FLOAT32_C(   594.04), SIMDE_FLOAT32_C(  -951.27), SIMDE_FLOAT32_C(  -921.28), SIMDE_FLOAT32_C(  -494.77),
                         SIMDE_FLOAT32_C(   803.00), SIMDE_FLOAT32_C(   630.60), SIMDE_FLOAT32_C(   -23.36), SIMDE_FLOAT32_C(   366.49),
                         SIMDE_FLOAT32_C(  -429.58), SIMDE_FLOAT32_C(   200.76), SIMDE_FLOAT32_C(  -115.40), SIMDE_FLOAT32_C(  -874.58));
  b = simde_mm512_set_ps(SIMDE_FLOAT32_C(   774.70), SIMDE_FLOAT32_C(  -925.51), SIMDE_FLOAT32_C(  -799.28), SIMDE_FLOAT32_C(   649.28),
                         SIMDE_FLOAT32_C(   229.00), SIMDE_FLOAT32_C(  -811.80), SIMDE_FLOAT32_C(   462.34), SIMDE_FLOAT32_C(  -849.74),
                         SIMDE_FLOAT32_C(   883.58), SIMDE_FLOAT32_C(   112.99), SIMDE_FLOAT32_C(   717.18), SIMDE_FLOAT32_C(   495.24),
                         SIMDE_FLOAT32_C(   374.94), SIMDE_FLOAT32_C(  -410.27), SIMDE_FLOAT32_C(  -526.03), SIMDE_FLOAT32_C(   218.87));
  e = simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   529.44), SIMDE_FLOAT32_C(   810.18), SIMDE_FLOAT32_C(   649.28),
                         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(   630.60), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   495.24),
                         SIMDE_FLOAT32_C(   374.94), SIMDE_FLOAT32_C(   200.76), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00));
  r = simde_mm512_maskz_range_ps(UINT16_C(28764), a, b, INT32_C(           9));
  simde_test_x86_assert_equal_f32x16(r, e, 1);

  a = simde_mm512_set_ps(SIMDE_FLOAT32_C(  -292.48), SIMDE_FLOAT32_C(    44.49), SIMDE_FLOAT32_C(   295.69), SIMDE_FLOAT32_C(   332.58),
                         SIMDE_FLOAT32_C(  -545.24), SIMDE_FLOAT32_C(  -178.28), SIMDE_FLOAT32_C(  -886.29), SIMDE_FLOAT32_C(   572.90),
                         SIMDE_FLOAT32_C(  -648.84), SIMDE_FLOAT32_C(  -696.46), SIMDE_FLOAT32_C(  -945.56), SIMDE_FLOAT32_C(  -242.87),
                         SIMDE_FLOAT32_C(  -745.19), SIMDE_FLOAT32_C(   975.72), SIMDE_FLOAT32_C(  -748.11), SIMDE_FLOAT32_C(  -548.19));
  b = simde_mm512_set_ps(SIMDE_FLOAT32_C(  -399.44), SIMDE_FLOAT32_C(    51.94), SIMDE_FLOAT32_C(   490.68), SIMDE_FLOAT32_C(  -851.25),
                         SIMDE_FLOAT32_C(  -293.18), SIMDE_FLOAT32_C(  -784.57), SIMDE_FLOAT32_C(    63.42), SIMDE_FLOAT32_C(   -67.87),
                         SIMDE_FLOAT32_C(  -859.07), SIMDE_FLOAT32_C(  -137.29), SIMDE_FLOAT32_C(   282.85), SIMDE_FLOAT32_C(   -88.07),
                         SIMDE_FLOAT32_C(  -325.50), SIMDE_FLOAT32_C(   820.51), SIMDE_FLOAT32_C(  -238.33), SIMDE_FLOAT32_C(  -209.07));
  e = simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(    44.49), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -178.28), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -137.29), SIMDE_FLOAT32_C(   282.85), SIMDE_FLOAT32_C(   -88.07),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   820.51), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00));
  r = simde_mm512_maskz_range_ps(UINT16_C(17524), a, b, INT32_C(           6));
  simde_test_x86_assert_equal_f32x16(r, e, 1);

  a = simde_mm512_set_ps(SIMDE_FLOAT32_C(  -566.29), SIMDE_FLOAT32_C(   133.23), SIMDE_FLOAT32_C(   -84.08), SIMDE_FLOAT32_C(   759.21),
                         SIMDE_FLOAT32_C(   312.72), SIMDE_FLOAT32_C(  -845.75), SIMDE_FLOAT32_C(   -31.72), SIMDE_FLOAT32_C(  -394.80),
                         SIMDE_FLOAT32_C(   109.76), SIMDE_FLOAT32_C(   672.59), SIMDE_FLOAT32_C(   272.61), SIMDE_FLOAT32_C(  -345.01),
                         SIMDE_FLOAT32_C(  -149.13), SIMDE_FLOAT32_C(   158.90), SIMDE_FLOAT32_C(    82.09), SIMDE_FLOAT32_C(  -500.29));
  b = simde_mm512_set_ps(SIMDE_FLOAT32_C(   917.18), SIMDE_FLOAT32_C(   964.51), SIMDE_FLOAT32_C(  -865.38), SIMDE_FLOAT32_C(   417.47),
                         SIMDE_FLOAT32_C(   109.15), SIMDE_FLOAT32_C(   106.96), SIMDE_FLOAT32_C(   674.90), SIMDE_FLOAT32_C(  -491.41),
                         SIMDE_FLOAT32_C(  -944.97), SIMDE_FLOAT32_C(  -815.79), SIMDE_FLOAT32_C(  -640.16), SIMDE_FLOAT32_C(   348.21),
                         SIMDE_FLOAT32_C(   968.78), SIMDE_FLOAT32_C(   296.42), SIMDE_FLOAT32_C(  -583.92), SIMDE_FLOAT32_C(   827.85));
  e = simde_mm512_set_ps(SIMDE_FLOAT32_C(  -566.29), SIMDE_FLOAT32_C(  -133.23), SIMDE_FLOAT32_C(  -865.38), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(  -109.15), 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(  -640.16), SIMDE_FLOAT32_C(  -345.01),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -500.29));
  r = simde_mm512_maskz_range_ps(UINT16_C(59441), a, b, INT32_C(          12));
  simde_test_x86_assert_equal_f32x16(r, e, 1);

  a = simde_mm512_set_ps(SIMDE_FLOAT32_C(   848.26), SIMDE_FLOAT32_C(  -101.73), SIMDE_FLOAT32_C(   863.25), SIMDE_FLOAT32_C(   879.47),
                         SIMDE_FLOAT32_C(   601.85), SIMDE_FLOAT32_C(   447.17), SIMDE_FLOAT32_C(  -948.38), SIMDE_FLOAT32_C(   168.13),
                         SIMDE_FLOAT32_C(  -686.06), SIMDE_FLOAT32_C(   135.70), SIMDE_FLOAT32_C(   408.92), SIMDE_FLOAT32_C(     1.22),
                         SIMDE_FLOAT32_C(   -18.55), SIMDE_FLOAT32_C(  -559.36), SIMDE_FLOAT32_C(  -603.98), SIMDE_FLOAT32_C(   871.70));
  b = simde_mm512_set_ps(SIMDE_FLOAT32_C(   596.47), SIMDE_FLOAT32_C(   810.07), SIMDE_FLOAT32_C(   963.76), SIMDE_FLOAT32_C(   724.77),
                         SIMDE_FLOAT32_C(    42.02), SIMDE_FLOAT32_C(  -159.64), SIMDE_FLOAT32_C(  -491.94), SIMDE_FLOAT32_C(   124.84),
                         SIMDE_FLOAT32_C(  -124.15), SIMDE_FLOAT32_C(  -626.55), SIMDE_FLOAT32_C(   707.37), SIMDE_FLOAT32_C(   766.70),
                         SIMDE_FLOAT32_C(   266.48), SIMDE_FLOAT32_C(  -967.53), SIMDE_FLOAT32_C(   258.11), SIMDE_FLOAT32_C(   211.45));
  e = simde_mm512_set_ps(SIMDE_FLOAT32_C(   596.47), SIMDE_FLOAT32_C(  -101.73), SIMDE_FLOAT32_C(   863.25), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -491.94), SIMDE_FLOAT32_C(   124.84),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(   -18.55), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   211.45));
  r = simde_mm512_maskz_range_ps(UINT16_C(58121), a, b, INT32_C(           2));
  simde_test_x86_assert_equal_f32x16(r, e, 1);

  a = simde_mm512_set_ps(SIMDE_FLOAT32_C(   463.30), SIMDE_FLOAT32_C(   525.45), SIMDE_FLOAT32_C(  -414.02), SIMDE_FLOAT32_C(  -803.19),
                         SIMDE_FLOAT32_C(   492.98), SIMDE_FLOAT32_C(   327.87), SIMDE_FLOAT32_C(   -14.64), SIMDE_FLOAT32_C(   644.72),
                         SIMDE_FLOAT32_C(  -570.39), SIMDE_FLOAT32_C(   122.11), SIMDE_FLOAT32_C(   765.25), SIMDE_FLOAT32_C(  -172.24),
                         SIMDE_FLOAT32_C(   674.94), SIMDE_FLOAT32_C(   713.63), SIMDE_FLOAT32_C(   659.63), SIMDE_FLOAT32_C(   361.00));
  b = simde_mm512_set_ps(SIMDE_FLOAT32_C(   753.45), SIMDE_FLOAT32_C(  -756.03), SIMDE_FLOAT32_C(   460.45), SIMDE_FLOAT32_C(  -607.56),
                         SIMDE_FLOAT32_C(   666.05), SIMDE_FLOAT32_C(   209.74), SIMDE_FLOAT32_C(  -967.34), SIMDE_FLOAT32_C(  -930.42),
                         SIMDE_FLOAT32_C(   399.68), SIMDE_FLOAT32_C(  -931.11), SIMDE_FLOAT32_C(  -655.19), SIMDE_FLOAT32_C(  -642.34),
                         SIMDE_FLOAT32_C(   228.53), SIMDE_FLOAT32_C(   836.74), SIMDE_FLOAT32_C(   232.82), SIMDE_FLOAT32_C(  -647.32));
  e = simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   525.45), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   607.56),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   327.87), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(   399.68), SIMDE_FLOAT32_C(   122.11), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   172.24),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   836.74), SIMDE_FLOAT32_C(   659.63), SIMDE_FLOAT32_C(     0.00));
  r = simde_mm512_maskz_range_ps(UINT16_C(21718), a, b, INT32_C(           9));
  simde_test_x86_assert_equal_f32x16(r, e, 1);

  a = simde_mm512_set_ps(SIMDE_FLOAT32_C(   872.53), SIMDE_FLOAT32_C(    32.71), SIMDE_FLOAT32_C(   618.82), SIMDE_FLOAT32_C(  -356.01),
                         SIMDE_FLOAT32_C(   195.97), SIMDE_FLOAT32_C(  -613.99), SIMDE_FLOAT32_C(  -708.69), SIMDE_FLOAT32_C(   732.67),
                         SIMDE_FLOAT32_C(  -139.44), SIMDE_FLOAT32_C(   705.33), SIMDE_FLOAT32_C(   535.86), SIMDE_FLOAT32_C(   367.58),
                         SIMDE_FLOAT32_C(  -622.55), SIMDE_FLOAT32_C(  -449.50), SIMDE_FLOAT32_C(   722.85), SIMDE_FLOAT32_C(   947.85));
  b = simde_mm512_set_ps(SIMDE_FLOAT32_C(   114.29), SIMDE_FLOAT32_C(   548.35), SIMDE_FLOAT32_C(   314.72), SIMDE_FLOAT32_C(   166.44),
                         SIMDE_FLOAT32_C(  -880.04), SIMDE_FLOAT32_C(   357.12), SIMDE_FLOAT32_C(  -953.64), SIMDE_FLOAT32_C(  -633.48),
                         SIMDE_FLOAT32_C(   113.14), SIMDE_FLOAT32_C(  -414.10), SIMDE_FLOAT32_C(   974.07), SIMDE_FLOAT32_C(   447.09),
                         SIMDE_FLOAT32_C(   376.16), SIMDE_FLOAT32_C(   941.42), SIMDE_FLOAT32_C(   377.52), SIMDE_FLOAT32_C(   976.48));
  e = simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   548.35), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -166.44),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -357.12), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   732.67),
                         SIMDE_FLOAT32_C(  -113.14), SIMDE_FLOAT32_C(   705.33), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   447.09),
                         SIMDE_FLOAT32_C(  -376.16), SIMDE_FLOAT32_C(  -941.42), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   976.48));
  r = simde_mm512_maskz_range_ps(UINT16_C(21981), a, b, INT32_C(           1));
  simde_test_x86_assert_equal_f32x16(r, e, 1);

  a = simde_mm512_set_ps(SIMDE_FLOAT32_C(  -376.83), SIMDE_FLOAT32_C(   946.31), SIMDE_FLOAT32_C(   -26.41), SIMDE_FLOAT32_C(   247.02),
                         SIMDE_FLOAT32_C(  -995.11), SIMDE_FLOAT32_C(   596.07), SIMDE_FLOAT32_C(   270.54), SIMDE_FLOAT32_C(  -867.63),
                         SIMDE_FLOAT32_C(  -436.64), SIMDE_FLOAT32_C(   651.71), SIMDE_FLOAT32_C(   488.37), SIMDE_FLOAT32_C(   367.39),
                         SIMDE_FLOAT32_C(   265.70), SIMDE_FLOAT32_C(   197.07), SIMDE_FLOAT32_C(   634.72), SIMDE_FLOAT32_C(  -594.85));
  b = simde_mm512_set_ps(SIMDE_FLOAT32_C(   648.39), SIMDE_FLOAT32_C(    27.90), SIMDE_FLOAT32_C(  -945.93), SIMDE_FLOAT32_C(   243.24),
                         SIMDE_FLOAT32_C(   536.16), SIMDE_FLOAT32_C(   955.21), SIMDE_FLOAT32_C(  -794.33), SIMDE_FLOAT32_C(  -578.13),
                         SIMDE_FLOAT32_C(  -593.14), SIMDE_FLOAT32_C(  -109.05), SIMDE_FLOAT32_C(   255.43), SIMDE_FLOAT32_C(  -713.10),
                         SIMDE_FLOAT32_C(   533.83), SIMDE_FLOAT32_C(   209.07), SIMDE_FLOAT32_C(   920.38), SIMDE_FLOAT32_C(  -579.31));
  e = simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   -26.41), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   270.54), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   109.05), SIMDE_FLOAT32_C(   255.43), SIMDE_FLOAT32_C(   367.39),
                         SIMDE_FLOAT32_C(   265.70), SIMDE_FLOAT32_C(   197.07), SIMDE_FLOAT32_C(   634.72), SIMDE_FLOAT32_C(  -579.31));
  r = simde_mm512_maskz_range_ps(UINT16_C( 8831), a, b, INT32_C(           2));
  simde_test_x86_assert_equal_f32x16(r, e, 1);

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde__mmask16 k = simde_test_x86_random_mmask16();
    simde__m512 a = simde_test_x86_random_f32x16(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
    simde__m512 b = simde_test_x86_random_f32x16(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
    int imm8 = simde_test_codegen_rand() & 15;
    simde__m512 r;
    SIMDE_CONSTIFY_16_(simde_mm512_maskz_range_ps, r, simde_mm512_setzero_ps(), imm8, k, a, b);

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

static int
test_simde_mm_range_pd (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    const simde_float64 a[2];
    const simde_float64 b[2];
    const simde_float64 r[2];
  } test_vec[] = {
    { { SIMDE_FLOAT64_C(   830.67), SIMDE_FLOAT64_C(   598.43) },
      { SIMDE_FLOAT64_C(  -161.84), SIMDE_FLOAT64_C(  -609.24) },
      { SIMDE_FLOAT64_C(   830.67), SIMDE_FLOAT64_C(   609.24) } },
    { { SIMDE_FLOAT64_C(  -639.95), SIMDE_FLOAT64_C(   257.59) },
      { SIMDE_FLOAT64_C(   -49.35), SIMDE_FLOAT64_C(   500.73) },
      { SIMDE_FLOAT64_C(  -639.95), SIMDE_FLOAT64_C(   257.59) } },
    { { SIMDE_FLOAT64_C(   920.50), SIMDE_FLOAT64_C(  -952.84) },
      { SIMDE_FLOAT64_C(   445.89), SIMDE_FLOAT64_C(  -703.72) },
      { SIMDE_FLOAT64_C(   920.50), SIMDE_FLOAT64_C(  -703.72) } },
    { { SIMDE_FLOAT64_C(   384.42), SIMDE_FLOAT64_C(  -127.63) },
      { SIMDE_FLOAT64_C(   800.45), SIMDE_FLOAT64_C(   678.44) },
      { SIMDE_FLOAT64_C(   384.42), SIMDE_FLOAT64_C(  -127.63) } },
    { { SIMDE_FLOAT64_C(   519.71), SIMDE_FLOAT64_C(   275.20) },
      { SIMDE_FLOAT64_C(  -380.64), SIMDE_FLOAT64_C(  -709.08) },
      { SIMDE_FLOAT64_C(   519.71), SIMDE_FLOAT64_C(   709.08) } },
    { { SIMDE_FLOAT64_C(  -162.04), SIMDE_FLOAT64_C(   472.77) },
      { SIMDE_FLOAT64_C(  -553.19), SIMDE_FLOAT64_C(   126.94) },
      { SIMDE_FLOAT64_C(   162.04), SIMDE_FLOAT64_C(   472.77) } },
    { { SIMDE_FLOAT64_C(  -894.91), SIMDE_FLOAT64_C(  -295.68) },
      { SIMDE_FLOAT64_C(   576.25), SIMDE_FLOAT64_C(   294.47) },
      { SIMDE_FLOAT64_C(   576.25), SIMDE_FLOAT64_C(   294.47) } },
    { { SIMDE_FLOAT64_C(    69.59), SIMDE_FLOAT64_C(  -855.72) },
      { SIMDE_FLOAT64_C(   780.93), SIMDE_FLOAT64_C(   -99.75) },
      { SIMDE_FLOAT64_C(    69.59), SIMDE_FLOAT64_C(  -855.72) } }
  };

  simde__m128d a, b, r;

  a = simde_mm_loadu_pd(test_vec[0].a);
  b = simde_mm_loadu_pd(test_vec[0].b);
  r = simde_mm_range_pd(a, b, 11);
  simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[0].r), 1);

  a = simde_mm_loadu_pd(test_vec[1].a);
  b = simde_mm_loadu_pd(test_vec[1].b);
  r = simde_mm_range_pd(a, b, 4);
  simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[1].r), 1);

  a = simde_mm_loadu_pd(test_vec[2].a);
  b = simde_mm_loadu_pd(test_vec[2].b);
  r = simde_mm_range_pd(a, b, 1);
  simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[2].r), 1);

  a = simde_mm_loadu_pd(test_vec[3].a);
  b = simde_mm_loadu_pd(test_vec[3].b);
  r = simde_mm_range_pd(a, b, 2);
  simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[3].r), 1);

  a = simde_mm_loadu_pd(test_vec[4].a);
  b = simde_mm_loadu_pd(test_vec[4].b);
  r = simde_mm_range_pd(a, b, 3);
  simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[4].r), 1);

  a = simde_mm_loadu_pd(test_vec[5].a);
  b = simde_mm_loadu_pd(test_vec[5].b);
  r = simde_mm_range_pd(a, b, 9);
  simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[5].r), 1);

  a = simde_mm_loadu_pd(test_vec[6].a);
  b = simde_mm_loadu_pd(test_vec[6].b);
  r = simde_mm_range_pd(a, b, 5);
  simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[6].r), 1);

  a = simde_mm_loadu_pd(test_vec[7].a);
  b = simde_mm_loadu_pd(test_vec[7].b);
  r = simde_mm_range_pd(a, b, 0);
  simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[7].r), 1);

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

  simde__m128d a, b, r;

  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));
  r = simde_mm_range_pd(a, b, 11);

  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_f64x2(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));
  r = simde_mm_range_pd(a, b, 4);

  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_f64x2(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));
  r = simde_mm_range_pd(a, b, 1);

  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_f64x2(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));
  r = simde_mm_range_pd(a, b, 2);

  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_f64x2(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));
  r = simde_mm_range_pd(a, b, 3);

  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_f64x2(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));
  r = simde_mm_range_pd(a, b, 9);

  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_f64x2(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));
  r = simde_mm_range_pd(a, b, 5);

  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_f64x2(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));
  r = simde_mm_range_pd(a, b, 0);

  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_f64x2(2, r, SIMDE_TEST_VEC_POS_LAST);

  return 1;
#endif
}

static int
test_simde_mm_mask_range_pd (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  simde__m128d src, a, b, e, r;

  src = simde_mm_set_pd(SIMDE_FLOAT64_C(  -139.94), SIMDE_FLOAT64_C(  -886.75));
  a = simde_mm_set_pd(SIMDE_FLOAT64_C(  -792.78), SIMDE_FLOAT64_C(  -894.29));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C(  -806.31), SIMDE_FLOAT64_C(   453.92));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C(  -139.94), SIMDE_FLOAT64_C(  -894.29));
  r = simde_mm_mask_range_pd(src, UINT8_C(141), a, b, INT32_C(          12));
  simde_test_x86_assert_equal_f64x2(r, e, 1);

  src = simde_mm_set_pd(SIMDE_FLOAT64_C(  -663.72), SIMDE_FLOAT64_C(   184.82));
  a = simde_mm_set_pd(SIMDE_FLOAT64_C(  -194.35), SIMDE_FLOAT64_C(   403.49));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C(   681.58), SIMDE_FLOAT64_C(   390.93));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C(  -663.72), SIMDE_FLOAT64_C(   403.49));
  r = simde_mm_mask_range_pd(src, UINT8_C( 93), a, b, INT32_C(          11));
  simde_test_x86_assert_equal_f64x2(r, e, 1);

  src = simde_mm_set_pd(SIMDE_FLOAT64_C(  -113.27), SIMDE_FLOAT64_C(  -276.87));
  a = simde_mm_set_pd(SIMDE_FLOAT64_C(   963.08), SIMDE_FLOAT64_C(  -621.87));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C(   150.21), SIMDE_FLOAT64_C(   955.33));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C(  -113.27), SIMDE_FLOAT64_C(  -621.87));
  r = simde_mm_mask_range_pd(src, UINT8_C(241), a, b, INT32_C(           4));
  simde_test_x86_assert_equal_f64x2(r, e, 1);

  src = simde_mm_set_pd(SIMDE_FLOAT64_C(   985.23), SIMDE_FLOAT64_C(   499.81));
  a = simde_mm_set_pd(SIMDE_FLOAT64_C(  -193.24), SIMDE_FLOAT64_C(  -403.55));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C(   444.77), SIMDE_FLOAT64_C(  -416.56));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C(  -444.77), SIMDE_FLOAT64_C(  -403.55));
  r = simde_mm_mask_range_pd(src, UINT8_C( 79), a, b, INT32_C(           1));
  simde_test_x86_assert_equal_f64x2(r, e, 1);

  src = simde_mm_set_pd(SIMDE_FLOAT64_C(  -695.93), SIMDE_FLOAT64_C(   443.50));
  a = simde_mm_set_pd(SIMDE_FLOAT64_C(   757.98), SIMDE_FLOAT64_C(   650.72));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C(  -329.26), SIMDE_FLOAT64_C(   219.41));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C(   757.98), SIMDE_FLOAT64_C(   650.72));
  r = simde_mm_mask_range_pd(src, UINT8_C( 87), a, b, INT32_C(           1));
  simde_test_x86_assert_equal_f64x2(r, e, 1);

  src = simde_mm_set_pd(SIMDE_FLOAT64_C(   426.75), SIMDE_FLOAT64_C(   555.69));
  a = simde_mm_set_pd(SIMDE_FLOAT64_C(  -182.32), SIMDE_FLOAT64_C(  -638.66));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C(   952.11), SIMDE_FLOAT64_C(  -972.12));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C(  -182.32), SIMDE_FLOAT64_C(   555.69));
  r = simde_mm_mask_range_pd(src, UINT8_C(182), a, b, INT32_C(           0));
  simde_test_x86_assert_equal_f64x2(r, e, 1);

  src = simde_mm_set_pd(SIMDE_FLOAT64_C(    -2.92), SIMDE_FLOAT64_C(   -85.39));
  a = simde_mm_set_pd(SIMDE_FLOAT64_C(   -47.59), SIMDE_FLOAT64_C(  -122.31));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C(   877.42), SIMDE_FLOAT64_C(    69.15));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C(   -47.59), SIMDE_FLOAT64_C(   -69.15));
  r = simde_mm_mask_range_pd(src, UINT8_C(143), a, b, INT32_C(           2));
  simde_test_x86_assert_equal_f64x2(r, e, 1);

  src = simde_mm_set_pd(SIMDE_FLOAT64_C(  -613.32), SIMDE_FLOAT64_C(    54.38));
  a = simde_mm_set_pd(SIMDE_FLOAT64_C(   -29.88), SIMDE_FLOAT64_C(   861.14));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C(  -218.85), SIMDE_FLOAT64_C(  -506.57));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C(  -613.32), SIMDE_FLOAT64_C(   506.57));
  r = simde_mm_mask_range_pd(src, UINT8_C( 49), a, b, INT32_C(           8));
  simde_test_x86_assert_equal_f64x2(r, e, 1);

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde__m128d src = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
    simde__mmask8 k = simde_test_x86_random_mmask8();
    simde__m128d a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
    simde__m128d b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
    int imm8 = simde_test_codegen_rand() & 15;
    simde__m128d r;
    SIMDE_CONSTIFY_16_(simde_mm_mask_range_pd, r, simde_mm_setzero_pd(), imm8, src, k, a, b);

    simde_test_x86_write_f64x2(2, src, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_x86_write_mmask8(2, k, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_codegen_write_i32(2, imm8, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_f64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_mm_maskz_range_pd (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  simde__m128d a, b, e, r;

  a = simde_mm_set_pd(SIMDE_FLOAT64_C(  -935.65), SIMDE_FLOAT64_C(   806.87));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C(    26.29), SIMDE_FLOAT64_C(  -444.52));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00));
  r = simde_mm_maskz_range_pd(UINT8_C(108), a, b, INT32_C(          14));
  simde_test_x86_assert_equal_f64x2(r, e, 1);

  a = simde_mm_set_pd(SIMDE_FLOAT64_C(  -838.16), SIMDE_FLOAT64_C(  -418.02));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C(   -56.68), SIMDE_FLOAT64_C(   844.57));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(   844.57));
  r = simde_mm_maskz_range_pd(UINT8_C( 37), a, b, INT32_C(           9));
  simde_test_x86_assert_equal_f64x2(r, e, 1);

  a = simde_mm_set_pd(SIMDE_FLOAT64_C(  -479.67), SIMDE_FLOAT64_C(  -104.57));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C(   892.51), SIMDE_FLOAT64_C(  -212.94));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C(   892.51), SIMDE_FLOAT64_C(   104.57));
  r = simde_mm_maskz_range_pd(   UINT8_MAX, a, b, INT32_C(           9));
  simde_test_x86_assert_equal_f64x2(r, e, 1);

  a = simde_mm_set_pd(SIMDE_FLOAT64_C(   508.41), SIMDE_FLOAT64_C(  -155.08));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C(   297.13), SIMDE_FLOAT64_C(   542.17));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C(   508.41), SIMDE_FLOAT64_C(   542.17));
  r = simde_mm_maskz_range_pd(UINT8_C(  3), a, b, INT32_C(           7));
  simde_test_x86_assert_equal_f64x2(r, e, 1);

  a = simde_mm_set_pd(SIMDE_FLOAT64_C(  -576.07), SIMDE_FLOAT64_C(  -654.20));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C(  -160.77), SIMDE_FLOAT64_C(  -101.02));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C(  -576.07), SIMDE_FLOAT64_C(  -654.20));
  r = simde_mm_maskz_range_pd(UINT8_C(187), a, b, INT32_C(           7));
  simde_test_x86_assert_equal_f64x2(r, e, 1);

  a = simde_mm_set_pd(SIMDE_FLOAT64_C(    11.95), SIMDE_FLOAT64_C(   636.72));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C(  -807.80), SIMDE_FLOAT64_C(   376.95));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C(   -11.95), SIMDE_FLOAT64_C(  -376.95));
  r = simde_mm_maskz_range_pd(UINT8_C(211), a, b, INT32_C(          14));
  simde_test_x86_assert_equal_f64x2(r, e, 1);

  a = simde_mm_set_pd(SIMDE_FLOAT64_C(  -379.78), SIMDE_FLOAT64_C(   690.48));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C(   535.05), SIMDE_FLOAT64_C(  -726.12));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C(   379.78), SIMDE_FLOAT64_C(   690.48));
  r = simde_mm_maskz_range_pd(UINT8_C(167), a, b, INT32_C(          10));
  simde_test_x86_assert_equal_f64x2(r, e, 1);

  a = simde_mm_set_pd(SIMDE_FLOAT64_C(  -541.03), SIMDE_FLOAT64_C(   407.50));
  b = simde_mm_set_pd(SIMDE_FLOAT64_C(  -805.43), SIMDE_FLOAT64_C(   773.72));
  e = simde_mm_set_pd(SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(   407.50));
  r = simde_mm_maskz_range_pd(UINT8_C( 53), a, b, INT32_C(           6));
  simde_test_x86_assert_equal_f64x2(r, e, 1);

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde__mmask8 k = simde_test_x86_random_mmask8();
    simde__m128d a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
    simde__m128d b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
    int imm8 = simde_test_codegen_rand() & 15;
    simde__m128d r;
    SIMDE_CONSTIFY_16_(simde_mm_maskz_range_pd, r, simde_mm_setzero_pd(), imm8, k, a, b);

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

static int
test_simde_mm256_range_pd (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    const simde_float64 a[4];
    const simde_float64 b[4];
    const simde_float64 r[4];
  } test_vec[] = {
    { { SIMDE_FLOAT64_C(   742.72), SIMDE_FLOAT64_C(  -380.91), SIMDE_FLOAT64_C(   291.01), SIMDE_FLOAT64_C(  -897.24) },
      { SIMDE_FLOAT64_C(   876.68), SIMDE_FLOAT64_C(  -758.34), SIMDE_FLOAT64_C(   603.49), SIMDE_FLOAT64_C(   797.18) },
      { SIMDE_FLOAT64_C(   876.68), SIMDE_FLOAT64_C(   758.34), SIMDE_FLOAT64_C(   603.49), SIMDE_FLOAT64_C(   897.24) } },
    { { SIMDE_FLOAT64_C(  -711.18), SIMDE_FLOAT64_C(    49.38), SIMDE_FLOAT64_C(  -906.54), SIMDE_FLOAT64_C(   673.24) },
      { SIMDE_FLOAT64_C(   921.74), SIMDE_FLOAT64_C(   893.90), SIMDE_FLOAT64_C(   351.69), SIMDE_FLOAT64_C(   441.45) },
      { SIMDE_FLOAT64_C(  -711.18), SIMDE_FLOAT64_C(    49.38), SIMDE_FLOAT64_C(  -906.54), SIMDE_FLOAT64_C(   441.45) } },
    { { SIMDE_FLOAT64_C(   169.11), SIMDE_FLOAT64_C(   971.04), SIMDE_FLOAT64_C(   732.37), SIMDE_FLOAT64_C(  -992.93) },
      { SIMDE_FLOAT64_C(   443.81), SIMDE_FLOAT64_C(  -820.82), SIMDE_FLOAT64_C(   134.01), SIMDE_FLOAT64_C(   548.91) },
      { SIMDE_FLOAT64_C(   443.81), SIMDE_FLOAT64_C(   971.04), SIMDE_FLOAT64_C(   732.37), SIMDE_FLOAT64_C(  -548.91) } },
    { { SIMDE_FLOAT64_C(  -116.50), SIMDE_FLOAT64_C(  -289.74), SIMDE_FLOAT64_C(  -156.63), SIMDE_FLOAT64_C(   953.09) },
      { SIMDE_FLOAT64_C(  -145.46), SIMDE_FLOAT64_C(  -375.70), SIMDE_FLOAT64_C(  -146.66), SIMDE_FLOAT64_C(  -402.75) },
      { SIMDE_FLOAT64_C(  -116.50), SIMDE_FLOAT64_C(  -289.74), SIMDE_FLOAT64_C(  -146.66), SIMDE_FLOAT64_C(   402.75) } },
    { { SIMDE_FLOAT64_C(   243.39), SIMDE_FLOAT64_C(  -855.65), SIMDE_FLOAT64_C(  -299.98), SIMDE_FLOAT64_C(   120.07) },
      { SIMDE_FLOAT64_C(  -613.99), SIMDE_FLOAT64_C(  -696.49), SIMDE_FLOAT64_C(   -82.74), SIMDE_FLOAT64_C(  -325.17) },
      { SIMDE_FLOAT64_C(   613.99), SIMDE_FLOAT64_C(  -855.65), SIMDE_FLOAT64_C(  -299.98), SIMDE_FLOAT64_C(   325.17) } },
    { { SIMDE_FLOAT64_C(   352.88), SIMDE_FLOAT64_C(    10.71), SIMDE_FLOAT64_C(  -651.93), SIMDE_FLOAT64_C(   274.62) },
      { SIMDE_FLOAT64_C(   -95.38), SIMDE_FLOAT64_C(   699.76), SIMDE_FLOAT64_C(  -283.92), SIMDE_FLOAT64_C(  -926.28) },
      { SIMDE_FLOAT64_C(   352.88), SIMDE_FLOAT64_C(   699.76), SIMDE_FLOAT64_C(   283.92), SIMDE_FLOAT64_C(   274.62) } },
    { { SIMDE_FLOAT64_C(   670.80), SIMDE_FLOAT64_C(  -551.55), SIMDE_FLOAT64_C(  -919.21), SIMDE_FLOAT64_C(   114.61) },
      { SIMDE_FLOAT64_C(  -372.37), SIMDE_FLOAT64_C(   214.80), SIMDE_FLOAT64_C(  -336.48), SIMDE_FLOAT64_C(   511.13) },
      { SIMDE_FLOAT64_C(   670.80), SIMDE_FLOAT64_C(   214.80), SIMDE_FLOAT64_C(  -336.48), SIMDE_FLOAT64_C(   511.13) } },
    { { SIMDE_FLOAT64_C(   925.05), SIMDE_FLOAT64_C(   506.89), SIMDE_FLOAT64_C(   464.21), SIMDE_FLOAT64_C(  -220.41) },
      { SIMDE_FLOAT64_C(  -868.81), SIMDE_FLOAT64_C(  -682.45), SIMDE_FLOAT64_C(   376.85), SIMDE_FLOAT64_C(   374.58) },
      { SIMDE_FLOAT64_C(   868.81), SIMDE_FLOAT64_C(   682.45), SIMDE_FLOAT64_C(   376.85), SIMDE_FLOAT64_C(  -220.41) } }
  };

  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_range_pd(a, b, 11);
  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_range_pd(a, b, 4);
  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_range_pd(a, b, 1);
  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_range_pd(a, b, 2);
  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_range_pd(a, b, 3);
  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_range_pd(a, b, 9);
  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_range_pd(a, b, 5);
  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_range_pd(a, b, 0);
  simde_test_x86_assert_equal_f64x4(r, simde_mm256_loadu_pd(test_vec[7].r), 1);

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

  simde__m256d a, b, r;

  a = simde_test_x86_random_f64x4(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x4(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  r = simde_mm256_range_pd(a, b, 11);

  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_x86_write_f64x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f64x4(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x4(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  r = simde_mm256_range_pd(a, b, 4);

  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_x86_write_f64x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f64x4(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x4(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  r = simde_mm256_range_pd(a, b, 1);

  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_x86_write_f64x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f64x4(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x4(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  r = simde_mm256_range_pd(a, b, 2);

  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_x86_write_f64x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f64x4(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x4(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  r = simde_mm256_range_pd(a, b, 3);

  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_x86_write_f64x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f64x4(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x4(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  r = simde_mm256_range_pd(a, b, 9);

  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_x86_write_f64x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f64x4(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x4(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  r = simde_mm256_range_pd(a, b, 5);

  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_x86_write_f64x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f64x4(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x4(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  r = simde_mm256_range_pd(a, b, 0);

  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_x86_write_f64x4(2, r, SIMDE_TEST_VEC_POS_LAST);

  return 1;
#endif
}

static int
test_simde_mm256_mask_range_pd (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  simde__m256d src, a, b, e, r;

  src = simde_mm256_set_pd(SIMDE_FLOAT64_C(   721.40), SIMDE_FLOAT64_C(   196.40), SIMDE_FLOAT64_C(   859.32), SIMDE_FLOAT64_C(  -787.01));
  a = simde_mm256_set_pd(SIMDE_FLOAT64_C(  -160.67), SIMDE_FLOAT64_C(   330.35), SIMDE_FLOAT64_C(  -715.81), SIMDE_FLOAT64_C(  -506.47));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(   913.20), SIMDE_FLOAT64_C(   678.56), SIMDE_FLOAT64_C(  -770.67), SIMDE_FLOAT64_C(  -291.88));
  e = simde_mm256_set_pd(SIMDE_FLOAT64_C(  -913.20), SIMDE_FLOAT64_C(   196.40), SIMDE_FLOAT64_C(   859.32), SIMDE_FLOAT64_C(  -506.47));
  r = simde_mm256_mask_range_pd(src, UINT8_C(249), a, b, INT32_C(           3));
  simde_test_x86_assert_equal_f64x4(r, e, 1);

  src = simde_mm256_set_pd(SIMDE_FLOAT64_C(   507.48), SIMDE_FLOAT64_C(   -81.12), SIMDE_FLOAT64_C(   -74.85), SIMDE_FLOAT64_C(   315.28));
  a = simde_mm256_set_pd(SIMDE_FLOAT64_C(   304.80), SIMDE_FLOAT64_C(   583.61), SIMDE_FLOAT64_C(   197.96), SIMDE_FLOAT64_C(    30.92));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(  -859.49), SIMDE_FLOAT64_C(  -441.81), SIMDE_FLOAT64_C(   147.15), SIMDE_FLOAT64_C(  -266.99));
  e = simde_mm256_set_pd(SIMDE_FLOAT64_C(   507.48), SIMDE_FLOAT64_C(   -81.12), SIMDE_FLOAT64_C(   147.15), SIMDE_FLOAT64_C(   315.28));
  r = simde_mm256_mask_range_pd(src, UINT8_C( 66), a, b, INT32_C(           6));
  simde_test_x86_assert_equal_f64x4(r, e, 1);

  src = simde_mm256_set_pd(SIMDE_FLOAT64_C(  -455.10), SIMDE_FLOAT64_C(   957.60), SIMDE_FLOAT64_C(  -664.92), SIMDE_FLOAT64_C(  -668.08));
  a = simde_mm256_set_pd(SIMDE_FLOAT64_C(   647.53), SIMDE_FLOAT64_C(   595.89), SIMDE_FLOAT64_C(  -733.70), SIMDE_FLOAT64_C(   154.00));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(   258.61), SIMDE_FLOAT64_C(  -513.15), SIMDE_FLOAT64_C(   -73.76), SIMDE_FLOAT64_C(  -449.51));
  e = simde_mm256_set_pd(SIMDE_FLOAT64_C(   647.53), SIMDE_FLOAT64_C(   957.60), SIMDE_FLOAT64_C(    73.76), SIMDE_FLOAT64_C(   154.00));
  r = simde_mm256_mask_range_pd(src, UINT8_C(219), a, b, INT32_C(           9));
  simde_test_x86_assert_equal_f64x4(r, e, 1);

  src = simde_mm256_set_pd(SIMDE_FLOAT64_C(   480.69), SIMDE_FLOAT64_C(  -302.50), SIMDE_FLOAT64_C(   171.81), SIMDE_FLOAT64_C(  -834.59));
  a = simde_mm256_set_pd(SIMDE_FLOAT64_C(  -352.70), SIMDE_FLOAT64_C(    60.35), SIMDE_FLOAT64_C(   -11.83), SIMDE_FLOAT64_C(   616.38));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(   -80.86), SIMDE_FLOAT64_C(   952.10), SIMDE_FLOAT64_C(  -356.05), SIMDE_FLOAT64_C(  -813.87));
  e = simde_mm256_set_pd(SIMDE_FLOAT64_C(   480.69), SIMDE_FLOAT64_C(  -302.50), SIMDE_FLOAT64_C(  -356.05), SIMDE_FLOAT64_C(   813.87));
  r = simde_mm256_mask_range_pd(src, UINT8_C( 19), a, b, INT32_C(           0));
  simde_test_x86_assert_equal_f64x4(r, e, 1);

  src = simde_mm256_set_pd(SIMDE_FLOAT64_C(  -157.79), SIMDE_FLOAT64_C(   397.22), SIMDE_FLOAT64_C(    59.65), SIMDE_FLOAT64_C(  -489.70));
  a = simde_mm256_set_pd(SIMDE_FLOAT64_C(  -491.19), SIMDE_FLOAT64_C(   589.12), SIMDE_FLOAT64_C(   387.12), SIMDE_FLOAT64_C(   354.82));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(  -796.08), SIMDE_FLOAT64_C(  -843.66), SIMDE_FLOAT64_C(   185.02), SIMDE_FLOAT64_C(   653.42));
  e = simde_mm256_set_pd(SIMDE_FLOAT64_C(  -157.79), SIMDE_FLOAT64_C(   397.22), SIMDE_FLOAT64_C(    59.65), SIMDE_FLOAT64_C(  -489.70));
  r = simde_mm256_mask_range_pd(src, UINT8_C(128), a, b, INT32_C(          10));
  simde_test_x86_assert_equal_f64x4(r, e, 1);

  src = simde_mm256_set_pd(SIMDE_FLOAT64_C(  -191.40), SIMDE_FLOAT64_C(   266.82), SIMDE_FLOAT64_C(   462.53), SIMDE_FLOAT64_C(  -356.81));
  a = simde_mm256_set_pd(SIMDE_FLOAT64_C(   580.71), SIMDE_FLOAT64_C(  -268.71), SIMDE_FLOAT64_C(  -710.71), SIMDE_FLOAT64_C(   964.32));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(   463.58), SIMDE_FLOAT64_C(  -771.99), SIMDE_FLOAT64_C(   791.64), SIMDE_FLOAT64_C(   277.46));
  e = simde_mm256_set_pd(SIMDE_FLOAT64_C(   580.71), SIMDE_FLOAT64_C(  -268.71), SIMDE_FLOAT64_C(   791.64), SIMDE_FLOAT64_C(  -356.81));
  r = simde_mm256_mask_range_pd(src, UINT8_C(174), a, b, INT32_C(           5));
  simde_test_x86_assert_equal_f64x4(r, e, 1);

  src = simde_mm256_set_pd(SIMDE_FLOAT64_C(  -309.59), SIMDE_FLOAT64_C(  -773.31), SIMDE_FLOAT64_C(  -617.28), SIMDE_FLOAT64_C(  -819.89));
  a = simde_mm256_set_pd(SIMDE_FLOAT64_C(   -21.28), SIMDE_FLOAT64_C(  -162.91), SIMDE_FLOAT64_C(   532.62), SIMDE_FLOAT64_C(   623.91));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(  -426.84), SIMDE_FLOAT64_C(   487.53), SIMDE_FLOAT64_C(  -573.78), SIMDE_FLOAT64_C(   -80.27));
  e = simde_mm256_set_pd(SIMDE_FLOAT64_C(  -426.84), SIMDE_FLOAT64_C(  -773.31), SIMDE_FLOAT64_C(  -573.78), SIMDE_FLOAT64_C(   623.91));
  r = simde_mm256_mask_range_pd(src, UINT8_C( 75), a, b, INT32_C(           7));
  simde_test_x86_assert_equal_f64x4(r, e, 1);

  src = simde_mm256_set_pd(SIMDE_FLOAT64_C(  -712.94), SIMDE_FLOAT64_C(   722.49), SIMDE_FLOAT64_C(  -222.93), SIMDE_FLOAT64_C(   643.87));
  a = simde_mm256_set_pd(SIMDE_FLOAT64_C(   -46.36), SIMDE_FLOAT64_C(  -126.07), SIMDE_FLOAT64_C(    95.66), SIMDE_FLOAT64_C(   -10.69));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(  -337.59), SIMDE_FLOAT64_C(  -465.66), SIMDE_FLOAT64_C(   605.22), SIMDE_FLOAT64_C(   384.95));
  e = simde_mm256_set_pd(SIMDE_FLOAT64_C(  -337.59), SIMDE_FLOAT64_C(   722.49), SIMDE_FLOAT64_C(  -222.93), SIMDE_FLOAT64_C(  -384.95));
  r = simde_mm256_mask_range_pd(src, UINT8_C(121), a, b, INT32_C(          15));
  simde_test_x86_assert_equal_f64x4(r, e, 1);

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde__m256d src = simde_test_x86_random_f64x4(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
    simde__mmask8 k = simde_test_x86_random_mmask8();
    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_rand() & 15;
    simde__m256d r;
    SIMDE_CONSTIFY_16_(simde_mm256_mask_range_pd, r, simde_mm256_setzero_pd(), imm8, src, k, a, b);

    simde_test_x86_write_f64x4(2, src, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_x86_write_mmask8(2, k, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_f64x4(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
    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_maskz_range_pd (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  simde__m256d a, b, e, r;

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C(  -491.29), SIMDE_FLOAT64_C(   -57.54), SIMDE_FLOAT64_C(   832.45), SIMDE_FLOAT64_C(  -874.01));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(   683.04), SIMDE_FLOAT64_C(   951.08), SIMDE_FLOAT64_C(   632.87), SIMDE_FLOAT64_C(  -940.87));
  e = simde_mm256_set_pd(SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(  -951.08), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00));
  r = simde_mm256_maskz_range_pd(UINT8_C(228), a, b, INT32_C(          13));
  simde_test_x86_assert_equal_f64x4(r, e, 1);

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C(  -850.71), SIMDE_FLOAT64_C(   214.38), SIMDE_FLOAT64_C(  -914.78), SIMDE_FLOAT64_C(  -338.24));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(   435.45), SIMDE_FLOAT64_C(   793.16), SIMDE_FLOAT64_C(  -174.39), SIMDE_FLOAT64_C(  -341.62));
  e = simde_mm256_set_pd(SIMDE_FLOAT64_C(   435.45), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(   338.24));
  r = simde_mm256_maskz_range_pd(UINT8_C(137), a, b, INT32_C(           9));
  simde_test_x86_assert_equal_f64x4(r, e, 1);

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C(  -451.02), SIMDE_FLOAT64_C(   175.88), SIMDE_FLOAT64_C(   537.41), SIMDE_FLOAT64_C(   675.04));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(    25.39), SIMDE_FLOAT64_C(  -845.80), SIMDE_FLOAT64_C(  -439.17), SIMDE_FLOAT64_C(  -508.95));
  e = simde_mm256_set_pd(SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(   175.88), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(   508.95));
  r = simde_mm256_maskz_range_pd(UINT8_C( 85), a, b, INT32_C(          10));
  simde_test_x86_assert_equal_f64x4(r, e, 1);

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C(  -269.79), SIMDE_FLOAT64_C(   383.50), SIMDE_FLOAT64_C(   349.23), SIMDE_FLOAT64_C(   787.74));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(   809.02), SIMDE_FLOAT64_C(  -636.93), SIMDE_FLOAT64_C(   442.64), SIMDE_FLOAT64_C(   857.94));
  e = simde_mm256_set_pd(SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(  -636.93), SIMDE_FLOAT64_C(  -349.23), SIMDE_FLOAT64_C(  -787.74));
  r = simde_mm256_maskz_range_pd(UINT8_C(119), a, b, INT32_C(          12));
  simde_test_x86_assert_equal_f64x4(r, e, 1);

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C(   811.57), SIMDE_FLOAT64_C(   613.78), SIMDE_FLOAT64_C(   787.44), SIMDE_FLOAT64_C(  -402.82));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(   729.89), SIMDE_FLOAT64_C(  -362.82), SIMDE_FLOAT64_C(  -727.85), SIMDE_FLOAT64_C(   936.73));
  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_maskz_range_pd(UINT8_C(192), a, b, INT32_C(           8));
  simde_test_x86_assert_equal_f64x4(r, e, 1);

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C(   -14.01), SIMDE_FLOAT64_C(  -277.31), SIMDE_FLOAT64_C(   382.64), SIMDE_FLOAT64_C(   810.11));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(  -914.18), SIMDE_FLOAT64_C(   546.83), SIMDE_FLOAT64_C(   213.74), SIMDE_FLOAT64_C(   931.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_maskz_range_pd(UINT8_C(160), a, b, INT32_C(           4));
  simde_test_x86_assert_equal_f64x4(r, e, 1);

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C(    20.38), SIMDE_FLOAT64_C(  -880.70), SIMDE_FLOAT64_C(  -973.12), SIMDE_FLOAT64_C(   636.88));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(   120.15), SIMDE_FLOAT64_C(  -536.98), SIMDE_FLOAT64_C(   977.25), SIMDE_FLOAT64_C(  -242.92));
  e = simde_mm256_set_pd(SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(  -880.70), SIMDE_FLOAT64_C(  -973.12), SIMDE_FLOAT64_C(     0.00));
  r = simde_mm256_maskz_range_pd(UINT8_C(102), a, b, INT32_C(          12));
  simde_test_x86_assert_equal_f64x4(r, e, 1);

  a = simde_mm256_set_pd(SIMDE_FLOAT64_C(  -737.51), SIMDE_FLOAT64_C(   376.14), SIMDE_FLOAT64_C(  -616.55), SIMDE_FLOAT64_C(  -351.29));
  b = simde_mm256_set_pd(SIMDE_FLOAT64_C(  -167.81), SIMDE_FLOAT64_C(  -465.36), SIMDE_FLOAT64_C(   312.87), SIMDE_FLOAT64_C(  -804.98));
  e = simde_mm256_set_pd(SIMDE_FLOAT64_C(  -737.51), SIMDE_FLOAT64_C(  -465.36), SIMDE_FLOAT64_C(  -616.55), SIMDE_FLOAT64_C(     0.00));
  r = simde_mm256_maskz_range_pd(UINT8_C(190), a, b, INT32_C(          15));
  simde_test_x86_assert_equal_f64x4(r, e, 1);

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde__mmask8 k = simde_test_x86_random_mmask8();
    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_rand() & 15;
    simde__m256d r;
    SIMDE_CONSTIFY_16_(simde_mm256_maskz_range_pd, r, simde_mm256_setzero_pd(), imm8, k, a, b);

    simde_test_x86_write_mmask8(2, k, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_x86_write_f64x4(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
    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_mm512_range_pd (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    const simde_float64 a[8];
    const simde_float64 b[8];
    const simde_float64 r[8];
  } test_vec[] = {
    { { SIMDE_FLOAT64_C(  -538.10), SIMDE_FLOAT64_C(  -923.13), SIMDE_FLOAT64_C(  -505.34), SIMDE_FLOAT64_C(  -152.09),
        SIMDE_FLOAT64_C(  -619.63), SIMDE_FLOAT64_C(   411.91), SIMDE_FLOAT64_C(   522.74), SIMDE_FLOAT64_C(   733.25) },
      { SIMDE_FLOAT64_C(  -577.37), SIMDE_FLOAT64_C(   870.81), SIMDE_FLOAT64_C(     7.88), SIMDE_FLOAT64_C(   327.24),
        SIMDE_FLOAT64_C(   570.57), SIMDE_FLOAT64_C(   723.95), SIMDE_FLOAT64_C(   400.97), SIMDE_FLOAT64_C(   241.38) },
      { SIMDE_FLOAT64_C(   577.37), SIMDE_FLOAT64_C(   923.13), SIMDE_FLOAT64_C(   505.34), SIMDE_FLOAT64_C(   327.24),
        SIMDE_FLOAT64_C(   619.63), SIMDE_FLOAT64_C(   723.95), SIMDE_FLOAT64_C(   522.74), SIMDE_FLOAT64_C(   733.25) } },
    { { SIMDE_FLOAT64_C(  -827.60), SIMDE_FLOAT64_C(   481.76), SIMDE_FLOAT64_C(  -644.01), SIMDE_FLOAT64_C(  -199.97),
        SIMDE_FLOAT64_C(  -303.44), SIMDE_FLOAT64_C(    19.51), SIMDE_FLOAT64_C(  -688.85), SIMDE_FLOAT64_C(  -378.39) },
      { SIMDE_FLOAT64_C(  -473.60), SIMDE_FLOAT64_C(   775.37), SIMDE_FLOAT64_C(   401.21), SIMDE_FLOAT64_C(  -342.40),
        SIMDE_FLOAT64_C(  -907.08), SIMDE_FLOAT64_C(  -221.95), SIMDE_FLOAT64_C(  -967.82), SIMDE_FLOAT64_C(  -445.18) },
      { SIMDE_FLOAT64_C(  -827.60), SIMDE_FLOAT64_C(   481.76), SIMDE_FLOAT64_C(  -644.01), SIMDE_FLOAT64_C(  -342.40),
        SIMDE_FLOAT64_C(  -907.08), SIMDE_FLOAT64_C(  -221.95), SIMDE_FLOAT64_C(  -967.82), SIMDE_FLOAT64_C(  -445.18) } },
    { { SIMDE_FLOAT64_C(  -145.08), SIMDE_FLOAT64_C(  -473.16), SIMDE_FLOAT64_C(   402.73), SIMDE_FLOAT64_C(   235.29),
        SIMDE_FLOAT64_C(   938.75), SIMDE_FLOAT64_C(   -74.53), SIMDE_FLOAT64_C(   -31.46), SIMDE_FLOAT64_C(  -638.62) },
      { SIMDE_FLOAT64_C(  -203.72), SIMDE_FLOAT64_C(   976.42), SIMDE_FLOAT64_C(   688.62), SIMDE_FLOAT64_C(  -633.15),
        SIMDE_FLOAT64_C(   700.37), SIMDE_FLOAT64_C(    89.59), SIMDE_FLOAT64_C(   608.23), SIMDE_FLOAT64_C(   872.77) },
      { SIMDE_FLOAT64_C(  -145.08), SIMDE_FLOAT64_C(  -976.42), SIMDE_FLOAT64_C(   688.62), SIMDE_FLOAT64_C(   235.29),
        SIMDE_FLOAT64_C(   938.75), SIMDE_FLOAT64_C(   -89.59), SIMDE_FLOAT64_C(  -608.23), SIMDE_FLOAT64_C(  -872.77) } },
    { { SIMDE_FLOAT64_C(  -428.65), SIMDE_FLOAT64_C(   964.22), SIMDE_FLOAT64_C(  -327.20), SIMDE_FLOAT64_C(   267.91),
        SIMDE_FLOAT64_C(   -16.27), SIMDE_FLOAT64_C(   -16.05), SIMDE_FLOAT64_C(   889.52), SIMDE_FLOAT64_C(   510.13) },
      { SIMDE_FLOAT64_C(  -240.68), SIMDE_FLOAT64_C(   290.73), SIMDE_FLOAT64_C(  -832.27), SIMDE_FLOAT64_C(  -147.76),
        SIMDE_FLOAT64_C(  -931.22), SIMDE_FLOAT64_C(  -800.09), SIMDE_FLOAT64_C(   407.06), SIMDE_FLOAT64_C(   -76.30) },
      { SIMDE_FLOAT64_C(  -240.68), SIMDE_FLOAT64_C(   290.73), SIMDE_FLOAT64_C(  -327.20), SIMDE_FLOAT64_C(   147.76),
        SIMDE_FLOAT64_C(   -16.27), SIMDE_FLOAT64_C(   -16.05), SIMDE_FLOAT64_C(   407.06), SIMDE_FLOAT64_C(    76.30) } },
    { { SIMDE_FLOAT64_C(  -273.25), SIMDE_FLOAT64_C(  -190.21), SIMDE_FLOAT64_C(  -841.01), SIMDE_FLOAT64_C(  -334.50),
        SIMDE_FLOAT64_C(   735.25), SIMDE_FLOAT64_C(   127.53), SIMDE_FLOAT64_C(    26.88), SIMDE_FLOAT64_C(  -468.47) },
      { SIMDE_FLOAT64_C(   103.95), SIMDE_FLOAT64_C(  -284.49), SIMDE_FLOAT64_C(  -101.62), SIMDE_FLOAT64_C(  -195.68),
        SIMDE_FLOAT64_C(   805.10), SIMDE_FLOAT64_C(  -493.39), SIMDE_FLOAT64_C(  -322.91), SIMDE_FLOAT64_C(  -623.55) },
      { SIMDE_FLOAT64_C(  -273.25), SIMDE_FLOAT64_C(  -284.49), SIMDE_FLOAT64_C(  -841.01), SIMDE_FLOAT64_C(  -334.50),
        SIMDE_FLOAT64_C(   805.10), SIMDE_FLOAT64_C(   493.39), SIMDE_FLOAT64_C(   322.91), SIMDE_FLOAT64_C(  -623.55) } },
    { { SIMDE_FLOAT64_C(  -529.17), SIMDE_FLOAT64_C(   349.89), SIMDE_FLOAT64_C(   644.36), SIMDE_FLOAT64_C(   454.56),
        SIMDE_FLOAT64_C(  -666.16), SIMDE_FLOAT64_C(   533.89), SIMDE_FLOAT64_C(   -35.30), SIMDE_FLOAT64_C(    93.16) },
      { SIMDE_FLOAT64_C(  -175.39), SIMDE_FLOAT64_C(   132.43), SIMDE_FLOAT64_C(   945.40), SIMDE_FLOAT64_C(  -106.61),
        SIMDE_FLOAT64_C(   332.34), SIMDE_FLOAT64_C(   352.46), SIMDE_FLOAT64_C(   817.09), SIMDE_FLOAT64_C(  -940.90) },
      { SIMDE_FLOAT64_C(   175.39), SIMDE_FLOAT64_C(   349.89), SIMDE_FLOAT64_C(   945.40), SIMDE_FLOAT64_C(   454.56),
        SIMDE_FLOAT64_C(   332.34), SIMDE_FLOAT64_C(   533.89), SIMDE_FLOAT64_C(   817.09), SIMDE_FLOAT64_C(    93.16) } },
    { { SIMDE_FLOAT64_C(  -837.75), SIMDE_FLOAT64_C(   976.08), SIMDE_FLOAT64_C(  -275.40), SIMDE_FLOAT64_C(   897.50),
        SIMDE_FLOAT64_C(   103.61), SIMDE_FLOAT64_C(   751.48), SIMDE_FLOAT64_C(  -570.97), SIMDE_FLOAT64_C(  -792.44) },
      { SIMDE_FLOAT64_C(  -533.01), SIMDE_FLOAT64_C(   327.42), SIMDE_FLOAT64_C(    11.88), SIMDE_FLOAT64_C(  -727.91),
        SIMDE_FLOAT64_C(   834.03), SIMDE_FLOAT64_C(   688.97), SIMDE_FLOAT64_C(  -351.45), SIMDE_FLOAT64_C(  -695.14) },
      { SIMDE_FLOAT64_C(  -533.01), SIMDE_FLOAT64_C(   976.08), SIMDE_FLOAT64_C(    11.88), SIMDE_FLOAT64_C(   897.50),
        SIMDE_FLOAT64_C(   834.03), SIMDE_FLOAT64_C(   751.48), SIMDE_FLOAT64_C(  -351.45), SIMDE_FLOAT64_C(  -695.14) } },
    { { SIMDE_FLOAT64_C(    38.86), SIMDE_FLOAT64_C(  -707.09), SIMDE_FLOAT64_C(   759.43), SIMDE_FLOAT64_C(   372.70),
        SIMDE_FLOAT64_C(   826.80), SIMDE_FLOAT64_C(  -275.88), SIMDE_FLOAT64_C(  -534.14), SIMDE_FLOAT64_C(  -348.59) },
      { SIMDE_FLOAT64_C(   856.55), SIMDE_FLOAT64_C(  -588.74), SIMDE_FLOAT64_C(   544.80), SIMDE_FLOAT64_C(   188.90),
        SIMDE_FLOAT64_C(   763.72), SIMDE_FLOAT64_C(   361.89), SIMDE_FLOAT64_C(   247.99), SIMDE_FLOAT64_C(   925.97) },
      { SIMDE_FLOAT64_C(    38.86), SIMDE_FLOAT64_C(  -707.09), SIMDE_FLOAT64_C(   544.80), SIMDE_FLOAT64_C(   188.90),
        SIMDE_FLOAT64_C(   763.72), SIMDE_FLOAT64_C(  -275.88), SIMDE_FLOAT64_C(  -534.14), SIMDE_FLOAT64_C(  -348.59) } }
  };

  simde__m512d a, b, r;

  a = simde_mm512_loadu_pd(test_vec[0].a);
  b = simde_mm512_loadu_pd(test_vec[0].b);
  r = simde_mm512_range_pd(a, b, 11);
  simde_test_x86_assert_equal_f64x8(r, simde_mm512_loadu_pd(test_vec[0].r), 1);

  a = simde_mm512_loadu_pd(test_vec[1].a);
  b = simde_mm512_loadu_pd(test_vec[1].b);
  r = simde_mm512_range_pd(a, b, 4);
  simde_test_x86_assert_equal_f64x8(r, simde_mm512_loadu_pd(test_vec[1].r), 1);

  a = simde_mm512_loadu_pd(test_vec[2].a);
  b = simde_mm512_loadu_pd(test_vec[2].b);
  r = simde_mm512_range_pd(a, b, 1);
  simde_test_x86_assert_equal_f64x8(r, simde_mm512_loadu_pd(test_vec[2].r), 1);

  a = simde_mm512_loadu_pd(test_vec[3].a);
  b = simde_mm512_loadu_pd(test_vec[3].b);
  r = simde_mm512_range_pd(a, b, 2);
  simde_test_x86_assert_equal_f64x8(r, simde_mm512_loadu_pd(test_vec[3].r), 1);

  a = simde_mm512_loadu_pd(test_vec[4].a);
  b = simde_mm512_loadu_pd(test_vec[4].b);
  r = simde_mm512_range_pd(a, b, 3);
  simde_test_x86_assert_equal_f64x8(r, simde_mm512_loadu_pd(test_vec[4].r), 1);

  a = simde_mm512_loadu_pd(test_vec[5].a);
  b = simde_mm512_loadu_pd(test_vec[5].b);
  r = simde_mm512_range_pd(a, b, 9);
  simde_test_x86_assert_equal_f64x8(r, simde_mm512_loadu_pd(test_vec[5].r), 1);

  a = simde_mm512_loadu_pd(test_vec[6].a);
  b = simde_mm512_loadu_pd(test_vec[6].b);
  r = simde_mm512_range_pd(a, b, 5);
  simde_test_x86_assert_equal_f64x8(r, simde_mm512_loadu_pd(test_vec[6].r), 1);

  a = simde_mm512_loadu_pd(test_vec[7].a);
  b = simde_mm512_loadu_pd(test_vec[7].b);
  r = simde_mm512_range_pd(a, b, 0);
  simde_test_x86_assert_equal_f64x8(r, simde_mm512_loadu_pd(test_vec[7].r), 1);

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

  simde__m512d a, b, r;

  a = simde_test_x86_random_f64x8(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x8(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  r = simde_mm512_range_pd(a, b, 11);

  simde_test_x86_write_f64x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_f64x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f64x8(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x8(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  r = simde_mm512_range_pd(a, b, 4);

  simde_test_x86_write_f64x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_f64x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f64x8(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x8(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  r = simde_mm512_range_pd(a, b, 1);

  simde_test_x86_write_f64x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_f64x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f64x8(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x8(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  r = simde_mm512_range_pd(a, b, 2);

  simde_test_x86_write_f64x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_f64x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f64x8(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x8(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  r = simde_mm512_range_pd(a, b, 3);

  simde_test_x86_write_f64x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_f64x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f64x8(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x8(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  r = simde_mm512_range_pd(a, b, 9);

  simde_test_x86_write_f64x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_f64x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f64x8(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x8(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  r = simde_mm512_range_pd(a, b, 5);

  simde_test_x86_write_f64x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_f64x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  a = simde_test_x86_random_f64x8(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_x86_random_f64x8(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  r = simde_mm512_range_pd(a, b, 0);

  simde_test_x86_write_f64x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
  simde_test_x86_write_f64x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
  simde_test_x86_write_f64x8(2, r, SIMDE_TEST_VEC_POS_LAST);

  return 1;
#endif
}

static int
test_simde_mm512_mask_range_pd (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  simde__m512d src, a, b, e, r;

  src = simde_mm512_set_pd(SIMDE_FLOAT64_C(  -815.01), SIMDE_FLOAT64_C(  -900.08), SIMDE_FLOAT64_C(   232.89), SIMDE_FLOAT64_C(  -900.14),
                           SIMDE_FLOAT64_C(  -826.33), SIMDE_FLOAT64_C(  -909.36), SIMDE_FLOAT64_C(  -362.80), SIMDE_FLOAT64_C(  -326.67));
  a = simde_mm512_set_pd(SIMDE_FLOAT64_C(   489.93), SIMDE_FLOAT64_C(    18.24), SIMDE_FLOAT64_C(  -633.02), SIMDE_FLOAT64_C(  -517.17),
                         SIMDE_FLOAT64_C(   -31.50), SIMDE_FLOAT64_C(   855.15), SIMDE_FLOAT64_C(   229.18), SIMDE_FLOAT64_C(   989.52));
  b = simde_mm512_set_pd(SIMDE_FLOAT64_C(   533.35), SIMDE_FLOAT64_C(   215.69), SIMDE_FLOAT64_C(   614.42), SIMDE_FLOAT64_C(   761.72),
                         SIMDE_FLOAT64_C(  -255.85), SIMDE_FLOAT64_C(  -511.69), SIMDE_FLOAT64_C(  -939.34), SIMDE_FLOAT64_C(  -968.03));
  e = simde_mm512_set_pd(SIMDE_FLOAT64_C(  -815.01), SIMDE_FLOAT64_C(   215.69), SIMDE_FLOAT64_C(   614.42), SIMDE_FLOAT64_C(   761.72),
                         SIMDE_FLOAT64_C(    31.50), SIMDE_FLOAT64_C(   855.15), SIMDE_FLOAT64_C(  -362.80), SIMDE_FLOAT64_C(  -326.67));
  r = simde_mm512_mask_range_pd(src, UINT8_C(124), a, b, INT32_C(           9));
  simde_test_x86_assert_equal_f64x8(r, e, 1);

  src = simde_mm512_set_pd(SIMDE_FLOAT64_C(  -853.79), SIMDE_FLOAT64_C(  -717.88), SIMDE_FLOAT64_C(    33.69), SIMDE_FLOAT64_C(  -944.44),
                           SIMDE_FLOAT64_C(   644.92), SIMDE_FLOAT64_C(  -639.63), SIMDE_FLOAT64_C(   606.84), SIMDE_FLOAT64_C(  -541.57));
  a = simde_mm512_set_pd(SIMDE_FLOAT64_C(    37.59), SIMDE_FLOAT64_C(   796.15), SIMDE_FLOAT64_C(   296.80), SIMDE_FLOAT64_C(   182.44),
                         SIMDE_FLOAT64_C(  -433.03), SIMDE_FLOAT64_C(   307.27), SIMDE_FLOAT64_C(   379.10), SIMDE_FLOAT64_C(  -618.02));
  b = simde_mm512_set_pd(SIMDE_FLOAT64_C(  -742.78), SIMDE_FLOAT64_C(   344.19), SIMDE_FLOAT64_C(   436.55), SIMDE_FLOAT64_C(   768.91),
                         SIMDE_FLOAT64_C(   283.53), SIMDE_FLOAT64_C(   404.57), SIMDE_FLOAT64_C(  -721.02), SIMDE_FLOAT64_C(  -734.71));
  e = simde_mm512_set_pd(SIMDE_FLOAT64_C(  -853.79), SIMDE_FLOAT64_C(  -344.19), SIMDE_FLOAT64_C(  -296.80), SIMDE_FLOAT64_C(  -944.44),
                         SIMDE_FLOAT64_C(   644.92), SIMDE_FLOAT64_C(  -307.27), SIMDE_FLOAT64_C(  -379.10), SIMDE_FLOAT64_C(  -618.02));
  r = simde_mm512_mask_range_pd(src, UINT8_C(103), a, b, INT32_C(          14));
  simde_test_x86_assert_equal_f64x8(r, e, 1);

  src = simde_mm512_set_pd(SIMDE_FLOAT64_C(   953.25), SIMDE_FLOAT64_C(  -753.90), SIMDE_FLOAT64_C(   854.82), SIMDE_FLOAT64_C(   592.88),
                           SIMDE_FLOAT64_C(  -360.74), SIMDE_FLOAT64_C(   396.39), SIMDE_FLOAT64_C(   871.64), SIMDE_FLOAT64_C(   105.91));
  a = simde_mm512_set_pd(SIMDE_FLOAT64_C(   501.57), SIMDE_FLOAT64_C(   826.97), SIMDE_FLOAT64_C(  -836.16), SIMDE_FLOAT64_C(  -805.70),
                         SIMDE_FLOAT64_C(  -552.13), SIMDE_FLOAT64_C(   781.87), SIMDE_FLOAT64_C(   -13.06), SIMDE_FLOAT64_C(  -698.34));
  b = simde_mm512_set_pd(SIMDE_FLOAT64_C(   451.58), SIMDE_FLOAT64_C(  -194.06), SIMDE_FLOAT64_C(    63.66), SIMDE_FLOAT64_C(  -953.00),
                         SIMDE_FLOAT64_C(  -473.04), SIMDE_FLOAT64_C(  -201.63), SIMDE_FLOAT64_C(     9.41), SIMDE_FLOAT64_C(  -269.19));
  e = simde_mm512_set_pd(SIMDE_FLOAT64_C(  -451.58), SIMDE_FLOAT64_C(  -753.90), SIMDE_FLOAT64_C(   854.82), SIMDE_FLOAT64_C(   592.88),
                         SIMDE_FLOAT64_C(  -360.74), SIMDE_FLOAT64_C(   396.39), SIMDE_FLOAT64_C(    -9.41), SIMDE_FLOAT64_C(  -269.19));
  r = simde_mm512_mask_range_pd(src, UINT8_C(131), a, b, INT32_C(          14));
  simde_test_x86_assert_equal_f64x8(r, e, 1);

  src = simde_mm512_set_pd(SIMDE_FLOAT64_C(  -534.79), SIMDE_FLOAT64_C(  -296.28), SIMDE_FLOAT64_C(  -202.71), SIMDE_FLOAT64_C(    68.82),
                           SIMDE_FLOAT64_C(  -167.92), SIMDE_FLOAT64_C(   691.38), SIMDE_FLOAT64_C(  -111.88), SIMDE_FLOAT64_C(  -425.15));
  a = simde_mm512_set_pd(SIMDE_FLOAT64_C(   601.63), SIMDE_FLOAT64_C(   236.79), SIMDE_FLOAT64_C(   984.30), SIMDE_FLOAT64_C(   819.77),
                         SIMDE_FLOAT64_C(  -750.15), SIMDE_FLOAT64_C(   682.64), SIMDE_FLOAT64_C(  -679.97), SIMDE_FLOAT64_C(  -703.40));
  b = simde_mm512_set_pd(SIMDE_FLOAT64_C(   731.03), SIMDE_FLOAT64_C(   268.54), SIMDE_FLOAT64_C(  -503.71), SIMDE_FLOAT64_C(   -67.34),
                         SIMDE_FLOAT64_C(  -740.87), SIMDE_FLOAT64_C(   765.48), SIMDE_FLOAT64_C(   431.09), SIMDE_FLOAT64_C(  -567.84));
  e = simde_mm512_set_pd(SIMDE_FLOAT64_C(   731.03), SIMDE_FLOAT64_C(  -296.28), SIMDE_FLOAT64_C(  -202.71), SIMDE_FLOAT64_C(    68.82),
                         SIMDE_FLOAT64_C(  -167.92), SIMDE_FLOAT64_C(   765.48), SIMDE_FLOAT64_C(  -431.09), SIMDE_FLOAT64_C(  -567.84));
  r = simde_mm512_mask_range_pd(src, UINT8_C(135), a, b, INT32_C(           1));
  simde_test_x86_assert_equal_f64x8(r, e, 1);

  src = simde_mm512_set_pd(SIMDE_FLOAT64_C(  -166.74), SIMDE_FLOAT64_C(   655.25), SIMDE_FLOAT64_C(  -595.95), SIMDE_FLOAT64_C(   141.88),
                           SIMDE_FLOAT64_C(  -232.88), SIMDE_FLOAT64_C(   829.19), SIMDE_FLOAT64_C(  -205.31), SIMDE_FLOAT64_C(   315.54));
  a = simde_mm512_set_pd(SIMDE_FLOAT64_C(  -250.27), SIMDE_FLOAT64_C(   509.30), SIMDE_FLOAT64_C(  -763.56), SIMDE_FLOAT64_C(    67.09),
                         SIMDE_FLOAT64_C(   189.28), SIMDE_FLOAT64_C(   939.84), SIMDE_FLOAT64_C(   630.55), SIMDE_FLOAT64_C(  -275.93));
  b = simde_mm512_set_pd(SIMDE_FLOAT64_C(  -303.82), SIMDE_FLOAT64_C(   154.17), SIMDE_FLOAT64_C(   166.19), SIMDE_FLOAT64_C(   -69.30),
                         SIMDE_FLOAT64_C(   723.08), SIMDE_FLOAT64_C(  -265.98), SIMDE_FLOAT64_C(   329.07), SIMDE_FLOAT64_C(  -513.71));
  e = simde_mm512_set_pd(SIMDE_FLOAT64_C(  -250.27), SIMDE_FLOAT64_C(  -509.30), SIMDE_FLOAT64_C(  -595.95), SIMDE_FLOAT64_C(   -67.09),
                         SIMDE_FLOAT64_C(  -232.88), SIMDE_FLOAT64_C(  -939.84), SIMDE_FLOAT64_C(  -205.31), SIMDE_FLOAT64_C(  -275.93));
  r = simde_mm512_mask_range_pd(src, UINT8_C(213), a, b, INT32_C(          13));
  simde_test_x86_assert_equal_f64x8(r, e, 1);

  src = simde_mm512_set_pd(SIMDE_FLOAT64_C(  -955.09), SIMDE_FLOAT64_C(  -387.44), SIMDE_FLOAT64_C(  -990.59), SIMDE_FLOAT64_C(  -784.28),
                           SIMDE_FLOAT64_C(   817.87), SIMDE_FLOAT64_C(  -306.14), SIMDE_FLOAT64_C(   192.47), SIMDE_FLOAT64_C(  -913.16));
  a = simde_mm512_set_pd(SIMDE_FLOAT64_C(   624.92), SIMDE_FLOAT64_C(  -781.74), SIMDE_FLOAT64_C(   155.84), SIMDE_FLOAT64_C(   685.08),
                         SIMDE_FLOAT64_C(  -412.29), SIMDE_FLOAT64_C(  -568.22), SIMDE_FLOAT64_C(  -551.04), SIMDE_FLOAT64_C(   754.45));
  b = simde_mm512_set_pd(SIMDE_FLOAT64_C(  -230.90), SIMDE_FLOAT64_C(   183.49), SIMDE_FLOAT64_C(  -652.34), SIMDE_FLOAT64_C(  -964.92),
                         SIMDE_FLOAT64_C(   854.42), SIMDE_FLOAT64_C(   861.36), SIMDE_FLOAT64_C(   285.35), SIMDE_FLOAT64_C(  -654.88));
  e = simde_mm512_set_pd(SIMDE_FLOAT64_C(  -955.09), SIMDE_FLOAT64_C(  -387.44), SIMDE_FLOAT64_C(   652.34), SIMDE_FLOAT64_C(  -784.28),
                         SIMDE_FLOAT64_C(   817.87), SIMDE_FLOAT64_C(   861.36), SIMDE_FLOAT64_C(   551.04), SIMDE_FLOAT64_C(  -913.16));
  r = simde_mm512_mask_range_pd(src, UINT8_C( 38), a, b, INT32_C(          11));
  simde_test_x86_assert_equal_f64x8(r, e, 1);

  src = simde_mm512_set_pd(SIMDE_FLOAT64_C(  -945.53), SIMDE_FLOAT64_C(  -997.15), SIMDE_FLOAT64_C(   311.75), SIMDE_FLOAT64_C(   360.61),
                           SIMDE_FLOAT64_C(  -189.63), SIMDE_FLOAT64_C(   224.91), SIMDE_FLOAT64_C(   935.29), SIMDE_FLOAT64_C(  -885.81));
  a = simde_mm512_set_pd(SIMDE_FLOAT64_C(   272.18), SIMDE_FLOAT64_C(  -287.57), SIMDE_FLOAT64_C(   496.63), SIMDE_FLOAT64_C(  -159.59),
                         SIMDE_FLOAT64_C(  -736.52), SIMDE_FLOAT64_C(   742.18), SIMDE_FLOAT64_C(  -936.12), SIMDE_FLOAT64_C(  -781.43));
  b = simde_mm512_set_pd(SIMDE_FLOAT64_C(   883.79), SIMDE_FLOAT64_C(   587.96), SIMDE_FLOAT64_C(  -226.86), SIMDE_FLOAT64_C(  -977.57),
                         SIMDE_FLOAT64_C(  -697.39), SIMDE_FLOAT64_C(  -571.98), SIMDE_FLOAT64_C(  -602.49), SIMDE_FLOAT64_C(  -915.66));
  e = simde_mm512_set_pd(SIMDE_FLOAT64_C(   883.79), SIMDE_FLOAT64_C(  -997.15), SIMDE_FLOAT64_C(   496.63), SIMDE_FLOAT64_C(   360.61),
                         SIMDE_FLOAT64_C(   736.52), SIMDE_FLOAT64_C(   742.18), SIMDE_FLOAT64_C(   935.29), SIMDE_FLOAT64_C(   915.66));
  r = simde_mm512_mask_range_pd(src, UINT8_C(173), a, b, INT32_C(          11));
  simde_test_x86_assert_equal_f64x8(r, e, 1);

  src = simde_mm512_set_pd(SIMDE_FLOAT64_C(   527.10), SIMDE_FLOAT64_C(  -672.57), SIMDE_FLOAT64_C(   925.24), SIMDE_FLOAT64_C(  -697.81),
                           SIMDE_FLOAT64_C(  -607.86), SIMDE_FLOAT64_C(   811.05), SIMDE_FLOAT64_C(  -768.55), SIMDE_FLOAT64_C(   623.04));
  a = simde_mm512_set_pd(SIMDE_FLOAT64_C(   710.66), SIMDE_FLOAT64_C(   806.39), SIMDE_FLOAT64_C(   -42.97), SIMDE_FLOAT64_C(   968.47),
                         SIMDE_FLOAT64_C(   742.51), SIMDE_FLOAT64_C(  -261.54), SIMDE_FLOAT64_C(  -161.15), SIMDE_FLOAT64_C(   688.04));
  b = simde_mm512_set_pd(SIMDE_FLOAT64_C(  -653.00), SIMDE_FLOAT64_C(  -669.56), SIMDE_FLOAT64_C(   291.64), SIMDE_FLOAT64_C(   918.98),
                         SIMDE_FLOAT64_C(   932.93), SIMDE_FLOAT64_C(   207.29), SIMDE_FLOAT64_C(  -353.20), SIMDE_FLOAT64_C(   220.50));
  e = simde_mm512_set_pd(SIMDE_FLOAT64_C(   710.66), SIMDE_FLOAT64_C(   806.39), SIMDE_FLOAT64_C(   291.64), SIMDE_FLOAT64_C(   968.47),
                         SIMDE_FLOAT64_C(  -607.86), SIMDE_FLOAT64_C(   811.05), SIMDE_FLOAT64_C(   161.15), SIMDE_FLOAT64_C(   623.04));
  r = simde_mm512_mask_range_pd(src, UINT8_C(242), a, b, INT32_C(           9));
  simde_test_x86_assert_equal_f64x8(r, e, 1);

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde__m512d src = simde_test_x86_random_f64x8(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
    simde__mmask8 k = simde_test_x86_random_mmask8();
    simde__m512d a = simde_test_x86_random_f64x8(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
    simde__m512d b = simde_test_x86_random_f64x8(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
    int imm8 = simde_test_codegen_rand() & 15;
    simde__m512d r;
    SIMDE_CONSTIFY_16_(simde_mm512_mask_range_pd, r, simde_mm512_setzero_pd(), imm8, src, k, a, b);

    simde_test_x86_write_f64x8(2, src, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_x86_write_mmask8(2, k, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_f64x8(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_f64x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_codegen_write_i32(2, imm8, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_f64x8(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_mm512_maskz_range_pd (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  simde__m512d a, b, e, r;

  a = simde_mm512_set_pd(SIMDE_FLOAT64_C(   197.38), SIMDE_FLOAT64_C(   558.75), SIMDE_FLOAT64_C(  -531.88), SIMDE_FLOAT64_C(  -194.76),
                         SIMDE_FLOAT64_C(   747.70), SIMDE_FLOAT64_C(  -763.33), SIMDE_FLOAT64_C(   182.20), SIMDE_FLOAT64_C(   120.14));
  b = simde_mm512_set_pd(SIMDE_FLOAT64_C(   -41.93), SIMDE_FLOAT64_C(   136.26), SIMDE_FLOAT64_C(   212.85), SIMDE_FLOAT64_C(  -780.39),
                         SIMDE_FLOAT64_C(  -702.59), SIMDE_FLOAT64_C(   524.81), SIMDE_FLOAT64_C(   483.99), SIMDE_FLOAT64_C(  -229.69));
  e = simde_mm512_set_pd(SIMDE_FLOAT64_C(   -41.93), SIMDE_FLOAT64_C(   136.26), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00),
                         SIMDE_FLOAT64_C(  -702.59), SIMDE_FLOAT64_C(   524.81), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00));
  r = simde_mm512_maskz_range_pd(UINT8_C(204), a, b, INT32_C(           6));
  simde_test_x86_assert_equal_f64x8(r, e, 1);

  a = simde_mm512_set_pd(SIMDE_FLOAT64_C(   327.53), SIMDE_FLOAT64_C(    68.54), SIMDE_FLOAT64_C(  -977.31), SIMDE_FLOAT64_C(   408.55),
                         SIMDE_FLOAT64_C(   135.60), SIMDE_FLOAT64_C(  -184.60), SIMDE_FLOAT64_C(  -238.25), SIMDE_FLOAT64_C(   915.10));
  b = simde_mm512_set_pd(SIMDE_FLOAT64_C(   988.52), SIMDE_FLOAT64_C(  -909.23), SIMDE_FLOAT64_C(  -205.33), SIMDE_FLOAT64_C(   751.85),
                         SIMDE_FLOAT64_C(   -91.43), SIMDE_FLOAT64_C(   674.53), SIMDE_FLOAT64_C(   398.98), SIMDE_FLOAT64_C(   314.32));
  e = simde_mm512_set_pd(SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(    68.54), SIMDE_FLOAT64_C(  -205.33), SIMDE_FLOAT64_C(   408.55),
                         SIMDE_FLOAT64_C(   -91.43), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(  -238.25), SIMDE_FLOAT64_C(     0.00));
  r = simde_mm512_maskz_range_pd(UINT8_C(122), a, b, INT32_C(           6));
  simde_test_x86_assert_equal_f64x8(r, e, 1);

  a = simde_mm512_set_pd(SIMDE_FLOAT64_C(   804.72), SIMDE_FLOAT64_C(   524.36), SIMDE_FLOAT64_C(   618.20), SIMDE_FLOAT64_C(   585.11),
                         SIMDE_FLOAT64_C(   226.95), SIMDE_FLOAT64_C(  -906.62), SIMDE_FLOAT64_C(  -898.88), SIMDE_FLOAT64_C(  -543.36));
  b = simde_mm512_set_pd(SIMDE_FLOAT64_C(  -419.24), SIMDE_FLOAT64_C(  -451.83), SIMDE_FLOAT64_C(  -322.11), SIMDE_FLOAT64_C(   765.36),
                         SIMDE_FLOAT64_C(   786.41), SIMDE_FLOAT64_C(  -237.21), SIMDE_FLOAT64_C(  -339.38), SIMDE_FLOAT64_C(  -168.95));
  e = simde_mm512_set_pd(SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(   322.11), SIMDE_FLOAT64_C(     0.00),
                         SIMDE_FLOAT64_C(   226.95), SIMDE_FLOAT64_C(  -906.62), SIMDE_FLOAT64_C(  -898.88), SIMDE_FLOAT64_C(  -543.36));
  r = simde_mm512_maskz_range_pd(UINT8_C( 47), a, b, INT32_C(           0));
  simde_test_x86_assert_equal_f64x8(r, e, 1);

  a = simde_mm512_set_pd(SIMDE_FLOAT64_C(  -967.14), SIMDE_FLOAT64_C(  -173.66), SIMDE_FLOAT64_C(   -41.23), SIMDE_FLOAT64_C(  -718.99),
                         SIMDE_FLOAT64_C(   917.77), SIMDE_FLOAT64_C(   284.24), SIMDE_FLOAT64_C(  -117.97), SIMDE_FLOAT64_C(  -396.55));
  b = simde_mm512_set_pd(SIMDE_FLOAT64_C(   906.49), SIMDE_FLOAT64_C(  -603.07), SIMDE_FLOAT64_C(  -521.98), SIMDE_FLOAT64_C(   813.11),
                         SIMDE_FLOAT64_C(  -704.19), SIMDE_FLOAT64_C(  -978.62), SIMDE_FLOAT64_C(   -82.90), SIMDE_FLOAT64_C(   753.44));
  e = simde_mm512_set_pd(SIMDE_FLOAT64_C(  -967.14), SIMDE_FLOAT64_C(  -603.07), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00),
                         SIMDE_FLOAT64_C(   704.19), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(  -117.97), SIMDE_FLOAT64_C(  -396.55));
  r = simde_mm512_maskz_range_pd(UINT8_C(203), a, b, INT32_C(           0));
  simde_test_x86_assert_equal_f64x8(r, e, 1);

  a = simde_mm512_set_pd(SIMDE_FLOAT64_C(   655.32), SIMDE_FLOAT64_C(  -857.85), SIMDE_FLOAT64_C(  -450.44), SIMDE_FLOAT64_C(   889.95),
                         SIMDE_FLOAT64_C(  -644.26), SIMDE_FLOAT64_C(   786.76), SIMDE_FLOAT64_C(   229.33), SIMDE_FLOAT64_C(   524.69));
  b = simde_mm512_set_pd(SIMDE_FLOAT64_C(   931.28), SIMDE_FLOAT64_C(   922.98), SIMDE_FLOAT64_C(  -160.48), SIMDE_FLOAT64_C(  -352.96),
                         SIMDE_FLOAT64_C(    40.94), SIMDE_FLOAT64_C(  -763.93), SIMDE_FLOAT64_C(  -309.68), SIMDE_FLOAT64_C(   227.45));
  e = simde_mm512_set_pd(SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(  -450.44), SIMDE_FLOAT64_C(     0.00),
                         SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(  -786.76), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(  -524.69));
  r = simde_mm512_maskz_range_pd(UINT8_C( 37), a, b, INT32_C(          15));
  simde_test_x86_assert_equal_f64x8(r, e, 1);

  a = simde_mm512_set_pd(SIMDE_FLOAT64_C(  -686.16), SIMDE_FLOAT64_C(   -60.70), SIMDE_FLOAT64_C(  -741.77), SIMDE_FLOAT64_C(  -499.27),
                         SIMDE_FLOAT64_C(  -356.51), SIMDE_FLOAT64_C(  -763.15), SIMDE_FLOAT64_C(   583.63), SIMDE_FLOAT64_C(  -109.95));
  b = simde_mm512_set_pd(SIMDE_FLOAT64_C(   105.03), SIMDE_FLOAT64_C(   670.56), SIMDE_FLOAT64_C(   745.02), SIMDE_FLOAT64_C(   318.27),
                         SIMDE_FLOAT64_C(  -558.77), SIMDE_FLOAT64_C(  -779.67), SIMDE_FLOAT64_C(   336.23), SIMDE_FLOAT64_C(  -263.74));
  e = simde_mm512_set_pd(SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(  -318.27),
                         SIMDE_FLOAT64_C(  -356.51), SIMDE_FLOAT64_C(  -763.15), SIMDE_FLOAT64_C(   336.23), SIMDE_FLOAT64_C(     0.00));
  r = simde_mm512_maskz_range_pd(UINT8_C( 30), a, b, INT32_C(           2));
  simde_test_x86_assert_equal_f64x8(r, e, 1);

  a = simde_mm512_set_pd(SIMDE_FLOAT64_C(   580.27), SIMDE_FLOAT64_C(   922.98), SIMDE_FLOAT64_C(   451.90), SIMDE_FLOAT64_C(   -66.77),
                         SIMDE_FLOAT64_C(  -117.96), SIMDE_FLOAT64_C(   215.82), SIMDE_FLOAT64_C(  -757.09), SIMDE_FLOAT64_C(   654.59));
  b = simde_mm512_set_pd(SIMDE_FLOAT64_C(  -713.21), SIMDE_FLOAT64_C(  -367.66), SIMDE_FLOAT64_C(  -598.39), SIMDE_FLOAT64_C(  -950.06),
                         SIMDE_FLOAT64_C(    48.71), SIMDE_FLOAT64_C(   511.55), SIMDE_FLOAT64_C(   845.96), SIMDE_FLOAT64_C(  -708.58));
  e = simde_mm512_set_pd(SIMDE_FLOAT64_C(   580.27), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(   451.90), SIMDE_FLOAT64_C(     0.00),
                         SIMDE_FLOAT64_C(   -48.71), SIMDE_FLOAT64_C(   511.55), SIMDE_FLOAT64_C(  -845.96), SIMDE_FLOAT64_C(     0.00));
  r = simde_mm512_maskz_range_pd(UINT8_C(174), a, b, INT32_C(           1));
  simde_test_x86_assert_equal_f64x8(r, e, 1);

  a = simde_mm512_set_pd(SIMDE_FLOAT64_C(  -361.11), SIMDE_FLOAT64_C(   722.51), SIMDE_FLOAT64_C(   667.26), SIMDE_FLOAT64_C(   320.63),
                         SIMDE_FLOAT64_C(   281.28), SIMDE_FLOAT64_C(   446.92), SIMDE_FLOAT64_C(   984.40), SIMDE_FLOAT64_C(  -454.98));
  b = simde_mm512_set_pd(SIMDE_FLOAT64_C(  -830.60), SIMDE_FLOAT64_C(   755.95), SIMDE_FLOAT64_C(   398.51), SIMDE_FLOAT64_C(   -46.43),
                         SIMDE_FLOAT64_C(   513.04), SIMDE_FLOAT64_C(   743.92), SIMDE_FLOAT64_C(   393.06), SIMDE_FLOAT64_C(   412.28));
  e = simde_mm512_set_pd(SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(   320.63),
                         SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(   454.98));
  r = simde_mm512_maskz_range_pd(UINT8_C( 17), a, b, INT32_C(          11));
  simde_test_x86_assert_equal_f64x8(r, e, 1);

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde__mmask8 k = simde_test_x86_random_mmask8();
    simde__m512d a = simde_test_x86_random_f64x8(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
    simde__m512d b = simde_test_x86_random_f64x8(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
    int imm8 = simde_test_codegen_rand() & 15;
    simde__m512d r;
    SIMDE_CONSTIFY_16_(simde_mm512_maskz_range_pd, r, simde_mm512_setzero_pd(), imm8, k, a, b);

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

static int
test_simde_x_mm_range_ss (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    const simde_float32 a[4];
    const simde_float32 b[4];
    const int imm8;
    const simde_float32 r[4];
  } test_vec[] = {
    { { SIMDE_FLOAT32_C(   947.75), SIMDE_FLOAT32_C(   -97.20), SIMDE_FLOAT32_C(  -691.97), SIMDE_FLOAT32_C(   313.76) },
      { SIMDE_FLOAT32_C(   791.74), SIMDE_FLOAT32_C(  -857.28), SIMDE_FLOAT32_C(   290.69), SIMDE_FLOAT32_C(   907.53) },
       INT32_C(           6),
      { SIMDE_FLOAT32_C(   791.74), SIMDE_FLOAT32_C(   -97.20), SIMDE_FLOAT32_C(  -691.97), SIMDE_FLOAT32_C(   313.76) } },
    { { SIMDE_FLOAT32_C(  -548.75), SIMDE_FLOAT32_C(   688.48), SIMDE_FLOAT32_C(   890.89), SIMDE_FLOAT32_C(  -755.30) },
      { SIMDE_FLOAT32_C(   429.14), SIMDE_FLOAT32_C(   889.39), SIMDE_FLOAT32_C(  -136.81), SIMDE_FLOAT32_C(  -718.79) },
       INT32_C(           3),
      { SIMDE_FLOAT32_C(  -548.75), SIMDE_FLOAT32_C(   688.48), SIMDE_FLOAT32_C(   890.89), SIMDE_FLOAT32_C(  -755.30) } },
    { { SIMDE_FLOAT32_C(   -45.09), SIMDE_FLOAT32_C(   230.04), SIMDE_FLOAT32_C(   811.99), SIMDE_FLOAT32_C(  -653.58) },
      { SIMDE_FLOAT32_C(  -585.24), SIMDE_FLOAT32_C(  -266.32), SIMDE_FLOAT32_C(  -546.18), SIMDE_FLOAT32_C(   265.52) },
       INT32_C(           8),
      { SIMDE_FLOAT32_C(   585.24), SIMDE_FLOAT32_C(   230.04), SIMDE_FLOAT32_C(   811.99), SIMDE_FLOAT32_C(  -653.58) } },
    { { SIMDE_FLOAT32_C(   324.35), SIMDE_FLOAT32_C(   785.92), SIMDE_FLOAT32_C(   409.14), SIMDE_FLOAT32_C(  -154.92) },
      { SIMDE_FLOAT32_C(   733.67), SIMDE_FLOAT32_C(  -688.06), SIMDE_FLOAT32_C(   153.11), SIMDE_FLOAT32_C(    47.43) },
       INT32_C(          14),
      { SIMDE_FLOAT32_C(  -324.35), SIMDE_FLOAT32_C(   785.92), SIMDE_FLOAT32_C(   409.14), SIMDE_FLOAT32_C(  -154.92) } },
    { { SIMDE_FLOAT32_C(   295.83), SIMDE_FLOAT32_C(  -661.88), SIMDE_FLOAT32_C(  -988.80), SIMDE_FLOAT32_C(  -430.24) },
      { SIMDE_FLOAT32_C(  -210.63), SIMDE_FLOAT32_C(   699.69), SIMDE_FLOAT32_C(  -539.35), SIMDE_FLOAT32_C(    34.06) },
       INT32_C(          14),
      { SIMDE_FLOAT32_C(  -210.63), SIMDE_FLOAT32_C(  -661.88), SIMDE_FLOAT32_C(  -988.80), SIMDE_FLOAT32_C(  -430.24) } },
    { { SIMDE_FLOAT32_C(  -649.97), SIMDE_FLOAT32_C(   897.25), SIMDE_FLOAT32_C(   410.05), SIMDE_FLOAT32_C(  -334.38) },
      { SIMDE_FLOAT32_C(  -147.84), SIMDE_FLOAT32_C(  -359.91), SIMDE_FLOAT32_C(  -522.39), SIMDE_FLOAT32_C(   198.57) },
       INT32_C(           5),
      { SIMDE_FLOAT32_C(  -147.84), SIMDE_FLOAT32_C(   897.25), SIMDE_FLOAT32_C(   410.05), SIMDE_FLOAT32_C(  -334.38) } },
    { { SIMDE_FLOAT32_C(   211.29), SIMDE_FLOAT32_C(   652.40), SIMDE_FLOAT32_C(  -679.63), SIMDE_FLOAT32_C(  -382.50) },
      { SIMDE_FLOAT32_C(   -23.25), SIMDE_FLOAT32_C(  -893.71), SIMDE_FLOAT32_C(  -973.36), SIMDE_FLOAT32_C(   821.82) },
       INT32_C(          12),
      { SIMDE_FLOAT32_C(   -23.25), SIMDE_FLOAT32_C(   652.40), SIMDE_FLOAT32_C(  -679.63), SIMDE_FLOAT32_C(  -382.50) } },
    { { SIMDE_FLOAT32_C(  -661.42), SIMDE_FLOAT32_C(   -25.07), SIMDE_FLOAT32_C(  -112.61), SIMDE_FLOAT32_C(  -557.75) },
      { SIMDE_FLOAT32_C(  -729.24), SIMDE_FLOAT32_C(   225.51), SIMDE_FLOAT32_C(  -546.54), SIMDE_FLOAT32_C(  -159.48) },
       INT32_C(           8),
      { SIMDE_FLOAT32_C(   729.24), SIMDE_FLOAT32_C(   -25.07), SIMDE_FLOAT32_C(  -112.61), SIMDE_FLOAT32_C(  -557.75) } },
  };

  simde__m128 a, b, r;

  a = simde_mm_loadu_ps(test_vec[0].a);
  b = simde_mm_loadu_ps(test_vec[0].b);
  r = simde_x_mm_range_ss(a, b, INT32_C(           6));
  simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[0].r), 1);

  a = simde_mm_loadu_ps(test_vec[1].a);
  b = simde_mm_loadu_ps(test_vec[1].b);
  r = simde_x_mm_range_ss(a, b, INT32_C(           3));
  simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[1].r), 1);

  a = simde_mm_loadu_ps(test_vec[2].a);
  b = simde_mm_loadu_ps(test_vec[2].b);
  r = simde_x_mm_range_ss(a, b, INT32_C(           8));
  simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[2].r), 1);

  a = simde_mm_loadu_ps(test_vec[3].a);
  b = simde_mm_loadu_ps(test_vec[3].b);
  r = simde_x_mm_range_ss(a, b, INT32_C(          14));
  simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[3].r), 1);

  a = simde_mm_loadu_ps(test_vec[4].a);
  b = simde_mm_loadu_ps(test_vec[4].b);
  r = simde_x_mm_range_ss(a, b, INT32_C(          14));
  simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[4].r), 1);

  a = simde_mm_loadu_ps(test_vec[5].a);
  b = simde_mm_loadu_ps(test_vec[5].b);
  r = simde_x_mm_range_ss(a, b, INT32_C(           5));
  simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[5].r), 1);

  a = simde_mm_loadu_ps(test_vec[6].a);
  b = simde_mm_loadu_ps(test_vec[6].b);
  r = simde_x_mm_range_ss(a, b, INT32_C(           12));
  simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[6].r), 1);

  a = simde_mm_loadu_ps(test_vec[7].a);
  b = simde_mm_loadu_ps(test_vec[7].b);
  r = simde_x_mm_range_ss(a, b, INT32_C(           8));
  simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[7].r), 1);

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde__m128 a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
    simde__m128 b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
    int imm8 = simde_test_codegen_rand() & 15;
    simde__m128 r;
    SIMDE_CONSTIFY_16_(simde_x_mm_range_ss, r, simde_mm_setzero_ps(), imm8, a, b);

    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_codegen_write_i32(2, imm8, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_f32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_mm_mask_range_ss (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    const simde_float32 src[4];
    const simde__mmask8 k;
    const simde_float32 a[4];
    const simde_float32 b[4];
    const int imm8;
    const simde_float32 r[4];
  } test_vec[] = {
    { { SIMDE_FLOAT32_C(   -57.69), SIMDE_FLOAT32_C(   161.65), SIMDE_FLOAT32_C(  -852.14), SIMDE_FLOAT32_C(   635.17) },
      UINT8_C( 52),
      { SIMDE_FLOAT32_C(   468.35), SIMDE_FLOAT32_C(   724.81), SIMDE_FLOAT32_C(   577.52), SIMDE_FLOAT32_C(   574.19) },
      { SIMDE_FLOAT32_C(   277.24), SIMDE_FLOAT32_C(   787.90), SIMDE_FLOAT32_C(   160.06), SIMDE_FLOAT32_C(   -11.06) },
       INT32_C(           5),
      { SIMDE_FLOAT32_C(   -57.69), SIMDE_FLOAT32_C(   724.81), SIMDE_FLOAT32_C(   577.52), SIMDE_FLOAT32_C(   574.19) } },
    { { SIMDE_FLOAT32_C(  -380.86), SIMDE_FLOAT32_C(   579.10), SIMDE_FLOAT32_C(   673.02), SIMDE_FLOAT32_C(   346.64) },
      UINT8_C(213),
      { SIMDE_FLOAT32_C(   901.03), SIMDE_FLOAT32_C(   930.89), SIMDE_FLOAT32_C(  -191.46), SIMDE_FLOAT32_C(   441.50) },
      { SIMDE_FLOAT32_C(  -285.40), SIMDE_FLOAT32_C(   166.01), SIMDE_FLOAT32_C(   358.79), SIMDE_FLOAT32_C(   892.65) },
       INT32_C(           2),
      { SIMDE_FLOAT32_C(   285.40), SIMDE_FLOAT32_C(   930.89), SIMDE_FLOAT32_C(  -191.46), SIMDE_FLOAT32_C(   441.50) } },
    { { SIMDE_FLOAT32_C(   514.76), SIMDE_FLOAT32_C(  -820.75), SIMDE_FLOAT32_C(   636.79), SIMDE_FLOAT32_C(  -542.93) },
      UINT8_C( 94),
      { SIMDE_FLOAT32_C(   784.64), SIMDE_FLOAT32_C(  -907.77), SIMDE_FLOAT32_C(  -431.78), SIMDE_FLOAT32_C(   252.99) },
      { SIMDE_FLOAT32_C(   817.04), SIMDE_FLOAT32_C(  -854.26), SIMDE_FLOAT32_C(  -172.82), SIMDE_FLOAT32_C(    94.28) },
       INT32_C(           8),
      { SIMDE_FLOAT32_C(   514.76), SIMDE_FLOAT32_C(  -907.77), SIMDE_FLOAT32_C(  -431.78), SIMDE_FLOAT32_C(   252.99) } },
    { { SIMDE_FLOAT32_C(   987.24), SIMDE_FLOAT32_C(  -916.78), SIMDE_FLOAT32_C(  -756.04), SIMDE_FLOAT32_C(  -393.62) },
      UINT8_C( 38),
      { SIMDE_FLOAT32_C(   916.98), SIMDE_FLOAT32_C(   953.02), SIMDE_FLOAT32_C(   305.22), SIMDE_FLOAT32_C(   818.01) },
      { SIMDE_FLOAT32_C(   883.91), SIMDE_FLOAT32_C(  -886.23), SIMDE_FLOAT32_C(   259.51), SIMDE_FLOAT32_C(  -401.49) },
       INT32_C(           9),
      { SIMDE_FLOAT32_C(   987.24), SIMDE_FLOAT32_C(   953.02), SIMDE_FLOAT32_C(   305.22), SIMDE_FLOAT32_C(   818.01) } },
    { { SIMDE_FLOAT32_C(  -381.70), SIMDE_FLOAT32_C(  -508.84), SIMDE_FLOAT32_C(  -780.32), SIMDE_FLOAT32_C(  -866.94) },
      UINT8_C( 11),
      { SIMDE_FLOAT32_C(   856.47), SIMDE_FLOAT32_C(  -409.87), SIMDE_FLOAT32_C(  -988.68), SIMDE_FLOAT32_C(   641.11) },
      { SIMDE_FLOAT32_C(  -317.64), SIMDE_FLOAT32_C(  -420.46), SIMDE_FLOAT32_C(  -105.90), SIMDE_FLOAT32_C(  -500.59) },
       INT32_C(           0),
      { SIMDE_FLOAT32_C(   317.64), SIMDE_FLOAT32_C(  -409.87), SIMDE_FLOAT32_C(  -988.68), SIMDE_FLOAT32_C(   641.11) } },
    { { SIMDE_FLOAT32_C(   721.27), SIMDE_FLOAT32_C(   593.69), SIMDE_FLOAT32_C(  -341.09), SIMDE_FLOAT32_C(   708.51) },
      UINT8_C(181),
      { SIMDE_FLOAT32_C(   -97.13), SIMDE_FLOAT32_C(  -685.11), SIMDE_FLOAT32_C(   339.23), SIMDE_FLOAT32_C(  -180.15) },
      { SIMDE_FLOAT32_C(  -732.09), SIMDE_FLOAT32_C(  -355.55), SIMDE_FLOAT32_C(  -362.14), SIMDE_FLOAT32_C(  -848.18) },
       INT32_C(           5),
      { SIMDE_FLOAT32_C(   -97.13), SIMDE_FLOAT32_C(  -685.11), SIMDE_FLOAT32_C(   339.23), SIMDE_FLOAT32_C(  -180.15) } },
    { { SIMDE_FLOAT32_C(   897.37), SIMDE_FLOAT32_C(  -249.67), SIMDE_FLOAT32_C(  -962.01), SIMDE_FLOAT32_C(  -484.33) },
         UINT8_MAX,
      { SIMDE_FLOAT32_C(  -742.32), SIMDE_FLOAT32_C(  -351.27), SIMDE_FLOAT32_C(   911.91), SIMDE_FLOAT32_C(  -885.86) },
      { SIMDE_FLOAT32_C(   238.86), SIMDE_FLOAT32_C(   923.22), SIMDE_FLOAT32_C(   755.25), SIMDE_FLOAT32_C(   921.23) },
       INT32_C(           1),
      { SIMDE_FLOAT32_C(  -238.86), SIMDE_FLOAT32_C(  -351.27), SIMDE_FLOAT32_C(   911.91), SIMDE_FLOAT32_C(  -885.86) } },
    { { SIMDE_FLOAT32_C(  -350.65), SIMDE_FLOAT32_C(  -579.36), SIMDE_FLOAT32_C(   228.04), SIMDE_FLOAT32_C(  -629.38) },
      UINT8_C( 81),
      { SIMDE_FLOAT32_C(   886.95), SIMDE_FLOAT32_C(  -920.86), SIMDE_FLOAT32_C(   691.24), SIMDE_FLOAT32_C(  -210.18) },
      { SIMDE_FLOAT32_C(  -605.97), SIMDE_FLOAT32_C(    30.47), SIMDE_FLOAT32_C(   609.67), SIMDE_FLOAT32_C(  -338.06) },
       INT32_C(           9),
      { SIMDE_FLOAT32_C(   886.95), SIMDE_FLOAT32_C(  -920.86), SIMDE_FLOAT32_C(   691.24), SIMDE_FLOAT32_C(  -210.18) } },
  };

  simde__m128 src, a, b, r;

  src = simde_mm_loadu_ps(test_vec[0].src);
  a = simde_mm_loadu_ps(test_vec[0].a);
  b = simde_mm_loadu_ps(test_vec[0].b);
  r = simde_mm_mask_range_ss(src, test_vec[0].k, a, b, INT32_C(           5));
  simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[0].r), 1);

  src = simde_mm_loadu_ps(test_vec[1].src);
  a = simde_mm_loadu_ps(test_vec[1].a);
  b = simde_mm_loadu_ps(test_vec[1].b);
  r = simde_mm_mask_range_ss(src, test_vec[1].k, a, b, INT32_C(           2));
  simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[1].r), 1);

  src = simde_mm_loadu_ps(test_vec[2].src);
  a = simde_mm_loadu_ps(test_vec[2].a);
  b = simde_mm_loadu_ps(test_vec[2].b);
  r = simde_mm_mask_range_ss(src, test_vec[2].k, a, b, INT32_C(           8));
  simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[2].r), 1);

  src = simde_mm_loadu_ps(test_vec[3].src);
  a = simde_mm_loadu_ps(test_vec[3].a);
  b = simde_mm_loadu_ps(test_vec[3].b);
  r = simde_mm_mask_range_ss(src, test_vec[3].k, a, b, INT32_C(           9));
  simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[3].r), 1);

  src = simde_mm_loadu_ps(test_vec[4].src);
  a = simde_mm_loadu_ps(test_vec[4].a);
  b = simde_mm_loadu_ps(test_vec[4].b);
  r = simde_mm_mask_range_ss(src, test_vec[4].k, a, b, INT32_C(           0));
  simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[4].r), 1);

  src = simde_mm_loadu_ps(test_vec[5].src);
  a = simde_mm_loadu_ps(test_vec[5].a);
  b = simde_mm_loadu_ps(test_vec[5].b);
  r = simde_mm_mask_range_ss(src, test_vec[5].k, a, b, INT32_C(           5));
  simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[5].r), 1);

  src = simde_mm_loadu_ps(test_vec[6].src);
  a = simde_mm_loadu_ps(test_vec[6].a);
  b = simde_mm_loadu_ps(test_vec[6].b);
  r = simde_mm_mask_range_ss(src, test_vec[6].k, a, b, INT32_C(           1));
  simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[6].r), 1);

  src = simde_mm_loadu_ps(test_vec[7].src);
  a = simde_mm_loadu_ps(test_vec[7].a);
  b = simde_mm_loadu_ps(test_vec[7].b);
  r = simde_mm_mask_range_ss(src, test_vec[7].k, a, b, INT32_C(           9));
  simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[7].r), 1);

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde__m128 src = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
    simde__mmask8 k = simde_test_x86_random_mmask8();
    simde__m128 a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
    simde__m128 b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
    int imm8 = simde_test_codegen_rand() & 15;
    simde__m128 r;
    SIMDE_CONSTIFY_16_(simde_mm_mask_range_ss, r, simde_mm_setzero_ps(), imm8, src, k, a, b);

    simde_test_x86_write_f32x4(2, src, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_x86_write_mmask8(2, k, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_codegen_write_i32(2, imm8, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_f32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_mm_maskz_range_ss (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    const simde__mmask8 k;
    const simde_float32 a[4];
    const simde_float32 b[4];
    const int imm8;
    const simde_float32 r[4];
  } test_vec[] = {
    { UINT8_C( 87),
      { SIMDE_FLOAT32_C(  -186.23), SIMDE_FLOAT32_C(  -566.86), SIMDE_FLOAT32_C(  -855.11), SIMDE_FLOAT32_C(   564.10) },
      { SIMDE_FLOAT32_C(  -528.86), SIMDE_FLOAT32_C(  -339.43), SIMDE_FLOAT32_C(  -194.41), SIMDE_FLOAT32_C(  -271.19) },
       INT32_C(           0),
      { SIMDE_FLOAT32_C(  -528.86), SIMDE_FLOAT32_C(  -566.86), SIMDE_FLOAT32_C(  -855.11), SIMDE_FLOAT32_C(   564.10) } },
    { UINT8_C( 73),
      { SIMDE_FLOAT32_C(  -157.04), SIMDE_FLOAT32_C(  -451.84), SIMDE_FLOAT32_C(  -359.27), SIMDE_FLOAT32_C(  -401.79) },
      { SIMDE_FLOAT32_C(  -530.61), SIMDE_FLOAT32_C(   143.49), SIMDE_FLOAT32_C(   247.56), SIMDE_FLOAT32_C(  -109.97) },
       INT32_C(           1),
      { SIMDE_FLOAT32_C(  -157.04), SIMDE_FLOAT32_C(  -451.84), SIMDE_FLOAT32_C(  -359.27), SIMDE_FLOAT32_C(  -401.79) } },
    { UINT8_C( 66),
      { SIMDE_FLOAT32_C(   -95.65), SIMDE_FLOAT32_C(  -741.53), SIMDE_FLOAT32_C(   697.32), SIMDE_FLOAT32_C(  -404.41) },
      { SIMDE_FLOAT32_C(    48.29), SIMDE_FLOAT32_C(  -908.65), SIMDE_FLOAT32_C(   626.06), SIMDE_FLOAT32_C(  -342.04) },
       INT32_C(          12),
      { SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -741.53), SIMDE_FLOAT32_C(   697.32), SIMDE_FLOAT32_C(  -404.41) } },
    { UINT8_C( 29),
      { SIMDE_FLOAT32_C(   -94.52), SIMDE_FLOAT32_C(   567.06), SIMDE_FLOAT32_C(   734.13), SIMDE_FLOAT32_C(    50.37) },
      { SIMDE_FLOAT32_C(   131.16), SIMDE_FLOAT32_C(  -794.74), SIMDE_FLOAT32_C(   710.94), SIMDE_FLOAT32_C(   936.75) },
       INT32_C(          12),
      { SIMDE_FLOAT32_C(   -94.52), SIMDE_FLOAT32_C(   567.06), SIMDE_FLOAT32_C(   734.13), SIMDE_FLOAT32_C(    50.37) } },
    { UINT8_C( 54),
      { SIMDE_FLOAT32_C(  -345.75), SIMDE_FLOAT32_C(   777.03), SIMDE_FLOAT32_C(   568.40), SIMDE_FLOAT32_C(   294.98) },
      { SIMDE_FLOAT32_C(  -624.76), SIMDE_FLOAT32_C(  -962.21), SIMDE_FLOAT32_C(  -561.53), SIMDE_FLOAT32_C(   622.80) },
       INT32_C(           1),
      { SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   777.03), SIMDE_FLOAT32_C(   568.40), SIMDE_FLOAT32_C(   294.98) } },
    { UINT8_C(178),
      { SIMDE_FLOAT32_C(   240.99), SIMDE_FLOAT32_C(   832.17), SIMDE_FLOAT32_C(    68.47), SIMDE_FLOAT32_C(   -61.69) },
      { SIMDE_FLOAT32_C(  -572.24), SIMDE_FLOAT32_C(  -883.24), SIMDE_FLOAT32_C(    29.66), SIMDE_FLOAT32_C(  -946.18) },
       INT32_C(           3),
      { SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   832.17), SIMDE_FLOAT32_C(    68.47), SIMDE_FLOAT32_C(   -61.69) } },
    { UINT8_C(138),
      { SIMDE_FLOAT32_C(   354.81), SIMDE_FLOAT32_C(   680.19), SIMDE_FLOAT32_C(   350.02), SIMDE_FLOAT32_C(    88.93) },
      { SIMDE_FLOAT32_C(  -269.44), SIMDE_FLOAT32_C(  -518.83), SIMDE_FLOAT32_C(   294.20), SIMDE_FLOAT32_C(  -558.50) },
       INT32_C(          13),
      { SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   680.19), SIMDE_FLOAT32_C(   350.02), SIMDE_FLOAT32_C(    88.93) } },
    { UINT8_C(129),
      { SIMDE_FLOAT32_C(   461.74), SIMDE_FLOAT32_C(    72.18), SIMDE_FLOAT32_C(  -994.69), SIMDE_FLOAT32_C(    30.14) },
      { SIMDE_FLOAT32_C(  -632.84), SIMDE_FLOAT32_C(  -619.45), SIMDE_FLOAT32_C(    67.93), SIMDE_FLOAT32_C(  -194.38) },
       INT32_C(           4),
      { SIMDE_FLOAT32_C(  -632.84), SIMDE_FLOAT32_C(    72.18), SIMDE_FLOAT32_C(  -994.69), SIMDE_FLOAT32_C(    30.14) } },
  };

  simde__m128 a, b, r;

  a = simde_mm_loadu_ps(test_vec[0].a);
  b = simde_mm_loadu_ps(test_vec[0].b);
  r = simde_mm_maskz_range_ss(test_vec[0].k, a, b, INT32_C(           0));
  simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[0].r), 1);

  a = simde_mm_loadu_ps(test_vec[1].a);
  b = simde_mm_loadu_ps(test_vec[1].b);
  r = simde_mm_maskz_range_ss(test_vec[1].k, a, b, INT32_C(           1));
  simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[1].r), 1);

  a = simde_mm_loadu_ps(test_vec[2].a);
  b = simde_mm_loadu_ps(test_vec[2].b);
  r = simde_mm_maskz_range_ss(test_vec[2].k, a, b, INT32_C(          12));
  simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[2].r), 1);

  a = simde_mm_loadu_ps(test_vec[3].a);
  b = simde_mm_loadu_ps(test_vec[3].b);
  r = simde_mm_maskz_range_ss(test_vec[3].k, a, b, INT32_C(          12));
  simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[3].r), 1);

  a = simde_mm_loadu_ps(test_vec[4].a);
  b = simde_mm_loadu_ps(test_vec[4].b);
  r = simde_mm_maskz_range_ss(test_vec[4].k, a, b, INT32_C(           1));
  simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[4].r), 1);

  a = simde_mm_loadu_ps(test_vec[5].a);
  b = simde_mm_loadu_ps(test_vec[5].b);
  r = simde_mm_maskz_range_ss(test_vec[5].k, a, b, INT32_C(           2));
  simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[5].r), 1);

  a = simde_mm_loadu_ps(test_vec[6].a);
  b = simde_mm_loadu_ps(test_vec[6].b);
  r = simde_mm_maskz_range_ss(test_vec[6].k, a, b, INT32_C(          13));
  simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[6].r), 1);

  a = simde_mm_loadu_ps(test_vec[7].a);
  b = simde_mm_loadu_ps(test_vec[7].b);
  r = simde_mm_maskz_range_ss(test_vec[7].k, a, b, INT32_C(           4));
  simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[7].r), 1);

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde__mmask8 k = simde_test_x86_random_mmask8();
    simde__m128 a = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
    simde__m128 b = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
    int imm8 = simde_test_codegen_rand() & 15;
    simde__m128 r;
    SIMDE_CONSTIFY_16_(simde_mm_maskz_range_ss, r, simde_mm_setzero_ps(), imm8, k, a, b);

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

static int
test_simde_x_mm_range_sd (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    const simde_float64 a[2];
    const simde_float64 b[2];
    const int imm8;
    const simde_float64 r[2];
  } test_vec[] = {
    { { SIMDE_FLOAT64_C(   303.71), SIMDE_FLOAT64_C(   529.35) },
      { SIMDE_FLOAT64_C(   873.73), SIMDE_FLOAT64_C(    90.41) },
       INT32_C(           8),
      { SIMDE_FLOAT64_C(   303.71), SIMDE_FLOAT64_C(   529.35) } },
    { { SIMDE_FLOAT64_C(   435.31), SIMDE_FLOAT64_C(     7.29) },
      { SIMDE_FLOAT64_C(  -660.60), SIMDE_FLOAT64_C(   738.01) },
       INT32_C(           0),
      { SIMDE_FLOAT64_C(   660.60), SIMDE_FLOAT64_C(     7.29) } },
    { { SIMDE_FLOAT64_C(  -704.98), SIMDE_FLOAT64_C(  -155.73) },
      { SIMDE_FLOAT64_C(  -431.88), SIMDE_FLOAT64_C(   554.77) },
       INT32_C(           9),
      { SIMDE_FLOAT64_C(   431.88), SIMDE_FLOAT64_C(  -155.73) } },
    { { SIMDE_FLOAT64_C(   586.62), SIMDE_FLOAT64_C(  -121.06) },
      { SIMDE_FLOAT64_C(   520.15), SIMDE_FLOAT64_C(   384.57) },
       INT32_C(           5),
      { SIMDE_FLOAT64_C(   586.62), SIMDE_FLOAT64_C(  -121.06) } },
    { { SIMDE_FLOAT64_C(   -80.52), SIMDE_FLOAT64_C(     0.12) },
      { SIMDE_FLOAT64_C(  -109.85), SIMDE_FLOAT64_C(   256.11) },
       INT32_C(          14),
      { SIMDE_FLOAT64_C(   -80.52), SIMDE_FLOAT64_C(     0.12) } },
    { { SIMDE_FLOAT64_C(  -228.78), SIMDE_FLOAT64_C(  -140.83) },
      { SIMDE_FLOAT64_C(   360.44), SIMDE_FLOAT64_C(  -282.81) },
       INT32_C(           6),
      { SIMDE_FLOAT64_C(  -228.78), SIMDE_FLOAT64_C(  -140.83) } },
    { { SIMDE_FLOAT64_C(  -452.84), SIMDE_FLOAT64_C(  -979.10) },
      { SIMDE_FLOAT64_C(  -447.11), SIMDE_FLOAT64_C(  -579.11) },
       INT32_C(          11),
      { SIMDE_FLOAT64_C(   452.84), SIMDE_FLOAT64_C(  -979.10) } },
    { { SIMDE_FLOAT64_C(   268.05), SIMDE_FLOAT64_C(   856.20) },
      { SIMDE_FLOAT64_C(  -881.39), SIMDE_FLOAT64_C(   607.45) },
       INT32_C(           5),
      { SIMDE_FLOAT64_C(   268.05), SIMDE_FLOAT64_C(   856.20) } },
  };

  simde__m128d a, b, r;

  a = simde_mm_loadu_pd(test_vec[0].a);
  b = simde_mm_loadu_pd(test_vec[0].b);
  r = simde_x_mm_range_sd(a, b, INT32_C(           8));
  simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[0].r), 1);

  a = simde_mm_loadu_pd(test_vec[1].a);
  b = simde_mm_loadu_pd(test_vec[1].b);
  r = simde_x_mm_range_sd(a, b, INT32_C(           0));
  simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[1].r), 1);

  a = simde_mm_loadu_pd(test_vec[2].a);
  b = simde_mm_loadu_pd(test_vec[2].b);
  r = simde_x_mm_range_sd(a, b, INT32_C(           9));
  simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[2].r), 1);

  a = simde_mm_loadu_pd(test_vec[3].a);
  b = simde_mm_loadu_pd(test_vec[3].b);
  r = simde_x_mm_range_sd(a, b, INT32_C(           5));
  simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[3].r), 1);

  a = simde_mm_loadu_pd(test_vec[4].a);
  b = simde_mm_loadu_pd(test_vec[4].b);
  r = simde_x_mm_range_sd(a, b, INT32_C(           14));
  simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[4].r), 1);

  a = simde_mm_loadu_pd(test_vec[5].a);
  b = simde_mm_loadu_pd(test_vec[5].b);
  r = simde_x_mm_range_sd(a, b, INT32_C(            6));
  simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[5].r), 1);

  a = simde_mm_loadu_pd(test_vec[6].a);
  b = simde_mm_loadu_pd(test_vec[6].b);
  r = simde_x_mm_range_sd(a, b, INT32_C(           11));
  simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[6].r), 1);

  a = simde_mm_loadu_pd(test_vec[7].a);
  b = simde_mm_loadu_pd(test_vec[7].b);
  r = simde_x_mm_range_sd(a, b, INT32_C(            5));
  simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[7].r), 1);

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde__m128d a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
    simde__m128d b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
    int imm8 = simde_test_codegen_rand() & 15;
    simde__m128d r;
    SIMDE_CONSTIFY_16_(simde_x_mm_range_sd, r, simde_mm_setzero_pd(), imm8, a, b);

    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_codegen_write_i32(2, imm8, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_f64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_mm_mask_range_sd (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    const simde_float64 src[2];
    const simde__mmask8 k;
    const simde_float64 a[2];
    const simde_float64 b[2];
    const int imm8;
    const simde_float64 r[2];
  } test_vec[] = {
    { { SIMDE_FLOAT64_C(   233.87), SIMDE_FLOAT64_C(  -459.39) },
      UINT8_C(157),
      { SIMDE_FLOAT64_C(    72.78), SIMDE_FLOAT64_C(   522.02) },
      { SIMDE_FLOAT64_C(  -642.47), SIMDE_FLOAT64_C(   396.59) },
       INT32_C(           4),
      { SIMDE_FLOAT64_C(  -642.47), SIMDE_FLOAT64_C(   522.02) } },
    { { SIMDE_FLOAT64_C(  -430.17), SIMDE_FLOAT64_C(   351.20) },
      UINT8_C(216),
      { SIMDE_FLOAT64_C(  -280.98), SIMDE_FLOAT64_C(  -547.40) },
      { SIMDE_FLOAT64_C(  -695.26), SIMDE_FLOAT64_C(  -362.72) },
       INT32_C(           2),
      { SIMDE_FLOAT64_C(  -430.17), SIMDE_FLOAT64_C(  -547.40) } },
    { { SIMDE_FLOAT64_C(  -391.21), SIMDE_FLOAT64_C(  -190.43) },
      UINT8_C(242),
      { SIMDE_FLOAT64_C(   422.87), SIMDE_FLOAT64_C(    12.55) },
      { SIMDE_FLOAT64_C(  -439.83), SIMDE_FLOAT64_C(   770.04) },
       INT32_C(          14),
      { SIMDE_FLOAT64_C(  -391.21), SIMDE_FLOAT64_C(    12.55) } },
    { { SIMDE_FLOAT64_C(   363.45), SIMDE_FLOAT64_C(  -802.30) },
      UINT8_C(140),
      { SIMDE_FLOAT64_C(   744.84), SIMDE_FLOAT64_C(   780.99) },
      { SIMDE_FLOAT64_C(  -987.02), SIMDE_FLOAT64_C(   695.51) },
       INT32_C(          13),
      { SIMDE_FLOAT64_C(   363.45), SIMDE_FLOAT64_C(   780.99) } },
    { { SIMDE_FLOAT64_C(  -446.41), SIMDE_FLOAT64_C(  -577.07) },
      UINT8_C(242),
      { SIMDE_FLOAT64_C(  -924.38), SIMDE_FLOAT64_C(  -219.54) },
      { SIMDE_FLOAT64_C(   484.24), SIMDE_FLOAT64_C(   -87.33) },
       INT32_C(           5),
      { SIMDE_FLOAT64_C(  -446.41), SIMDE_FLOAT64_C(  -219.54) } },
    { { SIMDE_FLOAT64_C(  -164.56), SIMDE_FLOAT64_C(  -940.26) },
      UINT8_C(  0),
      { SIMDE_FLOAT64_C(   288.03), SIMDE_FLOAT64_C(  -635.52) },
      { SIMDE_FLOAT64_C(  -293.41), SIMDE_FLOAT64_C(   491.32) },
       INT32_C(           1),
      { SIMDE_FLOAT64_C(  -164.56), SIMDE_FLOAT64_C(  -635.52) } },
    { { SIMDE_FLOAT64_C(   516.16), SIMDE_FLOAT64_C(   674.11) },
      UINT8_C(205),
      { SIMDE_FLOAT64_C(  -471.29), SIMDE_FLOAT64_C(  -765.72) },
      { SIMDE_FLOAT64_C(  -833.83), SIMDE_FLOAT64_C(  -535.27) },
       INT32_C(          10),
      { SIMDE_FLOAT64_C(   471.29), SIMDE_FLOAT64_C(  -765.72) } },
    { { SIMDE_FLOAT64_C(  -636.12), SIMDE_FLOAT64_C(  -587.71) },
      UINT8_C(118),
      { SIMDE_FLOAT64_C(  -855.13), SIMDE_FLOAT64_C(  -574.73) },
      { SIMDE_FLOAT64_C(    38.07), SIMDE_FLOAT64_C(   159.73) },
       INT32_C(           0),
      { SIMDE_FLOAT64_C(  -636.12), SIMDE_FLOAT64_C(  -574.73) } },
  };

  simde__m128d src, a, b, r;

  src = simde_mm_loadu_pd(test_vec[0].src);
  a = simde_mm_loadu_pd(test_vec[0].a);
  b = simde_mm_loadu_pd(test_vec[0].b);
  r = simde_mm_mask_range_sd(src, test_vec[0].k, a, b, INT32_C(           4));
  simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[0].r), 1);

  src = simde_mm_loadu_pd(test_vec[1].src);
  a = simde_mm_loadu_pd(test_vec[1].a);
  b = simde_mm_loadu_pd(test_vec[1].b);
  r = simde_mm_mask_range_sd(src, test_vec[1].k, a, b, INT32_C(           2));
  simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[1].r), 1);

  src = simde_mm_loadu_pd(test_vec[2].src);
  a = simde_mm_loadu_pd(test_vec[2].a);
  b = simde_mm_loadu_pd(test_vec[2].b);
  r = simde_mm_mask_range_sd(src, test_vec[2].k, a, b, INT32_C(          14));
  simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[2].r), 1);

  src = simde_mm_loadu_pd(test_vec[3].src);
  a = simde_mm_loadu_pd(test_vec[3].a);
  b = simde_mm_loadu_pd(test_vec[3].b);
  r = simde_mm_mask_range_sd(src, test_vec[3].k, a, b, INT32_C(          13));
  simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[3].r), 1);

  src = simde_mm_loadu_pd(test_vec[4].src);
  a = simde_mm_loadu_pd(test_vec[4].a);
  b = simde_mm_loadu_pd(test_vec[4].b);
  r = simde_mm_mask_range_sd(src, test_vec[4].k, a, b, INT32_C(           5));
  simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[4].r), 1);

  src = simde_mm_loadu_pd(test_vec[5].src);
  a = simde_mm_loadu_pd(test_vec[5].a);
  b = simde_mm_loadu_pd(test_vec[5].b);
  r = simde_mm_mask_range_sd(src, test_vec[5].k, a, b, INT32_C(           1));
  simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[5].r), 1);

  src = simde_mm_loadu_pd(test_vec[6].src);
  a = simde_mm_loadu_pd(test_vec[6].a);
  b = simde_mm_loadu_pd(test_vec[6].b);
  r = simde_mm_mask_range_sd(src, test_vec[6].k, a, b, INT32_C(          10));
  simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[6].r), 1);

  src = simde_mm_loadu_pd(test_vec[7].src);
  a = simde_mm_loadu_pd(test_vec[7].a);
  b = simde_mm_loadu_pd(test_vec[7].b);
  r = simde_mm_mask_range_sd(src, test_vec[7].k, a, b, INT32_C(           0));
  simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[7].r), 1);

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde__m128d src = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
    simde__mmask8 k = simde_test_x86_random_mmask8();
    simde__m128d a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
    simde__m128d b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
    int imm8 = simde_test_codegen_rand() & 15;
    simde__m128d r;
    SIMDE_CONSTIFY_16_(simde_mm_mask_range_sd, r, simde_mm_setzero_pd(), imm8, src, k, a, b);

    simde_test_x86_write_f64x2(2, src, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_x86_write_mmask8(2, k, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_codegen_write_i32(2, imm8, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_f64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_mm_maskz_range_sd (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    const simde__mmask8 k;
    const simde_float64 a[2];
    const simde_float64 b[2];
    const int imm8;
    const simde_float64 r[2];
  } test_vec[] = {
    { UINT8_C(210),
      { SIMDE_FLOAT64_C(   247.38), SIMDE_FLOAT64_C(    54.48) },
      { SIMDE_FLOAT64_C(  -758.53), SIMDE_FLOAT64_C(  -268.38) },
       INT32_C(           3),
      { SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(    54.48) } },
    { UINT8_C(116),
      { SIMDE_FLOAT64_C(   567.05), SIMDE_FLOAT64_C(  -973.11) },
      { SIMDE_FLOAT64_C(   661.06), SIMDE_FLOAT64_C(  -144.91) },
       INT32_C(           9),
      { SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(  -973.11) } },
    { UINT8_C(137),
      { SIMDE_FLOAT64_C(  -653.59), SIMDE_FLOAT64_C(   364.64) },
      { SIMDE_FLOAT64_C(   883.80), SIMDE_FLOAT64_C(  -979.48) },
       INT32_C(           8),
      { SIMDE_FLOAT64_C(   653.59), SIMDE_FLOAT64_C(   364.64) } },
    { UINT8_C( 86),
      { SIMDE_FLOAT64_C(  -745.20), SIMDE_FLOAT64_C(   926.95) },
      { SIMDE_FLOAT64_C(  -122.76), SIMDE_FLOAT64_C(   852.52) },
       INT32_C(           7),
      { SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(   926.95) } },
    { UINT8_C( 90),
      { SIMDE_FLOAT64_C(   195.09), SIMDE_FLOAT64_C(  -564.30) },
      { SIMDE_FLOAT64_C(   714.79), SIMDE_FLOAT64_C(  -766.84) },
       INT32_C(          11),
      { SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(  -564.30) } },
    { UINT8_C(171),
      { SIMDE_FLOAT64_C(   694.17), SIMDE_FLOAT64_C(  -157.20) },
      { SIMDE_FLOAT64_C(   748.14), SIMDE_FLOAT64_C(   935.63) },
       INT32_C(           4),
      { SIMDE_FLOAT64_C(   694.17), SIMDE_FLOAT64_C(  -157.20) } },
    { UINT8_C( 70),
      { SIMDE_FLOAT64_C(   527.38), SIMDE_FLOAT64_C(   141.48) },
      { SIMDE_FLOAT64_C(   742.18), SIMDE_FLOAT64_C(   188.44) },
       INT32_C(           3),
      { SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(   141.48) } },
    { UINT8_C(166),
      { SIMDE_FLOAT64_C(   556.09), SIMDE_FLOAT64_C(  -657.03) },
      { SIMDE_FLOAT64_C(   498.20), SIMDE_FLOAT64_C(   439.89) },
       INT32_C(           1),
      { SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(  -657.03) } },
  };

  simde__m128d  a, b, r;

  a = simde_mm_loadu_pd(test_vec[0].a);
  b = simde_mm_loadu_pd(test_vec[0].b);
  r = simde_mm_maskz_range_sd(test_vec[0].k, a, b, INT32_C(           3));
  simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[0].r), 1);

  a = simde_mm_loadu_pd(test_vec[1].a);
  b = simde_mm_loadu_pd(test_vec[1].b);
  r = simde_mm_maskz_range_sd(test_vec[1].k, a, b, INT32_C(           9));
  simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[1].r), 1);

  a = simde_mm_loadu_pd(test_vec[2].a);
  b = simde_mm_loadu_pd(test_vec[2].b);
  r = simde_mm_maskz_range_sd(test_vec[2].k, a, b, INT32_C(           8));
  simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[2].r), 1);

  a = simde_mm_loadu_pd(test_vec[3].a);
  b = simde_mm_loadu_pd(test_vec[3].b);
  r = simde_mm_maskz_range_sd(test_vec[3].k, a, b, INT32_C(           7));
  simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[3].r), 1);

  a = simde_mm_loadu_pd(test_vec[4].a);
  b = simde_mm_loadu_pd(test_vec[4].b);
  r = simde_mm_maskz_range_sd(test_vec[4].k, a, b, INT32_C(          11));
  simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[4].r), 1);

  a = simde_mm_loadu_pd(test_vec[5].a);
  b = simde_mm_loadu_pd(test_vec[5].b);
  r = simde_mm_maskz_range_sd(test_vec[5].k, a, b, INT32_C(           4));
  simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[5].r), 1);

  a = simde_mm_loadu_pd(test_vec[6].a);
  b = simde_mm_loadu_pd(test_vec[6].b);
  r = simde_mm_maskz_range_sd(test_vec[6].k, a, b, INT32_C(           3));
  simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[6].r), 1);

  a = simde_mm_loadu_pd(test_vec[7].a);
  b = simde_mm_loadu_pd(test_vec[7].b);
  r = simde_mm_maskz_range_sd(test_vec[7].k, a, b, INT32_C(           1));
  simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[7].r), 1);

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde__mmask8 k = simde_test_x86_random_mmask8();
    simde__m128d a = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
    simde__m128d b = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
    int imm8 = simde_test_codegen_rand() & 15;
    simde__m128d r;
    SIMDE_CONSTIFY_16_(simde_mm_maskz_range_sd, r, simde_mm_setzero_pd(), imm8, k, a, b);

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

SIMDE_TEST_FUNC_LIST_BEGIN
  SIMDE_TEST_FUNC_LIST_ENTRY(mm_range_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm_mask_range_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm_maskz_range_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_range_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_mask_range_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_maskz_range_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm512_range_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm512_mask_range_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm512_maskz_range_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm_range_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm_mask_range_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm_maskz_range_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_range_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_mask_range_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_maskz_range_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm512_range_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm512_mask_range_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm512_maskz_range_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(x_mm_range_ss)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm_mask_range_ss)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm_maskz_range_ss)
  SIMDE_TEST_FUNC_LIST_ENTRY(x_mm_range_sd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm_mask_range_sd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm_maskz_range_sd)
SIMDE_TEST_FUNC_LIST_END

#include <test/x86/avx512/test-avx512-footer.h>