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>
|