@@ -1652,6 +1652,166 @@ test_simde_mm_cmpistrz(SIMDE_MUNIT_TEST_ARGS) {
16521652 return 0 ;
16531653}
16541654
1655+ static int
1656+ test_simde_mm_cmpestra (SIMDE_MUNIT_TEST_ARGS ) {
1657+ const struct {
1658+ uint8_t a [16 ];
1659+ int la ;
1660+ uint8_t b [16 ];
1661+ int lb ;
1662+ int r ;
1663+ } test_vecu [] = {
1664+ { { UINT8_C ( 20 ), UINT8_C ( 10 ), UINT8_C ( 33 ), UINT8_C ( 56 ), UINT8_C ( 78 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ) },
1665+ 3 ,
1666+ { UINT8_C ( 20 ), UINT8_C ( 10 ), UINT8_C ( 34 ), UINT8_C ( 98 ), UINT8_C (127 ), UINT8_C ( 20 ), UINT8_C ( 10 ), UINT8_C ( 32 ), UINT8_C ( 20 ), UINT8_C ( 10 ), UINT8_C ( 32 ), UINT8_C ( 11 ), UINT8_C ( 3 ), UINT8_C ( 20 ), UINT8_C ( 10 ), UINT8_C ( 31 ) },
1667+ 17 ,
1668+ 1 },
1669+ { { UINT8_C ( 20 ), UINT8_C (127 ), UINT8_C ( 0 ), UINT8_C ( 45 ), UINT8_C ( 77 ), UINT8_C ( 1 ), UINT8_C ( 34 ), UINT8_C ( 43 ), UINT8_C (109 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ) },
1670+ 9 ,
1671+ { UINT8_C ( 2 ), UINT8_C (127 ), UINT8_C ( 0 ), UINT8_C ( 54 ), UINT8_C ( 6 ), UINT8_C ( 43 ), UINT8_C ( 12 ), UINT8_C (110 ), UINT8_C (100 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ) },
1672+ 20 ,
1673+ 0 },
1674+ { { UINT8_C ( 22 ), UINT8_C ( 33 ), UINT8_C ( 90 ), UINT8_C ( 1 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ) },
1675+ 4 ,
1676+ { UINT8_C ( 22 ), UINT8_C ( 33 ), UINT8_C ( 90 ), UINT8_C ( 1 ), UINT8_C ( 1 ), UINT8_C ( 5 ), UINT8_C ( 4 ), UINT8_C ( 7 ), UINT8_C ( 98 ), UINT8_C ( 34 ), UINT8_C ( 1 ), UINT8_C ( 12 ), UINT8_C ( 13 ), UINT8_C ( 14 ), UINT8_C ( 15 ), UINT8_C ( 16 ) },
1677+ 11 ,
1678+ 0 },
1679+ };
1680+ const struct {
1681+ int8_t a [16 ];
1682+ int la ;
1683+ int8_t b [16 ];
1684+ int lb ;
1685+ int r ;
1686+ } test_vec_sb [] = {
1687+ { { INT8_C ( 45 ), INT8_C ( -94 ), INT8_C ( 38 ), INT8_C ( -11 ), INT8_C ( 84 ), INT8_C (-123 ), INT8_C ( -43 ), INT8_C ( -49 ), INT8_C ( 25 ), INT8_C ( -55 ), INT8_C (-121 ), INT8_C ( -6 ), INT8_C ( 57 ), INT8_C ( 108 ), INT8_C ( -55 ), INT8_C ( 69 ) },
1688+ 23 ,
1689+ { INT8_C ( -26 ), INT8_C ( -61 ), INT8_C ( -21 ), INT8_C ( -96 ), INT8_C ( 48 ), INT8_C (-122 ), INT8_C ( 95 ), INT8_C ( -56 ), INT8_C ( 29 ), INT8_C ( -55 ), INT8_C (-121 ), INT8_C ( -6 ), INT8_C ( 57 ), INT8_C ( 108 ), INT8_C ( -55 ), INT8_C ( 69 ) },
1690+ 28 ,
1691+ 0 },
1692+ { { INT8_C ( -12 ), INT8_C ( -8 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ) },
1693+ 2 ,
1694+ { INT8_C ( -12 ), INT8_C ( 7 ), INT8_C ( -12 ), INT8_C ( 8 ), INT8_C ( -13 ), INT8_C ( 45 ), INT8_C ( -12 ), INT8_C ( 8 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ) },
1695+ 8 ,
1696+ 0 },
1697+ { { INT8_C (-100 ), INT8_C (-127 ), INT8_C ( 56 ), INT8_C ( 78 ), INT8_C ( 21 ), INT8_C ( -1 ), INT8_C ( 9 ), INT8_C ( 127 ), INT8_C ( 45 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ) },
1698+ 10 ,
1699+ { INT8_C ( 100 ), INT8_C ( 126 ), INT8_C ( 30 ), INT8_C ( 65 ), INT8_C ( 87 ), INT8_C ( 54 ), INT8_C ( 80 ), INT8_C ( 81 ), INT8_C ( -98 ), INT8_C (-101 ), INT8_C ( 90 ), INT8_C ( 1 ), INT8_C ( 5 ), INT8_C ( 60 ), INT8_C ( -77 ), INT8_C ( -65 ) },
1700+ 20 ,
1701+ 1 },
1702+ };
1703+ const struct {
1704+ uint16_t a [8 ];
1705+ int la ;
1706+ uint16_t b [8 ];
1707+ int lb ;
1708+ int r ;
1709+ } test_vec_uw [] = {
1710+ { { UINT16_C (10000 ), UINT16_C (20000 ), UINT16_C (30000 ), UINT16_C (40000 ), UINT16_C (50000 ), UINT16_C ( 0 ), UINT16_C ( 0 ), UINT16_C ( 0 ) },
1711+ 5 ,
1712+ { UINT16_C (40001 ), UINT16_C (50002 ), UINT16_C (10000 ), UINT16_C (20000 ), UINT16_C (30000 ), UINT16_C (40000 ), UINT16_C (50000 ), UINT16_C ( 0 ) },
1713+ 10 ,
1714+ 0 },
1715+ { { UINT16_C ( 1001 ), UINT16_C ( 9487 ), UINT16_C ( 9487 ), UINT16_C ( 8000 ), UINT16_C ( 0 ), UINT16_C ( 0 ), UINT16_C ( 0 ), UINT16_C ( 0 ) },
1716+ 4 ,
1717+ { UINT16_C ( 1001 ), UINT16_C ( 1002 ), UINT16_C ( 1003 ), UINT16_C ( 8709 ), UINT16_C ( 100 ), UINT16_C ( 1 ), UINT16_C ( 1000 ), UINT16_C ( 999 ) },
1718+ 6 ,
1719+ 0 },
1720+ { { UINT16_C ( 12 ), UINT16_C ( 21 ), UINT16_C ( 0 ), UINT16_C ( 45 ), UINT16_C ( 88 ), UINT16_C (10001 ), UINT16_C (10002 ), UINT16_C (65535 ) },
1721+ 13 ,
1722+ { UINT16_C ( 22 ), UINT16_C ( 13 ), UINT16_C ( 3 ), UINT16_C ( 54 ), UINT16_C ( 888 ), UINT16_C (10003 ), UINT16_C (10000 ), UINT16_C (65530 ) },
1723+ 13 ,
1724+ 1 },
1725+ };
1726+ const struct {
1727+ int16_t a [8 ];
1728+ int la ;
1729+ int16_t b [8 ];
1730+ int lb ;
1731+ int r ;
1732+ } test_vec_sw [] = {
1733+ { { INT16_C ( -100 ), INT16_C ( -80 ), INT16_C ( -5 ), INT16_C ( -1 ), INT16_C ( 10 ), INT16_C ( 1000 ), INT16_C ( 0 ), INT16_C ( 0 ) },
1734+ 6 ,
1735+ { INT16_C ( -100 ), INT16_C ( -99 ), INT16_C ( -80 ), INT16_C ( -2 ), INT16_C ( 11 ), INT16_C ( 789 ), INT16_C ( 889 ), INT16_C ( 999 ) },
1736+ 12 ,
1737+ 1 },
1738+ { { INT16_C (-30000 ), INT16_C ( -90 ), INT16_C (-32766 ), INT16_C ( 1200 ), INT16_C ( 5 ), INT16_C ( 0 ), INT16_C ( 0 ), INT16_C ( 0 ) },
1739+ 5 ,
1740+ { INT16_C (-30001 ), INT16_C ( 21 ), INT16_C ( 10000 ), INT16_C ( 1201 ), INT16_C ( 888 ), INT16_C ( 0 ), INT16_C ( 0 ), INT16_C ( 0 ) },
1741+ 5 ,
1742+ 0 },
1743+ { { INT16_C ( 2001 ), INT16_C ( -1928 ), INT16_C ( 0 ), INT16_C ( 0 ), INT16_C ( 0 ), INT16_C ( 0 ), INT16_C ( 0 ), INT16_C ( 0 ) },
1744+ 2 ,
1745+ { INT16_C ( 2000 ), INT16_C ( 1928 ), INT16_C ( 3000 ), INT16_C ( 2289 ), INT16_C ( 4000 ), INT16_C ( 111 ), INT16_C ( 2002 ), INT16_C ( -1928 ) },
1746+ 9 ,
1747+ 0 },
1748+ };
1749+ simde__m128i a , b ;
1750+ int r ;
1751+
1752+ a = simde_x_mm_loadu_epu8 (test_vecu [0 ].a );
1753+ b = simde_x_mm_loadu_epu8 (test_vecu [0 ].b );
1754+ r = simde_mm_cmpestra (a , test_vecu [0 ].la , b , test_vecu [0 ].lb , SIMDE_SIDD_UBYTE_OPS | SIMDE_SIDD_CMP_EQUAL_ORDERED | SIMDE_SIDD_MOST_SIGNIFICANT );
1755+ simde_assert_equal_i32 (r , test_vecu [0 ].r );
1756+
1757+ a = simde_x_mm_loadu_epu8 (test_vecu [1 ].a );
1758+ b = simde_x_mm_loadu_epu8 (test_vecu [1 ].b );
1759+ r = simde_mm_cmpestra (a , test_vecu [1 ].la , b , test_vecu [1 ].lb , SIMDE_SIDD_UBYTE_OPS | SIMDE_SIDD_CMP_EQUAL_EACH | SIMDE_SIDD_LEAST_SIGNIFICANT | SIMDE_SIDD_NEGATIVE_POLARITY );
1760+ simde_assert_equal_i32 (r , test_vecu [1 ].r );
1761+
1762+ a = simde_x_mm_loadu_epu8 (test_vecu [2 ].a );
1763+ b = simde_x_mm_loadu_epu8 (test_vecu [2 ].b );
1764+ r = simde_mm_cmpestra (a , test_vecu [2 ].la , b , test_vecu [2 ].lb , SIMDE_SIDD_UBYTE_OPS | SIMDE_SIDD_CMP_EQUAL_ANY | SIMDE_SIDD_LEAST_SIGNIFICANT | SIMDE_SIDD_MASKED_NEGATIVE_POLARITY );
1765+ simde_assert_equal_i32 (r , test_vecu [2 ].r );
1766+
1767+ a = simde_mm_loadu_epi8 (test_vec_sb [0 ].a );
1768+ b = simde_mm_loadu_epi8 (test_vec_sb [0 ].b );
1769+ r = simde_mm_cmpestra (a , test_vec_sb [0 ].la , b , test_vec_sb [0 ].lb , SIMDE_SIDD_SBYTE_OPS | SIMDE_SIDD_CMP_RANGES | SIMDE_SIDD_LEAST_SIGNIFICANT );
1770+ simde_assert_equal_i32 (r , test_vec_sb [0 ].r );
1771+
1772+ a = simde_mm_loadu_epi8 (test_vec_sb [1 ].a );
1773+ b = simde_mm_loadu_epi8 (test_vec_sb [1 ].b );
1774+ r = simde_mm_cmpestra (a , test_vec_sb [1 ].la , b , test_vec_sb [1 ].lb , SIMDE_SIDD_SBYTE_OPS | SIMDE_SIDD_CMP_EQUAL_ORDERED | SIMDE_SIDD_MOST_SIGNIFICANT | SIMDE_SIDD_NEGATIVE_POLARITY );
1775+ simde_assert_equal_i32 (r , test_vec_sb [1 ].r );
1776+
1777+ a = simde_mm_loadu_epi8 (test_vec_sb [2 ].a );
1778+ b = simde_mm_loadu_epi8 (test_vec_sb [2 ].b );
1779+ r = simde_mm_cmpestra (a , test_vec_sb [2 ].la , b , test_vec_sb [2 ].lb , SIMDE_SIDD_SBYTE_OPS | SIMDE_SIDD_CMP_EQUAL_ANY | SIMDE_SIDD_LEAST_SIGNIFICANT );
1780+ simde_assert_equal_i32 (r , test_vec_sb [2 ].r );
1781+
1782+ a = simde_x_mm_loadu_epu16 (test_vec_uw [0 ].a );
1783+ b = simde_x_mm_loadu_epu16 (test_vec_uw [0 ].b );
1784+ r = simde_mm_cmpestra (a , test_vec_uw [0 ].la , b , test_vec_uw [0 ].lb , SIMDE_SIDD_UWORD_OPS | SIMDE_SIDD_CMP_EQUAL_ORDERED | SIMDE_SIDD_LEAST_SIGNIFICANT );
1785+ simde_assert_equal_i32 (r , test_vec_uw [0 ].r );
1786+
1787+ a = simde_x_mm_loadu_epu16 (test_vec_uw [1 ].a );
1788+ b = simde_x_mm_loadu_epu16 (test_vec_uw [1 ].b );
1789+ r = simde_mm_cmpestra (a , test_vec_uw [1 ].la , b , test_vec_uw [1 ].lb , SIMDE_SIDD_UWORD_OPS | SIMDE_SIDD_CMP_RANGES | SIMDE_SIDD_MOST_SIGNIFICANT | SIMDE_SIDD_MASKED_NEGATIVE_POLARITY );
1790+ simde_assert_equal_i32 (r , test_vec_uw [1 ].r );
1791+
1792+ a = simde_x_mm_loadu_epu16 (test_vec_uw [2 ].a );
1793+ b = simde_x_mm_loadu_epu16 (test_vec_uw [2 ].b );
1794+ r = simde_mm_cmpestra (a , test_vec_uw [2 ].la , b , test_vec_uw [2 ].lb , SIMDE_SIDD_UWORD_OPS | SIMDE_SIDD_CMP_EQUAL_EACH | SIMDE_SIDD_MOST_SIGNIFICANT );
1795+ simde_assert_equal_i32 (r , test_vec_uw [2 ].r );
1796+
1797+ a = simde_mm_loadu_epi16 (test_vec_sw [0 ].a );
1798+ b = simde_mm_loadu_epi16 (test_vec_sw [0 ].b );
1799+ r = simde_mm_cmpestra (a , test_vec_sw [0 ].la , b , test_vec_sw [0 ].lb , SIMDE_SIDD_SWORD_OPS | SIMDE_SIDD_CMP_RANGES | SIMDE_SIDD_LEAST_SIGNIFICANT | SIMDE_SIDD_NEGATIVE_POLARITY );
1800+ simde_assert_equal_i32 (r , test_vec_sw [0 ].r );
1801+
1802+ a = simde_mm_loadu_epi16 (test_vec_sw [1 ].a );
1803+ b = simde_mm_loadu_epi16 (test_vec_sw [1 ].b );
1804+ r = simde_mm_cmpestra (a , test_vec_sw [1 ].la , b , test_vec_sw [1 ].lb , SIMDE_SIDD_SWORD_OPS | SIMDE_SIDD_CMP_EQUAL_EACH | SIMDE_SIDD_MOST_SIGNIFICANT );
1805+ simde_assert_equal_i32 (r , test_vec_sw [1 ].r );
1806+
1807+ a = simde_mm_loadu_epi16 (test_vec_sw [2 ].a );
1808+ b = simde_mm_loadu_epi16 (test_vec_sw [2 ].b );
1809+ r = simde_mm_cmpestra (a , test_vec_sw [2 ].la , b , test_vec_sw [2 ].lb , SIMDE_SIDD_SWORD_OPS | SIMDE_SIDD_CMP_EQUAL_ANY | SIMDE_SIDD_LEAST_SIGNIFICANT | SIMDE_SIDD_MASKED_NEGATIVE_POLARITY );
1810+ simde_assert_equal_i32 (r , test_vec_sw [2 ].r );
1811+
1812+ return 0 ;
1813+ }
1814+
16551815#if 0 // These are not yet implemented
16561816
16571817static int
@@ -2081,166 +2241,6 @@ test_simde_mm_cmpestrm(SIMDE_MUNIT_TEST_ARGS) {
20812241 return 0 ;
20822242}
20832243
2084- static int
2085- test_simde_mm_cmpestra (SIMDE_MUNIT_TEST_ARGS ) {
2086- const struct {
2087- uint8_t a [16 ];
2088- int la ;
2089- uint8_t b [16 ];
2090- int lb ;
2091- int r ;
2092- } test_vecu [] = {
2093- { { UINT8_C ( 20 ), UINT8_C ( 10 ), UINT8_C ( 33 ), UINT8_C ( 56 ), UINT8_C ( 78 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ) },
2094- 3 ,
2095- { UINT8_C ( 20 ), UINT8_C ( 10 ), UINT8_C ( 34 ), UINT8_C ( 98 ), UINT8_C (127 ), UINT8_C ( 20 ), UINT8_C ( 10 ), UINT8_C ( 32 ), UINT8_C ( 20 ), UINT8_C ( 10 ), UINT8_C ( 32 ), UINT8_C ( 11 ), UINT8_C ( 3 ), UINT8_C ( 20 ), UINT8_C ( 10 ), UINT8_C ( 31 ) },
2096- 17 ,
2097- 1 },
2098- { { UINT8_C ( 20 ), UINT8_C (127 ), UINT8_C ( 0 ), UINT8_C ( 45 ), UINT8_C ( 77 ), UINT8_C ( 1 ), UINT8_C ( 34 ), UINT8_C ( 43 ), UINT8_C (109 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ) },
2099- 9 ,
2100- { UINT8_C ( 2 ), UINT8_C (127 ), UINT8_C ( 0 ), UINT8_C ( 54 ), UINT8_C ( 6 ), UINT8_C ( 43 ), UINT8_C ( 12 ), UINT8_C (110 ), UINT8_C (100 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ) },
2101- 20 ,
2102- 0 },
2103- { { UINT8_C ( 22 ), UINT8_C ( 33 ), UINT8_C ( 90 ), UINT8_C ( 1 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ), UINT8_C ( 0 ) },
2104- 4 ,
2105- { UINT8_C ( 22 ), UINT8_C ( 33 ), UINT8_C ( 90 ), UINT8_C ( 1 ), UINT8_C ( 1 ), UINT8_C ( 5 ), UINT8_C ( 4 ), UINT8_C ( 7 ), UINT8_C ( 98 ), UINT8_C ( 34 ), UINT8_C ( 1 ), UINT8_C ( 12 ), UINT8_C ( 13 ), UINT8_C ( 14 ), UINT8_C ( 15 ), UINT8_C ( 16 ) },
2106- 11 ,
2107- 0 },
2108- };
2109- const struct {
2110- int8_t a [16 ];
2111- int la ;
2112- int8_t b [16 ];
2113- int lb ;
2114- int r ;
2115- } test_vec_sb [] = {
2116- { { INT8_C ( 45 ), INT8_C ( -94 ), INT8_C ( 38 ), INT8_C ( -11 ), INT8_C ( 84 ), INT8_C (-123 ), INT8_C ( -43 ), INT8_C ( -49 ), INT8_C ( 25 ), INT8_C ( -55 ), INT8_C (-121 ), INT8_C ( -6 ), INT8_C ( 57 ), INT8_C ( 108 ), INT8_C ( -55 ), INT8_C ( 69 ) },
2117- 23 ,
2118- { INT8_C ( -26 ), INT8_C ( -61 ), INT8_C ( -21 ), INT8_C ( -96 ), INT8_C ( 48 ), INT8_C (-122 ), INT8_C ( 95 ), INT8_C ( -56 ), INT8_C ( 29 ), INT8_C ( -55 ), INT8_C (-121 ), INT8_C ( -6 ), INT8_C ( 57 ), INT8_C ( 108 ), INT8_C ( -55 ), INT8_C ( 69 ) },
2119- 28 ,
2120- 0 },
2121- { { INT8_C ( -12 ), INT8_C ( -8 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ) },
2122- 2 ,
2123- { INT8_C ( -12 ), INT8_C ( 7 ), INT8_C ( -12 ), INT8_C ( 8 ), INT8_C ( -13 ), INT8_C ( 45 ), INT8_C ( -12 ), INT8_C ( 8 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ) },
2124- 8 ,
2125- 0 },
2126- { { INT8_C (-100 ), INT8_C (-127 ), INT8_C ( 56 ), INT8_C ( 78 ), INT8_C ( 21 ), INT8_C ( -1 ), INT8_C ( 9 ), INT8_C ( 127 ), INT8_C ( 45 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ), INT8_C ( 0 ) },
2127- 10 ,
2128- { INT8_C ( 100 ), INT8_C ( 126 ), INT8_C ( 30 ), INT8_C ( 65 ), INT8_C ( 87 ), INT8_C ( 54 ), INT8_C ( 80 ), INT8_C ( 81 ), INT8_C ( -98 ), INT8_C (-101 ), INT8_C ( 90 ), INT8_C ( 1 ), INT8_C ( 5 ), INT8_C ( 60 ), INT8_C ( -77 ), INT8_C ( -65 ) },
2129- 20 ,
2130- 1 },
2131- };
2132- const struct {
2133- uint16_t a [8 ];
2134- int la ;
2135- uint16_t b [8 ];
2136- int lb ;
2137- int r ;
2138- } test_vec_uw [] = {
2139- { { UINT16_C (10000 ), UINT16_C (20000 ), UINT16_C (30000 ), UINT16_C (40000 ), UINT16_C (50000 ), UINT16_C ( 0 ), UINT16_C ( 0 ), UINT16_C ( 0 ) },
2140- 5 ,
2141- { UINT16_C (40001 ), UINT16_C (50002 ), UINT16_C (10000 ), UINT16_C (20000 ), UINT16_C (30000 ), UINT16_C (40000 ), UINT16_C (50000 ), UINT16_C ( 0 ) },
2142- 10 ,
2143- 0 },
2144- { { UINT16_C ( 1001 ), UINT16_C ( 9487 ), UINT16_C ( 9487 ), UINT16_C ( 8000 ), UINT16_C ( 0 ), UINT16_C ( 0 ), UINT16_C ( 0 ), UINT16_C ( 0 ) },
2145- 4 ,
2146- { UINT16_C ( 1001 ), UINT16_C ( 1002 ), UINT16_C ( 1003 ), UINT16_C ( 8709 ), UINT16_C ( 100 ), UINT16_C ( 1 ), UINT16_C ( 1000 ), UINT16_C ( 999 ) },
2147- 6 ,
2148- 0 },
2149- { { UINT16_C ( 12 ), UINT16_C ( 21 ), UINT16_C ( 0 ), UINT16_C ( 45 ), UINT16_C ( 88 ), UINT16_C (10001 ), UINT16_C (10002 ), UINT16_C (65535 ) },
2150- 13 ,
2151- { UINT16_C ( 22 ), UINT16_C ( 13 ), UINT16_C ( 3 ), UINT16_C ( 54 ), UINT16_C ( 888 ), UINT16_C (10003 ), UINT16_C (10000 ), UINT16_C (65530 ) },
2152- 13 ,
2153- 1 },
2154- };
2155- const struct {
2156- int16_t a [8 ];
2157- int la ;
2158- int16_t b [8 ];
2159- int lb ;
2160- int r ;
2161- } test_vec_sw [] = {
2162- { { INT16_C ( -100 ), INT16_C ( -80 ), INT16_C ( -5 ), INT16_C ( -1 ), INT16_C ( 10 ), INT16_C ( 1000 ), INT16_C ( 0 ), INT16_C ( 0 ) },
2163- 6 ,
2164- { INT16_C ( -100 ), INT16_C ( -99 ), INT16_C ( -80 ), INT16_C ( -2 ), INT16_C ( 11 ), INT16_C ( 789 ), INT16_C ( 889 ), INT16_C ( 999 ) },
2165- 12 ,
2166- 1 },
2167- { { INT16_C (-30000 ), INT16_C ( -90 ), INT16_C (-32766 ), INT16_C ( 1200 ), INT16_C ( 5 ), INT16_C ( 0 ), INT16_C ( 0 ), INT16_C ( 0 ) },
2168- 5 ,
2169- { INT16_C (-30001 ), INT16_C ( 21 ), INT16_C ( 10000 ), INT16_C ( 1201 ), INT16_C ( 888 ), INT16_C ( 0 ), INT16_C ( 0 ), INT16_C ( 0 ) },
2170- 5 ,
2171- 0 },
2172- { { INT16_C ( 2001 ), INT16_C ( -1928 ), INT16_C ( 0 ), INT16_C ( 0 ), INT16_C ( 0 ), INT16_C ( 0 ), INT16_C ( 0 ), INT16_C ( 0 ) },
2173- 2 ,
2174- { INT16_C ( 2000 ), INT16_C ( 1928 ), INT16_C ( 3000 ), INT16_C ( 2289 ), INT16_C ( 4000 ), INT16_C ( 111 ), INT16_C ( 2002 ), INT16_C ( -1928 ) },
2175- 9 ,
2176- 0 },
2177- };
2178- simde__m128i a , b ;
2179- int r ;
2180-
2181- a = simde_x_mm_loadu_epu8 (test_vecu [0 ].a );
2182- b = simde_x_mm_loadu_epu8 (test_vecu [0 ].b );
2183- r = simde_mm_cmpestra (a , test_vecu [0 ].la , b , test_vecu [0 ].lb , SIMDE_SIDD_UBYTE_OPS | SIMDE_SIDD_CMP_EQUAL_ORDERED | SIMDE_SIDD_MOST_SIGNIFICANT );
2184- simde_assert_equal_i32 (r , test_vecu [0 ].r );
2185-
2186- a = simde_x_mm_loadu_epu8 (test_vecu [1 ].a );
2187- b = simde_x_mm_loadu_epu8 (test_vecu [1 ].b );
2188- r = simde_mm_cmpestra (a , test_vecu [1 ].la , b , test_vecu [1 ].lb , SIMDE_SIDD_UBYTE_OPS | SIMDE_SIDD_CMP_EQUAL_EACH | SIMDE_SIDD_LEAST_SIGNIFICANT | SIMDE_SIDD_NEGATIVE_POLARITY );
2189- simde_assert_equal_i32 (r , test_vecu [1 ].r );
2190-
2191- a = simde_x_mm_loadu_epu8 (test_vecu [2 ].a );
2192- b = simde_x_mm_loadu_epu8 (test_vecu [2 ].b );
2193- r = simde_mm_cmpestra (a , test_vecu [2 ].la , b , test_vecu [2 ].lb , SIMDE_SIDD_UBYTE_OPS | SIMDE_SIDD_CMP_EQUAL_ANY | SIMDE_SIDD_LEAST_SIGNIFICANT | SIMDE_SIDD_MASKED_NEGATIVE_POLARITY );
2194- simde_assert_equal_i32 (r , test_vecu [2 ].r );
2195-
2196- a = simde_mm_loadu_epi8 (test_vec_sb [0 ].a );
2197- b = simde_mm_loadu_epi8 (test_vec_sb [0 ].b );
2198- r = simde_mm_cmpestra (a , test_vec_sb [0 ].la , b , test_vec_sb [0 ].lb , SIMDE_SIDD_SBYTE_OPS | SIMDE_SIDD_CMP_RANGES | SIMDE_SIDD_LEAST_SIGNIFICANT );
2199- simde_assert_equal_i32 (r , test_vec_sb [0 ].r );
2200-
2201- a = simde_mm_loadu_epi8 (test_vec_sb [1 ].a );
2202- b = simde_mm_loadu_epi8 (test_vec_sb [1 ].b );
2203- r = simde_mm_cmpestra (a , test_vec_sb [1 ].la , b , test_vec_sb [1 ].lb , SIMDE_SIDD_SBYTE_OPS | SIMDE_SIDD_CMP_EQUAL_ORDERED | SIMDE_SIDD_MOST_SIGNIFICANT | SIMDE_SIDD_NEGATIVE_POLARITY );
2204- simde_assert_equal_i32 (r , test_vec_sb [1 ].r );
2205-
2206- a = simde_mm_loadu_epi8 (test_vec_sb [2 ].a );
2207- b = simde_mm_loadu_epi8 (test_vec_sb [2 ].b );
2208- r = simde_mm_cmpestra (a , test_vec_sb [2 ].la , b , test_vec_sb [2 ].lb , SIMDE_SIDD_SBYTE_OPS | SIMDE_SIDD_CMP_EQUAL_ANY | SIMDE_SIDD_LEAST_SIGNIFICANT );
2209- simde_assert_equal_i32 (r , test_vec_sb [2 ].r );
2210-
2211- a = simde_x_mm_loadu_epu16 (test_vec_uw [0 ].a );
2212- b = simde_x_mm_loadu_epu16 (test_vec_uw [0 ].b );
2213- r = simde_mm_cmpestra (a , test_vec_uw [0 ].la , b , test_vec_uw [0 ].lb , SIMDE_SIDD_UWORD_OPS | SIMDE_SIDD_CMP_EQUAL_ORDERED | SIMDE_SIDD_LEAST_SIGNIFICANT );
2214- simde_assert_equal_i32 (r , test_vec_uw [0 ].r );
2215-
2216- a = simde_x_mm_loadu_epu16 (test_vec_uw [1 ].a );
2217- b = simde_x_mm_loadu_epu16 (test_vec_uw [1 ].b );
2218- r = simde_mm_cmpestra (a , test_vec_uw [1 ].la , b , test_vec_uw [1 ].lb , SIMDE_SIDD_UWORD_OPS | SIMDE_SIDD_CMP_RANGES | SIMDE_SIDD_MOST_SIGNIFICANT | SIMDE_SIDD_MASKED_NEGATIVE_POLARITY );
2219- simde_assert_equal_i32 (r , test_vec_uw [1 ].r );
2220-
2221- a = simde_x_mm_loadu_epu16 (test_vec_uw [2 ].a );
2222- b = simde_x_mm_loadu_epu16 (test_vec_uw [2 ].b );
2223- r = simde_mm_cmpestra (a , test_vec_uw [2 ].la , b , test_vec_uw [2 ].lb , SIMDE_SIDD_UWORD_OPS | SIMDE_SIDD_CMP_EQUAL_EACH | SIMDE_SIDD_MOST_SIGNIFICANT );
2224- simde_assert_equal_i32 (r , test_vec_uw [2 ].r );
2225-
2226- a = simde_mm_loadu_epi16 (test_vec_sw [0 ].a );
2227- b = simde_mm_loadu_epi16 (test_vec_sw [0 ].b );
2228- r = simde_mm_cmpestra (a , test_vec_sw [0 ].la , b , test_vec_sw [0 ].lb , SIMDE_SIDD_SWORD_OPS | SIMDE_SIDD_CMP_RANGES | SIMDE_SIDD_LEAST_SIGNIFICANT | SIMDE_SIDD_NEGATIVE_POLARITY );
2229- simde_assert_equal_i32 (r , test_vec_sw [0 ].r );
2230-
2231- a = simde_mm_loadu_epi16 (test_vec_sw [1 ].a );
2232- b = simde_mm_loadu_epi16 (test_vec_sw [1 ].b );
2233- r = simde_mm_cmpestra (a , test_vec_sw [1 ].la , b , test_vec_sw [1 ].lb , SIMDE_SIDD_SWORD_OPS | SIMDE_SIDD_CMP_EQUAL_EACH | SIMDE_SIDD_MOST_SIGNIFICANT );
2234- simde_assert_equal_i32 (r , test_vec_sw [1 ].r );
2235-
2236- a = simde_mm_loadu_epi16 (test_vec_sw [2 ].a );
2237- b = simde_mm_loadu_epi16 (test_vec_sw [2 ].b );
2238- r = simde_mm_cmpestra (a , test_vec_sw [2 ].la , b , test_vec_sw [2 ].lb , SIMDE_SIDD_SWORD_OPS | SIMDE_SIDD_CMP_EQUAL_ANY | SIMDE_SIDD_LEAST_SIGNIFICANT | SIMDE_SIDD_MASKED_NEGATIVE_POLARITY );
2239- simde_assert_equal_i32 (r , test_vec_sw [2 ].r );
2240-
2241- return 0 ;
2242- }
2243-
22442244static int
22452245test_simde_mm_cmpestrc (SIMDE_MUNIT_TEST_ARGS ) {
22462246 const struct {
@@ -3442,7 +3442,7 @@ test_simde_mm_cmpistro(SIMDE_MUNIT_TEST_ARGS) {
34423442// end test values from sse2neon
34433443
34443444SIMDE_TEST_FUNC_LIST_BEGIN
3445- // SIMDE_TEST_FUNC_LIST_ENTRY(mm_cmpestra)
3445+ SIMDE_TEST_FUNC_LIST_ENTRY (mm_cmpestra )
34463446 // SIMDE_TEST_FUNC_LIST_ENTRY(mm_cmpestrc)
34473447 // SIMDE_TEST_FUNC_LIST_ENTRY(mm_cmpestri)
34483448 // SIMDE_TEST_FUNC_LIST_ENTRY(mm_cmpestrm)
0 commit comments