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

@ -601,6 +601,72 @@ test_simde_vld2_u64 (SIMDE_MUNIT_TEST_ARGS) {
#endif
}
static int
test_simde_vld2_f16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
simde_float16_t a[8];
simde_float16_t r[2][4];
} test_vec[] = {
{ { SIMDE_FLOAT16_VALUE(-9.278), SIMDE_FLOAT16_VALUE(-6.969), SIMDE_FLOAT16_VALUE(1.663), SIMDE_FLOAT16_VALUE(-2.545),
SIMDE_FLOAT16_VALUE(-2.609), SIMDE_FLOAT16_VALUE(6.118), SIMDE_FLOAT16_VALUE(2.903), SIMDE_FLOAT16_VALUE(-6.328) },
{ { SIMDE_FLOAT16_VALUE(-9.278), SIMDE_FLOAT16_VALUE(1.663), SIMDE_FLOAT16_VALUE(-2.609), SIMDE_FLOAT16_VALUE(2.903) },
{ SIMDE_FLOAT16_VALUE(-6.969), SIMDE_FLOAT16_VALUE(-2.545), SIMDE_FLOAT16_VALUE(6.118), SIMDE_FLOAT16_VALUE(-6.328) } } },
{ { SIMDE_FLOAT16_VALUE(-1.322), SIMDE_FLOAT16_VALUE(-3.593), SIMDE_FLOAT16_VALUE(-1.637), SIMDE_FLOAT16_VALUE(3.347),
SIMDE_FLOAT16_VALUE(-9.161), SIMDE_FLOAT16_VALUE(-9.575), SIMDE_FLOAT16_VALUE(7.821), SIMDE_FLOAT16_VALUE(3.600) },
{ { SIMDE_FLOAT16_VALUE(-1.322), SIMDE_FLOAT16_VALUE(-1.637), SIMDE_FLOAT16_VALUE(-9.161), SIMDE_FLOAT16_VALUE(7.821) },
{ SIMDE_FLOAT16_VALUE(-3.593), SIMDE_FLOAT16_VALUE(3.347), SIMDE_FLOAT16_VALUE(-9.575), SIMDE_FLOAT16_VALUE(3.600) } } },
{ { SIMDE_FLOAT16_VALUE(-8.482), SIMDE_FLOAT16_VALUE(-4.579), SIMDE_FLOAT16_VALUE(-0.542), SIMDE_FLOAT16_VALUE(-6.415),
SIMDE_FLOAT16_VALUE(-4.808), SIMDE_FLOAT16_VALUE(-0.746), SIMDE_FLOAT16_VALUE(6.877), SIMDE_FLOAT16_VALUE(-9.631) },
{ { SIMDE_FLOAT16_VALUE(-8.482), SIMDE_FLOAT16_VALUE(-0.542), SIMDE_FLOAT16_VALUE(-4.808), SIMDE_FLOAT16_VALUE(6.877) },
{ SIMDE_FLOAT16_VALUE(-4.579), SIMDE_FLOAT16_VALUE(-6.415), SIMDE_FLOAT16_VALUE(-0.746), SIMDE_FLOAT16_VALUE(-9.631) } } },
{ { SIMDE_FLOAT16_VALUE(-7.341), SIMDE_FLOAT16_VALUE(-3.836), SIMDE_FLOAT16_VALUE(-0.189), SIMDE_FLOAT16_VALUE(-2.384),
SIMDE_FLOAT16_VALUE(2.127), SIMDE_FLOAT16_VALUE(1.646), SIMDE_FLOAT16_VALUE(7.168), SIMDE_FLOAT16_VALUE(-5.215) },
{ { SIMDE_FLOAT16_VALUE(-7.341), SIMDE_FLOAT16_VALUE(-0.189), SIMDE_FLOAT16_VALUE(2.127), SIMDE_FLOAT16_VALUE(7.168) },
{ SIMDE_FLOAT16_VALUE(-3.836), SIMDE_FLOAT16_VALUE(-2.384), SIMDE_FLOAT16_VALUE(1.646), SIMDE_FLOAT16_VALUE(-5.215) } } },
{ { SIMDE_FLOAT16_VALUE(-2.854), SIMDE_FLOAT16_VALUE(-6.178), SIMDE_FLOAT16_VALUE(6.962), SIMDE_FLOAT16_VALUE(2.037),
SIMDE_FLOAT16_VALUE(-2.141), SIMDE_FLOAT16_VALUE(1.682), SIMDE_FLOAT16_VALUE(-8.167), SIMDE_FLOAT16_VALUE(-2.859) },
{ { SIMDE_FLOAT16_VALUE(-2.854), SIMDE_FLOAT16_VALUE(6.962), SIMDE_FLOAT16_VALUE(-2.141), SIMDE_FLOAT16_VALUE(-8.167) },
{ SIMDE_FLOAT16_VALUE(-6.178), SIMDE_FLOAT16_VALUE(2.037), SIMDE_FLOAT16_VALUE(1.682), SIMDE_FLOAT16_VALUE(-2.859) } } },
{ { SIMDE_FLOAT16_VALUE(1.069), SIMDE_FLOAT16_VALUE(6.073), SIMDE_FLOAT16_VALUE(-7.430), SIMDE_FLOAT16_VALUE(5.842),
SIMDE_FLOAT16_VALUE(0.741), SIMDE_FLOAT16_VALUE(-7.806), SIMDE_FLOAT16_VALUE(-1.530), SIMDE_FLOAT16_VALUE(5.652) },
{ { SIMDE_FLOAT16_VALUE(1.069), SIMDE_FLOAT16_VALUE(-7.430), SIMDE_FLOAT16_VALUE(0.741), SIMDE_FLOAT16_VALUE(-1.530) },
{ SIMDE_FLOAT16_VALUE(6.073), SIMDE_FLOAT16_VALUE(5.842), SIMDE_FLOAT16_VALUE(-7.806), SIMDE_FLOAT16_VALUE(5.652) } } },
{ { SIMDE_FLOAT16_VALUE(2.665), SIMDE_FLOAT16_VALUE(-0.358), SIMDE_FLOAT16_VALUE(4.267), SIMDE_FLOAT16_VALUE(6.043),
SIMDE_FLOAT16_VALUE(4.497), SIMDE_FLOAT16_VALUE(2.667), SIMDE_FLOAT16_VALUE(7.972), SIMDE_FLOAT16_VALUE(-6.815) },
{ { SIMDE_FLOAT16_VALUE(2.665), SIMDE_FLOAT16_VALUE(4.267), SIMDE_FLOAT16_VALUE(4.497), SIMDE_FLOAT16_VALUE(7.972) },
{ SIMDE_FLOAT16_VALUE(-0.358), SIMDE_FLOAT16_VALUE(6.043), SIMDE_FLOAT16_VALUE(2.667), SIMDE_FLOAT16_VALUE(-6.815) } } },
{ { SIMDE_FLOAT16_VALUE(1.068), SIMDE_FLOAT16_VALUE(3.596), SIMDE_FLOAT16_VALUE(-8.704), SIMDE_FLOAT16_VALUE(5.005),
SIMDE_FLOAT16_VALUE(4.827), SIMDE_FLOAT16_VALUE(4.545), SIMDE_FLOAT16_VALUE(0.047), SIMDE_FLOAT16_VALUE(2.680) },
{ { SIMDE_FLOAT16_VALUE(1.068), SIMDE_FLOAT16_VALUE(-8.704), SIMDE_FLOAT16_VALUE(4.827), SIMDE_FLOAT16_VALUE(0.047) },
{ SIMDE_FLOAT16_VALUE(3.596), SIMDE_FLOAT16_VALUE(5.005), SIMDE_FLOAT16_VALUE(4.545), SIMDE_FLOAT16_VALUE(2.680) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_float16x4x2_t r = simde_vld2_f16(test_vec[i].a);
simde_float16x4x2_t expected = {
{simde_vld1_f16(test_vec[i].r[0]), simde_vld1_f16(test_vec[i].r[1])}};
simde_test_arm_neon_assert_equal_f16x4(r.val[0], expected.val[0], 1);
simde_test_arm_neon_assert_equal_f16x4(r.val[1], expected.val[1], 1);
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_float16x8_t a = simde_test_arm_neon_random_f16x8(-100.0f, 100.0f);
simde_float16x2_t r[2] = simde_vld2_f16(a);
simde_test_arm_neon_write_f16x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_f16x2(2, r[2], SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vld2_f32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
@ -1456,6 +1522,72 @@ test_simde_vld2q_u64 (SIMDE_MUNIT_TEST_ARGS) {
#endif
}
static int
test_simde_vld2q_f16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
simde_float16_t a[16];
simde_float16_t r[2][8];
} test_vec[] = {
{ { SIMDE_FLOAT16_VALUE( 793.71), SIMDE_FLOAT16_VALUE( 221.62), SIMDE_FLOAT16_VALUE( 781.57), SIMDE_FLOAT16_VALUE( -525.52),
SIMDE_FLOAT16_VALUE( 800.99), SIMDE_FLOAT16_VALUE( -411.87), SIMDE_FLOAT16_VALUE( 483.99), SIMDE_FLOAT16_VALUE( 852.73),
SIMDE_FLOAT16_VALUE( -433.25), SIMDE_FLOAT16_VALUE( -811.76), SIMDE_FLOAT16_VALUE( -463.04), SIMDE_FLOAT16_VALUE( 671.94),
SIMDE_FLOAT16_VALUE( -60.94), SIMDE_FLOAT16_VALUE( -434.20), SIMDE_FLOAT16_VALUE( -263.89), SIMDE_FLOAT16_VALUE( 754.63) },
{ { SIMDE_FLOAT16_VALUE( 793.71), SIMDE_FLOAT16_VALUE( 781.57), SIMDE_FLOAT16_VALUE( 800.99), SIMDE_FLOAT16_VALUE( 483.99),
SIMDE_FLOAT16_VALUE( -433.25), SIMDE_FLOAT16_VALUE( -463.04), SIMDE_FLOAT16_VALUE( -60.94), SIMDE_FLOAT16_VALUE( -263.89) },
{ SIMDE_FLOAT16_VALUE( 221.62), SIMDE_FLOAT16_VALUE( -525.52), SIMDE_FLOAT16_VALUE( -411.87), SIMDE_FLOAT16_VALUE( 852.73),
SIMDE_FLOAT16_VALUE( -811.76), SIMDE_FLOAT16_VALUE( 671.94), SIMDE_FLOAT16_VALUE( -434.20), SIMDE_FLOAT16_VALUE( 754.63) } } },
{ { SIMDE_FLOAT16_VALUE( -877.85), SIMDE_FLOAT16_VALUE( -225.98), SIMDE_FLOAT16_VALUE( -292.03), SIMDE_FLOAT16_VALUE( 932.32),
SIMDE_FLOAT16_VALUE( -463.10), SIMDE_FLOAT16_VALUE( 171.18), SIMDE_FLOAT16_VALUE( -115.23), SIMDE_FLOAT16_VALUE( -867.52),
SIMDE_FLOAT16_VALUE( -182.14), SIMDE_FLOAT16_VALUE( 874.57), SIMDE_FLOAT16_VALUE( -306.44), SIMDE_FLOAT16_VALUE( 180.87),
SIMDE_FLOAT16_VALUE( -827.59), SIMDE_FLOAT16_VALUE( -449.53), SIMDE_FLOAT16_VALUE( -593.39), SIMDE_FLOAT16_VALUE( 966.11) },
{ { SIMDE_FLOAT16_VALUE( -877.85), SIMDE_FLOAT16_VALUE( -292.03), SIMDE_FLOAT16_VALUE( -463.10), SIMDE_FLOAT16_VALUE( -115.23),
SIMDE_FLOAT16_VALUE( -182.14), SIMDE_FLOAT16_VALUE( -306.44), SIMDE_FLOAT16_VALUE( -827.59), SIMDE_FLOAT16_VALUE( -593.39) },
{ SIMDE_FLOAT16_VALUE( -225.98), SIMDE_FLOAT16_VALUE( 932.32), SIMDE_FLOAT16_VALUE( 171.18), SIMDE_FLOAT16_VALUE( -867.52),
SIMDE_FLOAT16_VALUE( 874.57), SIMDE_FLOAT16_VALUE( 180.87), SIMDE_FLOAT16_VALUE( -449.53), SIMDE_FLOAT16_VALUE( 966.11) } } },
{ { SIMDE_FLOAT16_VALUE( 772.09), SIMDE_FLOAT16_VALUE( -811.82), SIMDE_FLOAT16_VALUE( -559.40), SIMDE_FLOAT16_VALUE( 573.08),
SIMDE_FLOAT16_VALUE( -223.69), SIMDE_FLOAT16_VALUE( 924.59), SIMDE_FLOAT16_VALUE( 425.81), SIMDE_FLOAT16_VALUE( 343.06),
SIMDE_FLOAT16_VALUE( -887.17), SIMDE_FLOAT16_VALUE( 962.76), SIMDE_FLOAT16_VALUE( 15.01), SIMDE_FLOAT16_VALUE( 51.89),
SIMDE_FLOAT16_VALUE( -471.44), SIMDE_FLOAT16_VALUE( 751.11), SIMDE_FLOAT16_VALUE( -193.48), SIMDE_FLOAT16_VALUE( -349.29) },
{ { SIMDE_FLOAT16_VALUE( 772.09), SIMDE_FLOAT16_VALUE( -559.40), SIMDE_FLOAT16_VALUE( -223.69), SIMDE_FLOAT16_VALUE( 425.81),
SIMDE_FLOAT16_VALUE( -887.17), SIMDE_FLOAT16_VALUE( 15.01), SIMDE_FLOAT16_VALUE( -471.44), SIMDE_FLOAT16_VALUE( -193.48) },
{ SIMDE_FLOAT16_VALUE( -811.82), SIMDE_FLOAT16_VALUE( 573.08), SIMDE_FLOAT16_VALUE( 924.59), SIMDE_FLOAT16_VALUE( 343.06),
SIMDE_FLOAT16_VALUE( 962.76), SIMDE_FLOAT16_VALUE( 51.89), SIMDE_FLOAT16_VALUE( 751.11), SIMDE_FLOAT16_VALUE( -349.29) } } },
{ { SIMDE_FLOAT16_VALUE( -474.87), SIMDE_FLOAT16_VALUE( 514.49), SIMDE_FLOAT16_VALUE( -416.97), SIMDE_FLOAT16_VALUE( 62.03),
SIMDE_FLOAT16_VALUE( -314.33), SIMDE_FLOAT16_VALUE( 467.80), SIMDE_FLOAT16_VALUE( 194.51), SIMDE_FLOAT16_VALUE( 503.53),
SIMDE_FLOAT16_VALUE( 342.37), SIMDE_FLOAT16_VALUE( 888.07), SIMDE_FLOAT16_VALUE( -315.60), SIMDE_FLOAT16_VALUE( 514.77),
SIMDE_FLOAT16_VALUE( -561.46), SIMDE_FLOAT16_VALUE( 91.01), SIMDE_FLOAT16_VALUE( 480.89), SIMDE_FLOAT16_VALUE( -789.37) },
{ { SIMDE_FLOAT16_VALUE( -474.87), SIMDE_FLOAT16_VALUE( -416.97), SIMDE_FLOAT16_VALUE( -314.33), SIMDE_FLOAT16_VALUE( 194.51),
SIMDE_FLOAT16_VALUE( 342.37), SIMDE_FLOAT16_VALUE( -315.60), SIMDE_FLOAT16_VALUE( -561.46), SIMDE_FLOAT16_VALUE( 480.89) },
{ SIMDE_FLOAT16_VALUE( 514.49), SIMDE_FLOAT16_VALUE( 62.03), SIMDE_FLOAT16_VALUE( 467.80), SIMDE_FLOAT16_VALUE( 503.53),
SIMDE_FLOAT16_VALUE( 888.07), SIMDE_FLOAT16_VALUE( 514.77), SIMDE_FLOAT16_VALUE( 91.01), SIMDE_FLOAT16_VALUE( -789.37) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_float16x8x2_t r = simde_vld2q_f16(test_vec[i].a);
simde_float16x8x2_t expected = {
{simde_vld1q_f16(test_vec[i].r[0]), simde_vld1q_f16(test_vec[i].r[1])}};
simde_test_arm_neon_assert_equal_f16x8(r.val[0], expected.val[0], INT_MAX);
simde_test_arm_neon_assert_equal_f16x8(r.val[1], expected.val[1], INT_MAX);
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_float16x16_t a = simde_test_arm_neon_random_f16x16(-100.0f, 100.0f);
simde_float16x2_t r[2] = simde_vld2q_f16(a);
simde_test_arm_neon_write_f16x16(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_f16x2(2, r[2], SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vld2q_f32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
@ -1614,6 +1746,555 @@ test_simde_vld2q_f64 (SIMDE_MUNIT_TEST_ARGS) {
#endif
}
static int
test_simde_vld2_p8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
simde_poly8_t a[16];
simde_poly8_t r[2][8];
} test_vec[] = {
{ { SIMDE_POLY8_C(253), SIMDE_POLY8_C( 3), SIMDE_POLY8_C( 5), SIMDE_POLY8_C( 81), SIMDE_POLY8_C(241), SIMDE_POLY8_C(208), SIMDE_POLY8_C( 1), SIMDE_POLY8_C( 94),
SIMDE_POLY8_C( 57), SIMDE_POLY8_C(227), SIMDE_POLY8_C( 56), SIMDE_POLY8_C(133), SIMDE_POLY8_C( 6), SIMDE_POLY8_C(188), SIMDE_POLY8_C( 62), SIMDE_POLY8_C( 65) },
{ { SIMDE_POLY8_C(253), SIMDE_POLY8_C( 5), SIMDE_POLY8_C(241), SIMDE_POLY8_C( 1), SIMDE_POLY8_C( 57), SIMDE_POLY8_C( 56), SIMDE_POLY8_C( 6), SIMDE_POLY8_C( 62) },
{ SIMDE_POLY8_C( 3), SIMDE_POLY8_C( 81), SIMDE_POLY8_C(208), SIMDE_POLY8_C( 94), SIMDE_POLY8_C(227), SIMDE_POLY8_C(133), SIMDE_POLY8_C(188), SIMDE_POLY8_C( 65) } },
},
{ { SIMDE_POLY8_C( 2), SIMDE_POLY8_C(UINT8_MAX), SIMDE_POLY8_C( 3), SIMDE_POLY8_C(134), SIMDE_POLY8_C(218), SIMDE_POLY8_C(121), SIMDE_POLY8_C( 96), SIMDE_POLY8_C( 37),
SIMDE_POLY8_C( 40), SIMDE_POLY8_C( 32), SIMDE_POLY8_C( 74), SIMDE_POLY8_C(170), SIMDE_POLY8_C( 81), SIMDE_POLY8_C(124), SIMDE_POLY8_C(218), SIMDE_POLY8_C( 79) },
{ { SIMDE_POLY8_C( 2), SIMDE_POLY8_C( 3), SIMDE_POLY8_C(218), SIMDE_POLY8_C( 96), SIMDE_POLY8_C( 40), SIMDE_POLY8_C( 74), SIMDE_POLY8_C( 81), SIMDE_POLY8_C(218) },
{ SIMDE_POLY8_C(UINT8_MAX), SIMDE_POLY8_C(134), SIMDE_POLY8_C(121), SIMDE_POLY8_C( 37), SIMDE_POLY8_C( 32), SIMDE_POLY8_C(170), SIMDE_POLY8_C(124), SIMDE_POLY8_C( 79) } },
},
{ { SIMDE_POLY8_C(127), SIMDE_POLY8_C(223), SIMDE_POLY8_C(160), SIMDE_POLY8_C(113), SIMDE_POLY8_C(175), SIMDE_POLY8_C(161), SIMDE_POLY8_C(207), SIMDE_POLY8_C(233),
SIMDE_POLY8_C(132), SIMDE_POLY8_C( 7), SIMDE_POLY8_C(110), SIMDE_POLY8_C(138), SIMDE_POLY8_C(195), SIMDE_POLY8_C(172), SIMDE_POLY8_C(203), SIMDE_POLY8_C(198) },
{ { SIMDE_POLY8_C(127), SIMDE_POLY8_C(160), SIMDE_POLY8_C(175), SIMDE_POLY8_C(207), SIMDE_POLY8_C(132), SIMDE_POLY8_C(110), SIMDE_POLY8_C(195), SIMDE_POLY8_C(203) },
{ SIMDE_POLY8_C(223), SIMDE_POLY8_C(113), SIMDE_POLY8_C(161), SIMDE_POLY8_C(233), SIMDE_POLY8_C( 7), SIMDE_POLY8_C(138), SIMDE_POLY8_C(172), SIMDE_POLY8_C(198) } },
},
{ { SIMDE_POLY8_C(171), SIMDE_POLY8_C(207), SIMDE_POLY8_C( 76), SIMDE_POLY8_C(134), SIMDE_POLY8_C( 72), SIMDE_POLY8_C(173), SIMDE_POLY8_C(171), SIMDE_POLY8_C(113),
SIMDE_POLY8_C(205), SIMDE_POLY8_C(245), SIMDE_POLY8_C( 27), SIMDE_POLY8_C( 30), SIMDE_POLY8_C(113), SIMDE_POLY8_C(245), SIMDE_POLY8_C(109), SIMDE_POLY8_C(241) },
{ { SIMDE_POLY8_C(171), SIMDE_POLY8_C( 76), SIMDE_POLY8_C( 72), SIMDE_POLY8_C(171), SIMDE_POLY8_C(205), SIMDE_POLY8_C( 27), SIMDE_POLY8_C(113), SIMDE_POLY8_C(109) },
{ SIMDE_POLY8_C(207), SIMDE_POLY8_C(134), SIMDE_POLY8_C(173), SIMDE_POLY8_C(113), SIMDE_POLY8_C(245), SIMDE_POLY8_C( 30), SIMDE_POLY8_C(245), SIMDE_POLY8_C(241) } },
},
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_poly8x8x2_t r = simde_vld2_p8(test_vec[i].a);
simde_poly8x8x2_t expected = {
{simde_vld1_p8(test_vec[i].r[0]), simde_vld1_p8(test_vec[i].r[1])}};
simde_test_arm_neon_assert_equal_p8x8(r.val[0], expected.val[0]);
simde_test_arm_neon_assert_equal_p8x8(r.val[1], expected.val[1]);
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 4 ; i++) {
simde_poly8_t a[16];
simde_poly8x8x2_t r;
simde_test_codegen_random_memory(16, HEDLEY_REINTERPRET_CAST(uint8_t*, a));
r = simde_vld2_p8(a);
simde_test_codegen_write_vp8(2, 16, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_p8x8x2(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vld2_p16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
simde_poly16_t a[8];
simde_poly16_t r[2][4];
} test_vec[] = {
{ { SIMDE_POLY16_C(42664), SIMDE_POLY16_C(53887), SIMDE_POLY16_C(10958), SIMDE_POLY16_C(61123),
SIMDE_POLY16_C( 7800), SIMDE_POLY16_C(15834), SIMDE_POLY16_C(36089), SIMDE_POLY16_C(22799) },
{ { SIMDE_POLY16_C(42664), SIMDE_POLY16_C(10958), SIMDE_POLY16_C( 7800), SIMDE_POLY16_C(36089) },
{ SIMDE_POLY16_C(53887), SIMDE_POLY16_C(61123), SIMDE_POLY16_C(15834), SIMDE_POLY16_C(22799) } },
},
{ { SIMDE_POLY16_C(62795), SIMDE_POLY16_C(22857), SIMDE_POLY16_C(11632), SIMDE_POLY16_C(39934),
SIMDE_POLY16_C(56742), SIMDE_POLY16_C(64150), SIMDE_POLY16_C( 8095), SIMDE_POLY16_C(18414) },
{ { SIMDE_POLY16_C(62795), SIMDE_POLY16_C(11632), SIMDE_POLY16_C(56742), SIMDE_POLY16_C( 8095) },
{ SIMDE_POLY16_C(22857), SIMDE_POLY16_C(39934), SIMDE_POLY16_C(64150), SIMDE_POLY16_C(18414) } },
},
{ { SIMDE_POLY16_C(28101), SIMDE_POLY16_C(37914), SIMDE_POLY16_C(56727), SIMDE_POLY16_C( 3970),
SIMDE_POLY16_C(23803), SIMDE_POLY16_C(62797), SIMDE_POLY16_C(23784), SIMDE_POLY16_C(13390) },
{ { SIMDE_POLY16_C(28101), SIMDE_POLY16_C(56727), SIMDE_POLY16_C(23803), SIMDE_POLY16_C(23784) },
{ SIMDE_POLY16_C(37914), SIMDE_POLY16_C( 3970), SIMDE_POLY16_C(62797), SIMDE_POLY16_C(13390) } },
},
{ { SIMDE_POLY16_C(38737), SIMDE_POLY16_C(49549), SIMDE_POLY16_C(36037), SIMDE_POLY16_C(27485),
SIMDE_POLY16_C(62313), SIMDE_POLY16_C( 2149), SIMDE_POLY16_C(21522), SIMDE_POLY16_C(55375) },
{ { SIMDE_POLY16_C(38737), SIMDE_POLY16_C(36037), SIMDE_POLY16_C(62313), SIMDE_POLY16_C(21522) },
{ SIMDE_POLY16_C(49549), SIMDE_POLY16_C(27485), SIMDE_POLY16_C( 2149), SIMDE_POLY16_C(55375) } },
},
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_poly16x4x2_t r = simde_vld2_p16(test_vec[i].a);
simde_poly16x4x2_t expected = {
{simde_vld1_p16(test_vec[i].r[0]), simde_vld1_p16(test_vec[i].r[1])}};
simde_test_arm_neon_assert_equal_p16x4(r.val[0], expected.val[0]);
simde_test_arm_neon_assert_equal_p16x4(r.val[1], expected.val[1]);
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 4 ; i++) {
simde_poly16_t a[8];
simde_poly16x4x2_t r;
simde_test_codegen_random_memory(16, HEDLEY_REINTERPRET_CAST(uint8_t*, a));
r = simde_vld2_p16(a);
simde_test_codegen_write_vp16(2, 8, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_p16x4x2(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vld2_p64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
simde_poly64_t a[2];
simde_poly64_t r[2][1];
} test_vec[] = {
{ { SIMDE_POLY64_C( 9544671133075875798),
SIMDE_POLY64_C(10026771010818587806) },
{ { SIMDE_POLY64_C( 9544671133075875798) },
{ SIMDE_POLY64_C(10026771010818587806) } },
},
{ { SIMDE_POLY64_C(11716502022888129015),
SIMDE_POLY64_C( 9207447440231071203) },
{ { SIMDE_POLY64_C(11716502022888129015) },
{ SIMDE_POLY64_C( 9207447440231071203) } },
},
{ { SIMDE_POLY64_C(14585844370014973971),
SIMDE_POLY64_C(12085455436694909200) },
{ { SIMDE_POLY64_C(14585844370014973971) },
{ SIMDE_POLY64_C(12085455436694909200) } },
},
{ { SIMDE_POLY64_C( 6976248983748549802),
SIMDE_POLY64_C( 6648178682459053338) },
{ { SIMDE_POLY64_C( 6976248983748549802) },
{ SIMDE_POLY64_C( 6648178682459053338) } },
},
{ { SIMDE_POLY64_C( 9780321370926949059),
SIMDE_POLY64_C(10409627327296486687) },
{ { SIMDE_POLY64_C( 9780321370926949059) },
{ SIMDE_POLY64_C(10409627327296486687) } },
},
{ { SIMDE_POLY64_C( 3559687685519800969),
SIMDE_POLY64_C( 9804398810564506218) },
{ { SIMDE_POLY64_C( 3559687685519800969) },
{ SIMDE_POLY64_C( 9804398810564506218) } },
},
{ { SIMDE_POLY64_C( 2403006863864517466),
SIMDE_POLY64_C( 244715532034575855) },
{ { SIMDE_POLY64_C( 2403006863864517466) },
{ SIMDE_POLY64_C( 244715532034575855) } },
},
{ { SIMDE_POLY64_C( 1885442199874249441),
SIMDE_POLY64_C(12785682336243916577) },
{ { SIMDE_POLY64_C( 1885442199874249441) },
{ SIMDE_POLY64_C(12785682336243916577) } },
},
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_poly64x1x2_t r = simde_vld2_p64(test_vec[i].a);
simde_poly64x1x2_t expected = {
{simde_vld1_p64(test_vec[i].r[0]), simde_vld1_p64(test_vec[i].r[1])}};
simde_test_arm_neon_assert_equal_p64x1(r.val[0], expected.val[0]);
simde_test_arm_neon_assert_equal_p64x1(r.val[1], expected.val[1]);
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 4 ; i++) {
simde_poly64_t a[8];
simde_poly64x1x2_t r;
simde_test_codegen_random_memory(64, HEDLEY_REINTERPRET_CAST(uint8_t*, a));
r = simde_vld2_p64(a);
simde_test_codegen_write_vp64(2, 8, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_p64x1x2(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vld2q_p8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
simde_poly8_t a[32];
simde_poly8_t r[2][16];
} test_vec[] = {
{ { SIMDE_POLY8_C( 56), SIMDE_POLY8_C(119), SIMDE_POLY8_C(167), SIMDE_POLY8_C( 99), SIMDE_POLY8_C(221), SIMDE_POLY8_C(126), SIMDE_POLY8_C(139), SIMDE_POLY8_C( 94),
SIMDE_POLY8_C( 0), SIMDE_POLY8_C(203), SIMDE_POLY8_C(216), SIMDE_POLY8_C( 77), SIMDE_POLY8_C( 79), SIMDE_POLY8_C(152), SIMDE_POLY8_C( 2), SIMDE_POLY8_C(187),
SIMDE_POLY8_C(173), SIMDE_POLY8_C(251), SIMDE_POLY8_C( 63), SIMDE_POLY8_C( 57), SIMDE_POLY8_C(133), SIMDE_POLY8_C( 35), SIMDE_POLY8_C(243), SIMDE_POLY8_C(166),
SIMDE_POLY8_C( 51), SIMDE_POLY8_C(149), SIMDE_POLY8_C(128), SIMDE_POLY8_C( 99), SIMDE_POLY8_C(176), SIMDE_POLY8_C(195), SIMDE_POLY8_C( 30), SIMDE_POLY8_C(232) },
{ { SIMDE_POLY8_C( 56), SIMDE_POLY8_C(167), SIMDE_POLY8_C(221), SIMDE_POLY8_C(139), SIMDE_POLY8_C( 0), SIMDE_POLY8_C(216), SIMDE_POLY8_C( 79), SIMDE_POLY8_C( 2),
SIMDE_POLY8_C(173), SIMDE_POLY8_C( 63), SIMDE_POLY8_C(133), SIMDE_POLY8_C(243), SIMDE_POLY8_C( 51), SIMDE_POLY8_C(128), SIMDE_POLY8_C(176), SIMDE_POLY8_C( 30) },
{ SIMDE_POLY8_C(119), SIMDE_POLY8_C( 99), SIMDE_POLY8_C(126), SIMDE_POLY8_C( 94), SIMDE_POLY8_C(203), SIMDE_POLY8_C( 77), SIMDE_POLY8_C(152), SIMDE_POLY8_C(187),
SIMDE_POLY8_C(251), SIMDE_POLY8_C( 57), SIMDE_POLY8_C( 35), SIMDE_POLY8_C(166), SIMDE_POLY8_C(149), SIMDE_POLY8_C( 99), SIMDE_POLY8_C(195), SIMDE_POLY8_C(232) } },
},
{ { SIMDE_POLY8_C( 58), SIMDE_POLY8_C(198), SIMDE_POLY8_C( 75), SIMDE_POLY8_C( 24), SIMDE_POLY8_C( 68), SIMDE_POLY8_C(214), SIMDE_POLY8_C(118), SIMDE_POLY8_C( 68),
SIMDE_POLY8_C(161), SIMDE_POLY8_C( 78), SIMDE_POLY8_C(145), SIMDE_POLY8_C(240), SIMDE_POLY8_C(231), SIMDE_POLY8_C(148), SIMDE_POLY8_C(172), SIMDE_POLY8_C(148),
SIMDE_POLY8_C(143), SIMDE_POLY8_C(235), SIMDE_POLY8_C(205), SIMDE_POLY8_C( 20), SIMDE_POLY8_C( 14), SIMDE_POLY8_C(192), SIMDE_POLY8_C(186), SIMDE_POLY8_C( 65),
SIMDE_POLY8_C( 85), SIMDE_POLY8_C( 58), SIMDE_POLY8_C(164), SIMDE_POLY8_C( 5), SIMDE_POLY8_C(254), SIMDE_POLY8_C(195), SIMDE_POLY8_C(237), SIMDE_POLY8_C( 56) },
{ { SIMDE_POLY8_C( 58), SIMDE_POLY8_C( 75), SIMDE_POLY8_C( 68), SIMDE_POLY8_C(118), SIMDE_POLY8_C(161), SIMDE_POLY8_C(145), SIMDE_POLY8_C(231), SIMDE_POLY8_C(172),
SIMDE_POLY8_C(143), SIMDE_POLY8_C(205), SIMDE_POLY8_C( 14), SIMDE_POLY8_C(186), SIMDE_POLY8_C( 85), SIMDE_POLY8_C(164), SIMDE_POLY8_C(254), SIMDE_POLY8_C(237) },
{ SIMDE_POLY8_C(198), SIMDE_POLY8_C( 24), SIMDE_POLY8_C(214), SIMDE_POLY8_C( 68), SIMDE_POLY8_C( 78), SIMDE_POLY8_C(240), SIMDE_POLY8_C(148), SIMDE_POLY8_C(148),
SIMDE_POLY8_C(235), SIMDE_POLY8_C( 20), SIMDE_POLY8_C(192), SIMDE_POLY8_C( 65), SIMDE_POLY8_C( 58), SIMDE_POLY8_C( 5), SIMDE_POLY8_C(195), SIMDE_POLY8_C( 56) } },
},
{ { SIMDE_POLY8_C(137), SIMDE_POLY8_C( 56), SIMDE_POLY8_C( 80), SIMDE_POLY8_C(205), SIMDE_POLY8_C( 15), SIMDE_POLY8_C(199), SIMDE_POLY8_C( 18), SIMDE_POLY8_C(176),
SIMDE_POLY8_C( 21), SIMDE_POLY8_C(163), SIMDE_POLY8_C(161), SIMDE_POLY8_C(252), SIMDE_POLY8_C( 55), SIMDE_POLY8_C( 77), SIMDE_POLY8_C(144), SIMDE_POLY8_C(198),
SIMDE_POLY8_C( 56), SIMDE_POLY8_C( 93), SIMDE_POLY8_C(219), SIMDE_POLY8_C( 70), SIMDE_POLY8_C( 29), SIMDE_POLY8_C(149), SIMDE_POLY8_C(135), SIMDE_POLY8_C(115),
SIMDE_POLY8_C(208), SIMDE_POLY8_C( 43), SIMDE_POLY8_C(120), SIMDE_POLY8_C(206), SIMDE_POLY8_C(238), SIMDE_POLY8_C(102), SIMDE_POLY8_C( 6), SIMDE_POLY8_C(119) },
{ { SIMDE_POLY8_C(137), SIMDE_POLY8_C( 80), SIMDE_POLY8_C( 15), SIMDE_POLY8_C( 18), SIMDE_POLY8_C( 21), SIMDE_POLY8_C(161), SIMDE_POLY8_C( 55), SIMDE_POLY8_C(144),
SIMDE_POLY8_C( 56), SIMDE_POLY8_C(219), SIMDE_POLY8_C( 29), SIMDE_POLY8_C(135), SIMDE_POLY8_C(208), SIMDE_POLY8_C(120), SIMDE_POLY8_C(238), SIMDE_POLY8_C( 6) },
{ SIMDE_POLY8_C( 56), SIMDE_POLY8_C(205), SIMDE_POLY8_C(199), SIMDE_POLY8_C(176), SIMDE_POLY8_C(163), SIMDE_POLY8_C(252), SIMDE_POLY8_C( 77), SIMDE_POLY8_C(198),
SIMDE_POLY8_C( 93), SIMDE_POLY8_C( 70), SIMDE_POLY8_C(149), SIMDE_POLY8_C(115), SIMDE_POLY8_C( 43), SIMDE_POLY8_C(206), SIMDE_POLY8_C(102), SIMDE_POLY8_C(119) } },
},
{ { SIMDE_POLY8_C(158), SIMDE_POLY8_C( 87), SIMDE_POLY8_C( 69), SIMDE_POLY8_C(173), SIMDE_POLY8_C( 30), SIMDE_POLY8_C( 87), SIMDE_POLY8_C( 94), SIMDE_POLY8_C( 51),
SIMDE_POLY8_C(250), SIMDE_POLY8_C(UINT8_MAX), SIMDE_POLY8_C( 48), SIMDE_POLY8_C( 50), SIMDE_POLY8_C( 76), SIMDE_POLY8_C(192), SIMDE_POLY8_C(248), SIMDE_POLY8_C(132),
SIMDE_POLY8_C( 30), SIMDE_POLY8_C(211), SIMDE_POLY8_C(202), SIMDE_POLY8_C( 59), SIMDE_POLY8_C(105), SIMDE_POLY8_C( 81), SIMDE_POLY8_C(174), SIMDE_POLY8_C( 57),
SIMDE_POLY8_C(124), SIMDE_POLY8_C( 39), SIMDE_POLY8_C( 7), SIMDE_POLY8_C(107), SIMDE_POLY8_C(141), SIMDE_POLY8_C( 13), SIMDE_POLY8_C(226), SIMDE_POLY8_C( 43) },
{ { SIMDE_POLY8_C(158), SIMDE_POLY8_C( 69), SIMDE_POLY8_C( 30), SIMDE_POLY8_C( 94), SIMDE_POLY8_C(250), SIMDE_POLY8_C( 48), SIMDE_POLY8_C( 76), SIMDE_POLY8_C(248),
SIMDE_POLY8_C( 30), SIMDE_POLY8_C(202), SIMDE_POLY8_C(105), SIMDE_POLY8_C(174), SIMDE_POLY8_C(124), SIMDE_POLY8_C( 7), SIMDE_POLY8_C(141), SIMDE_POLY8_C(226) },
{ SIMDE_POLY8_C( 87), SIMDE_POLY8_C(173), SIMDE_POLY8_C( 87), SIMDE_POLY8_C( 51), SIMDE_POLY8_C(UINT8_MAX), SIMDE_POLY8_C( 50), SIMDE_POLY8_C(192), SIMDE_POLY8_C(132),
SIMDE_POLY8_C(211), SIMDE_POLY8_C( 59), SIMDE_POLY8_C( 81), SIMDE_POLY8_C( 57), SIMDE_POLY8_C( 39), SIMDE_POLY8_C(107), SIMDE_POLY8_C( 13), SIMDE_POLY8_C( 43) } },
},
{ { SIMDE_POLY8_C(100), SIMDE_POLY8_C( 39), SIMDE_POLY8_C(217), SIMDE_POLY8_C(130), SIMDE_POLY8_C(126), SIMDE_POLY8_C( 55), SIMDE_POLY8_C(182), SIMDE_POLY8_C(121),
SIMDE_POLY8_C( 54), SIMDE_POLY8_C(230), SIMDE_POLY8_C(171), SIMDE_POLY8_C(130), SIMDE_POLY8_C(166), SIMDE_POLY8_C(163), SIMDE_POLY8_C( 6), SIMDE_POLY8_C(196),
SIMDE_POLY8_C(119), SIMDE_POLY8_C(208), SIMDE_POLY8_C( 0), SIMDE_POLY8_C(224), SIMDE_POLY8_C( 33), SIMDE_POLY8_C(174), SIMDE_POLY8_C( 25), SIMDE_POLY8_C(157),
SIMDE_POLY8_C(213), SIMDE_POLY8_C( 32), SIMDE_POLY8_C( 8), SIMDE_POLY8_C( 98), SIMDE_POLY8_C( 45), SIMDE_POLY8_C(235), SIMDE_POLY8_C(142), SIMDE_POLY8_C(146) },
{ { SIMDE_POLY8_C(100), SIMDE_POLY8_C(217), SIMDE_POLY8_C(126), SIMDE_POLY8_C(182), SIMDE_POLY8_C( 54), SIMDE_POLY8_C(171), SIMDE_POLY8_C(166), SIMDE_POLY8_C( 6),
SIMDE_POLY8_C(119), SIMDE_POLY8_C( 0), SIMDE_POLY8_C( 33), SIMDE_POLY8_C( 25), SIMDE_POLY8_C(213), SIMDE_POLY8_C( 8), SIMDE_POLY8_C( 45), SIMDE_POLY8_C(142) },
{ SIMDE_POLY8_C( 39), SIMDE_POLY8_C(130), SIMDE_POLY8_C( 55), SIMDE_POLY8_C(121), SIMDE_POLY8_C(230), SIMDE_POLY8_C(130), SIMDE_POLY8_C(163), SIMDE_POLY8_C(196),
SIMDE_POLY8_C(208), SIMDE_POLY8_C(224), SIMDE_POLY8_C(174), SIMDE_POLY8_C(157), SIMDE_POLY8_C( 32), SIMDE_POLY8_C( 98), SIMDE_POLY8_C(235), SIMDE_POLY8_C(146) } },
},
{ { SIMDE_POLY8_C( 18), SIMDE_POLY8_C(103), SIMDE_POLY8_C( 20), SIMDE_POLY8_C(145), SIMDE_POLY8_C(158), SIMDE_POLY8_C(202), SIMDE_POLY8_C( 10), SIMDE_POLY8_C(212),
SIMDE_POLY8_C(176), SIMDE_POLY8_C(181), SIMDE_POLY8_C( 86), SIMDE_POLY8_C( 87), SIMDE_POLY8_C( 88), SIMDE_POLY8_C( 92), SIMDE_POLY8_C( 27), SIMDE_POLY8_C(207),
SIMDE_POLY8_C( 44), SIMDE_POLY8_C( 27), SIMDE_POLY8_C(175), SIMDE_POLY8_C( 77), SIMDE_POLY8_C(202), SIMDE_POLY8_C(200), SIMDE_POLY8_C(234), SIMDE_POLY8_C(159),
SIMDE_POLY8_C(232), SIMDE_POLY8_C(243), SIMDE_POLY8_C( 2), SIMDE_POLY8_C( 22), SIMDE_POLY8_C(222), SIMDE_POLY8_C(144), SIMDE_POLY8_C(168), SIMDE_POLY8_C(240) },
{ { SIMDE_POLY8_C( 18), SIMDE_POLY8_C( 20), SIMDE_POLY8_C(158), SIMDE_POLY8_C( 10), SIMDE_POLY8_C(176), SIMDE_POLY8_C( 86), SIMDE_POLY8_C( 88), SIMDE_POLY8_C( 27),
SIMDE_POLY8_C( 44), SIMDE_POLY8_C(175), SIMDE_POLY8_C(202), SIMDE_POLY8_C(234), SIMDE_POLY8_C(232), SIMDE_POLY8_C( 2), SIMDE_POLY8_C(222), SIMDE_POLY8_C(168) },
{ SIMDE_POLY8_C(103), SIMDE_POLY8_C(145), SIMDE_POLY8_C(202), SIMDE_POLY8_C(212), SIMDE_POLY8_C(181), SIMDE_POLY8_C( 87), SIMDE_POLY8_C( 92), SIMDE_POLY8_C(207),
SIMDE_POLY8_C( 27), SIMDE_POLY8_C( 77), SIMDE_POLY8_C(200), SIMDE_POLY8_C(159), SIMDE_POLY8_C(243), SIMDE_POLY8_C( 22), SIMDE_POLY8_C(144), SIMDE_POLY8_C(240) } },
},
{ { SIMDE_POLY8_C(247), SIMDE_POLY8_C(188), SIMDE_POLY8_C(129), SIMDE_POLY8_C(149), SIMDE_POLY8_C(135), SIMDE_POLY8_C(139), SIMDE_POLY8_C(105), SIMDE_POLY8_C( 55),
SIMDE_POLY8_C( 64), SIMDE_POLY8_C(191), SIMDE_POLY8_C(142), SIMDE_POLY8_C(153), SIMDE_POLY8_C( 27), SIMDE_POLY8_C(170), SIMDE_POLY8_C(104), SIMDE_POLY8_C( 71),
SIMDE_POLY8_C(197), SIMDE_POLY8_C( 24), SIMDE_POLY8_C(148), SIMDE_POLY8_C(143), SIMDE_POLY8_C(224), SIMDE_POLY8_C(126), SIMDE_POLY8_C( 47), SIMDE_POLY8_C(201),
SIMDE_POLY8_C(113), SIMDE_POLY8_C( 49), SIMDE_POLY8_C(223), SIMDE_POLY8_C( 79), SIMDE_POLY8_C(193), SIMDE_POLY8_C(135), SIMDE_POLY8_C( 64), SIMDE_POLY8_C(184) },
{ { SIMDE_POLY8_C(247), SIMDE_POLY8_C(129), SIMDE_POLY8_C(135), SIMDE_POLY8_C(105), SIMDE_POLY8_C( 64), SIMDE_POLY8_C(142), SIMDE_POLY8_C( 27), SIMDE_POLY8_C(104),
SIMDE_POLY8_C(197), SIMDE_POLY8_C(148), SIMDE_POLY8_C(224), SIMDE_POLY8_C( 47), SIMDE_POLY8_C(113), SIMDE_POLY8_C(223), SIMDE_POLY8_C(193), SIMDE_POLY8_C( 64) },
{ SIMDE_POLY8_C(188), SIMDE_POLY8_C(149), SIMDE_POLY8_C(139), SIMDE_POLY8_C( 55), SIMDE_POLY8_C(191), SIMDE_POLY8_C(153), SIMDE_POLY8_C(170), SIMDE_POLY8_C( 71),
SIMDE_POLY8_C( 24), SIMDE_POLY8_C(143), SIMDE_POLY8_C(126), SIMDE_POLY8_C(201), SIMDE_POLY8_C( 49), SIMDE_POLY8_C( 79), SIMDE_POLY8_C(135), SIMDE_POLY8_C(184) } },
},
{ { SIMDE_POLY8_C( 67), SIMDE_POLY8_C(193), SIMDE_POLY8_C( 77), SIMDE_POLY8_C(202), SIMDE_POLY8_C( 77), SIMDE_POLY8_C(182), SIMDE_POLY8_C( 2), SIMDE_POLY8_C(141),
SIMDE_POLY8_C(117), SIMDE_POLY8_C(144), SIMDE_POLY8_C( 38), SIMDE_POLY8_C(144), SIMDE_POLY8_C( 58), SIMDE_POLY8_C(143), SIMDE_POLY8_C(215), SIMDE_POLY8_C( 0),
SIMDE_POLY8_C(167), SIMDE_POLY8_C(107), SIMDE_POLY8_C(143), SIMDE_POLY8_C(135), SIMDE_POLY8_C(233), SIMDE_POLY8_C(190), SIMDE_POLY8_C( 80), SIMDE_POLY8_C( 91),
SIMDE_POLY8_C(239), SIMDE_POLY8_C( 47), SIMDE_POLY8_C(170), SIMDE_POLY8_C(176), SIMDE_POLY8_C(182), SIMDE_POLY8_C(234), SIMDE_POLY8_C(104), SIMDE_POLY8_C(250) },
{ { SIMDE_POLY8_C( 67), SIMDE_POLY8_C( 77), SIMDE_POLY8_C( 77), SIMDE_POLY8_C( 2), SIMDE_POLY8_C(117), SIMDE_POLY8_C( 38), SIMDE_POLY8_C( 58), SIMDE_POLY8_C(215),
SIMDE_POLY8_C(167), SIMDE_POLY8_C(143), SIMDE_POLY8_C(233), SIMDE_POLY8_C( 80), SIMDE_POLY8_C(239), SIMDE_POLY8_C(170), SIMDE_POLY8_C(182), SIMDE_POLY8_C(104) },
{ SIMDE_POLY8_C(193), SIMDE_POLY8_C(202), SIMDE_POLY8_C(182), SIMDE_POLY8_C(141), SIMDE_POLY8_C(144), SIMDE_POLY8_C(144), SIMDE_POLY8_C(143), SIMDE_POLY8_C( 0),
SIMDE_POLY8_C(107), SIMDE_POLY8_C(135), SIMDE_POLY8_C(190), SIMDE_POLY8_C( 91), SIMDE_POLY8_C( 47), SIMDE_POLY8_C(176), SIMDE_POLY8_C(234), SIMDE_POLY8_C(250) } },
},
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_poly8x16x2_t r = simde_vld2q_p8(test_vec[i].a);
simde_poly8x16x2_t expected = {
{simde_vld1q_p8(test_vec[i].r[0]), simde_vld1q_p8(test_vec[i].r[1])}};
simde_test_arm_neon_assert_equal_p8x16(r.val[0], expected.val[0]);
simde_test_arm_neon_assert_equal_p8x16(r.val[1], expected.val[1]);
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 4 ; i++) {
simde_poly8_t a[32];
simde_poly8x16x2_t r;
simde_test_codegen_random_memory(32, HEDLEY_REINTERPRET_CAST(uint8_t*, a));
r = simde_vld2q_p8(a);
simde_test_codegen_write_vp8(2, 32, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_p8x16x2(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vld2q_p16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
simde_poly16_t a[16];
simde_poly16_t r[2][8];
} test_vec[] = {
{ { SIMDE_POLY16_C( 5263), SIMDE_POLY16_C(46704), SIMDE_POLY16_C(17324), SIMDE_POLY16_C( 435), SIMDE_POLY16_C(22826), SIMDE_POLY16_C(35226), SIMDE_POLY16_C( 4289), SIMDE_POLY16_C(14289),
SIMDE_POLY16_C(15842), SIMDE_POLY16_C(32624), SIMDE_POLY16_C( 9166), SIMDE_POLY16_C(50530), SIMDE_POLY16_C(15251), SIMDE_POLY16_C(37458), SIMDE_POLY16_C(64003), SIMDE_POLY16_C(37377) },
{ { SIMDE_POLY16_C( 5263), SIMDE_POLY16_C(17324), SIMDE_POLY16_C(22826), SIMDE_POLY16_C( 4289), SIMDE_POLY16_C(15842), SIMDE_POLY16_C( 9166), SIMDE_POLY16_C(15251), SIMDE_POLY16_C(64003) },
{ SIMDE_POLY16_C(46704), SIMDE_POLY16_C( 435), SIMDE_POLY16_C(35226), SIMDE_POLY16_C(14289), SIMDE_POLY16_C(32624), SIMDE_POLY16_C(50530), SIMDE_POLY16_C(37458), SIMDE_POLY16_C(37377) } },
},
{ { SIMDE_POLY16_C(28943), SIMDE_POLY16_C(47944), SIMDE_POLY16_C(64436), SIMDE_POLY16_C(57020), SIMDE_POLY16_C(22100), SIMDE_POLY16_C( 5480), SIMDE_POLY16_C(14695), SIMDE_POLY16_C(18765),
SIMDE_POLY16_C(48502), SIMDE_POLY16_C(17865), SIMDE_POLY16_C(11232), SIMDE_POLY16_C(29450), SIMDE_POLY16_C(23654), SIMDE_POLY16_C(26886), SIMDE_POLY16_C( 1879), SIMDE_POLY16_C(26363) },
{ { SIMDE_POLY16_C(28943), SIMDE_POLY16_C(64436), SIMDE_POLY16_C(22100), SIMDE_POLY16_C(14695), SIMDE_POLY16_C(48502), SIMDE_POLY16_C(11232), SIMDE_POLY16_C(23654), SIMDE_POLY16_C( 1879) },
{ SIMDE_POLY16_C(47944), SIMDE_POLY16_C(57020), SIMDE_POLY16_C( 5480), SIMDE_POLY16_C(18765), SIMDE_POLY16_C(17865), SIMDE_POLY16_C(29450), SIMDE_POLY16_C(26886), SIMDE_POLY16_C(26363) } },
},
{ { SIMDE_POLY16_C(17528), SIMDE_POLY16_C(11297), SIMDE_POLY16_C(56639), SIMDE_POLY16_C(37899), SIMDE_POLY16_C(29491), SIMDE_POLY16_C(39593), SIMDE_POLY16_C(63148), SIMDE_POLY16_C( 8932),
SIMDE_POLY16_C(44468), SIMDE_POLY16_C(37991), SIMDE_POLY16_C(29144), SIMDE_POLY16_C(16136), SIMDE_POLY16_C( 3790), SIMDE_POLY16_C( 9640), SIMDE_POLY16_C(42005), SIMDE_POLY16_C(36235) },
{ { SIMDE_POLY16_C(17528), SIMDE_POLY16_C(56639), SIMDE_POLY16_C(29491), SIMDE_POLY16_C(63148), SIMDE_POLY16_C(44468), SIMDE_POLY16_C(29144), SIMDE_POLY16_C( 3790), SIMDE_POLY16_C(42005) },
{ SIMDE_POLY16_C(11297), SIMDE_POLY16_C(37899), SIMDE_POLY16_C(39593), SIMDE_POLY16_C( 8932), SIMDE_POLY16_C(37991), SIMDE_POLY16_C(16136), SIMDE_POLY16_C( 9640), SIMDE_POLY16_C(36235) } },
},
{ { SIMDE_POLY16_C(44264), SIMDE_POLY16_C(10169), SIMDE_POLY16_C(50313), SIMDE_POLY16_C(48315), SIMDE_POLY16_C(25911), SIMDE_POLY16_C(58199), SIMDE_POLY16_C(15195), SIMDE_POLY16_C( 3846),
SIMDE_POLY16_C(28136), SIMDE_POLY16_C(49316), SIMDE_POLY16_C(44255), SIMDE_POLY16_C(44543), SIMDE_POLY16_C(43194), SIMDE_POLY16_C(53202), SIMDE_POLY16_C(23884), SIMDE_POLY16_C(13404) },
{ { SIMDE_POLY16_C(44264), SIMDE_POLY16_C(50313), SIMDE_POLY16_C(25911), SIMDE_POLY16_C(15195), SIMDE_POLY16_C(28136), SIMDE_POLY16_C(44255), SIMDE_POLY16_C(43194), SIMDE_POLY16_C(23884) },
{ SIMDE_POLY16_C(10169), SIMDE_POLY16_C(48315), SIMDE_POLY16_C(58199), SIMDE_POLY16_C( 3846), SIMDE_POLY16_C(49316), SIMDE_POLY16_C(44543), SIMDE_POLY16_C(53202), SIMDE_POLY16_C(13404) } },
},
{ { SIMDE_POLY16_C( 5385), SIMDE_POLY16_C(37467), SIMDE_POLY16_C( 6106), SIMDE_POLY16_C( 4430), SIMDE_POLY16_C(42364), SIMDE_POLY16_C(55285), SIMDE_POLY16_C(64480), SIMDE_POLY16_C(51431),
SIMDE_POLY16_C(35688), SIMDE_POLY16_C(18313), SIMDE_POLY16_C(34871), SIMDE_POLY16_C(61940), SIMDE_POLY16_C(50736), SIMDE_POLY16_C(31936), SIMDE_POLY16_C( 7203), SIMDE_POLY16_C(11440) },
{ { SIMDE_POLY16_C( 5385), SIMDE_POLY16_C( 6106), SIMDE_POLY16_C(42364), SIMDE_POLY16_C(64480), SIMDE_POLY16_C(35688), SIMDE_POLY16_C(34871), SIMDE_POLY16_C(50736), SIMDE_POLY16_C( 7203) },
{ SIMDE_POLY16_C(37467), SIMDE_POLY16_C( 4430), SIMDE_POLY16_C(55285), SIMDE_POLY16_C(51431), SIMDE_POLY16_C(18313), SIMDE_POLY16_C(61940), SIMDE_POLY16_C(31936), SIMDE_POLY16_C(11440) } },
},
{ { SIMDE_POLY16_C( 3121), SIMDE_POLY16_C( 3006), SIMDE_POLY16_C( 3363), SIMDE_POLY16_C(40733), SIMDE_POLY16_C( 4786), SIMDE_POLY16_C(37750), SIMDE_POLY16_C(23821), SIMDE_POLY16_C(30043),
SIMDE_POLY16_C(58600), SIMDE_POLY16_C( 8125), SIMDE_POLY16_C(45421), SIMDE_POLY16_C(40208), SIMDE_POLY16_C(53368), SIMDE_POLY16_C(39706), SIMDE_POLY16_C(51948), SIMDE_POLY16_C( 7880) },
{ { SIMDE_POLY16_C( 3121), SIMDE_POLY16_C( 3363), SIMDE_POLY16_C( 4786), SIMDE_POLY16_C(23821), SIMDE_POLY16_C(58600), SIMDE_POLY16_C(45421), SIMDE_POLY16_C(53368), SIMDE_POLY16_C(51948) },
{ SIMDE_POLY16_C( 3006), SIMDE_POLY16_C(40733), SIMDE_POLY16_C(37750), SIMDE_POLY16_C(30043), SIMDE_POLY16_C( 8125), SIMDE_POLY16_C(40208), SIMDE_POLY16_C(39706), SIMDE_POLY16_C( 7880) } },
},
{ { SIMDE_POLY16_C(34518), SIMDE_POLY16_C(63785), SIMDE_POLY16_C(18067), SIMDE_POLY16_C(18072), SIMDE_POLY16_C( 3928), SIMDE_POLY16_C(26073), SIMDE_POLY16_C(13420), SIMDE_POLY16_C(21979),
SIMDE_POLY16_C(38937), SIMDE_POLY16_C(34420), SIMDE_POLY16_C(34121), SIMDE_POLY16_C(49443), SIMDE_POLY16_C(15701), SIMDE_POLY16_C(16989), SIMDE_POLY16_C( 9480), SIMDE_POLY16_C(56928) },
{ { SIMDE_POLY16_C(34518), SIMDE_POLY16_C(18067), SIMDE_POLY16_C( 3928), SIMDE_POLY16_C(13420), SIMDE_POLY16_C(38937), SIMDE_POLY16_C(34121), SIMDE_POLY16_C(15701), SIMDE_POLY16_C( 9480) },
{ SIMDE_POLY16_C(63785), SIMDE_POLY16_C(18072), SIMDE_POLY16_C(26073), SIMDE_POLY16_C(21979), SIMDE_POLY16_C(34420), SIMDE_POLY16_C(49443), SIMDE_POLY16_C(16989), SIMDE_POLY16_C(56928) } },
},
{ { SIMDE_POLY16_C(35243), SIMDE_POLY16_C(16344), SIMDE_POLY16_C(28880), SIMDE_POLY16_C(10373), SIMDE_POLY16_C(24191), SIMDE_POLY16_C(60558), SIMDE_POLY16_C(27026), SIMDE_POLY16_C(43841),
SIMDE_POLY16_C(46337), SIMDE_POLY16_C(18993), SIMDE_POLY16_C(21818), SIMDE_POLY16_C(36876), SIMDE_POLY16_C(27026), SIMDE_POLY16_C(39634), SIMDE_POLY16_C(12942), SIMDE_POLY16_C(14713) },
{ { SIMDE_POLY16_C(35243), SIMDE_POLY16_C(28880), SIMDE_POLY16_C(24191), SIMDE_POLY16_C(27026), SIMDE_POLY16_C(46337), SIMDE_POLY16_C(21818), SIMDE_POLY16_C(27026), SIMDE_POLY16_C(12942) },
{ SIMDE_POLY16_C(16344), SIMDE_POLY16_C(10373), SIMDE_POLY16_C(60558), SIMDE_POLY16_C(43841), SIMDE_POLY16_C(18993), SIMDE_POLY16_C(36876), SIMDE_POLY16_C(39634), SIMDE_POLY16_C(14713) } },
},
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_poly16x8x2_t r = simde_vld2q_p16(test_vec[i].a);
simde_poly16x8x2_t expected = {
{simde_vld1q_p16(test_vec[i].r[0]), simde_vld1q_p16(test_vec[i].r[1])}};
simde_test_arm_neon_assert_equal_p16x8(r.val[0], expected.val[0]);
simde_test_arm_neon_assert_equal_p16x8(r.val[1], expected.val[1]);
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 4 ; i++) {
simde_poly16_t a[16];
simde_poly16x8x2_t r;
simde_test_codegen_random_memory(32, HEDLEY_REINTERPRET_CAST(uint8_t*, a));
r = simde_vld2q_p16(a);
simde_test_codegen_write_vp16(2, 16, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_p16x8x2(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vld2q_p64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
simde_poly64_t a[4];
simde_poly64_t r[2][2];
} test_vec[] = {
{ { SIMDE_POLY64_C( 3020762151839533812), SIMDE_POLY64_C(17954495856467081562),
SIMDE_POLY64_C(14288482954718013222), SIMDE_POLY64_C( 3819020876812341264) },
{ { SIMDE_POLY64_C( 3020762151839533812), SIMDE_POLY64_C(14288482954718013222) },
{ SIMDE_POLY64_C(17954495856467081562), SIMDE_POLY64_C( 3819020876812341264) } },
},
{ { SIMDE_POLY64_C(10899347977887241965), SIMDE_POLY64_C( 9840223772233446588),
SIMDE_POLY64_C(12950102532167286886), SIMDE_POLY64_C(13530663546384542545) },
{ { SIMDE_POLY64_C(10899347977887241965), SIMDE_POLY64_C(12950102532167286886) },
{ SIMDE_POLY64_C( 9840223772233446588), SIMDE_POLY64_C(13530663546384542545) } },
},
{ { SIMDE_POLY64_C( 2070555630402543080), SIMDE_POLY64_C(17741159496252854347),
SIMDE_POLY64_C( 4492799045846756354), SIMDE_POLY64_C( 7500346603649101196) },
{ { SIMDE_POLY64_C( 2070555630402543080), SIMDE_POLY64_C( 4492799045846756354) },
{ SIMDE_POLY64_C(17741159496252854347), SIMDE_POLY64_C( 7500346603649101196) } },
},
{ { SIMDE_POLY64_C( 5489969314248125107), SIMDE_POLY64_C( 2945686371667927898),
SIMDE_POLY64_C(17745633243074316570), SIMDE_POLY64_C( 6772400822477133076) },
{ { SIMDE_POLY64_C( 5489969314248125107), SIMDE_POLY64_C(17745633243074316570) },
{ SIMDE_POLY64_C( 2945686371667927898), SIMDE_POLY64_C( 6772400822477133076) } },
},
{ { SIMDE_POLY64_C( 3359581776035023185), SIMDE_POLY64_C(16272061564597082244),
SIMDE_POLY64_C(15790516151494746051), SIMDE_POLY64_C( 3119705754931524419) },
{ { SIMDE_POLY64_C( 3359581776035023185), SIMDE_POLY64_C(15790516151494746051) },
{ SIMDE_POLY64_C(16272061564597082244), SIMDE_POLY64_C( 3119705754931524419) } },
},
{ { SIMDE_POLY64_C(16282232691925826805), SIMDE_POLY64_C(14653969954052444085),
SIMDE_POLY64_C(13303100541911975676), SIMDE_POLY64_C( 7968260244002705039) },
{ { SIMDE_POLY64_C(16282232691925826805), SIMDE_POLY64_C(13303100541911975676) },
{ SIMDE_POLY64_C(14653969954052444085), SIMDE_POLY64_C( 7968260244002705039) } },
},
{ { SIMDE_POLY64_C(16423833091886748078), SIMDE_POLY64_C(15064748377732249660),
SIMDE_POLY64_C(12911875263894391043), SIMDE_POLY64_C( 8586307070039217984) },
{ { SIMDE_POLY64_C(16423833091886748078), SIMDE_POLY64_C(12911875263894391043) },
{ SIMDE_POLY64_C(15064748377732249660), SIMDE_POLY64_C( 8586307070039217984) } },
},
{ { SIMDE_POLY64_C(14543092476148932546), SIMDE_POLY64_C(17406166195061535465),
SIMDE_POLY64_C(10808808801129014056), SIMDE_POLY64_C(10354190940655066225) },
{ { SIMDE_POLY64_C(14543092476148932546), SIMDE_POLY64_C(10808808801129014056) },
{ SIMDE_POLY64_C(17406166195061535465), SIMDE_POLY64_C(10354190940655066225) } },
}
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_poly64x2x2_t r = simde_vld2q_p64(test_vec[i].a);
simde_poly64x2x2_t expected = {
{simde_vld1q_p64(test_vec[i].r[0]), simde_vld1q_p64(test_vec[i].r[1])}};
simde_test_arm_neon_assert_equal_p64x2(r.val[0], expected.val[0]);
simde_test_arm_neon_assert_equal_p64x2(r.val[1], expected.val[1]);
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 4 ; i++) {
simde_poly64_t a[4];
simde_poly64x2x2_t r;
simde_test_codegen_random_memory(32, HEDLEY_REINTERPRET_CAST(uint8_t*, a));
r = simde_vld2q_p64(a);
simde_test_codegen_write_vp64(2, 4, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_p64x2x2(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vld2_bf16 (SIMDE_MUNIT_TEST_ARGS) {
struct {
simde_bfloat16_t a[8];
simde_bfloat16_t r[2][4];
} test_vec[] = {
{ { SIMDE_BFLOAT16_VALUE(-9.278), SIMDE_BFLOAT16_VALUE(-6.969), SIMDE_BFLOAT16_VALUE(1.663), SIMDE_BFLOAT16_VALUE(-2.545),
SIMDE_BFLOAT16_VALUE(-2.609), SIMDE_BFLOAT16_VALUE(6.118), SIMDE_BFLOAT16_VALUE(2.903), SIMDE_BFLOAT16_VALUE(-6.328) },
{ { SIMDE_BFLOAT16_VALUE(-9.278), SIMDE_BFLOAT16_VALUE(1.663), SIMDE_BFLOAT16_VALUE(-2.609), SIMDE_BFLOAT16_VALUE(2.903) },
{ SIMDE_BFLOAT16_VALUE(-6.969), SIMDE_BFLOAT16_VALUE(-2.545), SIMDE_BFLOAT16_VALUE(6.118), SIMDE_BFLOAT16_VALUE(-6.328) } } },
{ { SIMDE_BFLOAT16_VALUE(-1.322), SIMDE_BFLOAT16_VALUE(-3.593), SIMDE_BFLOAT16_VALUE(-1.637), SIMDE_BFLOAT16_VALUE(3.347),
SIMDE_BFLOAT16_VALUE(-9.161), SIMDE_BFLOAT16_VALUE(-9.575), SIMDE_BFLOAT16_VALUE(7.821), SIMDE_BFLOAT16_VALUE(3.600) },
{ { SIMDE_BFLOAT16_VALUE(-1.322), SIMDE_BFLOAT16_VALUE(-1.637), SIMDE_BFLOAT16_VALUE(-9.161), SIMDE_BFLOAT16_VALUE(7.821) },
{ SIMDE_BFLOAT16_VALUE(-3.593), SIMDE_BFLOAT16_VALUE(3.347), SIMDE_BFLOAT16_VALUE(-9.575), SIMDE_BFLOAT16_VALUE(3.600) } } },
{ { SIMDE_BFLOAT16_VALUE(-8.482), SIMDE_BFLOAT16_VALUE(-4.579), SIMDE_BFLOAT16_VALUE(-0.542), SIMDE_BFLOAT16_VALUE(-6.415),
SIMDE_BFLOAT16_VALUE(-4.808), SIMDE_BFLOAT16_VALUE(-0.746), SIMDE_BFLOAT16_VALUE(6.877), SIMDE_BFLOAT16_VALUE(-9.631) },
{ { SIMDE_BFLOAT16_VALUE(-8.482), SIMDE_BFLOAT16_VALUE(-0.542), SIMDE_BFLOAT16_VALUE(-4.808), SIMDE_BFLOAT16_VALUE(6.877) },
{ SIMDE_BFLOAT16_VALUE(-4.579), SIMDE_BFLOAT16_VALUE(-6.415), SIMDE_BFLOAT16_VALUE(-0.746), SIMDE_BFLOAT16_VALUE(-9.631) } } },
{ { SIMDE_BFLOAT16_VALUE(-7.341), SIMDE_BFLOAT16_VALUE(-3.836), SIMDE_BFLOAT16_VALUE(-0.189), SIMDE_BFLOAT16_VALUE(-2.384),
SIMDE_BFLOAT16_VALUE(2.127), SIMDE_BFLOAT16_VALUE(1.646), SIMDE_BFLOAT16_VALUE(7.168), SIMDE_BFLOAT16_VALUE(-5.215) },
{ { SIMDE_BFLOAT16_VALUE(-7.341), SIMDE_BFLOAT16_VALUE(-0.189), SIMDE_BFLOAT16_VALUE(2.127), SIMDE_BFLOAT16_VALUE(7.168) },
{ SIMDE_BFLOAT16_VALUE(-3.836), SIMDE_BFLOAT16_VALUE(-2.384), SIMDE_BFLOAT16_VALUE(1.646), SIMDE_BFLOAT16_VALUE(-5.215) } } },
{ { SIMDE_BFLOAT16_VALUE(-2.854), SIMDE_BFLOAT16_VALUE(-6.178), SIMDE_BFLOAT16_VALUE(6.962), SIMDE_BFLOAT16_VALUE(2.037),
SIMDE_BFLOAT16_VALUE(-2.141), SIMDE_BFLOAT16_VALUE(1.682), SIMDE_BFLOAT16_VALUE(-8.167), SIMDE_BFLOAT16_VALUE(-2.859) },
{ { SIMDE_BFLOAT16_VALUE(-2.854), SIMDE_BFLOAT16_VALUE(6.962), SIMDE_BFLOAT16_VALUE(-2.141), SIMDE_BFLOAT16_VALUE(-8.167) },
{ SIMDE_BFLOAT16_VALUE(-6.178), SIMDE_BFLOAT16_VALUE(2.037), SIMDE_BFLOAT16_VALUE(1.682), SIMDE_BFLOAT16_VALUE(-2.859) } } },
{ { SIMDE_BFLOAT16_VALUE(1.069), SIMDE_BFLOAT16_VALUE(6.073), SIMDE_BFLOAT16_VALUE(-7.430), SIMDE_BFLOAT16_VALUE(5.842),
SIMDE_BFLOAT16_VALUE(0.741), SIMDE_BFLOAT16_VALUE(-7.806), SIMDE_BFLOAT16_VALUE(-1.530), SIMDE_BFLOAT16_VALUE(5.652) },
{ { SIMDE_BFLOAT16_VALUE(1.069), SIMDE_BFLOAT16_VALUE(-7.430), SIMDE_BFLOAT16_VALUE(0.741), SIMDE_BFLOAT16_VALUE(-1.530) },
{ SIMDE_BFLOAT16_VALUE(6.073), SIMDE_BFLOAT16_VALUE(5.842), SIMDE_BFLOAT16_VALUE(-7.806), SIMDE_BFLOAT16_VALUE(5.652) } } },
{ { SIMDE_BFLOAT16_VALUE(2.665), SIMDE_BFLOAT16_VALUE(-0.358), SIMDE_BFLOAT16_VALUE(4.267), SIMDE_BFLOAT16_VALUE(6.043),
SIMDE_BFLOAT16_VALUE(4.497), SIMDE_BFLOAT16_VALUE(2.667), SIMDE_BFLOAT16_VALUE(7.972), SIMDE_BFLOAT16_VALUE(-6.815) },
{ { SIMDE_BFLOAT16_VALUE(2.665), SIMDE_BFLOAT16_VALUE(4.267), SIMDE_BFLOAT16_VALUE(4.497), SIMDE_BFLOAT16_VALUE(7.972) },
{ SIMDE_BFLOAT16_VALUE(-0.358), SIMDE_BFLOAT16_VALUE(6.043), SIMDE_BFLOAT16_VALUE(2.667), SIMDE_BFLOAT16_VALUE(-6.815) } } },
{ { SIMDE_BFLOAT16_VALUE(1.068), SIMDE_BFLOAT16_VALUE(3.596), SIMDE_BFLOAT16_VALUE(-8.704), SIMDE_BFLOAT16_VALUE(5.005),
SIMDE_BFLOAT16_VALUE(4.827), SIMDE_BFLOAT16_VALUE(4.545), SIMDE_BFLOAT16_VALUE(0.047), SIMDE_BFLOAT16_VALUE(2.680) },
{ { SIMDE_BFLOAT16_VALUE(1.068), SIMDE_BFLOAT16_VALUE(-8.704), SIMDE_BFLOAT16_VALUE(4.827), SIMDE_BFLOAT16_VALUE(0.047) },
{ SIMDE_BFLOAT16_VALUE(3.596), SIMDE_BFLOAT16_VALUE(5.005), SIMDE_BFLOAT16_VALUE(4.545), SIMDE_BFLOAT16_VALUE(2.680) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_bfloat16x4x2_t r = simde_vld2_bf16(test_vec[i].a);
simde_bfloat16x4x2_t expected = {
{simde_vld1_bf16(test_vec[i].r[0]), simde_vld1_bf16(test_vec[i].r[1])}};
simde_test_arm_neon_assert_equal_bf16x4(r.val[0], expected.val[0], 1);
simde_test_arm_neon_assert_equal_bf16x4(r.val[1], expected.val[1], 1);
}
return 0;
}
static int
test_simde_vld2q_bf16 (SIMDE_MUNIT_TEST_ARGS) {
struct {
simde_bfloat16_t a[16];
simde_bfloat16_t r[2][8];
} test_vec[] = {
{ { SIMDE_BFLOAT16_VALUE( 793.71), SIMDE_BFLOAT16_VALUE( 221.62), SIMDE_BFLOAT16_VALUE( 781.57), SIMDE_BFLOAT16_VALUE( -525.52),
SIMDE_BFLOAT16_VALUE( 800.99), SIMDE_BFLOAT16_VALUE( -411.87), SIMDE_BFLOAT16_VALUE( 483.99), SIMDE_BFLOAT16_VALUE( 852.73),
SIMDE_BFLOAT16_VALUE( -433.25), SIMDE_BFLOAT16_VALUE( -811.76), SIMDE_BFLOAT16_VALUE( -463.04), SIMDE_BFLOAT16_VALUE( 671.94),
SIMDE_BFLOAT16_VALUE( -60.94), SIMDE_BFLOAT16_VALUE( -434.20), SIMDE_BFLOAT16_VALUE( -263.89), SIMDE_BFLOAT16_VALUE( 754.63) },
{ { SIMDE_BFLOAT16_VALUE( 793.71), SIMDE_BFLOAT16_VALUE( 781.57), SIMDE_BFLOAT16_VALUE( 800.99), SIMDE_BFLOAT16_VALUE( 483.99),
SIMDE_BFLOAT16_VALUE( -433.25), SIMDE_BFLOAT16_VALUE( -463.04), SIMDE_BFLOAT16_VALUE( -60.94), SIMDE_BFLOAT16_VALUE( -263.89) },
{ SIMDE_BFLOAT16_VALUE( 221.62), SIMDE_BFLOAT16_VALUE( -525.52), SIMDE_BFLOAT16_VALUE( -411.87), SIMDE_BFLOAT16_VALUE( 852.73),
SIMDE_BFLOAT16_VALUE( -811.76), SIMDE_BFLOAT16_VALUE( 671.94), SIMDE_BFLOAT16_VALUE( -434.20), SIMDE_BFLOAT16_VALUE( 754.63) } } },
{ { SIMDE_BFLOAT16_VALUE( -877.85), SIMDE_BFLOAT16_VALUE( -225.98), SIMDE_BFLOAT16_VALUE( -292.03), SIMDE_BFLOAT16_VALUE( 932.32),
SIMDE_BFLOAT16_VALUE( -463.10), SIMDE_BFLOAT16_VALUE( 171.18), SIMDE_BFLOAT16_VALUE( -115.23), SIMDE_BFLOAT16_VALUE( -867.52),
SIMDE_BFLOAT16_VALUE( -182.14), SIMDE_BFLOAT16_VALUE( 874.57), SIMDE_BFLOAT16_VALUE( -306.44), SIMDE_BFLOAT16_VALUE( 180.87),
SIMDE_BFLOAT16_VALUE( -827.59), SIMDE_BFLOAT16_VALUE( -449.53), SIMDE_BFLOAT16_VALUE( -593.39), SIMDE_BFLOAT16_VALUE( 966.11) },
{ { SIMDE_BFLOAT16_VALUE( -877.85), SIMDE_BFLOAT16_VALUE( -292.03), SIMDE_BFLOAT16_VALUE( -463.10), SIMDE_BFLOAT16_VALUE( -115.23),
SIMDE_BFLOAT16_VALUE( -182.14), SIMDE_BFLOAT16_VALUE( -306.44), SIMDE_BFLOAT16_VALUE( -827.59), SIMDE_BFLOAT16_VALUE( -593.39) },
{ SIMDE_BFLOAT16_VALUE( -225.98), SIMDE_BFLOAT16_VALUE( 932.32), SIMDE_BFLOAT16_VALUE( 171.18), SIMDE_BFLOAT16_VALUE( -867.52),
SIMDE_BFLOAT16_VALUE( 874.57), SIMDE_BFLOAT16_VALUE( 180.87), SIMDE_BFLOAT16_VALUE( -449.53), SIMDE_BFLOAT16_VALUE( 966.11) } } },
{ { SIMDE_BFLOAT16_VALUE( 772.09), SIMDE_BFLOAT16_VALUE( -811.82), SIMDE_BFLOAT16_VALUE( -559.40), SIMDE_BFLOAT16_VALUE( 573.08),
SIMDE_BFLOAT16_VALUE( -223.69), SIMDE_BFLOAT16_VALUE( 924.59), SIMDE_BFLOAT16_VALUE( 425.81), SIMDE_BFLOAT16_VALUE( 343.06),
SIMDE_BFLOAT16_VALUE( -887.17), SIMDE_BFLOAT16_VALUE( 962.76), SIMDE_BFLOAT16_VALUE( 15.01), SIMDE_BFLOAT16_VALUE( 51.89),
SIMDE_BFLOAT16_VALUE( -471.44), SIMDE_BFLOAT16_VALUE( 751.11), SIMDE_BFLOAT16_VALUE( -193.48), SIMDE_BFLOAT16_VALUE( -349.29) },
{ { SIMDE_BFLOAT16_VALUE( 772.09), SIMDE_BFLOAT16_VALUE( -559.40), SIMDE_BFLOAT16_VALUE( -223.69), SIMDE_BFLOAT16_VALUE( 425.81),
SIMDE_BFLOAT16_VALUE( -887.17), SIMDE_BFLOAT16_VALUE( 15.01), SIMDE_BFLOAT16_VALUE( -471.44), SIMDE_BFLOAT16_VALUE( -193.48) },
{ SIMDE_BFLOAT16_VALUE( -811.82), SIMDE_BFLOAT16_VALUE( 573.08), SIMDE_BFLOAT16_VALUE( 924.59), SIMDE_BFLOAT16_VALUE( 343.06),
SIMDE_BFLOAT16_VALUE( 962.76), SIMDE_BFLOAT16_VALUE( 51.89), SIMDE_BFLOAT16_VALUE( 751.11), SIMDE_BFLOAT16_VALUE( -349.29) } } },
{ { SIMDE_BFLOAT16_VALUE( -474.87), SIMDE_BFLOAT16_VALUE( 514.49), SIMDE_BFLOAT16_VALUE( -416.97), SIMDE_BFLOAT16_VALUE( 62.03),
SIMDE_BFLOAT16_VALUE( -314.33), SIMDE_BFLOAT16_VALUE( 467.80), SIMDE_BFLOAT16_VALUE( 194.51), SIMDE_BFLOAT16_VALUE( 503.53),
SIMDE_BFLOAT16_VALUE( 342.37), SIMDE_BFLOAT16_VALUE( 888.07), SIMDE_BFLOAT16_VALUE( -315.60), SIMDE_BFLOAT16_VALUE( 514.77),
SIMDE_BFLOAT16_VALUE( -561.46), SIMDE_BFLOAT16_VALUE( 91.01), SIMDE_BFLOAT16_VALUE( 480.89), SIMDE_BFLOAT16_VALUE( -789.37) },
{ { SIMDE_BFLOAT16_VALUE( -474.87), SIMDE_BFLOAT16_VALUE( -416.97), SIMDE_BFLOAT16_VALUE( -314.33), SIMDE_BFLOAT16_VALUE( 194.51),
SIMDE_BFLOAT16_VALUE( 342.37), SIMDE_BFLOAT16_VALUE( -315.60), SIMDE_BFLOAT16_VALUE( -561.46), SIMDE_BFLOAT16_VALUE( 480.89) },
{ SIMDE_BFLOAT16_VALUE( 514.49), SIMDE_BFLOAT16_VALUE( 62.03), SIMDE_BFLOAT16_VALUE( 467.80), SIMDE_BFLOAT16_VALUE( 503.53),
SIMDE_BFLOAT16_VALUE( 888.07), SIMDE_BFLOAT16_VALUE( 514.77), SIMDE_BFLOAT16_VALUE( 91.01), SIMDE_BFLOAT16_VALUE( -789.37) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_bfloat16x8x2_t r = simde_vld2q_bf16(test_vec[i].a);
simde_bfloat16x8x2_t expected = {
{simde_vld1q_bf16(test_vec[i].r[0]), simde_vld1q_bf16(test_vec[i].r[1])}};
simde_test_arm_neon_assert_equal_bf16x8(r.val[0], expected.val[0], INT_MAX);
simde_test_arm_neon_assert_equal_bf16x8(r.val[1], expected.val[1], INT_MAX);
}
return 0;
}
#endif /* !defined(SIMDE_BUG_INTEL_857088) */
SIMDE_TEST_FUNC_LIST_BEGIN
@ -1626,6 +2307,7 @@ SIMDE_TEST_FUNC_LIST_ENTRY(vld2_u8)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2_u16)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2_u32)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2_u64)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2_f16)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2_f32)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2_f64)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2q_u8)
@ -1636,8 +2318,17 @@ SIMDE_TEST_FUNC_LIST_ENTRY(vld2q_s64)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2q_u16)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2q_u32)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2q_u64)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2q_f16)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2q_f32)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2q_f64)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2_p8)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2_p16)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2_p64)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2q_p8)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2q_p16)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2q_p64)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2_bf16)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2q_bf16)
#endif /* !defined(SIMDE_BUG_INTEL_857088) */
SIMDE_TEST_FUNC_LIST_END