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

@ -23,6 +23,7 @@
* Copyright:
* 2020 Evan Nemerson <evan@nemerson.com>
* 2020 Christopher Moore <moore@free.fr>
* 2023 Michael R. Crusoe <crusoe@debian.org>
*/
#define SIMDE_TEST_X86_AVX512_INSN extract
@ -31,6 +32,74 @@
#include <simde/x86/avx512/set.h>
#include <simde/x86/avx512/extract.h>
static int
test_simde_mm256_extractf32x4_ps(SIMDE_MUNIT_TEST_ARGS) {
#if 1
const struct {
simde_float32 a[16];
simde_float32 r0[8];
simde_float32 r1[8];
} test_vec[8] = {
{ { SIMDE_FLOAT32_C( -570.03), SIMDE_FLOAT32_C( 423.11), SIMDE_FLOAT32_C( -393.19), SIMDE_FLOAT32_C( 843.13),
SIMDE_FLOAT32_C( -89.57), SIMDE_FLOAT32_C( 858.49), SIMDE_FLOAT32_C( -463.54), SIMDE_FLOAT32_C( 442.40) },
{ SIMDE_FLOAT32_C( -570.03), SIMDE_FLOAT32_C( 423.11), SIMDE_FLOAT32_C( -393.19), SIMDE_FLOAT32_C( 843.13) },
{ SIMDE_FLOAT32_C( -89.57), SIMDE_FLOAT32_C( 858.49), SIMDE_FLOAT32_C( -463.54), SIMDE_FLOAT32_C( 442.40) } },
{ { SIMDE_FLOAT32_C( -582.78), SIMDE_FLOAT32_C( 289.55), SIMDE_FLOAT32_C( -399.81), SIMDE_FLOAT32_C( 888.75),
SIMDE_FLOAT32_C( -410.50), SIMDE_FLOAT32_C( -966.52), SIMDE_FLOAT32_C( 140.52), SIMDE_FLOAT32_C( 33.19) },
{ SIMDE_FLOAT32_C( -582.78), SIMDE_FLOAT32_C( 289.55), SIMDE_FLOAT32_C( -399.81), SIMDE_FLOAT32_C( 888.75) },
{ SIMDE_FLOAT32_C( -410.50), SIMDE_FLOAT32_C( -966.52), SIMDE_FLOAT32_C( 140.52), SIMDE_FLOAT32_C( 33.19) } },
{ { SIMDE_FLOAT32_C( 367.98), SIMDE_FLOAT32_C( -814.08), SIMDE_FLOAT32_C( -588.81), SIMDE_FLOAT32_C( -661.15),
SIMDE_FLOAT32_C( 856.72), SIMDE_FLOAT32_C( -526.07), SIMDE_FLOAT32_C( -509.65), SIMDE_FLOAT32_C( -47.59) },
{ SIMDE_FLOAT32_C( 367.98), SIMDE_FLOAT32_C( -814.08), SIMDE_FLOAT32_C( -588.81), SIMDE_FLOAT32_C( -661.15) },
{ SIMDE_FLOAT32_C( 856.72), SIMDE_FLOAT32_C( -526.07), SIMDE_FLOAT32_C( -509.65), SIMDE_FLOAT32_C( -47.59) } },
{ { SIMDE_FLOAT32_C( 706.28), SIMDE_FLOAT32_C( 465.87), SIMDE_FLOAT32_C( -423.66), SIMDE_FLOAT32_C( -460.40),
SIMDE_FLOAT32_C( 212.75), SIMDE_FLOAT32_C( -32.59), SIMDE_FLOAT32_C( 446.63), SIMDE_FLOAT32_C( 642.73) },
{ SIMDE_FLOAT32_C( 706.28), SIMDE_FLOAT32_C( 465.87), SIMDE_FLOAT32_C( -423.66), SIMDE_FLOAT32_C( -460.40) },
{ SIMDE_FLOAT32_C( 212.75), SIMDE_FLOAT32_C( -32.59), SIMDE_FLOAT32_C( 446.63), SIMDE_FLOAT32_C( 642.73) } },
{ { SIMDE_FLOAT32_C( -609.48), SIMDE_FLOAT32_C( -946.56), SIMDE_FLOAT32_C( 485.86), SIMDE_FLOAT32_C( 300.96),
SIMDE_FLOAT32_C( 911.93), SIMDE_FLOAT32_C( -977.68), SIMDE_FLOAT32_C( -256.65), SIMDE_FLOAT32_C( -670.85) },
{ SIMDE_FLOAT32_C( -609.48), SIMDE_FLOAT32_C( -946.56), SIMDE_FLOAT32_C( 485.86), SIMDE_FLOAT32_C( 300.96) },
{ SIMDE_FLOAT32_C( 911.93), SIMDE_FLOAT32_C( -977.68), SIMDE_FLOAT32_C( -256.65), SIMDE_FLOAT32_C( -670.85) } },
{ { SIMDE_FLOAT32_C( 311.87), SIMDE_FLOAT32_C( 343.54), SIMDE_FLOAT32_C( -782.11), SIMDE_FLOAT32_C( 901.37),
SIMDE_FLOAT32_C( 377.02), SIMDE_FLOAT32_C( 358.42), SIMDE_FLOAT32_C( -65.44), SIMDE_FLOAT32_C( -255.00) },
{ SIMDE_FLOAT32_C( 311.87), SIMDE_FLOAT32_C( 343.54), SIMDE_FLOAT32_C( -782.11), SIMDE_FLOAT32_C( 901.37) },
{ SIMDE_FLOAT32_C( 377.02), SIMDE_FLOAT32_C( 358.42), SIMDE_FLOAT32_C( -65.44), SIMDE_FLOAT32_C( -255.00) } },
{ { SIMDE_FLOAT32_C( 544.34), SIMDE_FLOAT32_C( 345.75), SIMDE_FLOAT32_C( 83.86), SIMDE_FLOAT32_C( 401.06),
SIMDE_FLOAT32_C( 819.68), SIMDE_FLOAT32_C( 574.20), SIMDE_FLOAT32_C( -646.53), SIMDE_FLOAT32_C( 525.96) },
{ SIMDE_FLOAT32_C( 544.34), SIMDE_FLOAT32_C( 345.75), SIMDE_FLOAT32_C( 83.86), SIMDE_FLOAT32_C( 401.06) },
{ SIMDE_FLOAT32_C( 819.68), SIMDE_FLOAT32_C( 574.20), SIMDE_FLOAT32_C( -646.53), SIMDE_FLOAT32_C( 525.96) } },
{ { SIMDE_FLOAT32_C( 40.07), SIMDE_FLOAT32_C( -70.19), SIMDE_FLOAT32_C( -934.43), SIMDE_FLOAT32_C( -747.18),
SIMDE_FLOAT32_C( 897.23), SIMDE_FLOAT32_C( 512.20), SIMDE_FLOAT32_C( 895.55), SIMDE_FLOAT32_C( -712.25) },
{ SIMDE_FLOAT32_C( 40.07), SIMDE_FLOAT32_C( -70.19), SIMDE_FLOAT32_C( -934.43), SIMDE_FLOAT32_C( -747.18) },
{ SIMDE_FLOAT32_C( 897.23), SIMDE_FLOAT32_C( 512.20), SIMDE_FLOAT32_C( 895.55), SIMDE_FLOAT32_C( -712.25) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
simde__m128 r;
simde__m256 a = simde_mm256_loadu_ps(test_vec[i].a);
r = simde_mm256_extractf32x4_ps(a, 0);
simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[i].r0), 1);
r = simde_mm256_extractf32x4_ps(a, 1);
simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[i].r1), 1);
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde__m256 a = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
simde__m128 r0 = simde_mm256_extractf32x4_ps(a, 0);
simde__m128 r1 = simde_mm256_extractf32x4_ps(a, 1);
simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_x86_write_f32x4(2, r0, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_x86_write_f32x4(2, r1, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_mm512_extractf32x4_ps(SIMDE_MUNIT_TEST_ARGS) {
const struct {
@ -328,6 +397,105 @@ test_simde_mm512_maskz_extractf32x4_ps(SIMDE_MUNIT_TEST_ARGS) {
return 0;
}
static int
test_simde_mm512_extractf32x8_ps(SIMDE_MUNIT_TEST_ARGS) {
#if 1
const struct {
simde_float32 a[16];
simde_float32 r0[8];
simde_float32 r1[8];
} test_vec[8] = {
{ { SIMDE_FLOAT32_C( -912.95), SIMDE_FLOAT32_C( 306.91), SIMDE_FLOAT32_C( -167.78), SIMDE_FLOAT32_C( 996.72),
SIMDE_FLOAT32_C( -677.32), SIMDE_FLOAT32_C( -693.43), SIMDE_FLOAT32_C( 773.51), SIMDE_FLOAT32_C( 890.73),
SIMDE_FLOAT32_C( 407.16), SIMDE_FLOAT32_C( 411.07), SIMDE_FLOAT32_C( -686.96), SIMDE_FLOAT32_C( 165.05),
SIMDE_FLOAT32_C( -183.16), SIMDE_FLOAT32_C( -543.66), SIMDE_FLOAT32_C( 960.76), SIMDE_FLOAT32_C( -123.22) },
{ SIMDE_FLOAT32_C( -912.95), SIMDE_FLOAT32_C( 306.91), SIMDE_FLOAT32_C( -167.78), SIMDE_FLOAT32_C( 996.72),
SIMDE_FLOAT32_C( -677.32), SIMDE_FLOAT32_C( -693.43), SIMDE_FLOAT32_C( 773.51), SIMDE_FLOAT32_C( 890.73) },
{ SIMDE_FLOAT32_C( 407.16), SIMDE_FLOAT32_C( 411.07), SIMDE_FLOAT32_C( -686.96), SIMDE_FLOAT32_C( 165.05),
SIMDE_FLOAT32_C( -183.16), SIMDE_FLOAT32_C( -543.66), SIMDE_FLOAT32_C( 960.76), SIMDE_FLOAT32_C( -123.22) } },
{ { SIMDE_FLOAT32_C( -995.16), SIMDE_FLOAT32_C( -739.23), SIMDE_FLOAT32_C( -156.50), SIMDE_FLOAT32_C( -456.71),
SIMDE_FLOAT32_C( 956.69), SIMDE_FLOAT32_C( -734.68), SIMDE_FLOAT32_C( 325.52), SIMDE_FLOAT32_C( -515.39),
SIMDE_FLOAT32_C( -858.67), SIMDE_FLOAT32_C( -158.37), SIMDE_FLOAT32_C( 442.04), SIMDE_FLOAT32_C( -120.80),
SIMDE_FLOAT32_C( -186.22), SIMDE_FLOAT32_C( 439.75), SIMDE_FLOAT32_C( 843.07), SIMDE_FLOAT32_C( -99.17) },
{ SIMDE_FLOAT32_C( -995.16), SIMDE_FLOAT32_C( -739.23), SIMDE_FLOAT32_C( -156.50), SIMDE_FLOAT32_C( -456.71),
SIMDE_FLOAT32_C( 956.69), SIMDE_FLOAT32_C( -734.68), SIMDE_FLOAT32_C( 325.52), SIMDE_FLOAT32_C( -515.39) },
{ SIMDE_FLOAT32_C( -858.67), SIMDE_FLOAT32_C( -158.37), SIMDE_FLOAT32_C( 442.04), SIMDE_FLOAT32_C( -120.80),
SIMDE_FLOAT32_C( -186.22), SIMDE_FLOAT32_C( 439.75), SIMDE_FLOAT32_C( 843.07), SIMDE_FLOAT32_C( -99.17) } },
{ { SIMDE_FLOAT32_C( -253.35), SIMDE_FLOAT32_C( -324.72), SIMDE_FLOAT32_C( -102.45), SIMDE_FLOAT32_C( 69.33),
SIMDE_FLOAT32_C( -18.15), SIMDE_FLOAT32_C( -328.94), SIMDE_FLOAT32_C( -39.94), SIMDE_FLOAT32_C( -610.99),
SIMDE_FLOAT32_C( -917.87), SIMDE_FLOAT32_C( 273.10), SIMDE_FLOAT32_C( 554.07), SIMDE_FLOAT32_C( -101.03),
SIMDE_FLOAT32_C( 729.44), SIMDE_FLOAT32_C( 514.83), SIMDE_FLOAT32_C( 775.75), SIMDE_FLOAT32_C( 734.28) },
{ SIMDE_FLOAT32_C( -253.35), SIMDE_FLOAT32_C( -324.72), SIMDE_FLOAT32_C( -102.45), SIMDE_FLOAT32_C( 69.33),
SIMDE_FLOAT32_C( -18.15), SIMDE_FLOAT32_C( -328.94), SIMDE_FLOAT32_C( -39.94), SIMDE_FLOAT32_C( -610.99) },
{ SIMDE_FLOAT32_C( -917.87), SIMDE_FLOAT32_C( 273.10), SIMDE_FLOAT32_C( 554.07), SIMDE_FLOAT32_C( -101.03),
SIMDE_FLOAT32_C( 729.44), SIMDE_FLOAT32_C( 514.83), SIMDE_FLOAT32_C( 775.75), SIMDE_FLOAT32_C( 734.28) } },
{ { SIMDE_FLOAT32_C( 775.60), SIMDE_FLOAT32_C( -380.75), SIMDE_FLOAT32_C( -722.43), SIMDE_FLOAT32_C( 732.29),
SIMDE_FLOAT32_C( -115.42), SIMDE_FLOAT32_C( 603.09), SIMDE_FLOAT32_C( -783.11), SIMDE_FLOAT32_C( 25.91),
SIMDE_FLOAT32_C( -555.28), SIMDE_FLOAT32_C( 658.93), SIMDE_FLOAT32_C( 905.10), SIMDE_FLOAT32_C( 258.49),
SIMDE_FLOAT32_C( 98.68), SIMDE_FLOAT32_C( 748.17), SIMDE_FLOAT32_C( -840.67), SIMDE_FLOAT32_C( 845.34) },
{ SIMDE_FLOAT32_C( 775.60), SIMDE_FLOAT32_C( -380.75), SIMDE_FLOAT32_C( -722.43), SIMDE_FLOAT32_C( 732.29),
SIMDE_FLOAT32_C( -115.42), SIMDE_FLOAT32_C( 603.09), SIMDE_FLOAT32_C( -783.11), SIMDE_FLOAT32_C( 25.91) },
{ SIMDE_FLOAT32_C( -555.28), SIMDE_FLOAT32_C( 658.93), SIMDE_FLOAT32_C( 905.10), SIMDE_FLOAT32_C( 258.49),
SIMDE_FLOAT32_C( 98.68), SIMDE_FLOAT32_C( 748.17), SIMDE_FLOAT32_C( -840.67), SIMDE_FLOAT32_C( 845.34) } },
{ { SIMDE_FLOAT32_C( -576.54), SIMDE_FLOAT32_C( 56.88), SIMDE_FLOAT32_C( -85.33), SIMDE_FLOAT32_C( 405.31),
SIMDE_FLOAT32_C( 727.94), SIMDE_FLOAT32_C( 874.73), SIMDE_FLOAT32_C( 794.32), SIMDE_FLOAT32_C( 810.07),
SIMDE_FLOAT32_C( 147.83), SIMDE_FLOAT32_C( 348.39), SIMDE_FLOAT32_C( -290.97), SIMDE_FLOAT32_C( -122.73),
SIMDE_FLOAT32_C( -136.78), SIMDE_FLOAT32_C( -515.22), SIMDE_FLOAT32_C( -388.45), SIMDE_FLOAT32_C( -361.18) },
{ SIMDE_FLOAT32_C( -576.54), SIMDE_FLOAT32_C( 56.88), SIMDE_FLOAT32_C( -85.33), SIMDE_FLOAT32_C( 405.31),
SIMDE_FLOAT32_C( 727.94), SIMDE_FLOAT32_C( 874.73), SIMDE_FLOAT32_C( 794.32), SIMDE_FLOAT32_C( 810.07) },
{ SIMDE_FLOAT32_C( 147.83), SIMDE_FLOAT32_C( 348.39), SIMDE_FLOAT32_C( -290.97), SIMDE_FLOAT32_C( -122.73),
SIMDE_FLOAT32_C( -136.78), SIMDE_FLOAT32_C( -515.22), SIMDE_FLOAT32_C( -388.45), SIMDE_FLOAT32_C( -361.18) } },
{ { SIMDE_FLOAT32_C( 104.03), SIMDE_FLOAT32_C( -110.89), SIMDE_FLOAT32_C( -628.90), SIMDE_FLOAT32_C( 988.61),
SIMDE_FLOAT32_C( -507.80), SIMDE_FLOAT32_C( -412.00), SIMDE_FLOAT32_C( 14.52), SIMDE_FLOAT32_C( -63.08),
SIMDE_FLOAT32_C( -753.07), SIMDE_FLOAT32_C( -80.38), SIMDE_FLOAT32_C( -804.59), SIMDE_FLOAT32_C( 345.61),
SIMDE_FLOAT32_C( -332.21), SIMDE_FLOAT32_C( -645.26), SIMDE_FLOAT32_C( 190.95), SIMDE_FLOAT32_C( 91.25) },
{ SIMDE_FLOAT32_C( 104.03), SIMDE_FLOAT32_C( -110.89), SIMDE_FLOAT32_C( -628.90), SIMDE_FLOAT32_C( 988.61),
SIMDE_FLOAT32_C( -507.80), SIMDE_FLOAT32_C( -412.00), SIMDE_FLOAT32_C( 14.52), SIMDE_FLOAT32_C( -63.08) },
{ SIMDE_FLOAT32_C( -753.07), SIMDE_FLOAT32_C( -80.38), SIMDE_FLOAT32_C( -804.59), SIMDE_FLOAT32_C( 345.61),
SIMDE_FLOAT32_C( -332.21), SIMDE_FLOAT32_C( -645.26), SIMDE_FLOAT32_C( 190.95), SIMDE_FLOAT32_C( 91.25) } },
{ { SIMDE_FLOAT32_C( 411.62), SIMDE_FLOAT32_C( -894.38), SIMDE_FLOAT32_C( -503.45), SIMDE_FLOAT32_C( 139.56),
SIMDE_FLOAT32_C( 980.35), SIMDE_FLOAT32_C( -709.13), SIMDE_FLOAT32_C( -50.38), SIMDE_FLOAT32_C( 128.18),
SIMDE_FLOAT32_C( 639.26), SIMDE_FLOAT32_C( 658.66), SIMDE_FLOAT32_C( -994.55), SIMDE_FLOAT32_C( -497.52),
SIMDE_FLOAT32_C( -856.57), SIMDE_FLOAT32_C( -383.00), SIMDE_FLOAT32_C( 141.29), SIMDE_FLOAT32_C( 247.46) },
{ SIMDE_FLOAT32_C( 411.62), SIMDE_FLOAT32_C( -894.38), SIMDE_FLOAT32_C( -503.45), SIMDE_FLOAT32_C( 139.56),
SIMDE_FLOAT32_C( 980.35), SIMDE_FLOAT32_C( -709.13), SIMDE_FLOAT32_C( -50.38), SIMDE_FLOAT32_C( 128.18) },
{ SIMDE_FLOAT32_C( 639.26), SIMDE_FLOAT32_C( 658.66), SIMDE_FLOAT32_C( -994.55), SIMDE_FLOAT32_C( -497.52),
SIMDE_FLOAT32_C( -856.57), SIMDE_FLOAT32_C( -383.00), SIMDE_FLOAT32_C( 141.29), SIMDE_FLOAT32_C( 247.46) } },
{ { SIMDE_FLOAT32_C( 506.11), SIMDE_FLOAT32_C( 512.40), SIMDE_FLOAT32_C( 236.07), SIMDE_FLOAT32_C( 998.32),
SIMDE_FLOAT32_C( -899.61), SIMDE_FLOAT32_C( -749.41), SIMDE_FLOAT32_C( -64.76), SIMDE_FLOAT32_C( -652.67),
SIMDE_FLOAT32_C( 170.21), SIMDE_FLOAT32_C( 130.65), SIMDE_FLOAT32_C( 692.94), SIMDE_FLOAT32_C( 838.00),
SIMDE_FLOAT32_C( 485.39), SIMDE_FLOAT32_C( -116.11), SIMDE_FLOAT32_C( -70.75), SIMDE_FLOAT32_C( -102.99) },
{ SIMDE_FLOAT32_C( 506.11), SIMDE_FLOAT32_C( 512.40), SIMDE_FLOAT32_C( 236.07), SIMDE_FLOAT32_C( 998.32),
SIMDE_FLOAT32_C( -899.61), SIMDE_FLOAT32_C( -749.41), SIMDE_FLOAT32_C( -64.76), SIMDE_FLOAT32_C( -652.67) },
{ SIMDE_FLOAT32_C( 170.21), SIMDE_FLOAT32_C( 130.65), SIMDE_FLOAT32_C( 692.94), SIMDE_FLOAT32_C( 838.00),
SIMDE_FLOAT32_C( 485.39), SIMDE_FLOAT32_C( -116.11), SIMDE_FLOAT32_C( -70.75), SIMDE_FLOAT32_C( -102.99) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
simde__m256 r;
simde__m512 a = simde_mm512_loadu_ps(test_vec[i].a);
r = simde_mm512_extractf32x8_ps(a, 0);
simde_assert_m256_close(r, simde_mm256_loadu_ps(test_vec[i].r0), 1);
r = simde_mm512_extractf32x8_ps(a, 1);
simde_assert_m256_close(r, simde_mm256_loadu_ps(test_vec[i].r1), 1);
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde__m512 a = simde_test_x86_random_f32x16(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
simde__m256 r0 = simde_mm512_extractf32x8_ps(a, 0);
simde__m256 r1 = simde_mm512_extractf32x8_ps(a, 1);
simde_test_x86_write_f32x16(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_x86_write_f32x8(2, r0, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_x86_write_f32x8(2, r1, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_mm512_extractf64x4_pd(SIMDE_MUNIT_TEST_ARGS) {
const struct {
@ -912,6 +1080,241 @@ test_simde_mm512_maskz_extracti32x4_epi32(SIMDE_MUNIT_TEST_ARGS) {
return 0;
}
static int
test_simde_mm512_extracti32x8_epi32(SIMDE_MUNIT_TEST_ARGS) {
#if 1
const struct {
int32_t a[16];
int32_t r0[8];
int32_t r1[8];
} test_vec[8] = {
{ { -INT32_C( 1804325360), -INT32_C( 570715344), INT32_C( 762499502), -INT32_C( 299637426), INT32_C( 1850695491), INT32_C( 602882297), -INT32_C( 859204517), INT32_C( 755543325),
INT32_C( 197229787), -INT32_C( 1091978225), -INT32_C( 605332595), -INT32_C( 2083910080), INT32_C( 1727076717), -INT32_C( 1266032551), -INT32_C( 1837084043), -INT32_C( 624981761) },
{ -INT32_C( 1804325360), -INT32_C( 570715344), INT32_C( 762499502), -INT32_C( 299637426), INT32_C( 1850695491), INT32_C( 602882297), -INT32_C( 859204517), INT32_C( 755543325) },
{ INT32_C( 197229787), -INT32_C( 1091978225), -INT32_C( 605332595), -INT32_C( 2083910080), INT32_C( 1727076717), -INT32_C( 1266032551), -INT32_C( 1837084043), -INT32_C( 624981761) } },
{ { INT32_C( 350650629), -INT32_C( 875376835), INT32_C( 1789312554), INT32_C( 988639436), -INT32_C( 492773751), INT32_C( 865479358), INT32_C( 2093291132), -INT32_C( 1537833569),
INT32_C( 1136147462), INT32_C( 890145547), INT32_C( 362788169), -INT32_C( 1353741275), INT32_C( 697430122), -INT32_C( 1772345318), -INT32_C( 586014146), -INT32_C( 1384027737) },
{ INT32_C( 350650629), -INT32_C( 875376835), INT32_C( 1789312554), INT32_C( 988639436), -INT32_C( 492773751), INT32_C( 865479358), INT32_C( 2093291132), -INT32_C( 1537833569) },
{ INT32_C( 1136147462), INT32_C( 890145547), INT32_C( 362788169), -INT32_C( 1353741275), INT32_C( 697430122), -INT32_C( 1772345318), -INT32_C( 586014146), -INT32_C( 1384027737) } },
{ { -INT32_C( 1309656411), INT32_C( 250019781), -INT32_C( 651983180), INT32_C( 2106094354), INT32_C( 2108037731), -INT32_C( 2146237886), -INT32_C( 883022300), INT32_C( 880336783),
-INT32_C( 555390695), INT32_C( 485280872), INT32_C( 1693782098), -INT32_C( 421429629), -INT32_C( 631011432), -INT32_C( 1369803126), INT32_C( 729462940), -INT32_C( 1319046504) },
{ -INT32_C( 1309656411), INT32_C( 250019781), -INT32_C( 651983180), INT32_C( 2106094354), INT32_C( 2108037731), -INT32_C( 2146237886), -INT32_C( 883022300), INT32_C( 880336783) },
{ -INT32_C( 555390695), INT32_C( 485280872), INT32_C( 1693782098), -INT32_C( 421429629), -INT32_C( 631011432), -INT32_C( 1369803126), INT32_C( 729462940), -INT32_C( 1319046504) } },
{ { -INT32_C( 1013955237), INT32_C( 1675590673), INT32_C( 264820108), -INT32_C( 336221869), -INT32_C( 1144694735), INT32_C( 1802051535), INT32_C( 1889002456), INT32_C( 824309718),
INT32_C( 1324724540), -INT32_C( 1162750930), -INT32_C( 53839447), INT32_C( 1424473891), -INT32_C( 418403304), -INT32_C( 1538098996), INT32_C( 840231260), INT32_C( 493041120) },
{ -INT32_C( 1013955237), INT32_C( 1675590673), INT32_C( 264820108), -INT32_C( 336221869), -INT32_C( 1144694735), INT32_C( 1802051535), INT32_C( 1889002456), INT32_C( 824309718) },
{ INT32_C( 1324724540), -INT32_C( 1162750930), -INT32_C( 53839447), INT32_C( 1424473891), -INT32_C( 418403304), -INT32_C( 1538098996), INT32_C( 840231260), INT32_C( 493041120) } },
{ { INT32_C( 359356647), -INT32_C( 691069907), -INT32_C( 1177314922), INT32_C( 1896725081), INT32_C( 861412455), -INT32_C( 254301548), INT32_C( 1948445588), INT32_C( 126977568),
INT32_C( 186449118), -INT32_C( 1344082919), -INT32_C( 563563131), -INT32_C( 699435665), INT32_C( 621389713), -INT32_C( 434708398), -INT32_C( 329631541), -INT32_C( 1644958530) },
{ INT32_C( 359356647), -INT32_C( 691069907), -INT32_C( 1177314922), INT32_C( 1896725081), INT32_C( 861412455), -INT32_C( 254301548), INT32_C( 1948445588), INT32_C( 126977568) },
{ INT32_C( 186449118), -INT32_C( 1344082919), -INT32_C( 563563131), -INT32_C( 699435665), INT32_C( 621389713), -INT32_C( 434708398), -INT32_C( 329631541), -INT32_C( 1644958530) } },
{ { INT32_C( 27791592), -INT32_C( 2119136516), -INT32_C( 1352656833), INT32_C( 512077709), -INT32_C( 1455124649), INT32_C( 999250543), INT32_C( 1361570194), -INT32_C( 1091691819),
INT32_C( 650090026), INT32_C( 1621651489), INT32_C( 370083976), INT32_C( 238327223), -INT32_C( 1816692700), INT32_C( 1708017362), INT32_C( 95876400), INT32_C( 985900048) },
{ INT32_C( 27791592), -INT32_C( 2119136516), -INT32_C( 1352656833), INT32_C( 512077709), -INT32_C( 1455124649), INT32_C( 999250543), INT32_C( 1361570194), -INT32_C( 1091691819) },
{ INT32_C( 650090026), INT32_C( 1621651489), INT32_C( 370083976), INT32_C( 238327223), -INT32_C( 1816692700), INT32_C( 1708017362), INT32_C( 95876400), INT32_C( 985900048) } },
{ { INT32_C( 1533117242), INT32_C( 2075920883), -INT32_C( 929969391), -INT32_C( 2066233760), INT32_C( 286821950), INT32_C( 91678421), -INT32_C( 334877476), INT32_C( 170315472),
INT32_C( 1147570001), -INT32_C( 1581309296), INT32_C( 1315590637), INT32_C( 1439842583), -INT32_C( 1536759089), -INT32_C( 1381376815), -INT32_C( 661015544), -INT32_C( 740049022) },
{ INT32_C( 1533117242), INT32_C( 2075920883), -INT32_C( 929969391), -INT32_C( 2066233760), INT32_C( 286821950), INT32_C( 91678421), -INT32_C( 334877476), INT32_C( 170315472) },
{ INT32_C( 1147570001), -INT32_C( 1581309296), INT32_C( 1315590637), INT32_C( 1439842583), -INT32_C( 1536759089), -INT32_C( 1381376815), -INT32_C( 661015544), -INT32_C( 740049022) } },
{ { -INT32_C( 686339769), INT32_C( 1484379755), INT32_C( 1051124519), -INT32_C( 208373468), INT32_C( 882440803), -INT32_C( 538885673), INT32_C( 2008578805), -INT32_C( 2125817030),
INT32_C( 1331192292), INT32_C( 1604833592), -INT32_C( 660713804), INT32_C( 718025415), INT32_C( 56583212), -INT32_C( 1679605595), -INT32_C( 183329861), INT32_C( 443964726) },
{ -INT32_C( 686339769), INT32_C( 1484379755), INT32_C( 1051124519), -INT32_C( 208373468), INT32_C( 882440803), -INT32_C( 538885673), INT32_C( 2008578805), -INT32_C( 2125817030) },
{ INT32_C( 1331192292), INT32_C( 1604833592), -INT32_C( 660713804), INT32_C( 718025415), INT32_C( 56583212), -INT32_C( 1679605595), -INT32_C( 183329861), INT32_C( 443964726) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
simde__m256i r;
simde__m512i a = simde_mm512_loadu_epi32(test_vec[i].a);
r = simde_mm512_extracti32x8_epi32(a, 0);
simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[i].r0));
r = simde_mm512_extracti32x8_epi32(a, 1);
simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[i].r1));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde__m512i a = simde_test_x86_random_i32x16();
simde__m256i r0 = simde_mm512_extracti32x8_epi32(a, 0);
simde__m256i r1 = simde_mm512_extracti32x8_epi32(a, 1);
simde_test_x86_write_i32x16(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_x86_write_i32x8(2, r0, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_x86_write_i32x8(2, r1, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_mm512_mask_extracti32x8_epi32(SIMDE_MUNIT_TEST_ARGS) {
#if 1
const struct {
int32_t src[8];
simde__mmask8 k;
int32_t a[16];
int32_t r0[8];
int32_t r1[8];
} test_vec[8] = {
{ { INT32_C( 205706682), -INT32_C( 1911602219), -INT32_C( 905548319), -INT32_C( 843697944), -INT32_C( 1879053481), INT32_C( 1319689292), INT32_C( 1858541744), INT32_C( 1027469698) },
UINT32_C( 198),
{ -INT32_C( 1013167745), -INT32_C( 979097000), INT32_C( 1638755888), INT32_C( 263748132), INT32_C( 1432045433), INT32_C( 134654448), INT32_C( 1653306481), INT32_C( 824821938),
INT32_C( 1777648913), INT32_C( 523147503), INT32_C( 713087750), -INT32_C( 818267818), INT32_C( 1881511296), -INT32_C( 1334236353), INT32_C( 1360135327), -INT32_C( 578602036) },
{ INT32_C( 205706682), -INT32_C( 979097000), INT32_C( 1638755888), -INT32_C( 843697944), -INT32_C( 1879053481), INT32_C( 1319689292), INT32_C( 1653306481), INT32_C( 824821938) },
{ INT32_C( 205706682), INT32_C( 523147503), INT32_C( 713087750), -INT32_C( 843697944), -INT32_C( 1879053481), INT32_C( 1319689292), INT32_C( 1360135327), -INT32_C( 578602036) } },
{ { -INT32_C( 280594688), INT32_C( 370111504), -INT32_C( 1522430129), INT32_C( 1232436168), INT32_C( 1337563664), INT32_C( 1694446277), INT32_C( 45486646), INT32_C( 1323252045) },
UINT32_C( 176),
{ -INT32_C( 1715454683), -INT32_C( 588654772), -INT32_C( 1817932264), -INT32_C( 1650201341), -INT32_C( 647826521), INT32_C( 68208626), -INT32_C( 1236135299), INT32_C( 392601842),
INT32_C( 716253149), INT32_C( 369531646), INT32_C( 749316648), INT32_C( 1070156952), INT32_C( 840444991), INT32_C( 1882597619), INT32_C( 757499963), INT32_C( 105155624) },
{ -INT32_C( 280594688), INT32_C( 370111504), -INT32_C( 1522430129), INT32_C( 1232436168), -INT32_C( 647826521), INT32_C( 68208626), INT32_C( 45486646), INT32_C( 392601842) },
{ -INT32_C( 280594688), INT32_C( 370111504), -INT32_C( 1522430129), INT32_C( 1232436168), INT32_C( 840444991), INT32_C( 1882597619), INT32_C( 45486646), INT32_C( 105155624) } },
{ { -INT32_C( 1322191437), -INT32_C( 1194903921), INT32_C( 2028237024), -INT32_C( 55071299), -INT32_C( 869347111), INT32_C( 859596280), INT32_C( 375415533), -INT32_C( 1575180817) },
UINT32_C( 154),
{ -INT32_C( 2111155124), -INT32_C( 1939676645), INT32_C( 1934220230), INT32_C( 1649231250), -INT32_C( 648341132), -INT32_C( 1194946986), -INT32_C( 1800938257), INT32_C( 1143884536),
-INT32_C( 1178183522), INT32_C( 4532538), -INT32_C( 1770746364), INT32_C( 1224327636), INT32_C( 807490778), -INT32_C( 773199902), -INT32_C( 1134194492), INT32_C( 2013369562) },
{ -INT32_C( 1322191437), -INT32_C( 1939676645), INT32_C( 2028237024), INT32_C( 1649231250), -INT32_C( 648341132), INT32_C( 859596280), INT32_C( 375415533), INT32_C( 1143884536) },
{ -INT32_C( 1322191437), INT32_C( 4532538), INT32_C( 2028237024), INT32_C( 1224327636), INT32_C( 807490778), INT32_C( 859596280), INT32_C( 375415533), INT32_C( 2013369562) } },
{ { INT32_C( 657639404), -INT32_C( 198739984), -INT32_C( 628385018), INT32_C( 925008988), -INT32_C( 1167637544), -INT32_C( 292794326), -INT32_C( 1146359327), INT32_C( 1916054661) },
UINT32_C( 115),
{ -INT32_C( 580609690), INT32_C( 1558403264), INT32_C( 1740160483), INT32_C( 574615519), -INT32_C( 1488061865), INT32_C( 2005416838), -INT32_C( 1828895514), -INT32_C( 570003592),
-INT32_C( 927241720), -INT32_C( 1507549246), INT32_C( 1007541596), INT32_C( 593382860), -INT32_C( 842290361), -INT32_C( 851160089), INT32_C( 257966487), -INT32_C( 1192401232) },
{ -INT32_C( 580609690), INT32_C( 1558403264), -INT32_C( 628385018), INT32_C( 925008988), -INT32_C( 1488061865), INT32_C( 2005416838), -INT32_C( 1828895514), INT32_C( 1916054661) },
{ -INT32_C( 927241720), -INT32_C( 1507549246), -INT32_C( 628385018), INT32_C( 925008988), -INT32_C( 842290361), -INT32_C( 851160089), INT32_C( 257966487), INT32_C( 1916054661) } },
{ { -INT32_C( 1836996144), -INT32_C( 1539791544), INT32_C( 1340098178), -INT32_C( 630046829), -INT32_C( 777568790), INT32_C( 681569169), -INT32_C( 583467219), INT32_C( 899032421) },
UINT32_C( 206),
{ -INT32_C( 1139357929), INT32_C( 1178581760), -INT32_C( 623276389), INT32_C( 1053143808), INT32_C( 1171232346), INT32_C( 879949621), INT32_C( 1436110895), -INT32_C( 47984922),
-INT32_C( 1766245738), -INT32_C( 1864566539), -INT32_C( 2022984314), -INT32_C( 1027264408), -INT32_C( 66612026), -INT32_C( 1154450805), -INT32_C( 1341076790), INT32_C( 783102872) },
{ -INT32_C( 1836996144), INT32_C( 1178581760), -INT32_C( 623276389), INT32_C( 1053143808), -INT32_C( 777568790), INT32_C( 681569169), INT32_C( 1436110895), -INT32_C( 47984922) },
{ -INT32_C( 1836996144), -INT32_C( 1864566539), -INT32_C( 2022984314), -INT32_C( 1027264408), -INT32_C( 777568790), INT32_C( 681569169), -INT32_C( 1341076790), INT32_C( 783102872) } },
{ { INT32_C( 1657038445), -INT32_C( 437018529), -INT32_C( 1116971435), INT32_C( 1417621902), INT32_C( 1364232133), -INT32_C( 888372991), -INT32_C( 478471093), -INT32_C( 1122883505) },
UINT32_C( 142),
{ INT32_C( 2012028886), INT32_C( 1892471570), INT32_C( 1912506943), -INT32_C( 1875487991), INT32_C( 613517219), -INT32_C( 1351656301), -INT32_C( 44073), INT32_C( 999210085),
-INT32_C( 290292773), -INT32_C( 1906409650), INT32_C( 318725385), INT32_C( 1403205040), INT32_C( 1350055101), INT32_C( 1744889745), -INT32_C( 1620508870), -INT32_C( 1763969349) },
{ INT32_C( 1657038445), INT32_C( 1892471570), INT32_C( 1912506943), -INT32_C( 1875487991), INT32_C( 1364232133), -INT32_C( 888372991), -INT32_C( 478471093), INT32_C( 999210085) },
{ INT32_C( 1657038445), -INT32_C( 1906409650), INT32_C( 318725385), INT32_C( 1403205040), INT32_C( 1364232133), -INT32_C( 888372991), -INT32_C( 478471093), -INT32_C( 1763969349) } },
{ { -INT32_C( 1065054863), INT32_C( 357491468), -INT32_C( 265794240), INT32_C( 1061407618), -INT32_C( 1869562881), -INT32_C( 570847069), INT32_C( 1249730959), -INT32_C( 924821417) },
UINT32_C( 229),
{ INT32_C( 1223854181), INT32_C( 596117462), -INT32_C( 89753553), INT32_C( 2012931515), INT32_C( 85625461), -INT32_C( 459999357), -INT32_C( 868491660), INT32_C( 615646399),
INT32_C( 1668064396), -INT32_C( 611912533), INT32_C( 668281964), -INT32_C( 2019635438), -INT32_C( 577914790), INT32_C( 616702384), -INT32_C( 1074660096), -INT32_C( 1897684223) },
{ INT32_C( 1223854181), INT32_C( 357491468), -INT32_C( 89753553), INT32_C( 1061407618), -INT32_C( 1869562881), -INT32_C( 459999357), -INT32_C( 868491660), INT32_C( 615646399) },
{ INT32_C( 1668064396), INT32_C( 357491468), INT32_C( 668281964), INT32_C( 1061407618), -INT32_C( 1869562881), INT32_C( 616702384), -INT32_C( 1074660096), -INT32_C( 1897684223) } },
{ { -INT32_C( 219066553), -INT32_C( 1345489085), -INT32_C( 1227447388), -INT32_C( 868387470), -INT32_C( 576009683), -INT32_C( 335385364), INT32_C( 1806431081), -INT32_C( 570847594) },
UINT32_C( 221),
{ INT32_C( 1629540330), INT32_C( 1074122653), INT32_C( 447921061), -INT32_C( 1018658823), -INT32_C( 1783683799), INT32_C( 452893479), -INT32_C( 726636218), INT32_C( 1286704482),
-INT32_C( 89206435), INT32_C( 1178252192), INT32_C( 1751182447), -INT32_C( 1809078165), -INT32_C( 181806130), -INT32_C( 1123014538), -INT32_C( 191774575), -INT32_C( 1421851826) },
{ INT32_C( 1629540330), -INT32_C( 1345489085), INT32_C( 447921061), -INT32_C( 1018658823), -INT32_C( 1783683799), -INT32_C( 335385364), -INT32_C( 726636218), INT32_C( 1286704482) },
{ -INT32_C( 89206435), -INT32_C( 1345489085), INT32_C( 1751182447), -INT32_C( 1809078165), -INT32_C( 181806130), -INT32_C( 335385364), -INT32_C( 191774575), -INT32_C( 1421851826) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
simde__m256i r;
simde__m256i src = simde_mm256_loadu_epi32(test_vec[i].src);
simde__m512i a = simde_mm512_loadu_epi32(test_vec[i].a);
r = simde_mm512_mask_extracti32x8_epi32(src, test_vec[i].k, a, 0);
simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[i].r0));
r = simde_mm512_mask_extracti32x8_epi32(src, test_vec[i].k, a, 1);
simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[i].r1));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde__m256i src = simde_test_x86_random_i32x8();
simde__mmask8 k = simde_test_x86_random_mmask8();
simde__m512i a = simde_test_x86_random_i32x16();
simde__m256i r0 = simde_mm512_mask_extracti32x8_epi32(src, k, a, 0);
simde__m256i r1 = simde_mm512_mask_extracti32x8_epi32(src, k, a, 1);
simde_test_x86_write_i32x8(2, src, SIMDE_TEST_VEC_POS_FIRST);
simde_test_x86_write_mmask32(2, k, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_x86_write_i32x16(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_x86_write_i32x8(2, r0, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_x86_write_i32x8(2, r1, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_mm512_maskz_extracti32x8_epi32(SIMDE_MUNIT_TEST_ARGS) {
#if 1
const struct {
simde__mmask8 k;
int32_t a[16];
int32_t r0[8];
int32_t r1[8];
} test_vec[8] = {
{ UINT32_C( 254),
{ INT32_C( 1730054307), INT32_C( 855222456), -INT32_C( 276221597), INT32_C( 1214899305), INT32_C( 56763023), INT32_C( 1991810899), INT32_C( 352178435), INT32_C( 1628673981),
-INT32_C( 674746081), INT32_C( 1007272409), INT32_C( 1529582322), INT32_C( 111449463), INT32_C( 168363703), -INT32_C( 1451113819), INT32_C( 1371373203), INT32_C( 884133909) },
{ INT32_C( 0), INT32_C( 855222456), -INT32_C( 276221597), INT32_C( 1214899305), INT32_C( 56763023), INT32_C( 1991810899), INT32_C( 352178435), INT32_C( 1628673981) },
{ INT32_C( 0), INT32_C( 1007272409), INT32_C( 1529582322), INT32_C( 111449463), INT32_C( 168363703), -INT32_C( 1451113819), INT32_C( 1371373203), INT32_C( 884133909) } },
{ UINT32_C( 1),
{ INT32_C( 1004211066), -INT32_C( 1490151659), -INT32_C( 669087421), INT32_C( 881796141), -INT32_C( 254174930), -INT32_C( 1736211942), INT32_C( 279827520), INT32_C( 1237382),
INT32_C( 37547501), INT32_C( 1202285060), INT32_C( 555731187), INT32_C( 441822956), INT32_C( 1644834376), -INT32_C( 235172175), -INT32_C( 385767326), INT32_C( 2011763594) },
{ INT32_C( 1004211066), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0) },
{ INT32_C( 37547501), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0) } },
{ UINT32_C( 0),
{ -INT32_C( 1895466715), -INT32_C( 360494046), INT32_C( 450339948), INT32_C( 660795897), -INT32_C( 1965505028), INT32_C( 1760348608), -INT32_C( 554510901), -INT32_C( 455120449),
INT32_C( 91546850), -INT32_C( 1661995216), -INT32_C( 1799895397), -INT32_C( 1262806600), -INT32_C( 1640065826), INT32_C( 671558237), -INT32_C( 1089996544), INT32_C( 1168369251) },
{ INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0) },
{ INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0) } },
{ UINT32_C( 202),
{ INT32_C( 251283991), INT32_C( 11114298), INT32_C( 1740127566), -INT32_C( 1924764423), -INT32_C( 706026326), -INT32_C( 439020565), INT32_C( 4756506), INT32_C( 1338674487),
INT32_C( 308135128), -INT32_C( 1458436261), INT32_C( 1024576324), -INT32_C( 490055881), INT32_C( 666350907), -INT32_C( 502494008), INT32_C( 1474450464), -INT32_C( 1180259103) },
{ INT32_C( 0), INT32_C( 11114298), INT32_C( 0), -INT32_C( 1924764423), INT32_C( 0), INT32_C( 0), INT32_C( 4756506), INT32_C( 1338674487) },
{ INT32_C( 0), -INT32_C( 1458436261), INT32_C( 0), -INT32_C( 490055881), INT32_C( 0), INT32_C( 0), INT32_C( 1474450464), -INT32_C( 1180259103) } },
{ UINT32_C( 112),
{ INT32_C( 197970692), -INT32_C( 1454410274), -INT32_C( 572486266), INT32_C( 203014743), INT32_C( 97796217), -INT32_C( 1608141236), INT32_C( 1149336984), INT32_C( 666188579),
-INT32_C( 466452218), INT32_C( 2106426102), INT32_C( 1717202447), -INT32_C( 1435274448), -INT32_C( 5290061), -INT32_C( 1767909890), INT32_C( 1977295186), INT32_C( 1654493276) },
{ INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 97796217), -INT32_C( 1608141236), INT32_C( 1149336984), INT32_C( 0) },
{ INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 5290061), -INT32_C( 1767909890), INT32_C( 1977295186), INT32_C( 0) } },
{ UINT32_C( 17),
{ INT32_C( 1359431631), INT32_C( 1113621716), INT32_C( 1383319519), -INT32_C( 2130305734), -INT32_C( 1585510964), -INT32_C( 957147483), -INT32_C( 2128451087), -INT32_C( 711818234),
-INT32_C( 1608017461), -INT32_C( 35485922), -INT32_C( 2008066738), INT32_C( 1057641842), INT32_C( 14715227), -INT32_C( 1866017633), INT32_C( 1125247037), INT32_C( 941138796) },
{ INT32_C( 1359431631), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1585510964), INT32_C( 0), INT32_C( 0), INT32_C( 0) },
{ -INT32_C( 1608017461), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 14715227), INT32_C( 0), INT32_C( 0), INT32_C( 0) } },
{ UINT32_C( 61),
{ -INT32_C( 950282177), INT32_C( 269834426), -INT32_C( 41771353), INT32_C( 827900328), INT32_C( 1993431202), INT32_C( 112419102), INT32_C( 376632947), INT32_C( 1314105870),
INT32_C( 1024831106), -INT32_C( 1370674682), INT32_C( 1890308040), INT32_C( 866255761), INT32_C( 2041148251), INT32_C( 1199529172), INT32_C( 1616834898), INT32_C( 514765212) },
{ -INT32_C( 950282177), INT32_C( 0), -INT32_C( 41771353), INT32_C( 827900328), INT32_C( 1993431202), INT32_C( 112419102), INT32_C( 0), INT32_C( 0) },
{ INT32_C( 1024831106), INT32_C( 0), INT32_C( 1890308040), INT32_C( 866255761), INT32_C( 2041148251), INT32_C( 1199529172), INT32_C( 0), INT32_C( 0) } },
{ UINT32_C( 96),
{ -INT32_C( 295281725), INT32_C( 2025198760), -INT32_C( 1039587393), INT32_C( 1008549065), INT32_C( 1091606245), INT32_C( 127096853), INT32_C( 1738798006), INT32_C( 1707590050),
-INT32_C( 984404451), INT32_C( 37554754), -INT32_C( 87800271), INT32_C( 1731650178), -INT32_C( 1901574536), INT32_C( 1419066270), -INT32_C( 776194001), INT32_C( 372671481) },
{ INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 127096853), INT32_C( 1738798006), INT32_C( 0) },
{ INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 1419066270), -INT32_C( 776194001), INT32_C( 0) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
simde__m256i r;
simde__m512i a = simde_mm512_loadu_epi32(test_vec[i].a);
r = simde_mm512_maskz_extracti32x8_epi32(test_vec[i].k, a, 0);
simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[i].r0));
r = simde_mm512_maskz_extracti32x8_epi32(test_vec[i].k, a, 1);
simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[i].r1));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde__mmask8 k = simde_test_x86_random_mmask8();
simde__m512i a = simde_test_x86_random_i32x16();
simde__m256i r0 = simde_mm512_maskz_extracti32x8_epi32(k, a, 0);
simde__m256i r1 = simde_mm512_maskz_extracti32x8_epi32(k, a, 1);
simde_test_x86_write_mmask32(2, k, SIMDE_TEST_VEC_POS_FIRST);
simde_test_x86_write_i32x16(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_x86_write_i32x8(2, r0, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_x86_write_i32x8(2, r1, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_mm512_extracti64x4_epi64(SIMDE_MUNIT_TEST_ARGS) {
const struct {
@ -1200,15 +1603,20 @@ test_simde_mm512_maskz_extracti64x4_epi64(SIMDE_MUNIT_TEST_ARGS) {
}
SIMDE_TEST_FUNC_LIST_BEGIN
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_extractf32x4_ps)
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_extractf32x4_ps)
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_mask_extractf32x4_ps)
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_maskz_extractf32x4_ps)
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_extractf32x8_ps)
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_extractf64x4_pd)
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_mask_extractf64x4_pd)
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_maskz_extractf64x4_pd)
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_extracti32x4_epi32)
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_mask_extracti32x4_epi32)
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_maskz_extracti32x4_epi32)
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_extracti32x8_epi32)
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_mask_extracti32x8_epi32)
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_maskz_extracti32x8_epi32)
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_extracti64x4_epi64)
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_mask_extracti64x4_epi64)
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_maskz_extracti64x4_epi64)