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:
parent
e4e666f459
commit
3f10e05176
912 changed files with 224964 additions and 11502 deletions
322
thirdparty/simde/test/arm/neon/combine.c
vendored
322
thirdparty/simde/test/arm/neon/combine.c
vendored
|
|
@ -3,6 +3,73 @@
|
|||
#include "test-neon.h"
|
||||
#include "../../../simde/arm/neon/combine.h"
|
||||
|
||||
static int
|
||||
test_simde_vcombine_f16 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
struct {
|
||||
simde_float16_t a[4];
|
||||
simde_float16_t b[4];
|
||||
simde_float16_t r[8];
|
||||
} test_vec[] = {
|
||||
{ { SIMDE_FLOAT16_VALUE( -49.28), SIMDE_FLOAT16_VALUE( -109.00), SIMDE_FLOAT16_VALUE( -626.50), SIMDE_FLOAT16_VALUE( -567.00) },
|
||||
{ SIMDE_FLOAT16_VALUE( -178.88), SIMDE_FLOAT16_VALUE( 10.22), SIMDE_FLOAT16_VALUE( 976.50), SIMDE_FLOAT16_VALUE( -31.19) },
|
||||
{ SIMDE_FLOAT16_VALUE( -49.28), SIMDE_FLOAT16_VALUE( -109.00), SIMDE_FLOAT16_VALUE( -626.50), SIMDE_FLOAT16_VALUE( -567.00),
|
||||
SIMDE_FLOAT16_VALUE( -178.88), SIMDE_FLOAT16_VALUE( 10.22), SIMDE_FLOAT16_VALUE( 976.50), SIMDE_FLOAT16_VALUE( -31.19) } },
|
||||
{ { SIMDE_FLOAT16_VALUE( -226.00), SIMDE_FLOAT16_VALUE( -520.50), SIMDE_FLOAT16_VALUE( -252.38), SIMDE_FLOAT16_VALUE( -407.50) },
|
||||
{ SIMDE_FLOAT16_VALUE( 89.44), SIMDE_FLOAT16_VALUE( -200.50), SIMDE_FLOAT16_VALUE( -439.75), SIMDE_FLOAT16_VALUE( -450.75) },
|
||||
{ SIMDE_FLOAT16_VALUE( -226.00), SIMDE_FLOAT16_VALUE( -520.50), SIMDE_FLOAT16_VALUE( -252.38), SIMDE_FLOAT16_VALUE( -407.50),
|
||||
SIMDE_FLOAT16_VALUE( 89.44), SIMDE_FLOAT16_VALUE( -200.50), SIMDE_FLOAT16_VALUE( -439.75), SIMDE_FLOAT16_VALUE( -450.75) } },
|
||||
{ { SIMDE_FLOAT16_VALUE( -833.00), SIMDE_FLOAT16_VALUE( -714.00), SIMDE_FLOAT16_VALUE( 428.50), SIMDE_FLOAT16_VALUE( 871.50) },
|
||||
{ SIMDE_FLOAT16_VALUE( -157.12), SIMDE_FLOAT16_VALUE( 972.50), SIMDE_FLOAT16_VALUE( 298.75), SIMDE_FLOAT16_VALUE( -919.50) },
|
||||
{ SIMDE_FLOAT16_VALUE( -833.00), SIMDE_FLOAT16_VALUE( -714.00), SIMDE_FLOAT16_VALUE( 428.50), SIMDE_FLOAT16_VALUE( 871.50),
|
||||
SIMDE_FLOAT16_VALUE( -157.12), SIMDE_FLOAT16_VALUE( 972.50), SIMDE_FLOAT16_VALUE( 298.75), SIMDE_FLOAT16_VALUE( -919.50) } },
|
||||
{ { SIMDE_FLOAT16_VALUE( 488.00), SIMDE_FLOAT16_VALUE( 112.56), SIMDE_FLOAT16_VALUE( 58.66), SIMDE_FLOAT16_VALUE( 879.50) },
|
||||
{ SIMDE_FLOAT16_VALUE( 129.00), SIMDE_FLOAT16_VALUE( -858.50), SIMDE_FLOAT16_VALUE( -133.88), SIMDE_FLOAT16_VALUE( -920.50) },
|
||||
{ SIMDE_FLOAT16_VALUE( 488.00), SIMDE_FLOAT16_VALUE( 112.56), SIMDE_FLOAT16_VALUE( 58.66), SIMDE_FLOAT16_VALUE( 879.50),
|
||||
SIMDE_FLOAT16_VALUE( 129.00), SIMDE_FLOAT16_VALUE( -858.50), SIMDE_FLOAT16_VALUE( -133.88), SIMDE_FLOAT16_VALUE( -920.50) } },
|
||||
{ { SIMDE_FLOAT16_VALUE( 32.59), SIMDE_FLOAT16_VALUE( 239.50), SIMDE_FLOAT16_VALUE( -487.50), SIMDE_FLOAT16_VALUE( 853.50) },
|
||||
{ SIMDE_FLOAT16_VALUE( -750.50), SIMDE_FLOAT16_VALUE( -510.75), SIMDE_FLOAT16_VALUE( -177.50), SIMDE_FLOAT16_VALUE( 23.77) },
|
||||
{ SIMDE_FLOAT16_VALUE( 32.59), SIMDE_FLOAT16_VALUE( 239.50), SIMDE_FLOAT16_VALUE( -487.50), SIMDE_FLOAT16_VALUE( 853.50),
|
||||
SIMDE_FLOAT16_VALUE( -750.50), SIMDE_FLOAT16_VALUE( -510.75), SIMDE_FLOAT16_VALUE( -177.50), SIMDE_FLOAT16_VALUE( 23.77) } },
|
||||
{ { SIMDE_FLOAT16_VALUE( -31.45), SIMDE_FLOAT16_VALUE( 570.00), SIMDE_FLOAT16_VALUE( 616.00), SIMDE_FLOAT16_VALUE( -942.00) },
|
||||
{ SIMDE_FLOAT16_VALUE( -630.50), SIMDE_FLOAT16_VALUE( -823.50), SIMDE_FLOAT16_VALUE( -392.75), SIMDE_FLOAT16_VALUE( -463.25) },
|
||||
{ SIMDE_FLOAT16_VALUE( -31.45), SIMDE_FLOAT16_VALUE( 570.00), SIMDE_FLOAT16_VALUE( 616.00), SIMDE_FLOAT16_VALUE( -942.00),
|
||||
SIMDE_FLOAT16_VALUE( -630.50), SIMDE_FLOAT16_VALUE( -823.50), SIMDE_FLOAT16_VALUE( -392.75), SIMDE_FLOAT16_VALUE( -463.25) } },
|
||||
{ { SIMDE_FLOAT16_VALUE( -537.50), SIMDE_FLOAT16_VALUE( -964.50), SIMDE_FLOAT16_VALUE( -592.00), SIMDE_FLOAT16_VALUE( 305.50) },
|
||||
{ SIMDE_FLOAT16_VALUE( -992.00), SIMDE_FLOAT16_VALUE( 707.00), SIMDE_FLOAT16_VALUE( 386.00), SIMDE_FLOAT16_VALUE( 496.00) },
|
||||
{ SIMDE_FLOAT16_VALUE( -537.50), SIMDE_FLOAT16_VALUE( -964.50), SIMDE_FLOAT16_VALUE( -592.00), SIMDE_FLOAT16_VALUE( 305.50),
|
||||
SIMDE_FLOAT16_VALUE( -992.00), SIMDE_FLOAT16_VALUE( 707.00), SIMDE_FLOAT16_VALUE( 386.00), SIMDE_FLOAT16_VALUE( 496.00) } },
|
||||
{ { SIMDE_FLOAT16_VALUE( -180.50), SIMDE_FLOAT16_VALUE( -555.50), SIMDE_FLOAT16_VALUE( 375.50), SIMDE_FLOAT16_VALUE( 948.50) },
|
||||
{ SIMDE_FLOAT16_VALUE( -413.75), SIMDE_FLOAT16_VALUE( -758.50), SIMDE_FLOAT16_VALUE( -972.00), SIMDE_FLOAT16_VALUE( 619.00) },
|
||||
{ SIMDE_FLOAT16_VALUE( -180.50), SIMDE_FLOAT16_VALUE( -555.50), SIMDE_FLOAT16_VALUE( 375.50), SIMDE_FLOAT16_VALUE( 948.50),
|
||||
SIMDE_FLOAT16_VALUE( -413.75), SIMDE_FLOAT16_VALUE( -758.50), SIMDE_FLOAT16_VALUE( -972.00), SIMDE_FLOAT16_VALUE( 619.00) } }
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_float16x4_t a = simde_vld1_f16(test_vec[i].a);
|
||||
simde_float16x4_t b = simde_vld1_f16(test_vec[i].b);
|
||||
simde_float16x8_t r = simde_vcombine_f16(a, b);
|
||||
|
||||
simde_test_arm_neon_assert_equal_f16x8(r, simde_vld1q_f16(test_vec[i].r), 1);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_float16x4_t a = simde_test_arm_neon_random_f16x4(-100.0f, 100.0f);
|
||||
simde_float16x4_t b = simde_test_arm_neon_random_f16x4(-100.0f, 100.0f);
|
||||
simde_float16x8_t r = simde_vcombine_f16(a, b);
|
||||
|
||||
simde_test_arm_neon_write_f16x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_arm_neon_write_f16x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_arm_neon_write_f16x8(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vcombine_f32 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
|
|
@ -596,7 +663,258 @@ test_simde_vcombine_u64 (SIMDE_MUNIT_TEST_ARGS) {
|
|||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vcombine_p8 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
simde_poly8_t a[8];
|
||||
simde_poly8_t b[8];
|
||||
simde_poly8_t r[16];
|
||||
} test_vec[] = {
|
||||
{ { SIMDE_POLY8_C(242), SIMDE_POLY8_C(197), SIMDE_POLY8_C(237), SIMDE_POLY8_C(208), SIMDE_POLY8_C( 62), SIMDE_POLY8_C(206), SIMDE_POLY8_C(169), SIMDE_POLY8_C(170) },
|
||||
{ SIMDE_POLY8_C( 26), SIMDE_POLY8_C( 39), SIMDE_POLY8_C(185), SIMDE_POLY8_C(112), SIMDE_POLY8_C(211), SIMDE_POLY8_C(125), SIMDE_POLY8_C(174), SIMDE_POLY8_C( 83) },
|
||||
{ SIMDE_POLY8_C(242), SIMDE_POLY8_C(197), SIMDE_POLY8_C(237), SIMDE_POLY8_C(208), SIMDE_POLY8_C( 62), SIMDE_POLY8_C(206), SIMDE_POLY8_C(169), SIMDE_POLY8_C(170),
|
||||
SIMDE_POLY8_C( 26), SIMDE_POLY8_C( 39), SIMDE_POLY8_C(185), SIMDE_POLY8_C(112), SIMDE_POLY8_C(211), SIMDE_POLY8_C(125), SIMDE_POLY8_C(174), SIMDE_POLY8_C( 83) } },
|
||||
{ { SIMDE_POLY8_C( 67), SIMDE_POLY8_C(254), SIMDE_POLY8_C( 36), SIMDE_POLY8_C(110), SIMDE_POLY8_C(206), SIMDE_POLY8_C( 98), SIMDE_POLY8_C(151), SIMDE_POLY8_C( 23) },
|
||||
{ SIMDE_POLY8_C(198), SIMDE_POLY8_C(171), SIMDE_POLY8_C( 20), SIMDE_POLY8_C(176), SIMDE_POLY8_C( 57), SIMDE_POLY8_C(103), SIMDE_POLY8_C(214), SIMDE_POLY8_C( 43) },
|
||||
{ SIMDE_POLY8_C( 67), SIMDE_POLY8_C(254), SIMDE_POLY8_C( 36), SIMDE_POLY8_C(110), SIMDE_POLY8_C(206), SIMDE_POLY8_C( 98), SIMDE_POLY8_C(151), SIMDE_POLY8_C( 23),
|
||||
SIMDE_POLY8_C(198), SIMDE_POLY8_C(171), SIMDE_POLY8_C( 20), SIMDE_POLY8_C(176), SIMDE_POLY8_C( 57), SIMDE_POLY8_C(103), SIMDE_POLY8_C(214), SIMDE_POLY8_C( 43) } },
|
||||
{ { SIMDE_POLY8_C( 44), SIMDE_POLY8_C(195), SIMDE_POLY8_C(252), SIMDE_POLY8_C(106), SIMDE_POLY8_C(145), SIMDE_POLY8_C(165), SIMDE_POLY8_C( 20), SIMDE_POLY8_C(171) },
|
||||
{ SIMDE_POLY8_C(205), SIMDE_POLY8_C(206), SIMDE_POLY8_C( 28), SIMDE_POLY8_C(160), SIMDE_POLY8_C( 75), SIMDE_POLY8_C(202), SIMDE_POLY8_C(243), SIMDE_POLY8_C(142) },
|
||||
{ SIMDE_POLY8_C( 44), SIMDE_POLY8_C(195), SIMDE_POLY8_C(252), SIMDE_POLY8_C(106), SIMDE_POLY8_C(145), SIMDE_POLY8_C(165), SIMDE_POLY8_C( 20), SIMDE_POLY8_C(171),
|
||||
SIMDE_POLY8_C(205), SIMDE_POLY8_C(206), SIMDE_POLY8_C( 28), SIMDE_POLY8_C(160), SIMDE_POLY8_C( 75), SIMDE_POLY8_C(202), SIMDE_POLY8_C(243), SIMDE_POLY8_C(142) } },
|
||||
{ { SIMDE_POLY8_C(200), SIMDE_POLY8_C( 24), SIMDE_POLY8_C(253), SIMDE_POLY8_C(151), SIMDE_POLY8_C(122), SIMDE_POLY8_C(148), SIMDE_POLY8_C(174), SIMDE_POLY8_C( 64) },
|
||||
{ SIMDE_POLY8_C( 64), SIMDE_POLY8_C(194), SIMDE_POLY8_C(241), SIMDE_POLY8_C(121), SIMDE_POLY8_C( 41), SIMDE_POLY8_C(199), SIMDE_POLY8_C(164), SIMDE_POLY8_C( 85) },
|
||||
{ SIMDE_POLY8_C(200), SIMDE_POLY8_C( 24), SIMDE_POLY8_C(253), SIMDE_POLY8_C(151), SIMDE_POLY8_C(122), SIMDE_POLY8_C(148), SIMDE_POLY8_C(174), SIMDE_POLY8_C( 64),
|
||||
SIMDE_POLY8_C( 64), SIMDE_POLY8_C(194), SIMDE_POLY8_C(241), SIMDE_POLY8_C(121), SIMDE_POLY8_C( 41), SIMDE_POLY8_C(199), SIMDE_POLY8_C(164), SIMDE_POLY8_C( 85) } },
|
||||
{ { SIMDE_POLY8_C(138), SIMDE_POLY8_C(160), SIMDE_POLY8_C(192), SIMDE_POLY8_C( 27), SIMDE_POLY8_C( 70), SIMDE_POLY8_C(212), SIMDE_POLY8_C(199), SIMDE_POLY8_C( 19) },
|
||||
{ SIMDE_POLY8_C(162), SIMDE_POLY8_C(227), SIMDE_POLY8_C(179), SIMDE_POLY8_C(238), SIMDE_POLY8_C(173), SIMDE_POLY8_C(167), SIMDE_POLY8_C(124), SIMDE_POLY8_C(118) },
|
||||
{ SIMDE_POLY8_C(138), SIMDE_POLY8_C(160), SIMDE_POLY8_C(192), SIMDE_POLY8_C( 27), SIMDE_POLY8_C( 70), SIMDE_POLY8_C(212), SIMDE_POLY8_C(199), SIMDE_POLY8_C( 19),
|
||||
SIMDE_POLY8_C(162), SIMDE_POLY8_C(227), SIMDE_POLY8_C(179), SIMDE_POLY8_C(238), SIMDE_POLY8_C(173), SIMDE_POLY8_C(167), SIMDE_POLY8_C(124), SIMDE_POLY8_C(118) } },
|
||||
{ { SIMDE_POLY8_C(191), SIMDE_POLY8_C(121), SIMDE_POLY8_C( 13), SIMDE_POLY8_C( 57), SIMDE_POLY8_C( 14), SIMDE_POLY8_C(187), SIMDE_POLY8_C(122), SIMDE_POLY8_C( 78) },
|
||||
{ SIMDE_POLY8_C(125), SIMDE_POLY8_C(107), SIMDE_POLY8_C(199), SIMDE_POLY8_C(166), SIMDE_POLY8_C( 50), SIMDE_POLY8_C(107), SIMDE_POLY8_C(251), SIMDE_POLY8_C(188) },
|
||||
{ SIMDE_POLY8_C(191), SIMDE_POLY8_C(121), SIMDE_POLY8_C( 13), SIMDE_POLY8_C( 57), SIMDE_POLY8_C( 14), SIMDE_POLY8_C(187), SIMDE_POLY8_C(122), SIMDE_POLY8_C( 78),
|
||||
SIMDE_POLY8_C(125), SIMDE_POLY8_C(107), SIMDE_POLY8_C(199), SIMDE_POLY8_C(166), SIMDE_POLY8_C( 50), SIMDE_POLY8_C(107), SIMDE_POLY8_C(251), SIMDE_POLY8_C(188) } },
|
||||
{ { SIMDE_POLY8_C( 12), SIMDE_POLY8_C(187), SIMDE_POLY8_C(215), SIMDE_POLY8_C( 82), SIMDE_POLY8_C(144), SIMDE_POLY8_C(158), SIMDE_POLY8_C(101), SIMDE_POLY8_C( 50) },
|
||||
{ SIMDE_POLY8_C(129), SIMDE_POLY8_C( 24), SIMDE_POLY8_C( 32), SIMDE_POLY8_C( 47), SIMDE_POLY8_C(191), SIMDE_POLY8_C(157), SIMDE_POLY8_C(165), SIMDE_POLY8_C(126) },
|
||||
{ SIMDE_POLY8_C( 12), SIMDE_POLY8_C(187), SIMDE_POLY8_C(215), SIMDE_POLY8_C( 82), SIMDE_POLY8_C(144), SIMDE_POLY8_C(158), SIMDE_POLY8_C(101), SIMDE_POLY8_C( 50),
|
||||
SIMDE_POLY8_C(129), SIMDE_POLY8_C( 24), SIMDE_POLY8_C( 32), SIMDE_POLY8_C( 47), SIMDE_POLY8_C(191), SIMDE_POLY8_C(157), SIMDE_POLY8_C(165), SIMDE_POLY8_C(126) } },
|
||||
{ { SIMDE_POLY8_C( 22), SIMDE_POLY8_C(178), SIMDE_POLY8_C(184), SIMDE_POLY8_C( 36), SIMDE_POLY8_C(109), SIMDE_POLY8_C( 50), SIMDE_POLY8_C(114), SIMDE_POLY8_C(234) },
|
||||
{ SIMDE_POLY8_C(157), SIMDE_POLY8_C( 57), SIMDE_POLY8_C(144), SIMDE_POLY8_C(207), SIMDE_POLY8_C(165), SIMDE_POLY8_C(139), SIMDE_POLY8_C(139), SIMDE_POLY8_C(177) },
|
||||
{ SIMDE_POLY8_C( 22), SIMDE_POLY8_C(178), SIMDE_POLY8_C(184), SIMDE_POLY8_C( 36), SIMDE_POLY8_C(109), SIMDE_POLY8_C( 50), SIMDE_POLY8_C(114), SIMDE_POLY8_C(234),
|
||||
SIMDE_POLY8_C(157), SIMDE_POLY8_C( 57), SIMDE_POLY8_C(144), SIMDE_POLY8_C(207), SIMDE_POLY8_C(165), SIMDE_POLY8_C(139), SIMDE_POLY8_C(139), SIMDE_POLY8_C(177) } },
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_poly8x8_t a = simde_vld1_p8(test_vec[i].a);
|
||||
simde_poly8x8_t b = simde_vld1_p8(test_vec[i].b);
|
||||
simde_poly8x16_t r = simde_vcombine_p8(a, b);
|
||||
|
||||
simde_test_arm_neon_assert_equal_p8x16(r, simde_vld1q_p8(test_vec[i].r));
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_poly8x8_t a = simde_test_arm_neon_random_p8x8();
|
||||
simde_poly8x8_t b = simde_test_arm_neon_random_p8x8();
|
||||
simde_poly8x16_t r = simde_vcombine_p8(a, b);
|
||||
|
||||
simde_test_arm_neon_write_p8x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_arm_neon_write_p8x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_arm_neon_write_p8x16(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vcombine_p16 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
simde_poly16_t a[4];
|
||||
simde_poly16_t b[4];
|
||||
simde_poly16_t r[8];
|
||||
} test_vec[] = {
|
||||
{ { SIMDE_POLY16_C( 2850), SIMDE_POLY16_C(54644), SIMDE_POLY16_C(22390), SIMDE_POLY16_C(12151) },
|
||||
{ SIMDE_POLY16_C(36777), SIMDE_POLY16_C(47906), SIMDE_POLY16_C( 9646), SIMDE_POLY16_C(44426) },
|
||||
{ SIMDE_POLY16_C( 2850), SIMDE_POLY16_C(54644), SIMDE_POLY16_C(22390), SIMDE_POLY16_C(12151), SIMDE_POLY16_C(36777), SIMDE_POLY16_C(47906), SIMDE_POLY16_C( 9646), SIMDE_POLY16_C(44426) } },
|
||||
{ { SIMDE_POLY16_C(44944), SIMDE_POLY16_C(58267), SIMDE_POLY16_C(30973), SIMDE_POLY16_C(16694) },
|
||||
{ SIMDE_POLY16_C(54474), SIMDE_POLY16_C(20044), SIMDE_POLY16_C(55264), SIMDE_POLY16_C( 593) },
|
||||
{ SIMDE_POLY16_C(44944), SIMDE_POLY16_C(58267), SIMDE_POLY16_C(30973), SIMDE_POLY16_C(16694), SIMDE_POLY16_C(54474), SIMDE_POLY16_C(20044), SIMDE_POLY16_C(55264), SIMDE_POLY16_C( 593) } },
|
||||
{ { SIMDE_POLY16_C(50658), SIMDE_POLY16_C(22744), SIMDE_POLY16_C(20252), SIMDE_POLY16_C(50568) },
|
||||
{ SIMDE_POLY16_C(43743), SIMDE_POLY16_C(36225), SIMDE_POLY16_C( 3023), SIMDE_POLY16_C(24378) },
|
||||
{ SIMDE_POLY16_C(50658), SIMDE_POLY16_C(22744), SIMDE_POLY16_C(20252), SIMDE_POLY16_C(50568), SIMDE_POLY16_C(43743), SIMDE_POLY16_C(36225), SIMDE_POLY16_C( 3023), SIMDE_POLY16_C(24378) } },
|
||||
{ { SIMDE_POLY16_C(54714), SIMDE_POLY16_C(46914), SIMDE_POLY16_C(30797), SIMDE_POLY16_C( 6136) },
|
||||
{ SIMDE_POLY16_C(17741), SIMDE_POLY16_C(11622), SIMDE_POLY16_C(46876), SIMDE_POLY16_C(65328) },
|
||||
{ SIMDE_POLY16_C(54714), SIMDE_POLY16_C(46914), SIMDE_POLY16_C(30797), SIMDE_POLY16_C( 6136), SIMDE_POLY16_C(17741), SIMDE_POLY16_C(11622), SIMDE_POLY16_C(46876), SIMDE_POLY16_C(65328) } },
|
||||
{ { SIMDE_POLY16_C( 2172), SIMDE_POLY16_C(38999), SIMDE_POLY16_C(57175), SIMDE_POLY16_C(13918) },
|
||||
{ SIMDE_POLY16_C(57225), SIMDE_POLY16_C(22723), SIMDE_POLY16_C(65002), SIMDE_POLY16_C(42167) },
|
||||
{ SIMDE_POLY16_C( 2172), SIMDE_POLY16_C(38999), SIMDE_POLY16_C(57175), SIMDE_POLY16_C(13918), SIMDE_POLY16_C(57225), SIMDE_POLY16_C(22723), SIMDE_POLY16_C(65002), SIMDE_POLY16_C(42167) } },
|
||||
{ { SIMDE_POLY16_C(64210), SIMDE_POLY16_C( 8284), SIMDE_POLY16_C(21618), SIMDE_POLY16_C(48951) },
|
||||
{ SIMDE_POLY16_C(40345), SIMDE_POLY16_C(46829), SIMDE_POLY16_C( 7508), SIMDE_POLY16_C(53429) },
|
||||
{ SIMDE_POLY16_C(64210), SIMDE_POLY16_C( 8284), SIMDE_POLY16_C(21618), SIMDE_POLY16_C(48951), SIMDE_POLY16_C(40345), SIMDE_POLY16_C(46829), SIMDE_POLY16_C( 7508), SIMDE_POLY16_C(53429) } },
|
||||
{ { SIMDE_POLY16_C( 3109), SIMDE_POLY16_C(31849), SIMDE_POLY16_C(51180), SIMDE_POLY16_C(30131) },
|
||||
{ SIMDE_POLY16_C(30374), SIMDE_POLY16_C(37070), SIMDE_POLY16_C(34164), SIMDE_POLY16_C(17972) },
|
||||
{ SIMDE_POLY16_C( 3109), SIMDE_POLY16_C(31849), SIMDE_POLY16_C(51180), SIMDE_POLY16_C(30131), SIMDE_POLY16_C(30374), SIMDE_POLY16_C(37070), SIMDE_POLY16_C(34164), SIMDE_POLY16_C(17972) } },
|
||||
{ { SIMDE_POLY16_C(36991), SIMDE_POLY16_C(62054), SIMDE_POLY16_C(40677), SIMDE_POLY16_C(32433) },
|
||||
{ SIMDE_POLY16_C(40507), SIMDE_POLY16_C(36916), SIMDE_POLY16_C(59835), SIMDE_POLY16_C(57440) },
|
||||
{ SIMDE_POLY16_C(36991), SIMDE_POLY16_C(62054), SIMDE_POLY16_C(40677), SIMDE_POLY16_C(32433), SIMDE_POLY16_C(40507), SIMDE_POLY16_C(36916), SIMDE_POLY16_C(59835), SIMDE_POLY16_C(57440) } },
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_poly16x4_t a = simde_vld1_p16(test_vec[i].a);
|
||||
simde_poly16x4_t b = simde_vld1_p16(test_vec[i].b);
|
||||
simde_poly16x8_t r = simde_vcombine_p16(a, b);
|
||||
simde_test_arm_neon_assert_equal_p16x8(r, simde_vld1q_p16(test_vec[i].r));
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_poly16x4_t a = simde_test_arm_neon_random_p16x4();
|
||||
simde_poly16x4_t b = simde_test_arm_neon_random_p16x4();
|
||||
simde_poly16x8_t r = simde_vcombine_p16(a, b);
|
||||
|
||||
simde_test_arm_neon_write_p16x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_arm_neon_write_p16x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_arm_neon_write_p16x8(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vcombine_p64 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
simde_poly64_t a[1];
|
||||
simde_poly64_t b[1];
|
||||
simde_poly64_t r[2];
|
||||
} test_vec[] = {
|
||||
{ { SIMDE_POLY64_C(18153453259173778237) },
|
||||
{ SIMDE_POLY64_C(11400740053166720884) },
|
||||
{ SIMDE_POLY64_C(18153453259173778237), SIMDE_POLY64_C(11400740053166720884) } },
|
||||
{ { SIMDE_POLY64_C( 7651395941339862214) },
|
||||
{ SIMDE_POLY64_C( 3776799313776537214) },
|
||||
{ SIMDE_POLY64_C( 7651395941339862214), SIMDE_POLY64_C( 3776799313776537214) } },
|
||||
{ { SIMDE_POLY64_C(10898431973749169846) },
|
||||
{ SIMDE_POLY64_C( 2905810644555846153) },
|
||||
{ SIMDE_POLY64_C(10898431973749169846), SIMDE_POLY64_C( 2905810644555846153) } },
|
||||
{ { SIMDE_POLY64_C( 8616290951558053911) },
|
||||
{ SIMDE_POLY64_C(14001987062142871845) },
|
||||
{ SIMDE_POLY64_C( 8616290951558053911), SIMDE_POLY64_C(14001987062142871845) } },
|
||||
{ { SIMDE_POLY64_C( 8134984611907659051) },
|
||||
{ SIMDE_POLY64_C(14745199371509641495) },
|
||||
{ SIMDE_POLY64_C( 8134984611907659051), SIMDE_POLY64_C(14745199371509641495) } },
|
||||
{ { SIMDE_POLY64_C( 335668664436369464) },
|
||||
{ SIMDE_POLY64_C( 9619813438614162610) },
|
||||
{ SIMDE_POLY64_C( 335668664436369464), SIMDE_POLY64_C( 9619813438614162610) } },
|
||||
{ { SIMDE_POLY64_C(16405973300147422934) },
|
||||
{ SIMDE_POLY64_C( 9469942237931295467) },
|
||||
{ SIMDE_POLY64_C(16405973300147422934), SIMDE_POLY64_C( 9469942237931295467) } },
|
||||
{ { SIMDE_POLY64_C(11207591305728516262) },
|
||||
{ SIMDE_POLY64_C(17476457064037984936) },
|
||||
{ SIMDE_POLY64_C(11207591305728516262), SIMDE_POLY64_C(17476457064037984936) } },
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_poly64x1_t a = simde_vld1_p64(test_vec[i].a);
|
||||
simde_poly64x1_t b = simde_vld1_p64(test_vec[i].b);
|
||||
simde_poly64x2_t r = simde_vcombine_p64(a, b);
|
||||
simde_test_arm_neon_assert_equal_p64x2(r, simde_vld1q_p64(test_vec[i].r));
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_poly64x1_t a = simde_test_arm_neon_random_p64x1();
|
||||
simde_poly64x1_t b = simde_test_arm_neon_random_p64x1();
|
||||
simde_poly64x2_t r = simde_vcombine_p64(a, b);
|
||||
|
||||
simde_test_arm_neon_write_p64x1(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_arm_neon_write_p64x1(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_arm_neon_write_p64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vcombine_bf16 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
struct {
|
||||
simde_bfloat16 a[4];
|
||||
simde_bfloat16 b[4];
|
||||
simde_bfloat16 r[8];
|
||||
} test_vec[] = {
|
||||
{ { SIMDE_BFLOAT16_VALUE( -49.28), SIMDE_BFLOAT16_VALUE( -109.00), SIMDE_BFLOAT16_VALUE( -626.50), SIMDE_BFLOAT16_VALUE( -567.00) },
|
||||
{ SIMDE_BFLOAT16_VALUE( -178.88), SIMDE_BFLOAT16_VALUE( 10.22), SIMDE_BFLOAT16_VALUE( 976.50), SIMDE_BFLOAT16_VALUE( -31.19) },
|
||||
{ SIMDE_BFLOAT16_VALUE( -49.28), SIMDE_BFLOAT16_VALUE( -109.00), SIMDE_BFLOAT16_VALUE( -626.50), SIMDE_BFLOAT16_VALUE( -567.00),
|
||||
SIMDE_BFLOAT16_VALUE( -178.88), SIMDE_BFLOAT16_VALUE( 10.22), SIMDE_BFLOAT16_VALUE( 976.50), SIMDE_BFLOAT16_VALUE( -31.19) } },
|
||||
{ { SIMDE_BFLOAT16_VALUE( -226.00), SIMDE_BFLOAT16_VALUE( -520.50), SIMDE_BFLOAT16_VALUE( -252.38), SIMDE_BFLOAT16_VALUE( -407.50) },
|
||||
{ SIMDE_BFLOAT16_VALUE( 89.44), SIMDE_BFLOAT16_VALUE( -200.50), SIMDE_BFLOAT16_VALUE( -439.75), SIMDE_BFLOAT16_VALUE( -450.75) },
|
||||
{ SIMDE_BFLOAT16_VALUE( -226.00), SIMDE_BFLOAT16_VALUE( -520.50), SIMDE_BFLOAT16_VALUE( -252.38), SIMDE_BFLOAT16_VALUE( -407.50),
|
||||
SIMDE_BFLOAT16_VALUE( 89.44), SIMDE_BFLOAT16_VALUE( -200.50), SIMDE_BFLOAT16_VALUE( -439.75), SIMDE_BFLOAT16_VALUE( -450.75) } },
|
||||
{ { SIMDE_BFLOAT16_VALUE( -833.00), SIMDE_BFLOAT16_VALUE( -714.00), SIMDE_BFLOAT16_VALUE( 428.50), SIMDE_BFLOAT16_VALUE( 871.50) },
|
||||
{ SIMDE_BFLOAT16_VALUE( -157.12), SIMDE_BFLOAT16_VALUE( 972.50), SIMDE_BFLOAT16_VALUE( 298.75), SIMDE_BFLOAT16_VALUE( -919.50) },
|
||||
{ SIMDE_BFLOAT16_VALUE( -833.00), SIMDE_BFLOAT16_VALUE( -714.00), SIMDE_BFLOAT16_VALUE( 428.50), SIMDE_BFLOAT16_VALUE( 871.50),
|
||||
SIMDE_BFLOAT16_VALUE( -157.12), SIMDE_BFLOAT16_VALUE( 972.50), SIMDE_BFLOAT16_VALUE( 298.75), SIMDE_BFLOAT16_VALUE( -919.50) } },
|
||||
{ { SIMDE_BFLOAT16_VALUE( 488.00), SIMDE_BFLOAT16_VALUE( 112.56), SIMDE_BFLOAT16_VALUE( 58.66), SIMDE_BFLOAT16_VALUE( 879.50) },
|
||||
{ SIMDE_BFLOAT16_VALUE( 129.00), SIMDE_BFLOAT16_VALUE( -858.50), SIMDE_BFLOAT16_VALUE( -133.88), SIMDE_BFLOAT16_VALUE( -920.50) },
|
||||
{ SIMDE_BFLOAT16_VALUE( 488.00), SIMDE_BFLOAT16_VALUE( 112.56), SIMDE_BFLOAT16_VALUE( 58.66), SIMDE_BFLOAT16_VALUE( 879.50),
|
||||
SIMDE_BFLOAT16_VALUE( 129.00), SIMDE_BFLOAT16_VALUE( -858.50), SIMDE_BFLOAT16_VALUE( -133.88), SIMDE_BFLOAT16_VALUE( -920.50) } },
|
||||
{ { SIMDE_BFLOAT16_VALUE( 32.59), SIMDE_BFLOAT16_VALUE( 239.50), SIMDE_BFLOAT16_VALUE( -487.50), SIMDE_BFLOAT16_VALUE( 853.50) },
|
||||
{ SIMDE_BFLOAT16_VALUE( -750.50), SIMDE_BFLOAT16_VALUE( -510.75), SIMDE_BFLOAT16_VALUE( -177.50), SIMDE_BFLOAT16_VALUE( 23.77) },
|
||||
{ SIMDE_BFLOAT16_VALUE( 32.59), SIMDE_BFLOAT16_VALUE( 239.50), SIMDE_BFLOAT16_VALUE( -487.50), SIMDE_BFLOAT16_VALUE( 853.50),
|
||||
SIMDE_BFLOAT16_VALUE( -750.50), SIMDE_BFLOAT16_VALUE( -510.75), SIMDE_BFLOAT16_VALUE( -177.50), SIMDE_BFLOAT16_VALUE( 23.77) } },
|
||||
{ { SIMDE_BFLOAT16_VALUE( -31.45), SIMDE_BFLOAT16_VALUE( 570.00), SIMDE_BFLOAT16_VALUE( 616.00), SIMDE_BFLOAT16_VALUE( -942.00) },
|
||||
{ SIMDE_BFLOAT16_VALUE( -630.50), SIMDE_BFLOAT16_VALUE( -823.50), SIMDE_BFLOAT16_VALUE( -392.75), SIMDE_BFLOAT16_VALUE( -463.25) },
|
||||
{ SIMDE_BFLOAT16_VALUE( -31.45), SIMDE_BFLOAT16_VALUE( 570.00), SIMDE_BFLOAT16_VALUE( 616.00), SIMDE_BFLOAT16_VALUE( -942.00),
|
||||
SIMDE_BFLOAT16_VALUE( -630.50), SIMDE_BFLOAT16_VALUE( -823.50), SIMDE_BFLOAT16_VALUE( -392.75), SIMDE_BFLOAT16_VALUE( -463.25) } },
|
||||
{ { SIMDE_BFLOAT16_VALUE( -537.50), SIMDE_BFLOAT16_VALUE( -964.50), SIMDE_BFLOAT16_VALUE( -592.00), SIMDE_BFLOAT16_VALUE( 305.50) },
|
||||
{ SIMDE_BFLOAT16_VALUE( -992.00), SIMDE_BFLOAT16_VALUE( 707.00), SIMDE_BFLOAT16_VALUE( 386.00), SIMDE_BFLOAT16_VALUE( 496.00) },
|
||||
{ SIMDE_BFLOAT16_VALUE( -537.50), SIMDE_BFLOAT16_VALUE( -964.50), SIMDE_BFLOAT16_VALUE( -592.00), SIMDE_BFLOAT16_VALUE( 305.50),
|
||||
SIMDE_BFLOAT16_VALUE( -992.00), SIMDE_BFLOAT16_VALUE( 707.00), SIMDE_BFLOAT16_VALUE( 386.00), SIMDE_BFLOAT16_VALUE( 496.00) } },
|
||||
{ { SIMDE_BFLOAT16_VALUE( -180.50), SIMDE_BFLOAT16_VALUE( -555.50), SIMDE_BFLOAT16_VALUE( 375.50), SIMDE_BFLOAT16_VALUE( 948.50) },
|
||||
{ SIMDE_BFLOAT16_VALUE( -413.75), SIMDE_BFLOAT16_VALUE( -758.50), SIMDE_BFLOAT16_VALUE( -972.00), SIMDE_BFLOAT16_VALUE( 619.00) },
|
||||
{ SIMDE_BFLOAT16_VALUE( -180.50), SIMDE_BFLOAT16_VALUE( -555.50), SIMDE_BFLOAT16_VALUE( 375.50), SIMDE_BFLOAT16_VALUE( 948.50),
|
||||
SIMDE_BFLOAT16_VALUE( -413.75), SIMDE_BFLOAT16_VALUE( -758.50), SIMDE_BFLOAT16_VALUE( -972.00), SIMDE_BFLOAT16_VALUE( 619.00) } }
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_bfloat16x4_t a = simde_vld1_bf16(test_vec[i].a);
|
||||
simde_bfloat16x4_t b = simde_vld1_bf16(test_vec[i].b);
|
||||
simde_bfloat16x8_t r = simde_vcombine_bf16(a, b);
|
||||
|
||||
simde_test_arm_neon_assert_equal_bf16x8(r, simde_vld1q_bf16(test_vec[i].r), 1);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_bfloat16x4_t a = simde_test_arm_neon_random_bf16x4(-100.0f, 100.0f);
|
||||
simde_bfloat16x4_t b = simde_test_arm_neon_random_bf16x4(-100.0f, 100.0f);
|
||||
simde_bfloat16x8_t r = simde_vcombine_bf16(a, b);
|
||||
|
||||
simde_test_arm_neon_write_bf16x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_arm_neon_write_bf16x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_arm_neon_write_bf16x8(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
SIMDE_TEST_FUNC_LIST_BEGIN
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vcombine_f16)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vcombine_f32)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vcombine_f64)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vcombine_s8)
|
||||
|
|
@ -607,6 +925,10 @@ SIMDE_TEST_FUNC_LIST_ENTRY(vcombine_u8)
|
|||
SIMDE_TEST_FUNC_LIST_ENTRY(vcombine_u16)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vcombine_u32)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vcombine_u64)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vcombine_p8)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vcombine_p16)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vcombine_p64)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vcombine_bf16)
|
||||
SIMDE_TEST_FUNC_LIST_END
|
||||
|
||||
#include "test-neon-footer.h"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue