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

@ -1,11 +1,61 @@
#include "test/test.h"
#define SIMDE_TEST_ARM_NEON_INSN st2
#include "test-neon.h"
#include "../../../simde/arm/neon/st2.h"
#if !defined(SIMDE_BUG_INTEL_857088)
static int
test_simde_vst2_f16 (SIMDE_MUNIT_TEST_ARGS) {
struct {
simde_float16_t r0[4];
simde_float16_t r1[4];
simde_float16_t a[8];
} test_vec[] = {
{ { SIMDE_FLOAT16_VALUE(-4.40), SIMDE_FLOAT16_VALUE(6.50), SIMDE_FLOAT16_VALUE(-1.60), SIMDE_FLOAT16_VALUE(5.90) },
{ SIMDE_FLOAT16_VALUE(1.60), SIMDE_FLOAT16_VALUE(-0.50), SIMDE_FLOAT16_VALUE(0.90), SIMDE_FLOAT16_VALUE(-6.80) },
{ SIMDE_FLOAT16_VALUE(-4.40), SIMDE_FLOAT16_VALUE(1.60), SIMDE_FLOAT16_VALUE(6.50), SIMDE_FLOAT16_VALUE(-0.50), SIMDE_FLOAT16_VALUE(-1.60), SIMDE_FLOAT16_VALUE(0.90), SIMDE_FLOAT16_VALUE(5.90), SIMDE_FLOAT16_VALUE(-6.80) } },
{ { SIMDE_FLOAT16_VALUE(-1.50), SIMDE_FLOAT16_VALUE(-2.80), SIMDE_FLOAT16_VALUE(5.20), SIMDE_FLOAT16_VALUE(1.50) },
{ SIMDE_FLOAT16_VALUE(2.60), SIMDE_FLOAT16_VALUE(4.80), SIMDE_FLOAT16_VALUE(3.20), SIMDE_FLOAT16_VALUE(8.90) },
{ SIMDE_FLOAT16_VALUE(-1.50), SIMDE_FLOAT16_VALUE(2.60), SIMDE_FLOAT16_VALUE(-2.80), SIMDE_FLOAT16_VALUE(4.80), SIMDE_FLOAT16_VALUE(5.20), SIMDE_FLOAT16_VALUE(3.20), SIMDE_FLOAT16_VALUE(1.50), SIMDE_FLOAT16_VALUE(8.90) } },
{ { SIMDE_FLOAT16_VALUE(-1.10), SIMDE_FLOAT16_VALUE(-7.60), SIMDE_FLOAT16_VALUE(-4.60), SIMDE_FLOAT16_VALUE(0.20) },
{ SIMDE_FLOAT16_VALUE(-2.60), SIMDE_FLOAT16_VALUE(7.70), SIMDE_FLOAT16_VALUE(-0.80), SIMDE_FLOAT16_VALUE(5.00) },
{ SIMDE_FLOAT16_VALUE(-1.10), SIMDE_FLOAT16_VALUE(-2.60), SIMDE_FLOAT16_VALUE(-7.60), SIMDE_FLOAT16_VALUE(7.70), SIMDE_FLOAT16_VALUE(-4.60), SIMDE_FLOAT16_VALUE(-0.80), SIMDE_FLOAT16_VALUE(0.20), SIMDE_FLOAT16_VALUE(5.00) } },
{ { SIMDE_FLOAT16_VALUE(-8.60), SIMDE_FLOAT16_VALUE(-9.10), SIMDE_FLOAT16_VALUE(2.90), SIMDE_FLOAT16_VALUE(5.60) },
{ SIMDE_FLOAT16_VALUE(-3.60), SIMDE_FLOAT16_VALUE(-3.30), SIMDE_FLOAT16_VALUE(2.20), SIMDE_FLOAT16_VALUE(-6.00) },
{ SIMDE_FLOAT16_VALUE(-8.60), SIMDE_FLOAT16_VALUE(-3.60), SIMDE_FLOAT16_VALUE(-9.10), SIMDE_FLOAT16_VALUE(-3.30), SIMDE_FLOAT16_VALUE(2.90), SIMDE_FLOAT16_VALUE(2.20), SIMDE_FLOAT16_VALUE(5.60), SIMDE_FLOAT16_VALUE(-6.00) } },
{ { SIMDE_FLOAT16_VALUE(-5.00), SIMDE_FLOAT16_VALUE(-9.70), SIMDE_FLOAT16_VALUE(-6.50), SIMDE_FLOAT16_VALUE(-2.80) },
{ SIMDE_FLOAT16_VALUE(0.70), SIMDE_FLOAT16_VALUE(-9.40), SIMDE_FLOAT16_VALUE(-5.20), SIMDE_FLOAT16_VALUE(-2.80) },
{ SIMDE_FLOAT16_VALUE(-5.00), SIMDE_FLOAT16_VALUE(0.70), SIMDE_FLOAT16_VALUE(-9.70), SIMDE_FLOAT16_VALUE(-9.40), SIMDE_FLOAT16_VALUE(-6.50), SIMDE_FLOAT16_VALUE(-5.20), SIMDE_FLOAT16_VALUE(-2.80), SIMDE_FLOAT16_VALUE(-2.80) } },
{ { SIMDE_FLOAT16_VALUE(-2.20), SIMDE_FLOAT16_VALUE(-9.90), SIMDE_FLOAT16_VALUE(-2.50), SIMDE_FLOAT16_VALUE(-7.40) },
{ SIMDE_FLOAT16_VALUE(-6.10), SIMDE_FLOAT16_VALUE(4.40), SIMDE_FLOAT16_VALUE(10.00), SIMDE_FLOAT16_VALUE(9.20) },
{ SIMDE_FLOAT16_VALUE(-2.20), SIMDE_FLOAT16_VALUE(-6.10), SIMDE_FLOAT16_VALUE(-9.90), SIMDE_FLOAT16_VALUE(4.40), SIMDE_FLOAT16_VALUE(-2.50), SIMDE_FLOAT16_VALUE(10.00), SIMDE_FLOAT16_VALUE(-7.40), SIMDE_FLOAT16_VALUE(9.20) } },
{ { SIMDE_FLOAT16_VALUE(1.20), SIMDE_FLOAT16_VALUE(-2.30), SIMDE_FLOAT16_VALUE(-3.50), SIMDE_FLOAT16_VALUE(-0.90) },
{ SIMDE_FLOAT16_VALUE(-3.70), SIMDE_FLOAT16_VALUE(-0.50), SIMDE_FLOAT16_VALUE(-5.50), SIMDE_FLOAT16_VALUE(7.30) },
{ SIMDE_FLOAT16_VALUE(1.20), SIMDE_FLOAT16_VALUE(-3.70), SIMDE_FLOAT16_VALUE(-2.30), SIMDE_FLOAT16_VALUE(-0.50), SIMDE_FLOAT16_VALUE(-3.50), SIMDE_FLOAT16_VALUE(-5.50), SIMDE_FLOAT16_VALUE(-0.90), SIMDE_FLOAT16_VALUE(7.30) } },
{ { SIMDE_FLOAT16_VALUE(-8.40), SIMDE_FLOAT16_VALUE(-2.50), SIMDE_FLOAT16_VALUE(-0.60), SIMDE_FLOAT16_VALUE(0.20) },
{ SIMDE_FLOAT16_VALUE(-1.70), SIMDE_FLOAT16_VALUE(-3.70), SIMDE_FLOAT16_VALUE(8.20), SIMDE_FLOAT16_VALUE(4.20) },
{ SIMDE_FLOAT16_VALUE(-8.40), SIMDE_FLOAT16_VALUE(-1.70), SIMDE_FLOAT16_VALUE(-2.50), SIMDE_FLOAT16_VALUE(-3.70), SIMDE_FLOAT16_VALUE(-0.60), SIMDE_FLOAT16_VALUE(8.20), SIMDE_FLOAT16_VALUE(0.20), SIMDE_FLOAT16_VALUE(4.20) } },
{ { SIMDE_FLOAT16_VALUE(-5.00), SIMDE_FLOAT16_VALUE(8.80), SIMDE_FLOAT16_VALUE(5.50), SIMDE_FLOAT16_VALUE(-7.90) },
{ SIMDE_FLOAT16_VALUE(-6.00), SIMDE_FLOAT16_VALUE(-7.30), SIMDE_FLOAT16_VALUE(9.30), SIMDE_FLOAT16_VALUE(9.30) },
{ SIMDE_FLOAT16_VALUE(-5.00), SIMDE_FLOAT16_VALUE(-6.00), SIMDE_FLOAT16_VALUE(8.80), SIMDE_FLOAT16_VALUE(-7.30), SIMDE_FLOAT16_VALUE(5.50), SIMDE_FLOAT16_VALUE(9.30), SIMDE_FLOAT16_VALUE(-7.90), SIMDE_FLOAT16_VALUE(9.30) } },
{ { SIMDE_FLOAT16_VALUE(-9.70), SIMDE_FLOAT16_VALUE(-3.10), SIMDE_FLOAT16_VALUE(-7.50), SIMDE_FLOAT16_VALUE(9.60) },
{ SIMDE_FLOAT16_VALUE(5.00), SIMDE_FLOAT16_VALUE(-5.00), SIMDE_FLOAT16_VALUE(-3.40), SIMDE_FLOAT16_VALUE(0.40) },
{ SIMDE_FLOAT16_VALUE(-9.70), SIMDE_FLOAT16_VALUE(5.00), SIMDE_FLOAT16_VALUE(-3.10), SIMDE_FLOAT16_VALUE(-5.00), SIMDE_FLOAT16_VALUE(-7.50), SIMDE_FLOAT16_VALUE(-3.40), SIMDE_FLOAT16_VALUE(9.60), SIMDE_FLOAT16_VALUE(0.40) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_float16x4x2_t r_ = { { simde_vld1_f16(test_vec[i].r0),
simde_vld1_f16(test_vec[i].r1) } };
simde_float16_t a_[8];
simde_vst2_f16(a_, r_);
simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));
}
return 0;
}
static int
test_simde_vst2_f32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
@ -662,6 +712,58 @@ test_simde_vst2_u64 (SIMDE_MUNIT_TEST_ARGS) {
#endif
}
static int
test_simde_vst2q_f16 (SIMDE_MUNIT_TEST_ARGS) {
struct {
simde_float16_t r0[8];
simde_float16_t r1[8];
simde_float16_t a[16];
} test_vec[] = {
{ { SIMDE_FLOAT16_VALUE(1.20), SIMDE_FLOAT16_VALUE(-2.10), SIMDE_FLOAT16_VALUE(-5.20), SIMDE_FLOAT16_VALUE(6.00), SIMDE_FLOAT16_VALUE(-2.60), SIMDE_FLOAT16_VALUE(-7.50), SIMDE_FLOAT16_VALUE(-0.90), SIMDE_FLOAT16_VALUE(-2.10) },
{ SIMDE_FLOAT16_VALUE(-5.90), SIMDE_FLOAT16_VALUE(-2.10), SIMDE_FLOAT16_VALUE(6.50), SIMDE_FLOAT16_VALUE(9.60), SIMDE_FLOAT16_VALUE(4.80), SIMDE_FLOAT16_VALUE(-8.70), SIMDE_FLOAT16_VALUE(0.20), SIMDE_FLOAT16_VALUE(-5.80) },
{ SIMDE_FLOAT16_VALUE(1.20), SIMDE_FLOAT16_VALUE(-5.90), SIMDE_FLOAT16_VALUE(-2.10), SIMDE_FLOAT16_VALUE(-2.10), SIMDE_FLOAT16_VALUE(-5.20), SIMDE_FLOAT16_VALUE(6.50), SIMDE_FLOAT16_VALUE(6.00), SIMDE_FLOAT16_VALUE(9.60), SIMDE_FLOAT16_VALUE(-2.60), SIMDE_FLOAT16_VALUE(4.80), SIMDE_FLOAT16_VALUE(-7.50), SIMDE_FLOAT16_VALUE(-8.70), SIMDE_FLOAT16_VALUE(-0.90), SIMDE_FLOAT16_VALUE(0.20), SIMDE_FLOAT16_VALUE(-2.10), SIMDE_FLOAT16_VALUE(-5.80) } },
{ { SIMDE_FLOAT16_VALUE(-6.80), SIMDE_FLOAT16_VALUE(-7.90), SIMDE_FLOAT16_VALUE(8.80), SIMDE_FLOAT16_VALUE(-9.70), SIMDE_FLOAT16_VALUE(5.20), SIMDE_FLOAT16_VALUE(0.10), SIMDE_FLOAT16_VALUE(7.60), SIMDE_FLOAT16_VALUE(-9.80) },
{ SIMDE_FLOAT16_VALUE(-6.70), SIMDE_FLOAT16_VALUE(-7.30), SIMDE_FLOAT16_VALUE(1.60), SIMDE_FLOAT16_VALUE(8.00), SIMDE_FLOAT16_VALUE(1.90), SIMDE_FLOAT16_VALUE(3.70), SIMDE_FLOAT16_VALUE(9.80), SIMDE_FLOAT16_VALUE(-2.80) },
{ SIMDE_FLOAT16_VALUE(-6.80), SIMDE_FLOAT16_VALUE(-6.70), SIMDE_FLOAT16_VALUE(-7.90), SIMDE_FLOAT16_VALUE(-7.30), SIMDE_FLOAT16_VALUE(8.80), SIMDE_FLOAT16_VALUE(1.60), SIMDE_FLOAT16_VALUE(-9.70), SIMDE_FLOAT16_VALUE(8.00), SIMDE_FLOAT16_VALUE(5.20), SIMDE_FLOAT16_VALUE(1.90), SIMDE_FLOAT16_VALUE(0.10), SIMDE_FLOAT16_VALUE(3.70), SIMDE_FLOAT16_VALUE(7.60), SIMDE_FLOAT16_VALUE(9.80), SIMDE_FLOAT16_VALUE(-9.80), SIMDE_FLOAT16_VALUE(-2.80) } },
{ { SIMDE_FLOAT16_VALUE(-9.70), SIMDE_FLOAT16_VALUE(-4.90), SIMDE_FLOAT16_VALUE(5.50), SIMDE_FLOAT16_VALUE(6.70), SIMDE_FLOAT16_VALUE(-8.90), SIMDE_FLOAT16_VALUE(-8.90), SIMDE_FLOAT16_VALUE(2.80), SIMDE_FLOAT16_VALUE(3.90) },
{ SIMDE_FLOAT16_VALUE(4.80), SIMDE_FLOAT16_VALUE(-9.60), SIMDE_FLOAT16_VALUE(6.10), SIMDE_FLOAT16_VALUE(5.40), SIMDE_FLOAT16_VALUE(-1.40), SIMDE_FLOAT16_VALUE(-6.40), SIMDE_FLOAT16_VALUE(0.40), SIMDE_FLOAT16_VALUE(-0.70) },
{ SIMDE_FLOAT16_VALUE(-9.70), SIMDE_FLOAT16_VALUE(4.80), SIMDE_FLOAT16_VALUE(-4.90), SIMDE_FLOAT16_VALUE(-9.60), SIMDE_FLOAT16_VALUE(5.50), SIMDE_FLOAT16_VALUE(6.10), SIMDE_FLOAT16_VALUE(6.70), SIMDE_FLOAT16_VALUE(5.40), SIMDE_FLOAT16_VALUE(-8.90), SIMDE_FLOAT16_VALUE(-1.40), SIMDE_FLOAT16_VALUE(-8.90), SIMDE_FLOAT16_VALUE(-6.40), SIMDE_FLOAT16_VALUE(2.80), SIMDE_FLOAT16_VALUE(0.40), SIMDE_FLOAT16_VALUE(3.90), SIMDE_FLOAT16_VALUE(-0.70) } },
{ { SIMDE_FLOAT16_VALUE(-2.70), SIMDE_FLOAT16_VALUE(1.50), SIMDE_FLOAT16_VALUE(3.30), SIMDE_FLOAT16_VALUE(-7.40), SIMDE_FLOAT16_VALUE(9.40), SIMDE_FLOAT16_VALUE(2.10), SIMDE_FLOAT16_VALUE(-2.00), SIMDE_FLOAT16_VALUE(-9.90) },
{ SIMDE_FLOAT16_VALUE(-3.80), SIMDE_FLOAT16_VALUE(-0.20), SIMDE_FLOAT16_VALUE(-5.50), SIMDE_FLOAT16_VALUE(0.60), SIMDE_FLOAT16_VALUE(0.50), SIMDE_FLOAT16_VALUE(2.60), SIMDE_FLOAT16_VALUE(7.90), SIMDE_FLOAT16_VALUE(-6.80) },
{ SIMDE_FLOAT16_VALUE(-2.70), SIMDE_FLOAT16_VALUE(-3.80), SIMDE_FLOAT16_VALUE(1.50), SIMDE_FLOAT16_VALUE(-0.20), SIMDE_FLOAT16_VALUE(3.30), SIMDE_FLOAT16_VALUE(-5.50), SIMDE_FLOAT16_VALUE(-7.40), SIMDE_FLOAT16_VALUE(0.60), SIMDE_FLOAT16_VALUE(9.40), SIMDE_FLOAT16_VALUE(0.50), SIMDE_FLOAT16_VALUE(2.10), SIMDE_FLOAT16_VALUE(2.60), SIMDE_FLOAT16_VALUE(-2.00), SIMDE_FLOAT16_VALUE(7.90), SIMDE_FLOAT16_VALUE(-9.90), SIMDE_FLOAT16_VALUE(-6.80) } },
{ { SIMDE_FLOAT16_VALUE(4.60), SIMDE_FLOAT16_VALUE(9.20), SIMDE_FLOAT16_VALUE(5.40), SIMDE_FLOAT16_VALUE(-6.10), SIMDE_FLOAT16_VALUE(-9.60), SIMDE_FLOAT16_VALUE(2.10), SIMDE_FLOAT16_VALUE(-5.10), SIMDE_FLOAT16_VALUE(7.80) },
{ SIMDE_FLOAT16_VALUE(0.90), SIMDE_FLOAT16_VALUE(4.50), SIMDE_FLOAT16_VALUE(-2.00), SIMDE_FLOAT16_VALUE(-8.00), SIMDE_FLOAT16_VALUE(-9.50), SIMDE_FLOAT16_VALUE(-5.20), SIMDE_FLOAT16_VALUE(3.90), SIMDE_FLOAT16_VALUE(0.80) },
{ SIMDE_FLOAT16_VALUE(4.60), SIMDE_FLOAT16_VALUE(0.90), SIMDE_FLOAT16_VALUE(9.20), SIMDE_FLOAT16_VALUE(4.50), SIMDE_FLOAT16_VALUE(5.40), SIMDE_FLOAT16_VALUE(-2.00), SIMDE_FLOAT16_VALUE(-6.10), SIMDE_FLOAT16_VALUE(-8.00), SIMDE_FLOAT16_VALUE(-9.60), SIMDE_FLOAT16_VALUE(-9.50), SIMDE_FLOAT16_VALUE(2.10), SIMDE_FLOAT16_VALUE(-5.20), SIMDE_FLOAT16_VALUE(-5.10), SIMDE_FLOAT16_VALUE(3.90), SIMDE_FLOAT16_VALUE(7.80), SIMDE_FLOAT16_VALUE(0.80) } },
{ { SIMDE_FLOAT16_VALUE(10.00), SIMDE_FLOAT16_VALUE(-7.60), SIMDE_FLOAT16_VALUE(-1.20), SIMDE_FLOAT16_VALUE(5.10), SIMDE_FLOAT16_VALUE(6.10), SIMDE_FLOAT16_VALUE(4.50), SIMDE_FLOAT16_VALUE(1.40), SIMDE_FLOAT16_VALUE(-5.50) },
{ SIMDE_FLOAT16_VALUE(3.90), SIMDE_FLOAT16_VALUE(-5.10), SIMDE_FLOAT16_VALUE(1.10), SIMDE_FLOAT16_VALUE(0.00), SIMDE_FLOAT16_VALUE(1.00), SIMDE_FLOAT16_VALUE(4.20), SIMDE_FLOAT16_VALUE(3.20), SIMDE_FLOAT16_VALUE(-8.50) },
{ SIMDE_FLOAT16_VALUE(10.00), SIMDE_FLOAT16_VALUE(3.90), SIMDE_FLOAT16_VALUE(-7.60), SIMDE_FLOAT16_VALUE(-5.10), SIMDE_FLOAT16_VALUE(-1.20), SIMDE_FLOAT16_VALUE(1.10), SIMDE_FLOAT16_VALUE(5.10), SIMDE_FLOAT16_VALUE(0.00), SIMDE_FLOAT16_VALUE(6.10), SIMDE_FLOAT16_VALUE(1.00), SIMDE_FLOAT16_VALUE(4.50), SIMDE_FLOAT16_VALUE(4.20), SIMDE_FLOAT16_VALUE(1.40), SIMDE_FLOAT16_VALUE(3.20), SIMDE_FLOAT16_VALUE(-5.50), SIMDE_FLOAT16_VALUE(-8.50) } },
{ { SIMDE_FLOAT16_VALUE(9.30), SIMDE_FLOAT16_VALUE(2.40), SIMDE_FLOAT16_VALUE(7.90), SIMDE_FLOAT16_VALUE(-3.10), SIMDE_FLOAT16_VALUE(-0.20), SIMDE_FLOAT16_VALUE(-1.80), SIMDE_FLOAT16_VALUE(-7.10), SIMDE_FLOAT16_VALUE(-5.00) },
{ SIMDE_FLOAT16_VALUE(8.10), SIMDE_FLOAT16_VALUE(5.20), SIMDE_FLOAT16_VALUE(3.80), SIMDE_FLOAT16_VALUE(0.30), SIMDE_FLOAT16_VALUE(-4.20), SIMDE_FLOAT16_VALUE(-8.30), SIMDE_FLOAT16_VALUE(9.90), SIMDE_FLOAT16_VALUE(5.80) },
{ SIMDE_FLOAT16_VALUE(9.30), SIMDE_FLOAT16_VALUE(8.10), SIMDE_FLOAT16_VALUE(2.40), SIMDE_FLOAT16_VALUE(5.20), SIMDE_FLOAT16_VALUE(7.90), SIMDE_FLOAT16_VALUE(3.80), SIMDE_FLOAT16_VALUE(-3.10), SIMDE_FLOAT16_VALUE(0.30), SIMDE_FLOAT16_VALUE(-0.20), SIMDE_FLOAT16_VALUE(-4.20), SIMDE_FLOAT16_VALUE(-1.80), SIMDE_FLOAT16_VALUE(-8.30), SIMDE_FLOAT16_VALUE(-7.10), SIMDE_FLOAT16_VALUE(9.90), SIMDE_FLOAT16_VALUE(-5.00), SIMDE_FLOAT16_VALUE(5.80) } },
{ { SIMDE_FLOAT16_VALUE(9.30), SIMDE_FLOAT16_VALUE(3.10), SIMDE_FLOAT16_VALUE(8.20), SIMDE_FLOAT16_VALUE(9.70), SIMDE_FLOAT16_VALUE(-5.00), SIMDE_FLOAT16_VALUE(0.90), SIMDE_FLOAT16_VALUE(-7.20), SIMDE_FLOAT16_VALUE(-4.20) },
{ SIMDE_FLOAT16_VALUE(8.90), SIMDE_FLOAT16_VALUE(8.00), SIMDE_FLOAT16_VALUE(-0.10), SIMDE_FLOAT16_VALUE(-3.40), SIMDE_FLOAT16_VALUE(4.20), SIMDE_FLOAT16_VALUE(7.80), SIMDE_FLOAT16_VALUE(2.20), SIMDE_FLOAT16_VALUE(-6.00) },
{ SIMDE_FLOAT16_VALUE(9.30), SIMDE_FLOAT16_VALUE(8.90), SIMDE_FLOAT16_VALUE(3.10), SIMDE_FLOAT16_VALUE(8.00), SIMDE_FLOAT16_VALUE(8.20), SIMDE_FLOAT16_VALUE(-0.10), SIMDE_FLOAT16_VALUE(9.70), SIMDE_FLOAT16_VALUE(-3.40), SIMDE_FLOAT16_VALUE(-5.00), SIMDE_FLOAT16_VALUE(4.20), SIMDE_FLOAT16_VALUE(0.90), SIMDE_FLOAT16_VALUE(7.80), SIMDE_FLOAT16_VALUE(-7.20), SIMDE_FLOAT16_VALUE(2.20), SIMDE_FLOAT16_VALUE(-4.20), SIMDE_FLOAT16_VALUE(-6.00) } },
{ { SIMDE_FLOAT16_VALUE(-6.90), SIMDE_FLOAT16_VALUE(4.60), SIMDE_FLOAT16_VALUE(-2.80), SIMDE_FLOAT16_VALUE(-1.00), SIMDE_FLOAT16_VALUE(3.80), SIMDE_FLOAT16_VALUE(-4.90), SIMDE_FLOAT16_VALUE(-8.50), SIMDE_FLOAT16_VALUE(-10.00) },
{ SIMDE_FLOAT16_VALUE(-7.50), SIMDE_FLOAT16_VALUE(2.30), SIMDE_FLOAT16_VALUE(2.80), SIMDE_FLOAT16_VALUE(3.30), SIMDE_FLOAT16_VALUE(-0.80), SIMDE_FLOAT16_VALUE(-2.00), SIMDE_FLOAT16_VALUE(-4.80), SIMDE_FLOAT16_VALUE(-8.80) },
{ SIMDE_FLOAT16_VALUE(-6.90), SIMDE_FLOAT16_VALUE(-7.50), SIMDE_FLOAT16_VALUE(4.60), SIMDE_FLOAT16_VALUE(2.30), SIMDE_FLOAT16_VALUE(-2.80), SIMDE_FLOAT16_VALUE(2.80), SIMDE_FLOAT16_VALUE(-1.00), SIMDE_FLOAT16_VALUE(3.30), SIMDE_FLOAT16_VALUE(3.80), SIMDE_FLOAT16_VALUE(-0.80), SIMDE_FLOAT16_VALUE(-4.90), SIMDE_FLOAT16_VALUE(-2.00), SIMDE_FLOAT16_VALUE(-8.50), SIMDE_FLOAT16_VALUE(-4.80), SIMDE_FLOAT16_VALUE(-10.00), SIMDE_FLOAT16_VALUE(-8.80) } },
{ { SIMDE_FLOAT16_VALUE(4.20), SIMDE_FLOAT16_VALUE(5.50), SIMDE_FLOAT16_VALUE(3.10), SIMDE_FLOAT16_VALUE(-8.20), SIMDE_FLOAT16_VALUE(0.10), SIMDE_FLOAT16_VALUE(2.80), SIMDE_FLOAT16_VALUE(9.40), SIMDE_FLOAT16_VALUE(9.10) },
{ SIMDE_FLOAT16_VALUE(6.60), SIMDE_FLOAT16_VALUE(2.10), SIMDE_FLOAT16_VALUE(-8.90), SIMDE_FLOAT16_VALUE(-6.70), SIMDE_FLOAT16_VALUE(-4.00), SIMDE_FLOAT16_VALUE(-2.60), SIMDE_FLOAT16_VALUE(-9.20), SIMDE_FLOAT16_VALUE(-3.20) },
{ SIMDE_FLOAT16_VALUE(4.20), SIMDE_FLOAT16_VALUE(6.60), SIMDE_FLOAT16_VALUE(5.50), SIMDE_FLOAT16_VALUE(2.10), SIMDE_FLOAT16_VALUE(3.10), SIMDE_FLOAT16_VALUE(-8.90), SIMDE_FLOAT16_VALUE(-8.20), SIMDE_FLOAT16_VALUE(-6.70), SIMDE_FLOAT16_VALUE(0.10), SIMDE_FLOAT16_VALUE(-4.00), SIMDE_FLOAT16_VALUE(2.80), SIMDE_FLOAT16_VALUE(-2.60), SIMDE_FLOAT16_VALUE(9.40), SIMDE_FLOAT16_VALUE(-9.20), SIMDE_FLOAT16_VALUE(9.10), SIMDE_FLOAT16_VALUE(-3.20) } }
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_float16x8x2_t r_ = { { simde_vld1q_f16(test_vec[i].r0),
simde_vld1q_f16(test_vec[i].r1) } };
simde_float16_t a_[16];
simde_vst2q_f16(a_, r_);
simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));
}
return 0;
}
static int
test_simde_vst2q_f32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
@ -1405,10 +1507,555 @@ test_simde_vst2q_u64 (SIMDE_MUNIT_TEST_ARGS) {
#endif
}
static int
test_simde_vst2_p8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
simde_poly8_t r0[8];
simde_poly8_t r1[8];
simde_poly8_t a[16];
} test_vec[] = {
{ { SIMDE_POLY8_C(137), SIMDE_POLY8_C(176), SIMDE_POLY8_C(156), SIMDE_POLY8_C( 16), SIMDE_POLY8_C( 74), SIMDE_POLY8_C(251), SIMDE_POLY8_C(134), SIMDE_POLY8_C(115) },
{ SIMDE_POLY8_C(110), SIMDE_POLY8_C( 61), SIMDE_POLY8_C( 68), SIMDE_POLY8_C( 47), SIMDE_POLY8_C( 3), SIMDE_POLY8_C(253), SIMDE_POLY8_C( 24), SIMDE_POLY8_C(164) },
{ SIMDE_POLY8_C(137), SIMDE_POLY8_C(110), SIMDE_POLY8_C(176), SIMDE_POLY8_C( 61), SIMDE_POLY8_C(156), SIMDE_POLY8_C( 68), SIMDE_POLY8_C( 16), SIMDE_POLY8_C( 47),
SIMDE_POLY8_C( 74), SIMDE_POLY8_C( 3), SIMDE_POLY8_C(251), SIMDE_POLY8_C(253), SIMDE_POLY8_C(134), SIMDE_POLY8_C( 24), SIMDE_POLY8_C(115), SIMDE_POLY8_C(164) } },
{ { SIMDE_POLY8_C( 44), SIMDE_POLY8_C( 35), SIMDE_POLY8_C( 76), SIMDE_POLY8_C(171), SIMDE_POLY8_C(181), SIMDE_POLY8_C( 90), SIMDE_POLY8_C(199), SIMDE_POLY8_C(225) },
{ SIMDE_POLY8_C( 58), SIMDE_POLY8_C( 23), SIMDE_POLY8_C(210), SIMDE_POLY8_C(230), SIMDE_POLY8_C(137), SIMDE_POLY8_C(156), SIMDE_POLY8_C(156), SIMDE_POLY8_C( 19) },
{ SIMDE_POLY8_C( 44), SIMDE_POLY8_C( 58), SIMDE_POLY8_C( 35), SIMDE_POLY8_C( 23), SIMDE_POLY8_C( 76), SIMDE_POLY8_C(210), SIMDE_POLY8_C(171), SIMDE_POLY8_C(230),
SIMDE_POLY8_C(181), SIMDE_POLY8_C(137), SIMDE_POLY8_C( 90), SIMDE_POLY8_C(156), SIMDE_POLY8_C(199), SIMDE_POLY8_C(156), SIMDE_POLY8_C(225), SIMDE_POLY8_C( 19) } },
{ { SIMDE_POLY8_C( 77), SIMDE_POLY8_C( 56), SIMDE_POLY8_C( 35), SIMDE_POLY8_C(151), SIMDE_POLY8_C( 51), SIMDE_POLY8_C(170), SIMDE_POLY8_C( 11), SIMDE_POLY8_C(162) },
{ SIMDE_POLY8_C(231), SIMDE_POLY8_C( 79), SIMDE_POLY8_C(209), SIMDE_POLY8_C(235), SIMDE_POLY8_C( 76), SIMDE_POLY8_C(233), SIMDE_POLY8_C(143), SIMDE_POLY8_C(121) },
{ SIMDE_POLY8_C( 77), SIMDE_POLY8_C(231), SIMDE_POLY8_C( 56), SIMDE_POLY8_C( 79), SIMDE_POLY8_C( 35), SIMDE_POLY8_C(209), SIMDE_POLY8_C(151), SIMDE_POLY8_C(235),
SIMDE_POLY8_C( 51), SIMDE_POLY8_C( 76), SIMDE_POLY8_C(170), SIMDE_POLY8_C(233), SIMDE_POLY8_C( 11), SIMDE_POLY8_C(143), SIMDE_POLY8_C(162), SIMDE_POLY8_C(121) } },
{ { SIMDE_POLY8_C( 12), SIMDE_POLY8_C(219), SIMDE_POLY8_C( 36), SIMDE_POLY8_C(194), SIMDE_POLY8_C( 53), SIMDE_POLY8_C(235), SIMDE_POLY8_C(163), SIMDE_POLY8_C(112) },
{ SIMDE_POLY8_C( 2), SIMDE_POLY8_C(118), SIMDE_POLY8_C( 86), SIMDE_POLY8_C(140), SIMDE_POLY8_C( 18), SIMDE_POLY8_C(242), SIMDE_POLY8_C(159), SIMDE_POLY8_C( 95) },
{ SIMDE_POLY8_C( 12), SIMDE_POLY8_C( 2), SIMDE_POLY8_C(219), SIMDE_POLY8_C(118), SIMDE_POLY8_C( 36), SIMDE_POLY8_C( 86), SIMDE_POLY8_C(194), SIMDE_POLY8_C(140),
SIMDE_POLY8_C( 53), SIMDE_POLY8_C( 18), SIMDE_POLY8_C(235), SIMDE_POLY8_C(242), SIMDE_POLY8_C(163), SIMDE_POLY8_C(159), SIMDE_POLY8_C(112), SIMDE_POLY8_C( 95) } },
{ { SIMDE_POLY8_C( 43), SIMDE_POLY8_C(194), SIMDE_POLY8_C(247), SIMDE_POLY8_C( 94), SIMDE_POLY8_C(108), SIMDE_POLY8_C( 2), SIMDE_POLY8_C( 0), SIMDE_POLY8_C( 84) },
{ SIMDE_POLY8_C( 81), SIMDE_POLY8_C(210), SIMDE_POLY8_C( 63), SIMDE_POLY8_C(158), SIMDE_POLY8_C(187), SIMDE_POLY8_C(206), SIMDE_POLY8_C( 23), SIMDE_POLY8_C(200) },
{ SIMDE_POLY8_C( 43), SIMDE_POLY8_C( 81), SIMDE_POLY8_C(194), SIMDE_POLY8_C(210), SIMDE_POLY8_C(247), SIMDE_POLY8_C( 63), SIMDE_POLY8_C( 94), SIMDE_POLY8_C(158),
SIMDE_POLY8_C(108), SIMDE_POLY8_C(187), SIMDE_POLY8_C( 2), SIMDE_POLY8_C(206), SIMDE_POLY8_C( 0), SIMDE_POLY8_C( 23), SIMDE_POLY8_C( 84), SIMDE_POLY8_C(200) } },
{ { SIMDE_POLY8_C(170), SIMDE_POLY8_C( 59), SIMDE_POLY8_C(138), SIMDE_POLY8_C(223), SIMDE_POLY8_C( 39), SIMDE_POLY8_C( 45), SIMDE_POLY8_C( 79), SIMDE_POLY8_C( 41) },
{ SIMDE_POLY8_C(163), SIMDE_POLY8_C(165), SIMDE_POLY8_C(181), SIMDE_POLY8_C(182), SIMDE_POLY8_C(152), SIMDE_POLY8_C( 84), SIMDE_POLY8_C( 21), SIMDE_POLY8_C(195) },
{ SIMDE_POLY8_C(170), SIMDE_POLY8_C(163), SIMDE_POLY8_C( 59), SIMDE_POLY8_C(165), SIMDE_POLY8_C(138), SIMDE_POLY8_C(181), SIMDE_POLY8_C(223), SIMDE_POLY8_C(182),
SIMDE_POLY8_C( 39), SIMDE_POLY8_C(152), SIMDE_POLY8_C( 45), SIMDE_POLY8_C( 84), SIMDE_POLY8_C( 79), SIMDE_POLY8_C( 21), SIMDE_POLY8_C( 41), SIMDE_POLY8_C(195) } },
{ { SIMDE_POLY8_C( 23), SIMDE_POLY8_C( 12), SIMDE_POLY8_C( 33), SIMDE_POLY8_C(131), SIMDE_POLY8_C( 14), SIMDE_POLY8_C( 34), SIMDE_POLY8_C(215), SIMDE_POLY8_C( 96) },
{ SIMDE_POLY8_C(244), SIMDE_POLY8_C( 22), SIMDE_POLY8_C(254), SIMDE_POLY8_C(175), SIMDE_POLY8_C(229), SIMDE_POLY8_C( 21), SIMDE_POLY8_C(119), SIMDE_POLY8_C(143) },
{ SIMDE_POLY8_C( 23), SIMDE_POLY8_C(244), SIMDE_POLY8_C( 12), SIMDE_POLY8_C( 22), SIMDE_POLY8_C( 33), SIMDE_POLY8_C(254), SIMDE_POLY8_C(131), SIMDE_POLY8_C(175),
SIMDE_POLY8_C( 14), SIMDE_POLY8_C(229), SIMDE_POLY8_C( 34), SIMDE_POLY8_C( 21), SIMDE_POLY8_C(215), SIMDE_POLY8_C(119), SIMDE_POLY8_C( 96), SIMDE_POLY8_C(143) } },
{ { SIMDE_POLY8_C( 80), SIMDE_POLY8_C( 1), SIMDE_POLY8_C(110), SIMDE_POLY8_C(119), SIMDE_POLY8_C( 47), SIMDE_POLY8_C(190), SIMDE_POLY8_C(161), SIMDE_POLY8_C(210) },
{ SIMDE_POLY8_C( 99), SIMDE_POLY8_C( 86), SIMDE_POLY8_C(136), SIMDE_POLY8_C(251), SIMDE_POLY8_C(171), SIMDE_POLY8_C(158), SIMDE_POLY8_C(190), SIMDE_POLY8_C(194) },
{ SIMDE_POLY8_C( 80), SIMDE_POLY8_C( 99), SIMDE_POLY8_C( 1), SIMDE_POLY8_C( 86), SIMDE_POLY8_C(110), SIMDE_POLY8_C(136), SIMDE_POLY8_C(119), SIMDE_POLY8_C(251),
SIMDE_POLY8_C( 47), SIMDE_POLY8_C(171), SIMDE_POLY8_C(190), SIMDE_POLY8_C(158), SIMDE_POLY8_C(161), SIMDE_POLY8_C(190), SIMDE_POLY8_C(210), SIMDE_POLY8_C(194) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_poly8x8x2_t r_ = { { simde_vld1_p8(test_vec[i].r0),
simde_vld1_p8(test_vec[i].r1) } };
simde_poly8_t a_[16];
simde_vst2_p8(a_, r_);
simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));
}
return 0;
#else
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_poly8x8x2_t c = {{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_poly8_t buf[16];
simde_vst2_p8(buf, c);
simde_test_codegen_write_vp8(2, sizeof(buf) / sizeof(buf[0]), buf,
SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vst2_p16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
simde_poly16_t r0[4];
simde_poly16_t r1[4];
simde_poly16_t a[8];
} test_vec[] = {
{ { SIMDE_POLY16_C(28698), SIMDE_POLY16_C(17828), SIMDE_POLY16_C(55501), SIMDE_POLY16_C(64260) },
{ SIMDE_POLY16_C(45604), SIMDE_POLY16_C(24547), SIMDE_POLY16_C(40446), SIMDE_POLY16_C(46146) },
{ SIMDE_POLY16_C(28698), SIMDE_POLY16_C(45604), SIMDE_POLY16_C(17828), SIMDE_POLY16_C(24547), SIMDE_POLY16_C(55501), SIMDE_POLY16_C(40446), SIMDE_POLY16_C(64260), SIMDE_POLY16_C(46146) } },
{ { SIMDE_POLY16_C(41261), SIMDE_POLY16_C(55325), SIMDE_POLY16_C(25201), SIMDE_POLY16_C(49063) },
{ SIMDE_POLY16_C(46317), SIMDE_POLY16_C(50252), SIMDE_POLY16_C(36800), SIMDE_POLY16_C(56019) },
{ SIMDE_POLY16_C(41261), SIMDE_POLY16_C(46317), SIMDE_POLY16_C(55325), SIMDE_POLY16_C(50252), SIMDE_POLY16_C(25201), SIMDE_POLY16_C(36800), SIMDE_POLY16_C(49063), SIMDE_POLY16_C(56019) } },
{ { SIMDE_POLY16_C(30719), SIMDE_POLY16_C(52512), SIMDE_POLY16_C( 9295), SIMDE_POLY16_C(29896) },
{ SIMDE_POLY16_C(44247), SIMDE_POLY16_C(54739), SIMDE_POLY16_C( 5705), SIMDE_POLY16_C(30345) },
{ SIMDE_POLY16_C(30719), SIMDE_POLY16_C(44247), SIMDE_POLY16_C(52512), SIMDE_POLY16_C(54739), SIMDE_POLY16_C( 9295), SIMDE_POLY16_C( 5705), SIMDE_POLY16_C(29896), SIMDE_POLY16_C(30345) } },
{ { SIMDE_POLY16_C(42679), SIMDE_POLY16_C(10319), SIMDE_POLY16_C(62984), SIMDE_POLY16_C(62951) },
{ SIMDE_POLY16_C(13226), SIMDE_POLY16_C(27322), SIMDE_POLY16_C(36290), SIMDE_POLY16_C(49733) },
{ SIMDE_POLY16_C(42679), SIMDE_POLY16_C(13226), SIMDE_POLY16_C(10319), SIMDE_POLY16_C(27322), SIMDE_POLY16_C(62984), SIMDE_POLY16_C(36290), SIMDE_POLY16_C(62951), SIMDE_POLY16_C(49733) } },
{ { SIMDE_POLY16_C(25861), SIMDE_POLY16_C(21647), SIMDE_POLY16_C(22409), SIMDE_POLY16_C(24776) },
{ SIMDE_POLY16_C(39939), SIMDE_POLY16_C(19765), SIMDE_POLY16_C(48818), SIMDE_POLY16_C(27075) },
{ SIMDE_POLY16_C(25861), SIMDE_POLY16_C(39939), SIMDE_POLY16_C(21647), SIMDE_POLY16_C(19765), SIMDE_POLY16_C(22409), SIMDE_POLY16_C(48818), SIMDE_POLY16_C(24776), SIMDE_POLY16_C(27075) } },
{ { SIMDE_POLY16_C( 4708), SIMDE_POLY16_C(28049), SIMDE_POLY16_C(30728), SIMDE_POLY16_C(45922) },
{ SIMDE_POLY16_C( 7339), SIMDE_POLY16_C(28189), SIMDE_POLY16_C(25258), SIMDE_POLY16_C(44848) },
{ SIMDE_POLY16_C( 4708), SIMDE_POLY16_C( 7339), SIMDE_POLY16_C(28049), SIMDE_POLY16_C(28189), SIMDE_POLY16_C(30728), SIMDE_POLY16_C(25258), SIMDE_POLY16_C(45922), SIMDE_POLY16_C(44848) } },
{ { SIMDE_POLY16_C(49095), SIMDE_POLY16_C(20739), SIMDE_POLY16_C(52246), SIMDE_POLY16_C( 6833) },
{ SIMDE_POLY16_C(59240), SIMDE_POLY16_C( 6759), SIMDE_POLY16_C(10917), SIMDE_POLY16_C( 2691) },
{ SIMDE_POLY16_C(49095), SIMDE_POLY16_C(59240), SIMDE_POLY16_C(20739), SIMDE_POLY16_C( 6759), SIMDE_POLY16_C(52246), SIMDE_POLY16_C(10917), SIMDE_POLY16_C( 6833), SIMDE_POLY16_C( 2691) } },
{ { SIMDE_POLY16_C( 5181), SIMDE_POLY16_C(17783), SIMDE_POLY16_C(55692), SIMDE_POLY16_C(14328) },
{ SIMDE_POLY16_C( 5878), SIMDE_POLY16_C(41125), SIMDE_POLY16_C(54648), SIMDE_POLY16_C(16463) },
{ SIMDE_POLY16_C( 5181), SIMDE_POLY16_C( 5878), SIMDE_POLY16_C(17783), SIMDE_POLY16_C(41125), SIMDE_POLY16_C(55692), SIMDE_POLY16_C(54648), SIMDE_POLY16_C(14328), SIMDE_POLY16_C(16463) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_poly16x4x2_t r_ = { { simde_vld1_p16(test_vec[i].r0),
simde_vld1_p16(test_vec[i].r1) } };
simde_poly16_t a_[8];
simde_vst2_p16(a_, r_);
simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));
}
return 0;
#else
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_poly16x4x2_t c = {{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_poly16_t buf[8];
simde_vst2_p16(buf, c);
simde_test_codegen_write_vp16(2, sizeof(buf) / sizeof(buf[0]), buf,
SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vst2_p64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
simde_poly64_t r0[1];
simde_poly64_t r1[1];
simde_poly64_t a[2];
} test_vec[] = {
{ { SIMDE_POLY64_C( 8807445114109895209) },
{ SIMDE_POLY64_C( 6519373925169032403) },
{ SIMDE_POLY64_C( 8807445114109895209), SIMDE_POLY64_C( 6519373925169032403) } },
{ { SIMDE_POLY64_C( 5321430397114178273) },
{ SIMDE_POLY64_C(12837102308479805126) },
{ SIMDE_POLY64_C( 5321430397114178273), SIMDE_POLY64_C(12837102308479805126) } },
{ { SIMDE_POLY64_C(10724138065184386222) },
{ SIMDE_POLY64_C(15067712779132303542) },
{ SIMDE_POLY64_C(10724138065184386222), SIMDE_POLY64_C(15067712779132303542) } },
{ { SIMDE_POLY64_C( 6496494778930499359) },
{ SIMDE_POLY64_C(12434900361196433749) },
{ SIMDE_POLY64_C( 6496494778930499359), SIMDE_POLY64_C(12434900361196433749) } },
{ { SIMDE_POLY64_C(11629659740313034767) },
{ SIMDE_POLY64_C(10597671910934458193) },
{ SIMDE_POLY64_C(11629659740313034767), SIMDE_POLY64_C(10597671910934458193) } },
{ { SIMDE_POLY64_C(16968607465622103949) },
{ SIMDE_POLY64_C(12445235346039044364) },
{ SIMDE_POLY64_C(16968607465622103949), SIMDE_POLY64_C(12445235346039044364) } },
{ { SIMDE_POLY64_C(16575463885834599547) },
{ SIMDE_POLY64_C( 8436994618425829647) },
{ SIMDE_POLY64_C(16575463885834599547), SIMDE_POLY64_C( 8436994618425829647) } },
{ { SIMDE_POLY64_C( 3396297011456542880) },
{ SIMDE_POLY64_C(14075137826483727371) },
{ SIMDE_POLY64_C( 3396297011456542880), SIMDE_POLY64_C(14075137826483727371) } }
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_poly64x1x2_t r_ = { { simde_vld1_p64(test_vec[i].r0),
simde_vld1_p64(test_vec[i].r1) } };
simde_poly64_t a_[2];
simde_vst2_p64(a_, r_);
simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));
}
return 0;
#else
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_poly64x1x2_t c = {{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_poly64_t buf[2];
simde_vst2_p64(buf, c);
simde_test_codegen_write_vp64(2, sizeof(buf) / sizeof(buf[0]), buf,
SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vst2q_p8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
simde_poly8_t r0[16];
simde_poly8_t r1[16];
simde_poly8_t a[32];
} test_vec[] = {
{ { SIMDE_POLY8_C( 92), SIMDE_POLY8_C(249), SIMDE_POLY8_C(153), SIMDE_POLY8_C( 75), SIMDE_POLY8_C(250), SIMDE_POLY8_C(190), SIMDE_POLY8_C(100), SIMDE_POLY8_C(208),
SIMDE_POLY8_C( 15), SIMDE_POLY8_C( 64), SIMDE_POLY8_C(137), SIMDE_POLY8_C(101), SIMDE_POLY8_C(140), SIMDE_POLY8_C( 19), SIMDE_POLY8_C( 8), SIMDE_POLY8_C( 34) },
{ SIMDE_POLY8_C( 1), SIMDE_POLY8_C(208), SIMDE_POLY8_C(111), SIMDE_POLY8_C(206), SIMDE_POLY8_C(251), SIMDE_POLY8_C(234), SIMDE_POLY8_C( 24), SIMDE_POLY8_C(160),
SIMDE_POLY8_C(187), SIMDE_POLY8_C(120), SIMDE_POLY8_C(102), SIMDE_POLY8_C(140), SIMDE_POLY8_C(119), SIMDE_POLY8_C( 96), SIMDE_POLY8_C( 0), SIMDE_POLY8_C(211) },
{ SIMDE_POLY8_C( 92), SIMDE_POLY8_C( 1), SIMDE_POLY8_C(249), SIMDE_POLY8_C(208), SIMDE_POLY8_C(153), SIMDE_POLY8_C(111), SIMDE_POLY8_C( 75), SIMDE_POLY8_C(206),
SIMDE_POLY8_C(250), SIMDE_POLY8_C(251), SIMDE_POLY8_C(190), SIMDE_POLY8_C(234), SIMDE_POLY8_C(100), SIMDE_POLY8_C( 24), SIMDE_POLY8_C(208), SIMDE_POLY8_C(160),
SIMDE_POLY8_C( 15), SIMDE_POLY8_C(187), SIMDE_POLY8_C( 64), SIMDE_POLY8_C(120), SIMDE_POLY8_C(137), SIMDE_POLY8_C(102), SIMDE_POLY8_C(101), SIMDE_POLY8_C(140),
SIMDE_POLY8_C(140), SIMDE_POLY8_C(119), SIMDE_POLY8_C( 19), SIMDE_POLY8_C( 96), SIMDE_POLY8_C( 8), SIMDE_POLY8_C( 0), SIMDE_POLY8_C( 34), SIMDE_POLY8_C(211) } },
{ { SIMDE_POLY8_C( 89), SIMDE_POLY8_C(153), SIMDE_POLY8_C( 31), SIMDE_POLY8_C( 83), SIMDE_POLY8_C( 87), SIMDE_POLY8_C(131), SIMDE_POLY8_C( 36), SIMDE_POLY8_C(103),
SIMDE_POLY8_C(195), SIMDE_POLY8_C(173), SIMDE_POLY8_C(204), SIMDE_POLY8_C( 80), SIMDE_POLY8_C(193), SIMDE_POLY8_C(212), SIMDE_POLY8_C(114), SIMDE_POLY8_C(194) },
{ SIMDE_POLY8_C(164), SIMDE_POLY8_C(226), SIMDE_POLY8_C(145), SIMDE_POLY8_C(159), SIMDE_POLY8_C(204), SIMDE_POLY8_C(169), SIMDE_POLY8_C( 63), SIMDE_POLY8_C(135),
SIMDE_POLY8_C( 34), SIMDE_POLY8_C(166), SIMDE_POLY8_C( 19), SIMDE_POLY8_C(153), SIMDE_POLY8_C( 6), SIMDE_POLY8_C( 19), SIMDE_POLY8_C(109), SIMDE_POLY8_C( 96) },
{ SIMDE_POLY8_C( 89), SIMDE_POLY8_C(164), SIMDE_POLY8_C(153), SIMDE_POLY8_C(226), SIMDE_POLY8_C( 31), SIMDE_POLY8_C(145), SIMDE_POLY8_C( 83), SIMDE_POLY8_C(159),
SIMDE_POLY8_C( 87), SIMDE_POLY8_C(204), SIMDE_POLY8_C(131), SIMDE_POLY8_C(169), SIMDE_POLY8_C( 36), SIMDE_POLY8_C( 63), SIMDE_POLY8_C(103), SIMDE_POLY8_C(135),
SIMDE_POLY8_C(195), SIMDE_POLY8_C( 34), SIMDE_POLY8_C(173), SIMDE_POLY8_C(166), SIMDE_POLY8_C(204), SIMDE_POLY8_C( 19), SIMDE_POLY8_C( 80), SIMDE_POLY8_C(153),
SIMDE_POLY8_C(193), SIMDE_POLY8_C( 6), SIMDE_POLY8_C(212), SIMDE_POLY8_C( 19), SIMDE_POLY8_C(114), SIMDE_POLY8_C(109), SIMDE_POLY8_C(194), SIMDE_POLY8_C( 96) } },
{ { SIMDE_POLY8_C(172), SIMDE_POLY8_C(140), SIMDE_POLY8_C(179), SIMDE_POLY8_C( 4), SIMDE_POLY8_C( 15), SIMDE_POLY8_C(215), SIMDE_POLY8_C(107), SIMDE_POLY8_C(211),
SIMDE_POLY8_C(133), SIMDE_POLY8_C( 55), SIMDE_POLY8_C( 35), SIMDE_POLY8_C( 70), SIMDE_POLY8_C( 11), SIMDE_POLY8_C(149), SIMDE_POLY8_C( 8), SIMDE_POLY8_C(175) },
{ SIMDE_POLY8_C(119), SIMDE_POLY8_C(153), SIMDE_POLY8_C( 79), SIMDE_POLY8_C( 67), SIMDE_POLY8_C( 67), SIMDE_POLY8_C(142), SIMDE_POLY8_C(202), SIMDE_POLY8_C(101),
SIMDE_POLY8_C( 52), SIMDE_POLY8_C(222), SIMDE_POLY8_C(254), SIMDE_POLY8_C( 59), SIMDE_POLY8_C(241), SIMDE_POLY8_C(107), SIMDE_POLY8_C(155), SIMDE_POLY8_C(158) },
{ SIMDE_POLY8_C(172), SIMDE_POLY8_C(119), SIMDE_POLY8_C(140), SIMDE_POLY8_C(153), SIMDE_POLY8_C(179), SIMDE_POLY8_C( 79), SIMDE_POLY8_C( 4), SIMDE_POLY8_C( 67),
SIMDE_POLY8_C( 15), SIMDE_POLY8_C( 67), SIMDE_POLY8_C(215), SIMDE_POLY8_C(142), SIMDE_POLY8_C(107), SIMDE_POLY8_C(202), SIMDE_POLY8_C(211), SIMDE_POLY8_C(101),
SIMDE_POLY8_C(133), SIMDE_POLY8_C( 52), SIMDE_POLY8_C( 55), SIMDE_POLY8_C(222), SIMDE_POLY8_C( 35), SIMDE_POLY8_C(254), SIMDE_POLY8_C( 70), SIMDE_POLY8_C( 59),
SIMDE_POLY8_C( 11), SIMDE_POLY8_C(241), SIMDE_POLY8_C(149), SIMDE_POLY8_C(107), SIMDE_POLY8_C( 8), SIMDE_POLY8_C(155), SIMDE_POLY8_C(175), SIMDE_POLY8_C(158) } },
{ { SIMDE_POLY8_C(247), SIMDE_POLY8_C( 78), SIMDE_POLY8_C(162), SIMDE_POLY8_C( 7), SIMDE_POLY8_C( 38), SIMDE_POLY8_C( 13), SIMDE_POLY8_C(218), SIMDE_POLY8_C(171),
SIMDE_POLY8_C( 68), SIMDE_POLY8_C(253), SIMDE_POLY8_C(241), SIMDE_POLY8_C( 79), SIMDE_POLY8_C(146), SIMDE_POLY8_C(249), SIMDE_POLY8_C(254), SIMDE_POLY8_C( 10) },
{ SIMDE_POLY8_C(147), SIMDE_POLY8_C( 77), SIMDE_POLY8_C( 77), SIMDE_POLY8_C(214), SIMDE_POLY8_C(220), SIMDE_POLY8_C( 24), SIMDE_POLY8_C( 59), SIMDE_POLY8_C( 16),
SIMDE_POLY8_C(246), SIMDE_POLY8_C( 57), SIMDE_POLY8_C( 75), SIMDE_POLY8_C(231), SIMDE_POLY8_C(165), SIMDE_POLY8_C(230), SIMDE_POLY8_C(133), SIMDE_POLY8_C(156) },
{ SIMDE_POLY8_C(247), SIMDE_POLY8_C(147), SIMDE_POLY8_C( 78), SIMDE_POLY8_C( 77), SIMDE_POLY8_C(162), SIMDE_POLY8_C( 77), SIMDE_POLY8_C( 7), SIMDE_POLY8_C(214),
SIMDE_POLY8_C( 38), SIMDE_POLY8_C(220), SIMDE_POLY8_C( 13), SIMDE_POLY8_C( 24), SIMDE_POLY8_C(218), SIMDE_POLY8_C( 59), SIMDE_POLY8_C(171), SIMDE_POLY8_C( 16),
SIMDE_POLY8_C( 68), SIMDE_POLY8_C(246), SIMDE_POLY8_C(253), SIMDE_POLY8_C( 57), SIMDE_POLY8_C(241), SIMDE_POLY8_C( 75), SIMDE_POLY8_C( 79), SIMDE_POLY8_C(231),
SIMDE_POLY8_C(146), SIMDE_POLY8_C(165), SIMDE_POLY8_C(249), SIMDE_POLY8_C(230), SIMDE_POLY8_C(254), SIMDE_POLY8_C(133), SIMDE_POLY8_C( 10), SIMDE_POLY8_C(156) } },
{ { SIMDE_POLY8_C( 53), SIMDE_POLY8_C( 39), SIMDE_POLY8_C(163), SIMDE_POLY8_C( 91), SIMDE_POLY8_C( 52), SIMDE_POLY8_C(125), SIMDE_POLY8_C( 6), SIMDE_POLY8_C(120),
SIMDE_POLY8_C(122), SIMDE_POLY8_C(247), SIMDE_POLY8_C(199), SIMDE_POLY8_C( 13), SIMDE_POLY8_C(240), SIMDE_POLY8_C(198), SIMDE_POLY8_C( 23), SIMDE_POLY8_C(131) },
{ SIMDE_POLY8_C( 19), SIMDE_POLY8_C(100), SIMDE_POLY8_C( 89), SIMDE_POLY8_C(239), SIMDE_POLY8_C(124), SIMDE_POLY8_C(148), SIMDE_POLY8_C( 0), SIMDE_POLY8_C(114),
SIMDE_POLY8_C(206), SIMDE_POLY8_C( 75), SIMDE_POLY8_C( 90), SIMDE_POLY8_C(115), SIMDE_POLY8_C( 50), SIMDE_POLY8_C(223), SIMDE_POLY8_C( 15), SIMDE_POLY8_C(103) },
{ SIMDE_POLY8_C( 53), SIMDE_POLY8_C( 19), SIMDE_POLY8_C( 39), SIMDE_POLY8_C(100), SIMDE_POLY8_C(163), SIMDE_POLY8_C( 89), SIMDE_POLY8_C( 91), SIMDE_POLY8_C(239),
SIMDE_POLY8_C( 52), SIMDE_POLY8_C(124), SIMDE_POLY8_C(125), SIMDE_POLY8_C(148), SIMDE_POLY8_C( 6), SIMDE_POLY8_C( 0), SIMDE_POLY8_C(120), SIMDE_POLY8_C(114),
SIMDE_POLY8_C(122), SIMDE_POLY8_C(206), SIMDE_POLY8_C(247), SIMDE_POLY8_C( 75), SIMDE_POLY8_C(199), SIMDE_POLY8_C( 90), SIMDE_POLY8_C( 13), SIMDE_POLY8_C(115),
SIMDE_POLY8_C(240), SIMDE_POLY8_C( 50), SIMDE_POLY8_C(198), SIMDE_POLY8_C(223), SIMDE_POLY8_C( 23), SIMDE_POLY8_C( 15), SIMDE_POLY8_C(131), SIMDE_POLY8_C(103) } },
{ { SIMDE_POLY8_C( 7), SIMDE_POLY8_C(179), SIMDE_POLY8_C(194), SIMDE_POLY8_C( 59), SIMDE_POLY8_C( 48), SIMDE_POLY8_C(200), SIMDE_POLY8_C(180), SIMDE_POLY8_C(171),
SIMDE_POLY8_C(191), SIMDE_POLY8_C(123), SIMDE_POLY8_C(184), SIMDE_POLY8_C(175), SIMDE_POLY8_C( 65), SIMDE_POLY8_C(207), SIMDE_POLY8_C( 51), SIMDE_POLY8_C( 85) },
{ SIMDE_POLY8_C( 51), SIMDE_POLY8_C(140), SIMDE_POLY8_C( 68), SIMDE_POLY8_C(176), SIMDE_POLY8_C( 33), SIMDE_POLY8_C( 68), SIMDE_POLY8_C( 34), SIMDE_POLY8_C(239),
SIMDE_POLY8_C(144), SIMDE_POLY8_C(124), SIMDE_POLY8_C( 98), SIMDE_POLY8_C(194), SIMDE_POLY8_C( 92), SIMDE_POLY8_C(113), SIMDE_POLY8_C( 41), SIMDE_POLY8_C( 99) },
{ SIMDE_POLY8_C( 7), SIMDE_POLY8_C( 51), SIMDE_POLY8_C(179), SIMDE_POLY8_C(140), SIMDE_POLY8_C(194), SIMDE_POLY8_C( 68), SIMDE_POLY8_C( 59), SIMDE_POLY8_C(176),
SIMDE_POLY8_C( 48), SIMDE_POLY8_C( 33), SIMDE_POLY8_C(200), SIMDE_POLY8_C( 68), SIMDE_POLY8_C(180), SIMDE_POLY8_C( 34), SIMDE_POLY8_C(171), SIMDE_POLY8_C(239),
SIMDE_POLY8_C(191), SIMDE_POLY8_C(144), SIMDE_POLY8_C(123), SIMDE_POLY8_C(124), SIMDE_POLY8_C(184), SIMDE_POLY8_C( 98), SIMDE_POLY8_C(175), SIMDE_POLY8_C(194),
SIMDE_POLY8_C( 65), SIMDE_POLY8_C( 92), SIMDE_POLY8_C(207), SIMDE_POLY8_C(113), SIMDE_POLY8_C( 51), SIMDE_POLY8_C( 41), SIMDE_POLY8_C( 85), SIMDE_POLY8_C( 99) } },
{ { SIMDE_POLY8_C( 36), SIMDE_POLY8_C(235), SIMDE_POLY8_C(158), SIMDE_POLY8_C( 85), SIMDE_POLY8_C(179), SIMDE_POLY8_C( 82), SIMDE_POLY8_C( 0), SIMDE_POLY8_C(114),
SIMDE_POLY8_C(206), SIMDE_POLY8_C(184), SIMDE_POLY8_C( 33), SIMDE_POLY8_C( 15), SIMDE_POLY8_C(135), SIMDE_POLY8_C( 84), SIMDE_POLY8_C(100), SIMDE_POLY8_C(186) },
{ SIMDE_POLY8_C(225), SIMDE_POLY8_C(169), SIMDE_POLY8_C(106), SIMDE_POLY8_C( 2), SIMDE_POLY8_C(237), SIMDE_POLY8_C(141), SIMDE_POLY8_C(241), SIMDE_POLY8_C(125),
SIMDE_POLY8_C( 9), SIMDE_POLY8_C( 83), SIMDE_POLY8_C( 63), SIMDE_POLY8_C(101), SIMDE_POLY8_C(196), SIMDE_POLY8_C(104), SIMDE_POLY8_C(200), SIMDE_POLY8_C(233) },
{ SIMDE_POLY8_C( 36), SIMDE_POLY8_C(225), SIMDE_POLY8_C(235), SIMDE_POLY8_C(169), SIMDE_POLY8_C(158), SIMDE_POLY8_C(106), SIMDE_POLY8_C( 85), SIMDE_POLY8_C( 2),
SIMDE_POLY8_C(179), SIMDE_POLY8_C(237), SIMDE_POLY8_C( 82), SIMDE_POLY8_C(141), SIMDE_POLY8_C( 0), SIMDE_POLY8_C(241), SIMDE_POLY8_C(114), SIMDE_POLY8_C(125),
SIMDE_POLY8_C(206), SIMDE_POLY8_C( 9), SIMDE_POLY8_C(184), SIMDE_POLY8_C( 83), SIMDE_POLY8_C( 33), SIMDE_POLY8_C( 63), SIMDE_POLY8_C( 15), SIMDE_POLY8_C(101),
SIMDE_POLY8_C(135), SIMDE_POLY8_C(196), SIMDE_POLY8_C( 84), SIMDE_POLY8_C(104), SIMDE_POLY8_C(100), SIMDE_POLY8_C(200), SIMDE_POLY8_C(186), SIMDE_POLY8_C(233) } },
{ { SIMDE_POLY8_C( 83), SIMDE_POLY8_C(103), SIMDE_POLY8_C( 62), SIMDE_POLY8_C( 6), SIMDE_POLY8_C(185), SIMDE_POLY8_C( 62), SIMDE_POLY8_C(120), SIMDE_POLY8_C(135),
SIMDE_POLY8_C(246), SIMDE_POLY8_C(154), SIMDE_POLY8_C(151), SIMDE_POLY8_C(125), SIMDE_POLY8_C(238), SIMDE_POLY8_C(251), SIMDE_POLY8_C( 55), SIMDE_POLY8_C(207) },
{ SIMDE_POLY8_C(164), SIMDE_POLY8_C(162), SIMDE_POLY8_C(209), SIMDE_POLY8_C(146), SIMDE_POLY8_C( 47), SIMDE_POLY8_C(194), SIMDE_POLY8_C( 15), SIMDE_POLY8_C( 56),
SIMDE_POLY8_C( 21), SIMDE_POLY8_C( 79), SIMDE_POLY8_C(158), SIMDE_POLY8_C(218), SIMDE_POLY8_C(183), SIMDE_POLY8_C(102), SIMDE_POLY8_C(195), SIMDE_POLY8_C( 11) },
{ SIMDE_POLY8_C( 83), SIMDE_POLY8_C(164), SIMDE_POLY8_C(103), SIMDE_POLY8_C(162), SIMDE_POLY8_C( 62), SIMDE_POLY8_C(209), SIMDE_POLY8_C( 6), SIMDE_POLY8_C(146),
SIMDE_POLY8_C(185), SIMDE_POLY8_C( 47), SIMDE_POLY8_C( 62), SIMDE_POLY8_C(194), SIMDE_POLY8_C(120), SIMDE_POLY8_C( 15), SIMDE_POLY8_C(135), SIMDE_POLY8_C( 56),
SIMDE_POLY8_C(246), SIMDE_POLY8_C( 21), SIMDE_POLY8_C(154), SIMDE_POLY8_C( 79), SIMDE_POLY8_C(151), SIMDE_POLY8_C(158), SIMDE_POLY8_C(125), SIMDE_POLY8_C(218),
SIMDE_POLY8_C(238), SIMDE_POLY8_C(183), SIMDE_POLY8_C(251), SIMDE_POLY8_C(102), SIMDE_POLY8_C( 55), SIMDE_POLY8_C(195), SIMDE_POLY8_C(207), SIMDE_POLY8_C( 11) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_poly8x16x2_t r_ = { { simde_vld1q_p8(test_vec[i].r0),
simde_vld1q_p8(test_vec[i].r1) } };
simde_poly8_t a_[32];
simde_vst2q_p8(a_, r_);
simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));
}
return 0;
#else
for (int i = 0 ; i < 8 ; i++) {
simde_poly8x16_t a = simde_test_arm_neon_random_p8x16();
simde_poly8x16_t b = simde_test_arm_neon_random_p8x16();
simde_poly8x16x2_t c = {{a, b}};
simde_test_arm_neon_write_p8x16(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_p8x16(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_poly8_t buf[32];
simde_vst2q_p8(buf, c);
simde_test_codegen_write_vp8(2, sizeof(buf) / sizeof(buf[0]), buf,
SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vst2q_p16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
simde_poly16_t r0[8];
simde_poly16_t r1[8];
simde_poly16_t a[16];
} test_vec[] = {
{ { SIMDE_POLY16_C(14846), SIMDE_POLY16_C(33950), SIMDE_POLY16_C(30108), SIMDE_POLY16_C(26390), SIMDE_POLY16_C(33214), SIMDE_POLY16_C(35073), SIMDE_POLY16_C(46076), SIMDE_POLY16_C(64205) },
{ SIMDE_POLY16_C( 2100), SIMDE_POLY16_C(27059), SIMDE_POLY16_C(17140), SIMDE_POLY16_C(36502), SIMDE_POLY16_C(17361), SIMDE_POLY16_C(27325), SIMDE_POLY16_C(54528), SIMDE_POLY16_C(65053) },
{ SIMDE_POLY16_C(14846), SIMDE_POLY16_C( 2100), SIMDE_POLY16_C(33950), SIMDE_POLY16_C(27059), SIMDE_POLY16_C(30108), SIMDE_POLY16_C(17140), SIMDE_POLY16_C(26390), SIMDE_POLY16_C(36502),
SIMDE_POLY16_C(33214), SIMDE_POLY16_C(17361), SIMDE_POLY16_C(35073), SIMDE_POLY16_C(27325), SIMDE_POLY16_C(46076), SIMDE_POLY16_C(54528), SIMDE_POLY16_C(64205), SIMDE_POLY16_C(65053) } },
{ { SIMDE_POLY16_C(47886), SIMDE_POLY16_C(43651), SIMDE_POLY16_C(39216), SIMDE_POLY16_C(60946), SIMDE_POLY16_C( 4890), SIMDE_POLY16_C( 6007), SIMDE_POLY16_C(17862), SIMDE_POLY16_C(64017) },
{ SIMDE_POLY16_C(50253), SIMDE_POLY16_C(16995), SIMDE_POLY16_C(63750), SIMDE_POLY16_C(55248), SIMDE_POLY16_C(36156), SIMDE_POLY16_C(15425), SIMDE_POLY16_C(24162), SIMDE_POLY16_C(28731) },
{ SIMDE_POLY16_C(47886), SIMDE_POLY16_C(50253), SIMDE_POLY16_C(43651), SIMDE_POLY16_C(16995), SIMDE_POLY16_C(39216), SIMDE_POLY16_C(63750), SIMDE_POLY16_C(60946), SIMDE_POLY16_C(55248),
SIMDE_POLY16_C( 4890), SIMDE_POLY16_C(36156), SIMDE_POLY16_C( 6007), SIMDE_POLY16_C(15425), SIMDE_POLY16_C(17862), SIMDE_POLY16_C(24162), SIMDE_POLY16_C(64017), SIMDE_POLY16_C(28731) } },
{ { SIMDE_POLY16_C(48665), SIMDE_POLY16_C(18971), SIMDE_POLY16_C(11607), SIMDE_POLY16_C(28984), SIMDE_POLY16_C(45120), SIMDE_POLY16_C( 1672), SIMDE_POLY16_C(39413), SIMDE_POLY16_C(16896) },
{ SIMDE_POLY16_C(25438), SIMDE_POLY16_C(25732), SIMDE_POLY16_C(21596), SIMDE_POLY16_C(38972), SIMDE_POLY16_C(32225), SIMDE_POLY16_C(17365), SIMDE_POLY16_C( 4316), SIMDE_POLY16_C(62900) },
{ SIMDE_POLY16_C(48665), SIMDE_POLY16_C(25438), SIMDE_POLY16_C(18971), SIMDE_POLY16_C(25732), SIMDE_POLY16_C(11607), SIMDE_POLY16_C(21596), SIMDE_POLY16_C(28984), SIMDE_POLY16_C(38972),
SIMDE_POLY16_C(45120), SIMDE_POLY16_C(32225), SIMDE_POLY16_C( 1672), SIMDE_POLY16_C(17365), SIMDE_POLY16_C(39413), SIMDE_POLY16_C( 4316), SIMDE_POLY16_C(16896), SIMDE_POLY16_C(62900) } },
{ { SIMDE_POLY16_C(53198), SIMDE_POLY16_C( 9535), SIMDE_POLY16_C(30972), SIMDE_POLY16_C(15510), SIMDE_POLY16_C( 7976), SIMDE_POLY16_C( 7490), SIMDE_POLY16_C(17080), SIMDE_POLY16_C( 5727) },
{ SIMDE_POLY16_C(58533), SIMDE_POLY16_C( 379), SIMDE_POLY16_C(46904), SIMDE_POLY16_C( 6809), SIMDE_POLY16_C(28212), SIMDE_POLY16_C( 4189), SIMDE_POLY16_C( 4478), SIMDE_POLY16_C(19462) },
{ SIMDE_POLY16_C(53198), SIMDE_POLY16_C(58533), SIMDE_POLY16_C( 9535), SIMDE_POLY16_C( 379), SIMDE_POLY16_C(30972), SIMDE_POLY16_C(46904), SIMDE_POLY16_C(15510), SIMDE_POLY16_C( 6809),
SIMDE_POLY16_C( 7976), SIMDE_POLY16_C(28212), SIMDE_POLY16_C( 7490), SIMDE_POLY16_C( 4189), SIMDE_POLY16_C(17080), SIMDE_POLY16_C( 4478), SIMDE_POLY16_C( 5727), SIMDE_POLY16_C(19462) } },
{ { SIMDE_POLY16_C(17888), SIMDE_POLY16_C(56433), SIMDE_POLY16_C( 2237), SIMDE_POLY16_C(58648), SIMDE_POLY16_C(23079), SIMDE_POLY16_C(57090), SIMDE_POLY16_C(25244), SIMDE_POLY16_C(16886) },
{ SIMDE_POLY16_C(28998), SIMDE_POLY16_C(32322), SIMDE_POLY16_C(56360), SIMDE_POLY16_C(23704), SIMDE_POLY16_C(63050), SIMDE_POLY16_C(51565), SIMDE_POLY16_C(29447), SIMDE_POLY16_C(59413) },
{ SIMDE_POLY16_C(17888), SIMDE_POLY16_C(28998), SIMDE_POLY16_C(56433), SIMDE_POLY16_C(32322), SIMDE_POLY16_C( 2237), SIMDE_POLY16_C(56360), SIMDE_POLY16_C(58648), SIMDE_POLY16_C(23704),
SIMDE_POLY16_C(23079), SIMDE_POLY16_C(63050), SIMDE_POLY16_C(57090), SIMDE_POLY16_C(51565), SIMDE_POLY16_C(25244), SIMDE_POLY16_C(29447), SIMDE_POLY16_C(16886), SIMDE_POLY16_C(59413) } },
{ { SIMDE_POLY16_C(34744), SIMDE_POLY16_C(30404), SIMDE_POLY16_C(56719), SIMDE_POLY16_C(46683), SIMDE_POLY16_C(24119), SIMDE_POLY16_C(54421), SIMDE_POLY16_C(35776), SIMDE_POLY16_C( 1557) },
{ SIMDE_POLY16_C(22780), SIMDE_POLY16_C( 9348), SIMDE_POLY16_C( 7476), SIMDE_POLY16_C(32385), SIMDE_POLY16_C(60947), SIMDE_POLY16_C( 6727), SIMDE_POLY16_C(23905), SIMDE_POLY16_C( 6402) },
{ SIMDE_POLY16_C(34744), SIMDE_POLY16_C(22780), SIMDE_POLY16_C(30404), SIMDE_POLY16_C( 9348), SIMDE_POLY16_C(56719), SIMDE_POLY16_C( 7476), SIMDE_POLY16_C(46683), SIMDE_POLY16_C(32385),
SIMDE_POLY16_C(24119), SIMDE_POLY16_C(60947), SIMDE_POLY16_C(54421), SIMDE_POLY16_C( 6727), SIMDE_POLY16_C(35776), SIMDE_POLY16_C(23905), SIMDE_POLY16_C( 1557), SIMDE_POLY16_C( 6402) } },
{ { SIMDE_POLY16_C(51172), SIMDE_POLY16_C(29583), SIMDE_POLY16_C(60324), SIMDE_POLY16_C(56105), SIMDE_POLY16_C(48713), SIMDE_POLY16_C( 2479), SIMDE_POLY16_C(50506), SIMDE_POLY16_C(17935) },
{ SIMDE_POLY16_C(37661), SIMDE_POLY16_C(20843), SIMDE_POLY16_C(60592), SIMDE_POLY16_C(50127), SIMDE_POLY16_C( 6106), SIMDE_POLY16_C(15326), SIMDE_POLY16_C(57460), SIMDE_POLY16_C(22612) },
{ SIMDE_POLY16_C(51172), SIMDE_POLY16_C(37661), SIMDE_POLY16_C(29583), SIMDE_POLY16_C(20843), SIMDE_POLY16_C(60324), SIMDE_POLY16_C(60592), SIMDE_POLY16_C(56105), SIMDE_POLY16_C(50127),
SIMDE_POLY16_C(48713), SIMDE_POLY16_C( 6106), SIMDE_POLY16_C( 2479), SIMDE_POLY16_C(15326), SIMDE_POLY16_C(50506), SIMDE_POLY16_C(57460), SIMDE_POLY16_C(17935), SIMDE_POLY16_C(22612) } },
{ { SIMDE_POLY16_C(58535), SIMDE_POLY16_C(19403), SIMDE_POLY16_C(62671), SIMDE_POLY16_C( 6183), SIMDE_POLY16_C(54962), SIMDE_POLY16_C(64545), SIMDE_POLY16_C(12443), SIMDE_POLY16_C(47171) },
{ SIMDE_POLY16_C(44739), SIMDE_POLY16_C(29705), SIMDE_POLY16_C(55706), SIMDE_POLY16_C(29751), SIMDE_POLY16_C( 5616), SIMDE_POLY16_C(25775), SIMDE_POLY16_C( 1014), SIMDE_POLY16_C(40380) },
{ SIMDE_POLY16_C(58535), SIMDE_POLY16_C(44739), SIMDE_POLY16_C(19403), SIMDE_POLY16_C(29705), SIMDE_POLY16_C(62671), SIMDE_POLY16_C(55706), SIMDE_POLY16_C( 6183), SIMDE_POLY16_C(29751),
SIMDE_POLY16_C(54962), SIMDE_POLY16_C( 5616), SIMDE_POLY16_C(64545), SIMDE_POLY16_C(25775), SIMDE_POLY16_C(12443), SIMDE_POLY16_C( 1014), SIMDE_POLY16_C(47171), SIMDE_POLY16_C(40380) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_poly16x8x2_t r_ = { { simde_vld1q_p16(test_vec[i].r0),
simde_vld1q_p16(test_vec[i].r1) } };
simde_poly16_t a_[16];
simde_vst2q_p16(a_, r_);
simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));
}
return 0;
#else
for (int i = 0 ; i < 8 ; i++) {
simde_poly16x8_t a = simde_test_arm_neon_random_p16x8();
simde_poly16x8_t b = simde_test_arm_neon_random_p16x8();
simde_poly16x8x2_t c = {{a, b}};
simde_test_arm_neon_write_p16x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_p16x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_poly16_t buf[16];
simde_vst2q_p16(buf, c);
simde_test_codegen_write_vp16(2, sizeof(buf) / sizeof(buf[0]), buf,
SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vst2q_p64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
simde_poly64_t r0[2];
simde_poly64_t r1[2];
simde_poly64_t a[4];
} test_vec[] = {
{ { SIMDE_POLY64_C( 4631073650736452430), SIMDE_POLY64_C( 97977723505869293) },
{ SIMDE_POLY64_C( 9494239399973030355), SIMDE_POLY64_C(17079592208315254370) },
{ SIMDE_POLY64_C( 4631073650736452430), SIMDE_POLY64_C( 9494239399973030355), SIMDE_POLY64_C( 97977723505869293), SIMDE_POLY64_C(17079592208315254370) } },
{ { SIMDE_POLY64_C(11920212063241492282), SIMDE_POLY64_C(14939688989115999515) },
{ SIMDE_POLY64_C(17251338049259715960), SIMDE_POLY64_C(12944237555739824663) },
{ SIMDE_POLY64_C(11920212063241492282), SIMDE_POLY64_C(17251338049259715960), SIMDE_POLY64_C(14939688989115999515), SIMDE_POLY64_C(12944237555739824663) } },
{ { SIMDE_POLY64_C(12420730486100293634), SIMDE_POLY64_C( 6412093291273154866) },
{ SIMDE_POLY64_C( 8218971854782483346), SIMDE_POLY64_C( 7018520676896617274) },
{ SIMDE_POLY64_C(12420730486100293634), SIMDE_POLY64_C( 8218971854782483346), SIMDE_POLY64_C( 6412093291273154866), SIMDE_POLY64_C( 7018520676896617274) } },
{ { SIMDE_POLY64_C(14159733474488698179), SIMDE_POLY64_C( 7504385485434880491) },
{ SIMDE_POLY64_C( 4902051691601814329), SIMDE_POLY64_C( 4506236235466354634) },
{ SIMDE_POLY64_C(14159733474488698179), SIMDE_POLY64_C( 4902051691601814329), SIMDE_POLY64_C( 7504385485434880491), SIMDE_POLY64_C( 4506236235466354634) } },
{ { SIMDE_POLY64_C( 790827166552269987), SIMDE_POLY64_C( 1248898806281857558) },
{ SIMDE_POLY64_C( 4372060045163551837), SIMDE_POLY64_C(11823899563383956700) },
{ SIMDE_POLY64_C( 790827166552269987), SIMDE_POLY64_C( 4372060045163551837), SIMDE_POLY64_C( 1248898806281857558), SIMDE_POLY64_C(11823899563383956700) } },
{ { SIMDE_POLY64_C(15401135067192961427), SIMDE_POLY64_C(16836450525011612093) },
{ SIMDE_POLY64_C(15465922946745322994), SIMDE_POLY64_C( 9748257948440594082) },
{ SIMDE_POLY64_C(15401135067192961427), SIMDE_POLY64_C(15465922946745322994), SIMDE_POLY64_C(16836450525011612093), SIMDE_POLY64_C( 9748257948440594082) } },
{ { SIMDE_POLY64_C(12790773748407542253), SIMDE_POLY64_C( 5403173140480541318) },
{ SIMDE_POLY64_C(17080834295669411130), SIMDE_POLY64_C( 7697452745763109206) },
{ SIMDE_POLY64_C(12790773748407542253), SIMDE_POLY64_C(17080834295669411130), SIMDE_POLY64_C( 5403173140480541318), SIMDE_POLY64_C( 7697452745763109206) } },
{ { SIMDE_POLY64_C( 9628581653808286714), SIMDE_POLY64_C( 972095629878093274) },
{ SIMDE_POLY64_C(15138935343102962912), SIMDE_POLY64_C( 8930055876163446790) },
{ SIMDE_POLY64_C( 9628581653808286714), SIMDE_POLY64_C(15138935343102962912), SIMDE_POLY64_C( 972095629878093274), SIMDE_POLY64_C( 8930055876163446790) } }
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_poly64x2x2_t r_ = { { simde_vld1q_p64(test_vec[i].r0),
simde_vld1q_p64(test_vec[i].r1) } };
simde_poly64_t a_[4];
simde_vst2q_p64(a_, r_);
simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));
}
return 0;
#else
for (int i = 0 ; i < 8 ; i++) {
simde_poly64x2_t a = simde_test_arm_neon_random_p64x2();
simde_poly64x2_t b = simde_test_arm_neon_random_p64x2();
simde_poly64x2x2_t c = {{a, b}};
simde_test_arm_neon_write_p64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_p64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_poly64_t buf[4];
simde_vst2q_p64(buf, c);
simde_test_codegen_write_vp64(2, sizeof(buf) / sizeof(buf[0]), buf,
SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vst2_bf16 (SIMDE_MUNIT_TEST_ARGS) {
struct {
simde_bfloat16 r0[4];
simde_bfloat16 r1[4];
simde_bfloat16 a[8];
} test_vec[] = {
{ { SIMDE_BFLOAT16_VALUE(-4.40), SIMDE_BFLOAT16_VALUE(6.50), SIMDE_BFLOAT16_VALUE(-1.60), SIMDE_BFLOAT16_VALUE(5.90) },
{ SIMDE_BFLOAT16_VALUE(1.60), SIMDE_BFLOAT16_VALUE(-0.50), SIMDE_BFLOAT16_VALUE(0.90), SIMDE_BFLOAT16_VALUE(-6.80) },
{ SIMDE_BFLOAT16_VALUE(-4.40), SIMDE_BFLOAT16_VALUE(1.60), SIMDE_BFLOAT16_VALUE(6.50), SIMDE_BFLOAT16_VALUE(-0.50), SIMDE_BFLOAT16_VALUE(-1.60), SIMDE_BFLOAT16_VALUE(0.90), SIMDE_BFLOAT16_VALUE(5.90), SIMDE_BFLOAT16_VALUE(-6.80) } },
{ { SIMDE_BFLOAT16_VALUE(-1.50), SIMDE_BFLOAT16_VALUE(-2.80), SIMDE_BFLOAT16_VALUE(5.20), SIMDE_BFLOAT16_VALUE(1.50) },
{ SIMDE_BFLOAT16_VALUE(2.60), SIMDE_BFLOAT16_VALUE(4.80), SIMDE_BFLOAT16_VALUE(3.20), SIMDE_BFLOAT16_VALUE(8.90) },
{ SIMDE_BFLOAT16_VALUE(-1.50), SIMDE_BFLOAT16_VALUE(2.60), SIMDE_BFLOAT16_VALUE(-2.80), SIMDE_BFLOAT16_VALUE(4.80), SIMDE_BFLOAT16_VALUE(5.20), SIMDE_BFLOAT16_VALUE(3.20), SIMDE_BFLOAT16_VALUE(1.50), SIMDE_BFLOAT16_VALUE(8.90) } },
{ { SIMDE_BFLOAT16_VALUE(-1.10), SIMDE_BFLOAT16_VALUE(-7.60), SIMDE_BFLOAT16_VALUE(-4.60), SIMDE_BFLOAT16_VALUE(0.20) },
{ SIMDE_BFLOAT16_VALUE(-2.60), SIMDE_BFLOAT16_VALUE(7.70), SIMDE_BFLOAT16_VALUE(-0.80), SIMDE_BFLOAT16_VALUE(5.00) },
{ SIMDE_BFLOAT16_VALUE(-1.10), SIMDE_BFLOAT16_VALUE(-2.60), SIMDE_BFLOAT16_VALUE(-7.60), SIMDE_BFLOAT16_VALUE(7.70), SIMDE_BFLOAT16_VALUE(-4.60), SIMDE_BFLOAT16_VALUE(-0.80), SIMDE_BFLOAT16_VALUE(0.20), SIMDE_BFLOAT16_VALUE(5.00) } },
{ { SIMDE_BFLOAT16_VALUE(-8.60), SIMDE_BFLOAT16_VALUE(-9.10), SIMDE_BFLOAT16_VALUE(2.90), SIMDE_BFLOAT16_VALUE(5.60) },
{ SIMDE_BFLOAT16_VALUE(-3.60), SIMDE_BFLOAT16_VALUE(-3.30), SIMDE_BFLOAT16_VALUE(2.20), SIMDE_BFLOAT16_VALUE(-6.00) },
{ SIMDE_BFLOAT16_VALUE(-8.60), SIMDE_BFLOAT16_VALUE(-3.60), SIMDE_BFLOAT16_VALUE(-9.10), SIMDE_BFLOAT16_VALUE(-3.30), SIMDE_BFLOAT16_VALUE(2.90), SIMDE_BFLOAT16_VALUE(2.20), SIMDE_BFLOAT16_VALUE(5.60), SIMDE_BFLOAT16_VALUE(-6.00) } },
{ { SIMDE_BFLOAT16_VALUE(-5.00), SIMDE_BFLOAT16_VALUE(-9.70), SIMDE_BFLOAT16_VALUE(-6.50), SIMDE_BFLOAT16_VALUE(-2.80) },
{ SIMDE_BFLOAT16_VALUE(0.70), SIMDE_BFLOAT16_VALUE(-9.40), SIMDE_BFLOAT16_VALUE(-5.20), SIMDE_BFLOAT16_VALUE(-2.80) },
{ SIMDE_BFLOAT16_VALUE(-5.00), SIMDE_BFLOAT16_VALUE(0.70), SIMDE_BFLOAT16_VALUE(-9.70), SIMDE_BFLOAT16_VALUE(-9.40), SIMDE_BFLOAT16_VALUE(-6.50), SIMDE_BFLOAT16_VALUE(-5.20), SIMDE_BFLOAT16_VALUE(-2.80), SIMDE_BFLOAT16_VALUE(-2.80) } },
{ { SIMDE_BFLOAT16_VALUE(-2.20), SIMDE_BFLOAT16_VALUE(-9.90), SIMDE_BFLOAT16_VALUE(-2.50), SIMDE_BFLOAT16_VALUE(-7.40) },
{ SIMDE_BFLOAT16_VALUE(-6.10), SIMDE_BFLOAT16_VALUE(4.40), SIMDE_BFLOAT16_VALUE(10.00), SIMDE_BFLOAT16_VALUE(9.20) },
{ SIMDE_BFLOAT16_VALUE(-2.20), SIMDE_BFLOAT16_VALUE(-6.10), SIMDE_BFLOAT16_VALUE(-9.90), SIMDE_BFLOAT16_VALUE(4.40), SIMDE_BFLOAT16_VALUE(-2.50), SIMDE_BFLOAT16_VALUE(10.00), SIMDE_BFLOAT16_VALUE(-7.40), SIMDE_BFLOAT16_VALUE(9.20) } },
{ { SIMDE_BFLOAT16_VALUE(1.20), SIMDE_BFLOAT16_VALUE(-2.30), SIMDE_BFLOAT16_VALUE(-3.50), SIMDE_BFLOAT16_VALUE(-0.90) },
{ SIMDE_BFLOAT16_VALUE(-3.70), SIMDE_BFLOAT16_VALUE(-0.50), SIMDE_BFLOAT16_VALUE(-5.50), SIMDE_BFLOAT16_VALUE(7.30) },
{ SIMDE_BFLOAT16_VALUE(1.20), SIMDE_BFLOAT16_VALUE(-3.70), SIMDE_BFLOAT16_VALUE(-2.30), SIMDE_BFLOAT16_VALUE(-0.50), SIMDE_BFLOAT16_VALUE(-3.50), SIMDE_BFLOAT16_VALUE(-5.50), SIMDE_BFLOAT16_VALUE(-0.90), SIMDE_BFLOAT16_VALUE(7.30) } },
{ { SIMDE_BFLOAT16_VALUE(-8.40), SIMDE_BFLOAT16_VALUE(-2.50), SIMDE_BFLOAT16_VALUE(-0.60), SIMDE_BFLOAT16_VALUE(0.20) },
{ SIMDE_BFLOAT16_VALUE(-1.70), SIMDE_BFLOAT16_VALUE(-3.70), SIMDE_BFLOAT16_VALUE(8.20), SIMDE_BFLOAT16_VALUE(4.20) },
{ SIMDE_BFLOAT16_VALUE(-8.40), SIMDE_BFLOAT16_VALUE(-1.70), SIMDE_BFLOAT16_VALUE(-2.50), SIMDE_BFLOAT16_VALUE(-3.70), SIMDE_BFLOAT16_VALUE(-0.60), SIMDE_BFLOAT16_VALUE(8.20), SIMDE_BFLOAT16_VALUE(0.20), SIMDE_BFLOAT16_VALUE(4.20) } },
{ { SIMDE_BFLOAT16_VALUE(-5.00), SIMDE_BFLOAT16_VALUE(8.80), SIMDE_BFLOAT16_VALUE(5.50), SIMDE_BFLOAT16_VALUE(-7.90) },
{ SIMDE_BFLOAT16_VALUE(-6.00), SIMDE_BFLOAT16_VALUE(-7.30), SIMDE_BFLOAT16_VALUE(9.30), SIMDE_BFLOAT16_VALUE(9.30) },
{ SIMDE_BFLOAT16_VALUE(-5.00), SIMDE_BFLOAT16_VALUE(-6.00), SIMDE_BFLOAT16_VALUE(8.80), SIMDE_BFLOAT16_VALUE(-7.30), SIMDE_BFLOAT16_VALUE(5.50), SIMDE_BFLOAT16_VALUE(9.30), SIMDE_BFLOAT16_VALUE(-7.90), SIMDE_BFLOAT16_VALUE(9.30) } },
{ { SIMDE_BFLOAT16_VALUE(-9.70), SIMDE_BFLOAT16_VALUE(-3.10), SIMDE_BFLOAT16_VALUE(-7.50), SIMDE_BFLOAT16_VALUE(9.60) },
{ SIMDE_BFLOAT16_VALUE(5.00), SIMDE_BFLOAT16_VALUE(-5.00), SIMDE_BFLOAT16_VALUE(-3.40), SIMDE_BFLOAT16_VALUE(0.40) },
{ SIMDE_BFLOAT16_VALUE(-9.70), SIMDE_BFLOAT16_VALUE(5.00), SIMDE_BFLOAT16_VALUE(-3.10), SIMDE_BFLOAT16_VALUE(-5.00), SIMDE_BFLOAT16_VALUE(-7.50), SIMDE_BFLOAT16_VALUE(-3.40), SIMDE_BFLOAT16_VALUE(9.60), SIMDE_BFLOAT16_VALUE(0.40) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_bfloat16x4x2_t r_ = { { simde_vld1_bf16(test_vec[i].r0),
simde_vld1_bf16(test_vec[i].r1) } };
simde_bfloat16 a_[8];
simde_vst2_bf16(a_, r_);
simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));
}
return 0;
}
static int
test_simde_vst2q_bf16 (SIMDE_MUNIT_TEST_ARGS) {
struct {
simde_bfloat16 r0[8];
simde_bfloat16 r1[8];
simde_bfloat16 a[16];
} test_vec[] = {
{ { SIMDE_BFLOAT16_VALUE(1.20), SIMDE_BFLOAT16_VALUE(-2.10), SIMDE_BFLOAT16_VALUE(-5.20), SIMDE_BFLOAT16_VALUE(6.00), SIMDE_BFLOAT16_VALUE(-2.60), SIMDE_BFLOAT16_VALUE(-7.50), SIMDE_BFLOAT16_VALUE(-0.90), SIMDE_BFLOAT16_VALUE(-2.10) },
{ SIMDE_BFLOAT16_VALUE(-5.90), SIMDE_BFLOAT16_VALUE(-2.10), SIMDE_BFLOAT16_VALUE(6.50), SIMDE_BFLOAT16_VALUE(9.60), SIMDE_BFLOAT16_VALUE(4.80), SIMDE_BFLOAT16_VALUE(-8.70), SIMDE_BFLOAT16_VALUE(0.20), SIMDE_BFLOAT16_VALUE(-5.80) },
{ SIMDE_BFLOAT16_VALUE(1.20), SIMDE_BFLOAT16_VALUE(-5.90), SIMDE_BFLOAT16_VALUE(-2.10), SIMDE_BFLOAT16_VALUE(-2.10), SIMDE_BFLOAT16_VALUE(-5.20), SIMDE_BFLOAT16_VALUE(6.50), SIMDE_BFLOAT16_VALUE(6.00), SIMDE_BFLOAT16_VALUE(9.60), SIMDE_BFLOAT16_VALUE(-2.60), SIMDE_BFLOAT16_VALUE(4.80), SIMDE_BFLOAT16_VALUE(-7.50), SIMDE_BFLOAT16_VALUE(-8.70), SIMDE_BFLOAT16_VALUE(-0.90), SIMDE_BFLOAT16_VALUE(0.20), SIMDE_BFLOAT16_VALUE(-2.10), SIMDE_BFLOAT16_VALUE(-5.80) } },
{ { SIMDE_BFLOAT16_VALUE(-6.80), SIMDE_BFLOAT16_VALUE(-7.90), SIMDE_BFLOAT16_VALUE(8.80), SIMDE_BFLOAT16_VALUE(-9.70), SIMDE_BFLOAT16_VALUE(5.20), SIMDE_BFLOAT16_VALUE(0.10), SIMDE_BFLOAT16_VALUE(7.60), SIMDE_BFLOAT16_VALUE(-9.80) },
{ SIMDE_BFLOAT16_VALUE(-6.70), SIMDE_BFLOAT16_VALUE(-7.30), SIMDE_BFLOAT16_VALUE(1.60), SIMDE_BFLOAT16_VALUE(8.00), SIMDE_BFLOAT16_VALUE(1.90), SIMDE_BFLOAT16_VALUE(3.70), SIMDE_BFLOAT16_VALUE(9.80), SIMDE_BFLOAT16_VALUE(-2.80) },
{ SIMDE_BFLOAT16_VALUE(-6.80), SIMDE_BFLOAT16_VALUE(-6.70), SIMDE_BFLOAT16_VALUE(-7.90), SIMDE_BFLOAT16_VALUE(-7.30), SIMDE_BFLOAT16_VALUE(8.80), SIMDE_BFLOAT16_VALUE(1.60), SIMDE_BFLOAT16_VALUE(-9.70), SIMDE_BFLOAT16_VALUE(8.00), SIMDE_BFLOAT16_VALUE(5.20), SIMDE_BFLOAT16_VALUE(1.90), SIMDE_BFLOAT16_VALUE(0.10), SIMDE_BFLOAT16_VALUE(3.70), SIMDE_BFLOAT16_VALUE(7.60), SIMDE_BFLOAT16_VALUE(9.80), SIMDE_BFLOAT16_VALUE(-9.80), SIMDE_BFLOAT16_VALUE(-2.80) } },
{ { SIMDE_BFLOAT16_VALUE(-9.70), SIMDE_BFLOAT16_VALUE(-4.90), SIMDE_BFLOAT16_VALUE(5.50), SIMDE_BFLOAT16_VALUE(6.70), SIMDE_BFLOAT16_VALUE(-8.90), SIMDE_BFLOAT16_VALUE(-8.90), SIMDE_BFLOAT16_VALUE(2.80), SIMDE_BFLOAT16_VALUE(3.90) },
{ SIMDE_BFLOAT16_VALUE(4.80), SIMDE_BFLOAT16_VALUE(-9.60), SIMDE_BFLOAT16_VALUE(6.10), SIMDE_BFLOAT16_VALUE(5.40), SIMDE_BFLOAT16_VALUE(-1.40), SIMDE_BFLOAT16_VALUE(-6.40), SIMDE_BFLOAT16_VALUE(0.40), SIMDE_BFLOAT16_VALUE(-0.70) },
{ SIMDE_BFLOAT16_VALUE(-9.70), SIMDE_BFLOAT16_VALUE(4.80), SIMDE_BFLOAT16_VALUE(-4.90), SIMDE_BFLOAT16_VALUE(-9.60), SIMDE_BFLOAT16_VALUE(5.50), SIMDE_BFLOAT16_VALUE(6.10), SIMDE_BFLOAT16_VALUE(6.70), SIMDE_BFLOAT16_VALUE(5.40), SIMDE_BFLOAT16_VALUE(-8.90), SIMDE_BFLOAT16_VALUE(-1.40), SIMDE_BFLOAT16_VALUE(-8.90), SIMDE_BFLOAT16_VALUE(-6.40), SIMDE_BFLOAT16_VALUE(2.80), SIMDE_BFLOAT16_VALUE(0.40), SIMDE_BFLOAT16_VALUE(3.90), SIMDE_BFLOAT16_VALUE(-0.70) } },
{ { SIMDE_BFLOAT16_VALUE(-2.70), SIMDE_BFLOAT16_VALUE(1.50), SIMDE_BFLOAT16_VALUE(3.30), SIMDE_BFLOAT16_VALUE(-7.40), SIMDE_BFLOAT16_VALUE(9.40), SIMDE_BFLOAT16_VALUE(2.10), SIMDE_BFLOAT16_VALUE(-2.00), SIMDE_BFLOAT16_VALUE(-9.90) },
{ SIMDE_BFLOAT16_VALUE(-3.80), SIMDE_BFLOAT16_VALUE(-0.20), SIMDE_BFLOAT16_VALUE(-5.50), SIMDE_BFLOAT16_VALUE(0.60), SIMDE_BFLOAT16_VALUE(0.50), SIMDE_BFLOAT16_VALUE(2.60), SIMDE_BFLOAT16_VALUE(7.90), SIMDE_BFLOAT16_VALUE(-6.80) },
{ SIMDE_BFLOAT16_VALUE(-2.70), SIMDE_BFLOAT16_VALUE(-3.80), SIMDE_BFLOAT16_VALUE(1.50), SIMDE_BFLOAT16_VALUE(-0.20), SIMDE_BFLOAT16_VALUE(3.30), SIMDE_BFLOAT16_VALUE(-5.50), SIMDE_BFLOAT16_VALUE(-7.40), SIMDE_BFLOAT16_VALUE(0.60), SIMDE_BFLOAT16_VALUE(9.40), SIMDE_BFLOAT16_VALUE(0.50), SIMDE_BFLOAT16_VALUE(2.10), SIMDE_BFLOAT16_VALUE(2.60), SIMDE_BFLOAT16_VALUE(-2.00), SIMDE_BFLOAT16_VALUE(7.90), SIMDE_BFLOAT16_VALUE(-9.90), SIMDE_BFLOAT16_VALUE(-6.80) } },
{ { SIMDE_BFLOAT16_VALUE(4.60), SIMDE_BFLOAT16_VALUE(9.20), SIMDE_BFLOAT16_VALUE(5.40), SIMDE_BFLOAT16_VALUE(-6.10), SIMDE_BFLOAT16_VALUE(-9.60), SIMDE_BFLOAT16_VALUE(2.10), SIMDE_BFLOAT16_VALUE(-5.10), SIMDE_BFLOAT16_VALUE(7.80) },
{ SIMDE_BFLOAT16_VALUE(0.90), SIMDE_BFLOAT16_VALUE(4.50), SIMDE_BFLOAT16_VALUE(-2.00), SIMDE_BFLOAT16_VALUE(-8.00), SIMDE_BFLOAT16_VALUE(-9.50), SIMDE_BFLOAT16_VALUE(-5.20), SIMDE_BFLOAT16_VALUE(3.90), SIMDE_BFLOAT16_VALUE(0.80) },
{ SIMDE_BFLOAT16_VALUE(4.60), SIMDE_BFLOAT16_VALUE(0.90), SIMDE_BFLOAT16_VALUE(9.20), SIMDE_BFLOAT16_VALUE(4.50), SIMDE_BFLOAT16_VALUE(5.40), SIMDE_BFLOAT16_VALUE(-2.00), SIMDE_BFLOAT16_VALUE(-6.10), SIMDE_BFLOAT16_VALUE(-8.00), SIMDE_BFLOAT16_VALUE(-9.60), SIMDE_BFLOAT16_VALUE(-9.50), SIMDE_BFLOAT16_VALUE(2.10), SIMDE_BFLOAT16_VALUE(-5.20), SIMDE_BFLOAT16_VALUE(-5.10), SIMDE_BFLOAT16_VALUE(3.90), SIMDE_BFLOAT16_VALUE(7.80), SIMDE_BFLOAT16_VALUE(0.80) } },
{ { SIMDE_BFLOAT16_VALUE(10.00), SIMDE_BFLOAT16_VALUE(-7.60), SIMDE_BFLOAT16_VALUE(-1.20), SIMDE_BFLOAT16_VALUE(5.10), SIMDE_BFLOAT16_VALUE(6.10), SIMDE_BFLOAT16_VALUE(4.50), SIMDE_BFLOAT16_VALUE(1.40), SIMDE_BFLOAT16_VALUE(-5.50) },
{ SIMDE_BFLOAT16_VALUE(3.90), SIMDE_BFLOAT16_VALUE(-5.10), SIMDE_BFLOAT16_VALUE(1.10), SIMDE_BFLOAT16_VALUE(0.00), SIMDE_BFLOAT16_VALUE(1.00), SIMDE_BFLOAT16_VALUE(4.20), SIMDE_BFLOAT16_VALUE(3.20), SIMDE_BFLOAT16_VALUE(-8.50) },
{ SIMDE_BFLOAT16_VALUE(10.00), SIMDE_BFLOAT16_VALUE(3.90), SIMDE_BFLOAT16_VALUE(-7.60), SIMDE_BFLOAT16_VALUE(-5.10), SIMDE_BFLOAT16_VALUE(-1.20), SIMDE_BFLOAT16_VALUE(1.10), SIMDE_BFLOAT16_VALUE(5.10), SIMDE_BFLOAT16_VALUE(0.00), SIMDE_BFLOAT16_VALUE(6.10), SIMDE_BFLOAT16_VALUE(1.00), SIMDE_BFLOAT16_VALUE(4.50), SIMDE_BFLOAT16_VALUE(4.20), SIMDE_BFLOAT16_VALUE(1.40), SIMDE_BFLOAT16_VALUE(3.20), SIMDE_BFLOAT16_VALUE(-5.50), SIMDE_BFLOAT16_VALUE(-8.50) } },
{ { SIMDE_BFLOAT16_VALUE(9.30), SIMDE_BFLOAT16_VALUE(2.40), SIMDE_BFLOAT16_VALUE(7.90), SIMDE_BFLOAT16_VALUE(-3.10), SIMDE_BFLOAT16_VALUE(-0.20), SIMDE_BFLOAT16_VALUE(-1.80), SIMDE_BFLOAT16_VALUE(-7.10), SIMDE_BFLOAT16_VALUE(-5.00) },
{ SIMDE_BFLOAT16_VALUE(8.10), SIMDE_BFLOAT16_VALUE(5.20), SIMDE_BFLOAT16_VALUE(3.80), SIMDE_BFLOAT16_VALUE(0.30), SIMDE_BFLOAT16_VALUE(-4.20), SIMDE_BFLOAT16_VALUE(-8.30), SIMDE_BFLOAT16_VALUE(9.90), SIMDE_BFLOAT16_VALUE(5.80) },
{ SIMDE_BFLOAT16_VALUE(9.30), SIMDE_BFLOAT16_VALUE(8.10), SIMDE_BFLOAT16_VALUE(2.40), SIMDE_BFLOAT16_VALUE(5.20), SIMDE_BFLOAT16_VALUE(7.90), SIMDE_BFLOAT16_VALUE(3.80), SIMDE_BFLOAT16_VALUE(-3.10), SIMDE_BFLOAT16_VALUE(0.30), SIMDE_BFLOAT16_VALUE(-0.20), SIMDE_BFLOAT16_VALUE(-4.20), SIMDE_BFLOAT16_VALUE(-1.80), SIMDE_BFLOAT16_VALUE(-8.30), SIMDE_BFLOAT16_VALUE(-7.10), SIMDE_BFLOAT16_VALUE(9.90), SIMDE_BFLOAT16_VALUE(-5.00), SIMDE_BFLOAT16_VALUE(5.80) } },
{ { SIMDE_BFLOAT16_VALUE(9.30), SIMDE_BFLOAT16_VALUE(3.10), SIMDE_BFLOAT16_VALUE(8.20), SIMDE_BFLOAT16_VALUE(9.70), SIMDE_BFLOAT16_VALUE(-5.00), SIMDE_BFLOAT16_VALUE(0.90), SIMDE_BFLOAT16_VALUE(-7.20), SIMDE_BFLOAT16_VALUE(-4.20) },
{ SIMDE_BFLOAT16_VALUE(8.90), SIMDE_BFLOAT16_VALUE(8.00), SIMDE_BFLOAT16_VALUE(-0.10), SIMDE_BFLOAT16_VALUE(-3.40), SIMDE_BFLOAT16_VALUE(4.20), SIMDE_BFLOAT16_VALUE(7.80), SIMDE_BFLOAT16_VALUE(2.20), SIMDE_BFLOAT16_VALUE(-6.00) },
{ SIMDE_BFLOAT16_VALUE(9.30), SIMDE_BFLOAT16_VALUE(8.90), SIMDE_BFLOAT16_VALUE(3.10), SIMDE_BFLOAT16_VALUE(8.00), SIMDE_BFLOAT16_VALUE(8.20), SIMDE_BFLOAT16_VALUE(-0.10), SIMDE_BFLOAT16_VALUE(9.70), SIMDE_BFLOAT16_VALUE(-3.40), SIMDE_BFLOAT16_VALUE(-5.00), SIMDE_BFLOAT16_VALUE(4.20), SIMDE_BFLOAT16_VALUE(0.90), SIMDE_BFLOAT16_VALUE(7.80), SIMDE_BFLOAT16_VALUE(-7.20), SIMDE_BFLOAT16_VALUE(2.20), SIMDE_BFLOAT16_VALUE(-4.20), SIMDE_BFLOAT16_VALUE(-6.00) } },
{ { SIMDE_BFLOAT16_VALUE(-6.90), SIMDE_BFLOAT16_VALUE(4.60), SIMDE_BFLOAT16_VALUE(-2.80), SIMDE_BFLOAT16_VALUE(-1.00), SIMDE_BFLOAT16_VALUE(3.80), SIMDE_BFLOAT16_VALUE(-4.90), SIMDE_BFLOAT16_VALUE(-8.50), SIMDE_BFLOAT16_VALUE(-10.00) },
{ SIMDE_BFLOAT16_VALUE(-7.50), SIMDE_BFLOAT16_VALUE(2.30), SIMDE_BFLOAT16_VALUE(2.80), SIMDE_BFLOAT16_VALUE(3.30), SIMDE_BFLOAT16_VALUE(-0.80), SIMDE_BFLOAT16_VALUE(-2.00), SIMDE_BFLOAT16_VALUE(-4.80), SIMDE_BFLOAT16_VALUE(-8.80) },
{ SIMDE_BFLOAT16_VALUE(-6.90), SIMDE_BFLOAT16_VALUE(-7.50), SIMDE_BFLOAT16_VALUE(4.60), SIMDE_BFLOAT16_VALUE(2.30), SIMDE_BFLOAT16_VALUE(-2.80), SIMDE_BFLOAT16_VALUE(2.80), SIMDE_BFLOAT16_VALUE(-1.00), SIMDE_BFLOAT16_VALUE(3.30), SIMDE_BFLOAT16_VALUE(3.80), SIMDE_BFLOAT16_VALUE(-0.80), SIMDE_BFLOAT16_VALUE(-4.90), SIMDE_BFLOAT16_VALUE(-2.00), SIMDE_BFLOAT16_VALUE(-8.50), SIMDE_BFLOAT16_VALUE(-4.80), SIMDE_BFLOAT16_VALUE(-10.00), SIMDE_BFLOAT16_VALUE(-8.80) } },
{ { SIMDE_BFLOAT16_VALUE(4.20), SIMDE_BFLOAT16_VALUE(5.50), SIMDE_BFLOAT16_VALUE(3.10), SIMDE_BFLOAT16_VALUE(-8.20), SIMDE_BFLOAT16_VALUE(0.10), SIMDE_BFLOAT16_VALUE(2.80), SIMDE_BFLOAT16_VALUE(9.40), SIMDE_BFLOAT16_VALUE(9.10) },
{ SIMDE_BFLOAT16_VALUE(6.60), SIMDE_BFLOAT16_VALUE(2.10), SIMDE_BFLOAT16_VALUE(-8.90), SIMDE_BFLOAT16_VALUE(-6.70), SIMDE_BFLOAT16_VALUE(-4.00), SIMDE_BFLOAT16_VALUE(-2.60), SIMDE_BFLOAT16_VALUE(-9.20), SIMDE_BFLOAT16_VALUE(-3.20) },
{ SIMDE_BFLOAT16_VALUE(4.20), SIMDE_BFLOAT16_VALUE(6.60), SIMDE_BFLOAT16_VALUE(5.50), SIMDE_BFLOAT16_VALUE(2.10), SIMDE_BFLOAT16_VALUE(3.10), SIMDE_BFLOAT16_VALUE(-8.90), SIMDE_BFLOAT16_VALUE(-8.20), SIMDE_BFLOAT16_VALUE(-6.70), SIMDE_BFLOAT16_VALUE(0.10), SIMDE_BFLOAT16_VALUE(-4.00), SIMDE_BFLOAT16_VALUE(2.80), SIMDE_BFLOAT16_VALUE(-2.60), SIMDE_BFLOAT16_VALUE(9.40), SIMDE_BFLOAT16_VALUE(-9.20), SIMDE_BFLOAT16_VALUE(9.10), SIMDE_BFLOAT16_VALUE(-3.20) } }
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_bfloat16x8x2_t r_ = { { simde_vld1q_bf16(test_vec[i].r0),
simde_vld1q_bf16(test_vec[i].r1) } };
simde_bfloat16 a_[16];
simde_vst2q_bf16(a_, r_);
simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));
}
return 0;
}
#endif /* !defined(SIMDE_BUG_INTEL_857088) */
SIMDE_TEST_FUNC_LIST_BEGIN
#if !defined(SIMDE_BUG_INTEL_857088)
SIMDE_TEST_FUNC_LIST_ENTRY(vst2_f16)
SIMDE_TEST_FUNC_LIST_ENTRY(vst2_f32)
SIMDE_TEST_FUNC_LIST_ENTRY(vst2_f64)
SIMDE_TEST_FUNC_LIST_ENTRY(vst2_s8)
@ -1420,6 +2067,7 @@ SIMDE_TEST_FUNC_LIST_ENTRY(vst2_u16)
SIMDE_TEST_FUNC_LIST_ENTRY(vst2_u32)
SIMDE_TEST_FUNC_LIST_ENTRY(vst2_u64)
SIMDE_TEST_FUNC_LIST_ENTRY(vst2q_f16)
SIMDE_TEST_FUNC_LIST_ENTRY(vst2q_f32)
SIMDE_TEST_FUNC_LIST_ENTRY(vst2q_f64)
SIMDE_TEST_FUNC_LIST_ENTRY(vst2q_s8)
@ -1430,6 +2078,15 @@ SIMDE_TEST_FUNC_LIST_ENTRY(vst2q_u8)
SIMDE_TEST_FUNC_LIST_ENTRY(vst2q_u16)
SIMDE_TEST_FUNC_LIST_ENTRY(vst2q_u32)
SIMDE_TEST_FUNC_LIST_ENTRY(vst2q_u64)
SIMDE_TEST_FUNC_LIST_ENTRY(vst2_p8)
SIMDE_TEST_FUNC_LIST_ENTRY(vst2_p16)
SIMDE_TEST_FUNC_LIST_ENTRY(vst2_p64)
SIMDE_TEST_FUNC_LIST_ENTRY(vst2q_p8)
SIMDE_TEST_FUNC_LIST_ENTRY(vst2q_p16)
SIMDE_TEST_FUNC_LIST_ENTRY(vst2q_p64)
SIMDE_TEST_FUNC_LIST_ENTRY(vst2_bf16)
SIMDE_TEST_FUNC_LIST_ENTRY(vst2q_bf16)
#endif /* !defined(SIMDE_BUG_INTEL_857088) */
SIMDE_TEST_FUNC_LIST_END