Update googletest to 1.18.0 and SIMDe to 0.8.2.

Googletest 1.18 asks for CMake 3.13 or newer, so configuring the tests no longer warns that CMake compatibility below 3.10 is deprecated.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Ryan Henry 2026-09-24 14:30:19 -06:00
parent e4e666f459
commit 3f10e05176
912 changed files with 224964 additions and 11502 deletions

View file

@ -433,6 +433,80 @@ test_simde_mm512_shuffle_epi8(SIMDE_MUNIT_TEST_ARGS) {
return 0;
}
static int
test_simde_mm512_shuffle_epi32(SIMDE_MUNIT_TEST_ARGS) {
#if 1
const struct {
int32_t a[16];
int32_t imm8;
int32_t r[16];
} test_vec[8] = {
{ { INT32_C( 971206559), -INT32_C( 584109496), -INT32_C( 1230684222), INT32_C( 318067129), -INT32_C( 2121378619), INT32_C( 476178527), -INT32_C( 1026677291), -INT32_C( 1808955404),
INT32_C( 1070404086), INT32_C( 102562883), -INT32_C( 172179141), -INT32_C( 670584302), INT32_C( 1700369670), INT32_C( 1384299133), -INT32_C( 736800545), -INT32_C( 832027945) },
INT32_C( 3),
{ INT32_C( 318067129), INT32_C( 971206559), INT32_C( 971206559), INT32_C( 971206559), -INT32_C( 1808955404), -INT32_C( 2121378619), -INT32_C( 2121378619), -INT32_C( 2121378619),
-INT32_C( 670584302), INT32_C( 1070404086), INT32_C( 1070404086), INT32_C( 1070404086), -INT32_C( 832027945), INT32_C( 1700369670), INT32_C( 1700369670), INT32_C( 1700369670) } },
{ { INT32_C( 831982901), -INT32_C( 361915095), INT32_C( 201155161), -INT32_C( 15542935), -INT32_C( 394496210), INT32_C( 1237831673), INT32_C( 639736804), INT32_C( 947580675),
INT32_C( 627708412), INT32_C( 118478766), -INT32_C( 1575809991), INT32_C( 262219233), -INT32_C( 1762189668), -INT32_C( 773865491), INT32_C( 1593245786), -INT32_C( 342461969) },
INT32_C( 2),
{ INT32_C( 201155161), INT32_C( 831982901), INT32_C( 831982901), INT32_C( 831982901), INT32_C( 639736804), -INT32_C( 394496210), -INT32_C( 394496210), -INT32_C( 394496210),
-INT32_C( 1575809991), INT32_C( 627708412), INT32_C( 627708412), INT32_C( 627708412), INT32_C( 1593245786), -INT32_C( 1762189668), -INT32_C( 1762189668), -INT32_C( 1762189668) } },
{ { -INT32_C( 684716032), INT32_C( 739260448), INT32_C( 1880011595), INT32_C( 1913396564), -INT32_C( 731930091), -INT32_C( 2110902142), -INT32_C( 1720546264), INT32_C( 589061411),
-INT32_C( 1896133522), -INT32_C( 809890940), INT32_C( 322947262), -INT32_C( 75150106), INT32_C( 1892673006), INT32_C( 1039400213), -INT32_C( 1378392694), INT32_C( 819000258) },
INT32_C( 3),
{ INT32_C( 1913396564), -INT32_C( 684716032), -INT32_C( 684716032), -INT32_C( 684716032), INT32_C( 589061411), -INT32_C( 731930091), -INT32_C( 731930091), -INT32_C( 731930091),
-INT32_C( 75150106), -INT32_C( 1896133522), -INT32_C( 1896133522), -INT32_C( 1896133522), INT32_C( 819000258), INT32_C( 1892673006), INT32_C( 1892673006), INT32_C( 1892673006) } },
{ { -INT32_C( 674971957), INT32_C( 1100321657), INT32_C( 522692819), INT32_C( 319627822), -INT32_C( 282558735), -INT32_C( 696686991), INT32_C( 815277629), -INT32_C( 1032861194),
INT32_C( 10040199), -INT32_C( 1706938681), INT32_C( 96037335), INT32_C( 2098775692), -INT32_C( 1251196860), -INT32_C( 477370970), INT32_C( 34808843), INT32_C( 1959035885) },
INT32_C( 2),
{ INT32_C( 522692819), -INT32_C( 674971957), -INT32_C( 674971957), -INT32_C( 674971957), INT32_C( 815277629), -INT32_C( 282558735), -INT32_C( 282558735), -INT32_C( 282558735),
INT32_C( 96037335), INT32_C( 10040199), INT32_C( 10040199), INT32_C( 10040199), INT32_C( 34808843), -INT32_C( 1251196860), -INT32_C( 1251196860), -INT32_C( 1251196860) } },
{ { -INT32_C( 1954712227), INT32_C( 543299511), -INT32_C( 1750308912), -INT32_C( 1059378561), INT32_C( 2087096726), INT32_C( 1082608156), -INT32_C( 533886627), -INT32_C( 1432903091),
-INT32_C( 835316713), -INT32_C( 51472340), INT32_C( 2140379904), INT32_C( 1530884037), INT32_C( 483894784), INT32_C( 1297965040), INT32_C( 909019880), INT32_C( 1138804012) },
INT32_C( 1),
{ INT32_C( 543299511), -INT32_C( 1954712227), -INT32_C( 1954712227), -INT32_C( 1954712227), INT32_C( 1082608156), INT32_C( 2087096726), INT32_C( 2087096726), INT32_C( 2087096726),
-INT32_C( 51472340), -INT32_C( 835316713), -INT32_C( 835316713), -INT32_C( 835316713), INT32_C( 1297965040), INT32_C( 483894784), INT32_C( 483894784), INT32_C( 483894784) } },
{ { -INT32_C( 1358622442), -INT32_C( 1683029504), INT32_C( 73412245), INT32_C( 335854446), -INT32_C( 234610285), INT32_C( 148525438), INT32_C( 1144328319), INT32_C( 119437553),
-INT32_C( 1967774838), -INT32_C( 1155177179), INT32_C( 46106004), -INT32_C( 753482688), INT32_C( 1673861861), -INT32_C( 345268117), -INT32_C( 1590714192), -INT32_C( 1549185767) },
INT32_C( 1),
{ -INT32_C( 1683029504), -INT32_C( 1358622442), -INT32_C( 1358622442), -INT32_C( 1358622442), INT32_C( 148525438), -INT32_C( 234610285), -INT32_C( 234610285), -INT32_C( 234610285),
-INT32_C( 1155177179), -INT32_C( 1967774838), -INT32_C( 1967774838), -INT32_C( 1967774838), -INT32_C( 345268117), INT32_C( 1673861861), INT32_C( 1673861861), INT32_C( 1673861861) } },
{ { -INT32_C( 980013729), -INT32_C( 682012334), -INT32_C( 719889647), -INT32_C( 1950684303), INT32_C( 1358306736), INT32_C( 687989128), INT32_C( 1581425169), -INT32_C( 1412438709),
INT32_C( 1685087762), -INT32_C( 935605833), -INT32_C( 1784851932), -INT32_C( 299870403), -INT32_C( 46262668), INT32_C( 153501688), INT32_C( 761751778), INT32_C( 1608005453) },
INT32_C( 1),
{ -INT32_C( 682012334), -INT32_C( 980013729), -INT32_C( 980013729), -INT32_C( 980013729), INT32_C( 687989128), INT32_C( 1358306736), INT32_C( 1358306736), INT32_C( 1358306736),
-INT32_C( 935605833), INT32_C( 1685087762), INT32_C( 1685087762), INT32_C( 1685087762), INT32_C( 153501688), -INT32_C( 46262668), -INT32_C( 46262668), -INT32_C( 46262668) } },
{ { INT32_C( 290767688), INT32_C( 1345658366), INT32_C( 311347898), INT32_C( 25591018), -INT32_C( 84311110), INT32_C( 299631273), -INT32_C( 1604449943), INT32_C( 708689378),
INT32_C( 2117898880), INT32_C( 1775202735), INT32_C( 645619004), -INT32_C( 1826159911), INT32_C( 797778053), -INT32_C( 1941935838), INT32_C( 1428987763), -INT32_C( 578852260) },
INT32_C( 0),
{ INT32_C( 290767688), INT32_C( 290767688), INT32_C( 290767688), INT32_C( 290767688), -INT32_C( 84311110), -INT32_C( 84311110), -INT32_C( 84311110), -INT32_C( 84311110),
INT32_C( 2117898880), INT32_C( 2117898880), INT32_C( 2117898880), INT32_C( 2117898880), INT32_C( 797778053), INT32_C( 797778053), INT32_C( 797778053), INT32_C( 797778053) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
simde__m512i r, a = simde_mm512_loadu_epi32(test_vec[i].a);
SIMDE_CONSTIFY_4_(simde_mm512_shuffle_epi32, r, (HEDLEY_UNREACHABLE(), a), test_vec[i].imm8, a);
simde_test_x86_assert_equal_i32x16(r, simde_mm512_loadu_epi32(test_vec[i].r));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0; i < 8; i++) {
simde__m512i r, a = simde_test_x86_random_i32x16();
int32_t imm8 = simde_test_codegen_random_i8() & 3;
SIMDE_CONSTIFY_4_(simde_mm512_shuffle_epi32, r, (HEDLEY_UNREACHABLE(), a), imm8, a);
simde_test_x86_write_i32x16(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_codegen_write_i32(2, imm8, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_x86_write_i32x16(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_mm512_mask_shuffle_epi8(SIMDE_MUNIT_TEST_ARGS) {
const struct {
@ -4082,11 +4156,351 @@ test_simde_mm512_shuffle_ps (SIMDE_MUNIT_TEST_ARGS) {
#endif
}
static int
test_simde_mm512_shuffle_pd (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
const simde_float64 a[8];
const simde_float64 b[8];
const int imm8;
const simde_float64 r[8];
} test_vec[] = {
{ { SIMDE_FLOAT64_C( -942.93), SIMDE_FLOAT64_C( -64.12), SIMDE_FLOAT64_C( -56.87), SIMDE_FLOAT64_C( 402.12),
SIMDE_FLOAT64_C( -731.43), SIMDE_FLOAT64_C( -424.59), SIMDE_FLOAT64_C( 896.25), SIMDE_FLOAT64_C( -758.90) },
{ SIMDE_FLOAT64_C( 971.71), SIMDE_FLOAT64_C( 442.47), SIMDE_FLOAT64_C( -154.85), SIMDE_FLOAT64_C( -222.75),
SIMDE_FLOAT64_C( 895.37), SIMDE_FLOAT64_C( 150.67), SIMDE_FLOAT64_C( -864.35), SIMDE_FLOAT64_C( 903.59) },
INT32_C( 6),
{ SIMDE_FLOAT64_C( -942.93), SIMDE_FLOAT64_C( 442.47), SIMDE_FLOAT64_C( 402.12), SIMDE_FLOAT64_C( -154.85),
SIMDE_FLOAT64_C( -731.43), SIMDE_FLOAT64_C( 895.37), SIMDE_FLOAT64_C( 896.25), SIMDE_FLOAT64_C( -864.35) } },
{ { SIMDE_FLOAT64_C( -84.66), SIMDE_FLOAT64_C( -723.71), SIMDE_FLOAT64_C( 69.56), SIMDE_FLOAT64_C( 984.55),
SIMDE_FLOAT64_C( 165.64), SIMDE_FLOAT64_C( -889.68), SIMDE_FLOAT64_C( 777.44), SIMDE_FLOAT64_C( 253.63) },
{ SIMDE_FLOAT64_C( -802.95), SIMDE_FLOAT64_C( 456.39), SIMDE_FLOAT64_C( 844.31), SIMDE_FLOAT64_C( -745.88),
SIMDE_FLOAT64_C( -607.73), SIMDE_FLOAT64_C( -212.56), SIMDE_FLOAT64_C( 656.25), SIMDE_FLOAT64_C( -339.16) },
INT32_C( 190),
{ SIMDE_FLOAT64_C( -84.66), SIMDE_FLOAT64_C( 456.39), SIMDE_FLOAT64_C( 984.55), SIMDE_FLOAT64_C( -745.88),
SIMDE_FLOAT64_C( -889.68), SIMDE_FLOAT64_C( -212.56), SIMDE_FLOAT64_C( 777.44), SIMDE_FLOAT64_C( -339.16) } },
{ { SIMDE_FLOAT64_C( -5.04), SIMDE_FLOAT64_C( 747.08), SIMDE_FLOAT64_C( -888.19), SIMDE_FLOAT64_C( -109.67),
SIMDE_FLOAT64_C( -102.25), SIMDE_FLOAT64_C( -752.54), SIMDE_FLOAT64_C( -206.08), SIMDE_FLOAT64_C( -823.01) },
{ SIMDE_FLOAT64_C( -792.26), SIMDE_FLOAT64_C( 950.74), SIMDE_FLOAT64_C( 203.17), SIMDE_FLOAT64_C( 123.08),
SIMDE_FLOAT64_C( -772.97), SIMDE_FLOAT64_C( -727.27), SIMDE_FLOAT64_C( 107.63), SIMDE_FLOAT64_C( 392.67) },
INT32_C( 121),
{ SIMDE_FLOAT64_C( 747.08), SIMDE_FLOAT64_C( -792.26), SIMDE_FLOAT64_C( -888.19), SIMDE_FLOAT64_C( 123.08),
SIMDE_FLOAT64_C( -752.54), SIMDE_FLOAT64_C( -727.27), SIMDE_FLOAT64_C( -823.01), SIMDE_FLOAT64_C( 107.63) } },
{ { SIMDE_FLOAT64_C( -658.54), SIMDE_FLOAT64_C( -509.39), SIMDE_FLOAT64_C( -165.78), SIMDE_FLOAT64_C( -266.26),
SIMDE_FLOAT64_C( 278.05), SIMDE_FLOAT64_C( -509.53), SIMDE_FLOAT64_C( 394.57), SIMDE_FLOAT64_C( -359.10) },
{ SIMDE_FLOAT64_C( -957.04), SIMDE_FLOAT64_C( -703.49), SIMDE_FLOAT64_C( 975.46), SIMDE_FLOAT64_C( 37.93),
SIMDE_FLOAT64_C( -956.41), SIMDE_FLOAT64_C( -912.73), SIMDE_FLOAT64_C( 928.25), SIMDE_FLOAT64_C( -58.66) },
INT32_C( 213),
{ SIMDE_FLOAT64_C( -509.39), SIMDE_FLOAT64_C( -957.04), SIMDE_FLOAT64_C( -266.26), SIMDE_FLOAT64_C( 975.46),
SIMDE_FLOAT64_C( -509.53), SIMDE_FLOAT64_C( -956.41), SIMDE_FLOAT64_C( -359.10), SIMDE_FLOAT64_C( -58.66) } },
{ { SIMDE_FLOAT64_C( -327.09), SIMDE_FLOAT64_C( -678.51), SIMDE_FLOAT64_C( 665.54), SIMDE_FLOAT64_C( -100.06),
SIMDE_FLOAT64_C( -405.78), SIMDE_FLOAT64_C( -226.83), SIMDE_FLOAT64_C( -707.39), SIMDE_FLOAT64_C( -22.73) },
{ SIMDE_FLOAT64_C( 658.24), SIMDE_FLOAT64_C( -61.08), SIMDE_FLOAT64_C( 557.37), SIMDE_FLOAT64_C( 999.71),
SIMDE_FLOAT64_C( 429.53), SIMDE_FLOAT64_C( -608.41), SIMDE_FLOAT64_C( -266.56), SIMDE_FLOAT64_C( -292.42) },
INT32_C( 130),
{ SIMDE_FLOAT64_C( -327.09), SIMDE_FLOAT64_C( -61.08), SIMDE_FLOAT64_C( 665.54), SIMDE_FLOAT64_C( 557.37),
SIMDE_FLOAT64_C( -405.78), SIMDE_FLOAT64_C( 429.53), SIMDE_FLOAT64_C( -707.39), SIMDE_FLOAT64_C( -292.42) } },
{ { SIMDE_FLOAT64_C( -575.47), SIMDE_FLOAT64_C( 323.95), SIMDE_FLOAT64_C( 962.95), SIMDE_FLOAT64_C( -531.89),
SIMDE_FLOAT64_C( 411.22), SIMDE_FLOAT64_C( 891.20), SIMDE_FLOAT64_C( 409.45), SIMDE_FLOAT64_C( 745.94) },
{ SIMDE_FLOAT64_C( -386.62), SIMDE_FLOAT64_C( -472.23), SIMDE_FLOAT64_C( -711.59), SIMDE_FLOAT64_C( 286.29),
SIMDE_FLOAT64_C( -150.74), SIMDE_FLOAT64_C( 953.95), SIMDE_FLOAT64_C( -813.77), SIMDE_FLOAT64_C( 443.48) },
INT32_C( 164),
{ SIMDE_FLOAT64_C( -575.47), SIMDE_FLOAT64_C( -386.62), SIMDE_FLOAT64_C( -531.89), SIMDE_FLOAT64_C( -711.59),
SIMDE_FLOAT64_C( 411.22), SIMDE_FLOAT64_C( 953.95), SIMDE_FLOAT64_C( 409.45), SIMDE_FLOAT64_C( 443.48) } },
{ { SIMDE_FLOAT64_C( 417.75), SIMDE_FLOAT64_C( 978.11), SIMDE_FLOAT64_C( -614.93), SIMDE_FLOAT64_C( -152.72),
SIMDE_FLOAT64_C( -630.29), SIMDE_FLOAT64_C( 118.51), SIMDE_FLOAT64_C( 554.86), SIMDE_FLOAT64_C( 251.77) },
{ SIMDE_FLOAT64_C( 246.53), SIMDE_FLOAT64_C( -96.66), SIMDE_FLOAT64_C( -823.21), SIMDE_FLOAT64_C( 671.05),
SIMDE_FLOAT64_C( -772.71), SIMDE_FLOAT64_C( -860.26), SIMDE_FLOAT64_C( -860.83), SIMDE_FLOAT64_C( 638.50) },
INT32_C( 60),
{ SIMDE_FLOAT64_C( 417.75), SIMDE_FLOAT64_C( 246.53), SIMDE_FLOAT64_C( -152.72), SIMDE_FLOAT64_C( 671.05),
SIMDE_FLOAT64_C( 118.51), SIMDE_FLOAT64_C( -860.26), SIMDE_FLOAT64_C( 554.86), SIMDE_FLOAT64_C( -860.83) } },
{ { SIMDE_FLOAT64_C( -923.61), SIMDE_FLOAT64_C( 672.86), SIMDE_FLOAT64_C( 930.61), SIMDE_FLOAT64_C( -74.35),
SIMDE_FLOAT64_C( 626.80), SIMDE_FLOAT64_C( -883.16), SIMDE_FLOAT64_C( -630.87), SIMDE_FLOAT64_C( -646.08) },
{ SIMDE_FLOAT64_C( -404.32), SIMDE_FLOAT64_C( -210.12), SIMDE_FLOAT64_C( -260.72), SIMDE_FLOAT64_C( -986.57),
SIMDE_FLOAT64_C( -232.01), SIMDE_FLOAT64_C( 124.35), SIMDE_FLOAT64_C( -139.29), SIMDE_FLOAT64_C( 137.70) },
INT32_C( 142),
{ SIMDE_FLOAT64_C( -923.61), SIMDE_FLOAT64_C( -210.12), SIMDE_FLOAT64_C( -74.35), SIMDE_FLOAT64_C( -986.57),
SIMDE_FLOAT64_C( 626.80), SIMDE_FLOAT64_C( -232.01), SIMDE_FLOAT64_C( -630.87), SIMDE_FLOAT64_C( 137.70) } },
};
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_shuffle_pd(a, b, INT32_C( 6));
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_shuffle_pd(a, b, INT32_C( 190));
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_shuffle_pd(a, b, INT32_C( 121));
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_shuffle_pd(a, b, INT32_C( 213));
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_shuffle_pd(a, b, INT32_C( 130));
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_shuffle_pd(a, b, INT32_C( 164));
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_shuffle_pd(a, b, INT32_C( 60));
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_shuffle_pd(a, b, INT32_C( 142));
simde_test_x86_assert_equal_f64x8(r, simde_mm512_loadu_pd(test_vec[7].r), 1);
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
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_random_i32() & 255;
simde__m512d r;
SIMDE_CONSTIFY_256_(simde_mm512_shuffle_pd, r, simde_mm512_setzero_pd(), imm8, a, b);
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_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_shufflehi_epi16(SIMDE_MUNIT_TEST_ARGS) {
#if 1
const struct {
int16_t a[32];
uint8_t imm8;
int16_t r[32];
} test_vec[8] = {
{ { INT16_C( 8165), -INT16_C( 20180), INT16_C( 7620), -INT16_C( 24104), -INT16_C( 20027), INT16_C( 17738), -INT16_C( 30792), -INT16_C( 1690),
INT16_C( 8342), INT16_C( 22020), INT16_C( 10666), -INT16_C( 21638), INT16_C( 11237), -INT16_C( 18036), -INT16_C( 6313), INT16_C( 15786),
-INT16_C( 10745), -INT16_C( 13330), -INT16_C( 14605), -INT16_C( 18324), -INT16_C( 18825), INT16_C( 12286), INT16_C( 25661), -INT16_C( 11480),
INT16_C( 11396), INT16_C( 12074), -INT16_C( 23467), INT16_C( 15066), INT16_C( 26320), INT16_C( 10227), -INT16_C( 25011), INT16_C( 21604) },
UINT8_C(116),
{ INT16_C( 8165), -INT16_C( 20180), INT16_C( 7620), -INT16_C( 24104), -INT16_C( 20027), INT16_C( 17738), -INT16_C( 1690), INT16_C( 17738),
INT16_C( 8342), INT16_C( 22020), INT16_C( 10666), -INT16_C( 21638), INT16_C( 11237), -INT16_C( 18036), INT16_C( 15786), -INT16_C( 18036),
-INT16_C( 10745), -INT16_C( 13330), -INT16_C( 14605), -INT16_C( 18324), -INT16_C( 18825), INT16_C( 12286), -INT16_C( 11480), INT16_C( 12286),
INT16_C( 11396), INT16_C( 12074), -INT16_C( 23467), INT16_C( 15066), INT16_C( 26320), INT16_C( 10227), INT16_C( 21604), INT16_C( 10227) } },
{ { -INT16_C( 29927), -INT16_C( 28384), INT16_C( 7745), INT16_C( 32448), -INT16_C( 5757), INT16_C( 1874), INT16_C( 31765), INT16_C( 27446),
INT16_C( 4128), -INT16_C( 3931), -INT16_C( 26250), -INT16_C( 15336), INT16_C( 31799), -INT16_C( 21736), INT16_C( 14543), -INT16_C( 5869),
INT16_C( 13507), INT16_C( 1402), INT16_C( 14930), -INT16_C( 10877), -INT16_C( 10973), INT16_C( 14813), INT16_C( 4945), INT16_C( 29348),
INT16_C( 18724), -INT16_C( 26014), INT16_C( 31458), INT16_C( 6494), INT16_C( 30711), -INT16_C( 14651), -INT16_C( 10065), INT16_C( 29359) },
UINT8_C( 12),
{ -INT16_C( 29927), -INT16_C( 28384), INT16_C( 7745), INT16_C( 32448), -INT16_C( 5757), INT16_C( 27446), -INT16_C( 5757), -INT16_C( 5757),
INT16_C( 4128), -INT16_C( 3931), -INT16_C( 26250), -INT16_C( 15336), INT16_C( 31799), -INT16_C( 5869), INT16_C( 31799), INT16_C( 31799),
INT16_C( 13507), INT16_C( 1402), INT16_C( 14930), -INT16_C( 10877), -INT16_C( 10973), INT16_C( 29348), -INT16_C( 10973), -INT16_C( 10973),
INT16_C( 18724), -INT16_C( 26014), INT16_C( 31458), INT16_C( 6494), INT16_C( 30711), INT16_C( 29359), INT16_C( 30711), INT16_C( 30711) } },
{ { -INT16_C( 1180), -INT16_C( 30924), INT16_C( 4560), INT16_C( 8896), INT16_C( 25637), INT16_C( 18836), -INT16_C( 2386), -INT16_C( 28445),
INT16_C( 17009), INT16_C( 26794), INT16_C( 28601), INT16_C( 26670), -INT16_C( 8633), INT16_C( 21722), INT16_C( 20999), INT16_C( 27571),
-INT16_C( 6323), INT16_C( 7667), -INT16_C( 19463), INT16_C( 7743), -INT16_C( 11496), -INT16_C( 14745), INT16_C( 19146), INT16_C( 15190),
INT16_C( 140), INT16_C( 17827), -INT16_C( 11921), -INT16_C( 18515), -INT16_C( 30545), -INT16_C( 18677), -INT16_C( 16678), INT16_C( 10018) },
UINT8_C(165),
{ -INT16_C( 1180), -INT16_C( 30924), INT16_C( 4560), INT16_C( 8896), INT16_C( 18836), INT16_C( 18836), -INT16_C( 2386), -INT16_C( 2386),
INT16_C( 17009), INT16_C( 26794), INT16_C( 28601), INT16_C( 26670), INT16_C( 21722), INT16_C( 21722), INT16_C( 20999), INT16_C( 20999),
-INT16_C( 6323), INT16_C( 7667), -INT16_C( 19463), INT16_C( 7743), -INT16_C( 14745), -INT16_C( 14745), INT16_C( 19146), INT16_C( 19146),
INT16_C( 140), INT16_C( 17827), -INT16_C( 11921), -INT16_C( 18515), -INT16_C( 18677), -INT16_C( 18677), -INT16_C( 16678), -INT16_C( 16678) } },
{ { -INT16_C( 31543), -INT16_C( 7748), INT16_C( 9047), INT16_C( 8615), -INT16_C( 658), -INT16_C( 1444), -INT16_C( 2), INT16_C( 27968),
-INT16_C( 4655), -INT16_C( 32732), INT16_C( 12149), INT16_C( 20279), INT16_C( 23277), -INT16_C( 27786), -INT16_C( 17553), INT16_C( 14385),
-INT16_C( 4545), -INT16_C( 27111), -INT16_C( 16367), INT16_C( 32696), INT16_C( 5310), -INT16_C( 17286), -INT16_C( 17900), -INT16_C( 6871),
INT16_C( 20135), INT16_C( 7525), -INT16_C( 25219), INT16_C( 27500), -INT16_C( 7177), INT16_C( 26366), INT16_C( 12190), -INT16_C( 8801) },
UINT8_C( 29),
{ -INT16_C( 31543), -INT16_C( 7748), INT16_C( 9047), INT16_C( 8615), -INT16_C( 1444), INT16_C( 27968), -INT16_C( 1444), -INT16_C( 658),
-INT16_C( 4655), -INT16_C( 32732), INT16_C( 12149), INT16_C( 20279), -INT16_C( 27786), INT16_C( 14385), -INT16_C( 27786), INT16_C( 23277),
-INT16_C( 4545), -INT16_C( 27111), -INT16_C( 16367), INT16_C( 32696), -INT16_C( 17286), -INT16_C( 6871), -INT16_C( 17286), INT16_C( 5310),
INT16_C( 20135), INT16_C( 7525), -INT16_C( 25219), INT16_C( 27500), INT16_C( 26366), -INT16_C( 8801), INT16_C( 26366), -INT16_C( 7177) } },
{ { INT16_C( 11129), INT16_C( 14254), INT16_C( 10304), INT16_C( 21747), INT16_C( 7394), -INT16_C( 30151), -INT16_C( 24982), -INT16_C( 5977),
INT16_C( 4923), INT16_C( 12883), INT16_C( 20982), -INT16_C( 27495), INT16_C( 14464), -INT16_C( 24975), -INT16_C( 6672), INT16_C( 27085),
INT16_C( 31504), INT16_C( 20640), -INT16_C( 27740), -INT16_C( 31068), -INT16_C( 8784), INT16_C( 6672), -INT16_C( 18564), -INT16_C( 18686),
INT16_C( 21963), -INT16_C( 15894), -INT16_C( 31834), INT16_C( 10070), -INT16_C( 14405), -INT16_C( 21563), -INT16_C( 27988), -INT16_C( 17131) },
UINT8_C( 13),
{ INT16_C( 11129), INT16_C( 14254), INT16_C( 10304), INT16_C( 21747), -INT16_C( 30151), -INT16_C( 5977), INT16_C( 7394), INT16_C( 7394),
INT16_C( 4923), INT16_C( 12883), INT16_C( 20982), -INT16_C( 27495), -INT16_C( 24975), INT16_C( 27085), INT16_C( 14464), INT16_C( 14464),
INT16_C( 31504), INT16_C( 20640), -INT16_C( 27740), -INT16_C( 31068), INT16_C( 6672), -INT16_C( 18686), -INT16_C( 8784), -INT16_C( 8784),
INT16_C( 21963), -INT16_C( 15894), -INT16_C( 31834), INT16_C( 10070), -INT16_C( 21563), -INT16_C( 17131), -INT16_C( 14405), -INT16_C( 14405) } },
{ { -INT16_C( 19895), -INT16_C( 1736), INT16_C( 18575), INT16_C( 2835), INT16_C( 5632), -INT16_C( 13373), -INT16_C( 21141), INT16_C( 4748),
-INT16_C( 7632), -INT16_C( 5319), -INT16_C( 342), INT16_C( 22166), -INT16_C( 21616), -INT16_C( 25325), INT16_C( 8545), -INT16_C( 21937),
-INT16_C( 30765), INT16_C( 25251), -INT16_C( 18737), -INT16_C( 12434), INT16_C( 12748), INT16_C( 14490), INT16_C( 10206), INT16_C( 3658),
-INT16_C( 31991), -INT16_C( 19463), -INT16_C( 28799), INT16_C( 4362), INT16_C( 7483), -INT16_C( 25426), -INT16_C( 706), INT16_C( 4422) },
UINT8_C(132),
{ -INT16_C( 19895), -INT16_C( 1736), INT16_C( 18575), INT16_C( 2835), INT16_C( 5632), -INT16_C( 13373), INT16_C( 5632), -INT16_C( 21141),
-INT16_C( 7632), -INT16_C( 5319), -INT16_C( 342), INT16_C( 22166), -INT16_C( 21616), -INT16_C( 25325), -INT16_C( 21616), INT16_C( 8545),
-INT16_C( 30765), INT16_C( 25251), -INT16_C( 18737), -INT16_C( 12434), INT16_C( 12748), INT16_C( 14490), INT16_C( 12748), INT16_C( 10206),
-INT16_C( 31991), -INT16_C( 19463), -INT16_C( 28799), INT16_C( 4362), INT16_C( 7483), -INT16_C( 25426), INT16_C( 7483), -INT16_C( 706) } },
{ { -INT16_C( 7521), INT16_C( 27683), -INT16_C( 16877), -INT16_C( 3676), -INT16_C( 4379), -INT16_C( 4353), -INT16_C( 1935), -INT16_C( 3422),
-INT16_C( 21369), -INT16_C( 15869), -INT16_C( 20023), INT16_C( 2142), -INT16_C( 23377), INT16_C( 13081), -INT16_C( 29299), INT16_C( 11655),
-INT16_C( 21649), -INT16_C( 32103), INT16_C( 15721), INT16_C( 20083), INT16_C( 29227), -INT16_C( 25540), -INT16_C( 8598), -INT16_C( 3442),
-INT16_C( 28278), INT16_C( 21684), INT16_C( 4930), -INT16_C( 3748), INT16_C( 30135), INT16_C( 17701), -INT16_C( 21501), INT16_C( 29298) },
UINT8_C( 87),
{ -INT16_C( 7521), INT16_C( 27683), -INT16_C( 16877), -INT16_C( 3676), -INT16_C( 3422), -INT16_C( 4353), -INT16_C( 4353), -INT16_C( 4353),
-INT16_C( 21369), -INT16_C( 15869), -INT16_C( 20023), INT16_C( 2142), INT16_C( 11655), INT16_C( 13081), INT16_C( 13081), INT16_C( 13081),
-INT16_C( 21649), -INT16_C( 32103), INT16_C( 15721), INT16_C( 20083), -INT16_C( 3442), -INT16_C( 25540), -INT16_C( 25540), -INT16_C( 25540),
-INT16_C( 28278), INT16_C( 21684), INT16_C( 4930), -INT16_C( 3748), INT16_C( 29298), INT16_C( 17701), INT16_C( 17701), INT16_C( 17701) } },
{ { INT16_C( 26696), INT16_C( 29454), INT16_C( 19419), INT16_C( 17679), -INT16_C( 25303), -INT16_C( 19401), -INT16_C( 5074), INT16_C( 28680),
INT16_C( 25855), -INT16_C( 18846), -INT16_C( 30759), -INT16_C( 8965), INT16_C( 27955), -INT16_C( 29873), INT16_C( 17528), -INT16_C( 16309),
INT16_C( 23212), -INT16_C( 30925), INT16_C( 17061), -INT16_C( 12595), INT16_C( 1247), INT16_C( 3458), -INT16_C( 29968), -INT16_C( 4226),
-INT16_C( 7954), -INT16_C( 14170), -INT16_C( 24217), -INT16_C( 25948), -INT16_C( 3313), -INT16_C( 30939), INT16_C( 28983), -INT16_C( 7096) },
UINT8_C(203),
{ INT16_C( 26696), INT16_C( 29454), INT16_C( 19419), INT16_C( 17679), INT16_C( 28680), -INT16_C( 5074), -INT16_C( 25303), INT16_C( 28680),
INT16_C( 25855), -INT16_C( 18846), -INT16_C( 30759), -INT16_C( 8965), -INT16_C( 16309), INT16_C( 17528), INT16_C( 27955), -INT16_C( 16309),
INT16_C( 23212), -INT16_C( 30925), INT16_C( 17061), -INT16_C( 12595), -INT16_C( 4226), -INT16_C( 29968), INT16_C( 1247), -INT16_C( 4226),
-INT16_C( 7954), -INT16_C( 14170), -INT16_C( 24217), -INT16_C( 25948), -INT16_C( 7096), INT16_C( 28983), -INT16_C( 3313), -INT16_C( 7096) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
simde__m512i r, a = simde_mm512_loadu_epi16(test_vec[i].a);
SIMDE_CONSTIFY_256_(simde_mm512_shufflehi_epi16, r, (HEDLEY_UNREACHABLE(), a), test_vec[i].imm8, a);
simde_test_x86_assert_equal_i16x32(r, simde_mm512_loadu_epi16(test_vec[i].r));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0; i < 8; i++) {
simde__m512i r, a = simde_test_x86_random_i16x32();
uint8_t imm8 = simde_test_codegen_random_u32() & 255;
SIMDE_CONSTIFY_256_(simde_mm512_shufflehi_epi16, r, (HEDLEY_UNREACHABLE(), a), imm8, a);
simde_test_x86_write_i16x32(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_codegen_write_u8(2, imm8, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_x86_write_i16x32(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_mm512_shufflelo_epi16(SIMDE_MUNIT_TEST_ARGS) {
#if 1
const struct {
int16_t a[32];
uint8_t imm8;
int16_t r[32];
} test_vec[8] = {
{ { -INT16_C( 12781), -INT16_C( 20526), -INT16_C( 10139), INT16_C( 345), INT16_C( 21680), -INT16_C( 7148), -INT16_C( 18740), -INT16_C( 19412),
INT16_C( 26293), INT16_C( 16008), -INT16_C( 16095), INT16_C( 29651), -INT16_C( 29408), -INT16_C( 2020), INT16_C( 23419), -INT16_C( 29007),
-INT16_C( 31958), -INT16_C( 28867), -INT16_C( 27045), INT16_C( 2960), -INT16_C( 23317), -INT16_C( 18448), INT16_C( 7258), INT16_C( 4204),
-INT16_C( 2942), -INT16_C( 23474), INT16_C( 8629), -INT16_C( 10985), INT16_C( 13230), INT16_C( 10957), INT16_C( 32399), -INT16_C( 17992) },
UINT8_C( 2),
{ -INT16_C( 10139), -INT16_C( 12781), -INT16_C( 12781), -INT16_C( 12781), INT16_C( 21680), -INT16_C( 7148), -INT16_C( 18740), -INT16_C( 19412),
-INT16_C( 16095), INT16_C( 26293), INT16_C( 26293), INT16_C( 26293), -INT16_C( 29408), -INT16_C( 2020), INT16_C( 23419), -INT16_C( 29007),
-INT16_C( 27045), -INT16_C( 31958), -INT16_C( 31958), -INT16_C( 31958), -INT16_C( 23317), -INT16_C( 18448), INT16_C( 7258), INT16_C( 4204),
INT16_C( 8629), -INT16_C( 2942), -INT16_C( 2942), -INT16_C( 2942), INT16_C( 13230), INT16_C( 10957), INT16_C( 32399), -INT16_C( 17992) } },
{ { -INT16_C( 10100), INT16_C( 30569), INT16_C( 22909), -INT16_C( 10449), -INT16_C( 25739), -INT16_C( 2073), INT16_C( 13711), INT16_C( 17819),
-INT16_C( 19881), INT16_C( 1306), -INT16_C( 5914), INT16_C( 29999), -INT16_C( 6042), INT16_C( 26670), INT16_C( 30430), INT16_C( 27334),
INT16_C( 12110), -INT16_C( 13342), INT16_C( 4488), -INT16_C( 605), -INT16_C( 30036), INT16_C( 15348), -INT16_C( 28480), INT16_C( 6016),
-INT16_C( 25790), INT16_C( 10268), INT16_C( 19587), -INT16_C( 5731), -INT16_C( 13516), INT16_C( 4690), INT16_C( 6209), -INT16_C( 28548) },
UINT8_C( 71),
{ -INT16_C( 10449), INT16_C( 30569), -INT16_C( 10100), INT16_C( 30569), -INT16_C( 25739), -INT16_C( 2073), INT16_C( 13711), INT16_C( 17819),
INT16_C( 29999), INT16_C( 1306), -INT16_C( 19881), INT16_C( 1306), -INT16_C( 6042), INT16_C( 26670), INT16_C( 30430), INT16_C( 27334),
-INT16_C( 605), -INT16_C( 13342), INT16_C( 12110), -INT16_C( 13342), -INT16_C( 30036), INT16_C( 15348), -INT16_C( 28480), INT16_C( 6016),
-INT16_C( 5731), INT16_C( 10268), -INT16_C( 25790), INT16_C( 10268), -INT16_C( 13516), INT16_C( 4690), INT16_C( 6209), -INT16_C( 28548) } },
{ { -INT16_C( 401), INT16_C( 7116), -INT16_C( 16247), INT16_C( 18775), -INT16_C( 10416), -INT16_C( 27808), INT16_C( 31858), -INT16_C( 2629),
INT16_C( 22984), -INT16_C( 801), INT16_C( 12580), INT16_C( 26126), -INT16_C( 29879), -INT16_C( 28426), INT16_C( 20969), INT16_C( 22879),
INT16_C( 11088), -INT16_C( 9868), -INT16_C( 13333), INT16_C( 15394), -INT16_C( 32093), INT16_C( 5583), -INT16_C( 29954), -INT16_C( 14581),
-INT16_C( 5405), INT16_C( 2243), -INT16_C( 11749), INT16_C( 25710), INT16_C( 25693), INT16_C( 18164), INT16_C( 21429), INT16_C( 1439) },
UINT8_C(126),
{ -INT16_C( 16247), INT16_C( 18775), INT16_C( 18775), INT16_C( 7116), -INT16_C( 10416), -INT16_C( 27808), INT16_C( 31858), -INT16_C( 2629),
INT16_C( 12580), INT16_C( 26126), INT16_C( 26126), -INT16_C( 801), -INT16_C( 29879), -INT16_C( 28426), INT16_C( 20969), INT16_C( 22879),
-INT16_C( 13333), INT16_C( 15394), INT16_C( 15394), -INT16_C( 9868), -INT16_C( 32093), INT16_C( 5583), -INT16_C( 29954), -INT16_C( 14581),
-INT16_C( 11749), INT16_C( 25710), INT16_C( 25710), INT16_C( 2243), INT16_C( 25693), INT16_C( 18164), INT16_C( 21429), INT16_C( 1439) } },
{ { INT16_C( 223), -INT16_C( 32091), INT16_C( 29826), -INT16_C( 32360), -INT16_C( 23553), -INT16_C( 7608), INT16_C( 2957), -INT16_C( 22294),
INT16_C( 22749), INT16_C( 14860), INT16_C( 188), INT16_C( 29313), INT16_C( 8275), -INT16_C( 11913), INT16_C( 22068), INT16_C( 5178),
-INT16_C( 8106), -INT16_C( 9834), INT16_C( 11860), INT16_C( 21338), -INT16_C( 23855), INT16_C( 24118), INT16_C( 8365), -INT16_C( 29946),
INT16_C( 4729), INT16_C( 13765), INT16_C( 17938), INT16_C( 26023), INT16_C( 8039), -INT16_C( 25802), INT16_C( 29045), -INT16_C( 13393) },
UINT8_C( 81),
{ -INT16_C( 32091), INT16_C( 223), -INT16_C( 32091), -INT16_C( 32091), -INT16_C( 23553), -INT16_C( 7608), INT16_C( 2957), -INT16_C( 22294),
INT16_C( 14860), INT16_C( 22749), INT16_C( 14860), INT16_C( 14860), INT16_C( 8275), -INT16_C( 11913), INT16_C( 22068), INT16_C( 5178),
-INT16_C( 9834), -INT16_C( 8106), -INT16_C( 9834), -INT16_C( 9834), -INT16_C( 23855), INT16_C( 24118), INT16_C( 8365), -INT16_C( 29946),
INT16_C( 13765), INT16_C( 4729), INT16_C( 13765), INT16_C( 13765), INT16_C( 8039), -INT16_C( 25802), INT16_C( 29045), -INT16_C( 13393) } },
{ { -INT16_C( 396), INT16_C( 18169), INT16_C( 12192), INT16_C( 20132), -INT16_C( 21681), -INT16_C( 14119), -INT16_C( 24899), -INT16_C( 12034),
-INT16_C( 23067), INT16_C( 19509), INT16_C( 27844), INT16_C( 14823), -INT16_C( 26659), INT16_C( 11781), -INT16_C( 22051), INT16_C( 20947),
-INT16_C( 13144), INT16_C( 18583), INT16_C( 15611), INT16_C( 19350), INT16_C( 28647), -INT16_C( 23533), INT16_C( 4366), -INT16_C( 3212),
-INT16_C( 21833), INT16_C( 31551), INT16_C( 9750), -INT16_C( 3147), -INT16_C( 17731), -INT16_C( 26079), -INT16_C( 2973), INT16_C( 3052) },
UINT8_C(193),
{ INT16_C( 18169), -INT16_C( 396), -INT16_C( 396), INT16_C( 20132), -INT16_C( 21681), -INT16_C( 14119), -INT16_C( 24899), -INT16_C( 12034),
INT16_C( 19509), -INT16_C( 23067), -INT16_C( 23067), INT16_C( 14823), -INT16_C( 26659), INT16_C( 11781), -INT16_C( 22051), INT16_C( 20947),
INT16_C( 18583), -INT16_C( 13144), -INT16_C( 13144), INT16_C( 19350), INT16_C( 28647), -INT16_C( 23533), INT16_C( 4366), -INT16_C( 3212),
INT16_C( 31551), -INT16_C( 21833), -INT16_C( 21833), -INT16_C( 3147), -INT16_C( 17731), -INT16_C( 26079), -INT16_C( 2973), INT16_C( 3052) } },
{ { -INT16_C( 5441), -INT16_C( 23033), INT16_C( 7002), INT16_C( 26699), -INT16_C( 16596), -INT16_C( 7333), -INT16_C( 26007), INT16_C( 32607),
INT16_C( 5312), INT16_C( 32370), -INT16_C( 27698), INT16_C( 12568), INT16_C( 1160), INT16_C( 18749), -INT16_C( 28280), INT16_C( 18181),
INT16_C( 3451), -INT16_C( 10770), INT16_C( 14632), INT16_C( 21565), -INT16_C( 26376), INT16_C( 25144), -INT16_C( 26830), -INT16_C( 3103),
INT16_C( 21675), INT16_C( 31089), -INT16_C( 30233), INT16_C( 28586), -INT16_C( 6258), INT16_C( 5816), -INT16_C( 16776), -INT16_C( 2979) },
UINT8_C(203),
{ INT16_C( 26699), INT16_C( 7002), -INT16_C( 5441), INT16_C( 26699), -INT16_C( 16596), -INT16_C( 7333), -INT16_C( 26007), INT16_C( 32607),
INT16_C( 12568), -INT16_C( 27698), INT16_C( 5312), INT16_C( 12568), INT16_C( 1160), INT16_C( 18749), -INT16_C( 28280), INT16_C( 18181),
INT16_C( 21565), INT16_C( 14632), INT16_C( 3451), INT16_C( 21565), -INT16_C( 26376), INT16_C( 25144), -INT16_C( 26830), -INT16_C( 3103),
INT16_C( 28586), -INT16_C( 30233), INT16_C( 21675), INT16_C( 28586), -INT16_C( 6258), INT16_C( 5816), -INT16_C( 16776), -INT16_C( 2979) } },
{ { INT16_C( 1924), INT16_C( 32071), INT16_C( 32671), -INT16_C( 11553), -INT16_C( 16362), -INT16_C( 15931), INT16_C( 13844), -INT16_C( 966),
-INT16_C( 6721), INT16_C( 19819), INT16_C( 9420), INT16_C( 17763), -INT16_C( 15902), -INT16_C( 21191), INT16_C( 524), -INT16_C( 28256),
-INT16_C( 6391), -INT16_C( 22258), -INT16_C( 4761), INT16_C( 32123), INT16_C( 16557), -INT16_C( 15809), INT16_C( 31094), INT16_C( 13758),
INT16_C( 10590), INT16_C( 11139), -INT16_C( 6579), INT16_C( 12144), -INT16_C( 22105), -INT16_C( 19236), INT16_C( 31915), -INT16_C( 19131) },
UINT8_C(100),
{ INT16_C( 1924), INT16_C( 32071), INT16_C( 32671), INT16_C( 32071), -INT16_C( 16362), -INT16_C( 15931), INT16_C( 13844), -INT16_C( 966),
-INT16_C( 6721), INT16_C( 19819), INT16_C( 9420), INT16_C( 19819), -INT16_C( 15902), -INT16_C( 21191), INT16_C( 524), -INT16_C( 28256),
-INT16_C( 6391), -INT16_C( 22258), -INT16_C( 4761), -INT16_C( 22258), INT16_C( 16557), -INT16_C( 15809), INT16_C( 31094), INT16_C( 13758),
INT16_C( 10590), INT16_C( 11139), -INT16_C( 6579), INT16_C( 11139), -INT16_C( 22105), -INT16_C( 19236), INT16_C( 31915), -INT16_C( 19131) } },
{ { -INT16_C( 9920), -INT16_C( 4792), -INT16_C( 30951), -INT16_C( 28753), INT16_C( 27905), INT16_C( 24516), INT16_C( 18327), -INT16_C( 7030),
-INT16_C( 1490), -INT16_C( 10988), -INT16_C( 3933), INT16_C( 20361), -INT16_C( 12691), -INT16_C( 12028), INT16_C( 25121), INT16_C( 24988),
-INT16_C( 7109), INT16_C( 21583), -INT16_C( 404), INT16_C( 28131), -INT16_C( 22676), INT16_C( 972), INT16_C( 22511), INT16_C( 7655),
-INT16_C( 1199), -INT16_C( 2574), INT16_C( 31980), INT16_C( 22852), INT16_C( 18506), INT16_C( 27690), -INT16_C( 14678), -INT16_C( 6707) },
UINT8_C(170),
{ -INT16_C( 30951), -INT16_C( 30951), -INT16_C( 30951), -INT16_C( 30951), INT16_C( 27905), INT16_C( 24516), INT16_C( 18327), -INT16_C( 7030),
-INT16_C( 3933), -INT16_C( 3933), -INT16_C( 3933), -INT16_C( 3933), -INT16_C( 12691), -INT16_C( 12028), INT16_C( 25121), INT16_C( 24988),
-INT16_C( 404), -INT16_C( 404), -INT16_C( 404), -INT16_C( 404), -INT16_C( 22676), INT16_C( 972), INT16_C( 22511), INT16_C( 7655),
INT16_C( 31980), INT16_C( 31980), INT16_C( 31980), INT16_C( 31980), INT16_C( 18506), INT16_C( 27690), -INT16_C( 14678), -INT16_C( 6707) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
simde__m512i r, a = simde_mm512_loadu_epi16(test_vec[i].a);
SIMDE_CONSTIFY_256_(simde_mm512_shufflelo_epi16, r, (HEDLEY_UNREACHABLE(), a), test_vec[i].imm8, a);
simde_test_x86_assert_equal_i16x32(r, simde_mm512_loadu_epi16(test_vec[i].r));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0; i < 8; i++) {
simde__m512i r, a = simde_test_x86_random_i16x32();
uint8_t imm8 = simde_test_codegen_random_u32() & 255;
SIMDE_CONSTIFY_256_(simde_mm512_shufflelo_epi16, r, (HEDLEY_UNREACHABLE(), a), imm8, a);
simde_test_x86_write_i16x32(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_codegen_write_u8(2, imm8, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_x86_write_i16x32(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
SIMDE_TEST_FUNC_LIST_BEGIN
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_shuffle_epi8)
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_mask_shuffle_epi8)
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_maskz_shuffle_epi8)
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_shuffle_epi32)
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_shuffle_f32x4)
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_mask_shuffle_f32x4)
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_maskz_shuffle_f32x4)
@ -4120,6 +4534,11 @@ SIMDE_TEST_FUNC_LIST_BEGIN
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_maskz_shuffle_i64x2)
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_shuffle_ps)
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_shuffle_pd)
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_shufflehi_epi16)
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_shufflelo_epi16)
SIMDE_TEST_FUNC_LIST_END
#include <test/x86/avx512/test-avx512-footer.h>