#define SIMDE_TEST_ARM_NEON_INSN st1_x4
#include "test/test.h"
#include "test-neon.h"
#include "../../../simde/arm/neon/st1_x4.h"
#if !defined(SIMDE_BUG_INTEL_857088)
static int
test_simde_vst1_f16_x4 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
simde_float16_t val[4][4];
simde_float16_t r[16];
} test_vec[] = {
{ { { SIMDE_FLOAT16_VALUE( 82.328), SIMDE_FLOAT16_VALUE( 70.920), SIMDE_FLOAT16_VALUE( - 2.164), SIMDE_FLOAT16_VALUE( 20.248) },
{ SIMDE_FLOAT16_VALUE( 17.827), SIMDE_FLOAT16_VALUE( - 14.465), SIMDE_FLOAT16_VALUE( - 88.806), SIMDE_FLOAT16_VALUE( 79.077) },
{ SIMDE_FLOAT16_VALUE( 1.568), SIMDE_FLOAT16_VALUE( - 20.954), SIMDE_FLOAT16_VALUE( - 34.479), SIMDE_FLOAT16_VALUE( - 40.339) },
{ SIMDE_FLOAT16_VALUE( 35.388), SIMDE_FLOAT16_VALUE( 7.745), SIMDE_FLOAT16_VALUE( 48.873), SIMDE_FLOAT16_VALUE( - 89.095) } },
{ SIMDE_FLOAT16_VALUE( 82.328), SIMDE_FLOAT16_VALUE( 70.920), SIMDE_FLOAT16_VALUE( - 2.164), SIMDE_FLOAT16_VALUE( 20.248),
SIMDE_FLOAT16_VALUE( 17.827), SIMDE_FLOAT16_VALUE( - 14.465), SIMDE_FLOAT16_VALUE( - 88.806), SIMDE_FLOAT16_VALUE( 79.077),
SIMDE_FLOAT16_VALUE( 1.568), SIMDE_FLOAT16_VALUE( - 20.954), SIMDE_FLOAT16_VALUE( - 34.479), SIMDE_FLOAT16_VALUE( - 40.339),
SIMDE_FLOAT16_VALUE( 35.388), SIMDE_FLOAT16_VALUE( 7.745), SIMDE_FLOAT16_VALUE( 48.873), SIMDE_FLOAT16_VALUE( - 89.095) } },
{ { { SIMDE_FLOAT16_VALUE( - 85.226), SIMDE_FLOAT16_VALUE( 68.050), SIMDE_FLOAT16_VALUE( - 79.246), SIMDE_FLOAT16_VALUE( - 6.999) },
{ SIMDE_FLOAT16_VALUE( - 57.697), SIMDE_FLOAT16_VALUE( - 37.357), SIMDE_FLOAT16_VALUE( - 77.997), SIMDE_FLOAT16_VALUE( - 49.541) },
{ SIMDE_FLOAT16_VALUE( - 97.845), SIMDE_FLOAT16_VALUE( - 58.594), SIMDE_FLOAT16_VALUE( 49.242), SIMDE_FLOAT16_VALUE( 38.316) },
{ SIMDE_FLOAT16_VALUE( - 4.874), SIMDE_FLOAT16_VALUE( 31.136), SIMDE_FLOAT16_VALUE( 51.676), SIMDE_FLOAT16_VALUE( - 89.351) } },
{ SIMDE_FLOAT16_VALUE( - 85.226), SIMDE_FLOAT16_VALUE( 68.050), SIMDE_FLOAT16_VALUE( - 79.246), SIMDE_FLOAT16_VALUE( - 6.999),
SIMDE_FLOAT16_VALUE( - 57.697), SIMDE_FLOAT16_VALUE( - 37.357), SIMDE_FLOAT16_VALUE( - 77.997), SIMDE_FLOAT16_VALUE( - 49.541),
SIMDE_FLOAT16_VALUE( - 97.845), SIMDE_FLOAT16_VALUE( - 58.594), SIMDE_FLOAT16_VALUE( 49.242), SIMDE_FLOAT16_VALUE( 38.316),
SIMDE_FLOAT16_VALUE( - 4.874), SIMDE_FLOAT16_VALUE( 31.136), SIMDE_FLOAT16_VALUE( 51.676), SIMDE_FLOAT16_VALUE( - 89.351) } },
{ { { SIMDE_FLOAT16_VALUE( - 30.265), SIMDE_FLOAT16_VALUE( - 14.175), SIMDE_FLOAT16_VALUE( 36.709), SIMDE_FLOAT16_VALUE( 19.621) },
{ SIMDE_FLOAT16_VALUE( 43.887), SIMDE_FLOAT16_VALUE( - 72.313), SIMDE_FLOAT16_VALUE( 75.465), SIMDE_FLOAT16_VALUE( - 60.500) },
{ SIMDE_FLOAT16_VALUE( - 4.007), SIMDE_FLOAT16_VALUE( 97.670), SIMDE_FLOAT16_VALUE( - 48.236), SIMDE_FLOAT16_VALUE( 41.558) },
{ SIMDE_FLOAT16_VALUE( - 87.828), SIMDE_FLOAT16_VALUE( 55.865), SIMDE_FLOAT16_VALUE( 40.049), SIMDE_FLOAT16_VALUE( - 99.926) } },
{ SIMDE_FLOAT16_VALUE( - 30.265), SIMDE_FLOAT16_VALUE( - 14.175), SIMDE_FLOAT16_VALUE( 36.709), SIMDE_FLOAT16_VALUE( 19.621),
SIMDE_FLOAT16_VALUE( 43.887), SIMDE_FLOAT16_VALUE( - 72.313), SIMDE_FLOAT16_VALUE( 75.465), SIMDE_FLOAT16_VALUE( - 60.500),
SIMDE_FLOAT16_VALUE( - 4.007), SIMDE_FLOAT16_VALUE( 97.670), SIMDE_FLOAT16_VALUE( - 48.236), SIMDE_FLOAT16_VALUE( 41.558),
SIMDE_FLOAT16_VALUE( - 87.828), SIMDE_FLOAT16_VALUE( 55.865), SIMDE_FLOAT16_VALUE( 40.049), SIMDE_FLOAT16_VALUE( - 99.926) } },
{ { { SIMDE_FLOAT16_VALUE( - 44.272), SIMDE_FLOAT16_VALUE( 10.085), SIMDE_FLOAT16_VALUE( - 12.450), SIMDE_FLOAT16_VALUE( 58.234) },
{ SIMDE_FLOAT16_VALUE( - 92.323), SIMDE_FLOAT16_VALUE( - 72.811), SIMDE_FLOAT16_VALUE( - 75.942), SIMDE_FLOAT16_VALUE( - 33.709) },
{ SIMDE_FLOAT16_VALUE( - 54.556), SIMDE_FLOAT16_VALUE( - 96.713), SIMDE_FLOAT16_VALUE( - 44.482), SIMDE_FLOAT16_VALUE( 86.965) },
{ SIMDE_FLOAT16_VALUE( 91.324), SIMDE_FLOAT16_VALUE( - 40.202), SIMDE_FLOAT16_VALUE( - 14.814), SIMDE_FLOAT16_VALUE( 88.549) } },
{ SIMDE_FLOAT16_VALUE( - 44.272), SIMDE_FLOAT16_VALUE( 10.085), SIMDE_FLOAT16_VALUE( - 12.450), SIMDE_FLOAT16_VALUE( 58.234),
SIMDE_FLOAT16_VALUE( - 92.323), SIMDE_FLOAT16_VALUE( - 72.811), SIMDE_FLOAT16_VALUE( - 75.942), SIMDE_FLOAT16_VALUE( - 33.709),
SIMDE_FLOAT16_VALUE( - 54.556), SIMDE_FLOAT16_VALUE( - 96.713), SIMDE_FLOAT16_VALUE( - 44.482), SIMDE_FLOAT16_VALUE( 86.965),
SIMDE_FLOAT16_VALUE( 91.324), SIMDE_FLOAT16_VALUE( - 40.202), SIMDE_FLOAT16_VALUE( - 14.814), SIMDE_FLOAT16_VALUE( 88.549) } },
{ { { SIMDE_FLOAT16_VALUE( 2.562), SIMDE_FLOAT16_VALUE( - 38.287), SIMDE_FLOAT16_VALUE( - 35.816), SIMDE_FLOAT16_VALUE( 15.466) },
{ SIMDE_FLOAT16_VALUE( 18.376), SIMDE_FLOAT16_VALUE( - 90.001), SIMDE_FLOAT16_VALUE( 64.324), SIMDE_FLOAT16_VALUE( - 33.166) },
{ SIMDE_FLOAT16_VALUE( - 69.347), SIMDE_FLOAT16_VALUE( 26.212), SIMDE_FLOAT16_VALUE( - 90.466), SIMDE_FLOAT16_VALUE( - 27.484) },
{ SIMDE_FLOAT16_VALUE( - 55.925), SIMDE_FLOAT16_VALUE( - 34.864), SIMDE_FLOAT16_VALUE( - 97.656), SIMDE_FLOAT16_VALUE( - 7.985) } },
{ SIMDE_FLOAT16_VALUE( 2.562), SIMDE_FLOAT16_VALUE( - 38.287), SIMDE_FLOAT16_VALUE( - 35.816), SIMDE_FLOAT16_VALUE( 15.466),
SIMDE_FLOAT16_VALUE( 18.376), SIMDE_FLOAT16_VALUE( - 90.001), SIMDE_FLOAT16_VALUE( 64.324), SIMDE_FLOAT16_VALUE( - 33.166),
SIMDE_FLOAT16_VALUE( - 69.347), SIMDE_FLOAT16_VALUE( 26.212), SIMDE_FLOAT16_VALUE( - 90.466), SIMDE_FLOAT16_VALUE( - 27.484),
SIMDE_FLOAT16_VALUE( - 55.925), SIMDE_FLOAT16_VALUE( - 34.864), SIMDE_FLOAT16_VALUE( - 97.656), SIMDE_FLOAT16_VALUE( - 7.985) } },
{ { { SIMDE_FLOAT16_VALUE( 52.345), SIMDE_FLOAT16_VALUE( - 67.483), SIMDE_FLOAT16_VALUE( 35.701), SIMDE_FLOAT16_VALUE( 91.753) },
{ SIMDE_FLOAT16_VALUE( 19.358), SIMDE_FLOAT16_VALUE( - 88.690), SIMDE_FLOAT16_VALUE( 47.635), SIMDE_FLOAT16_VALUE( 8.845) },
{ SIMDE_FLOAT16_VALUE( - 20.974), SIMDE_FLOAT16_VALUE( 4.303), SIMDE_FLOAT16_VALUE( - 69.975), SIMDE_FLOAT16_VALUE( - 29.454) },
{ SIMDE_FLOAT16_VALUE( 18.539), SIMDE_FLOAT16_VALUE( 11.611), SIMDE_FLOAT16_VALUE( - 30.865), SIMDE_FLOAT16_VALUE( 45.777) } },
{ SIMDE_FLOAT16_VALUE( 52.345), SIMDE_FLOAT16_VALUE( - 67.483), SIMDE_FLOAT16_VALUE( 35.701), SIMDE_FLOAT16_VALUE( 91.753),
SIMDE_FLOAT16_VALUE( 19.358), SIMDE_FLOAT16_VALUE( - 88.690), SIMDE_FLOAT16_VALUE( 47.635), SIMDE_FLOAT16_VALUE( 8.845),
SIMDE_FLOAT16_VALUE( - 20.974), SIMDE_FLOAT16_VALUE( 4.303), SIMDE_FLOAT16_VALUE( - 69.975), SIMDE_FLOAT16_VALUE( - 29.454),
SIMDE_FLOAT16_VALUE( 18.539), SIMDE_FLOAT16_VALUE( 11.611), SIMDE_FLOAT16_VALUE( - 30.865), SIMDE_FLOAT16_VALUE( 45.777) } },
{ { { SIMDE_FLOAT16_VALUE( - 6.544), SIMDE_FLOAT16_VALUE( 72.545), SIMDE_FLOAT16_VALUE( - 38.100), SIMDE_FLOAT16_VALUE( 66.147) },
{ SIMDE_FLOAT16_VALUE( - 39.990), SIMDE_FLOAT16_VALUE( 59.395), SIMDE_FLOAT16_VALUE( 58.133), SIMDE_FLOAT16_VALUE( 62.227) },
{ SIMDE_FLOAT16_VALUE( 17.801), SIMDE_FLOAT16_VALUE( 50.002), SIMDE_FLOAT16_VALUE( 92.224), SIMDE_FLOAT16_VALUE( - 44.924) },
{ SIMDE_FLOAT16_VALUE( 11.046), SIMDE_FLOAT16_VALUE( 54.927), SIMDE_FLOAT16_VALUE( - 65.414), SIMDE_FLOAT16_VALUE( - 73.599) } },
{ SIMDE_FLOAT16_VALUE( - 6.544), SIMDE_FLOAT16_VALUE( 72.545), SIMDE_FLOAT16_VALUE( - 38.100), SIMDE_FLOAT16_VALUE( 66.147),
SIMDE_FLOAT16_VALUE( - 39.990), SIMDE_FLOAT16_VALUE( 59.395), SIMDE_FLOAT16_VALUE( 58.133), SIMDE_FLOAT16_VALUE( 62.227),
SIMDE_FLOAT16_VALUE( 17.801), SIMDE_FLOAT16_VALUE( 50.002), SIMDE_FLOAT16_VALUE( 92.224), SIMDE_FLOAT16_VALUE( - 44.924),
SIMDE_FLOAT16_VALUE( 11.046), SIMDE_FLOAT16_VALUE( 54.927), SIMDE_FLOAT16_VALUE( - 65.414), SIMDE_FLOAT16_VALUE( - 73.599) } },
{ { { SIMDE_FLOAT16_VALUE( - 96.039), SIMDE_FLOAT16_VALUE( 20.111), SIMDE_FLOAT16_VALUE( - 49.906), SIMDE_FLOAT16_VALUE( - 73.928) },
{ SIMDE_FLOAT16_VALUE( 70.164), SIMDE_FLOAT16_VALUE( 52.349), SIMDE_FLOAT16_VALUE( 46.465), SIMDE_FLOAT16_VALUE( 59.387) },
{ SIMDE_FLOAT16_VALUE( - 74.522), SIMDE_FLOAT16_VALUE( - 64.090), SIMDE_FLOAT16_VALUE( - 64.099), SIMDE_FLOAT16_VALUE( 19.591) },
{ SIMDE_FLOAT16_VALUE( 39.551), SIMDE_FLOAT16_VALUE( - 75.560), SIMDE_FLOAT16_VALUE( - 12.722), SIMDE_FLOAT16_VALUE( - 45.531) } },
{ SIMDE_FLOAT16_VALUE( - 96.039), SIMDE_FLOAT16_VALUE( 20.111), SIMDE_FLOAT16_VALUE( - 49.906), SIMDE_FLOAT16_VALUE( - 73.928),
SIMDE_FLOAT16_VALUE( 70.164), SIMDE_FLOAT16_VALUE( 52.349), SIMDE_FLOAT16_VALUE( 46.465), SIMDE_FLOAT16_VALUE( 59.387),
SIMDE_FLOAT16_VALUE( - 74.522), SIMDE_FLOAT16_VALUE( - 64.090), SIMDE_FLOAT16_VALUE( - 64.099), SIMDE_FLOAT16_VALUE( 19.591),
SIMDE_FLOAT16_VALUE( 39.551), SIMDE_FLOAT16_VALUE( - 75.560), SIMDE_FLOAT16_VALUE( - 12.722), SIMDE_FLOAT16_VALUE( - 45.531) } },
};
for (size_t i = 0; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
simde_float16x4x4_t val = {{
simde_vld1_f16(test_vec[i].val[0]),
simde_vld1_f16(test_vec[i].val[1]),
simde_vld1_f16(test_vec[i].val[2]),
simde_vld1_f16(test_vec[i].val[3]),
}};
simde_float16_t r_[16];
simde_vst1_f16_x4(r_, val);
simde_assert_equal_i(0, simde_memcmp(r_, test_vec[i].r, sizeof(test_vec[i].r)));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_float16x4_t val[4] = simde_test_arm_neon_random_f16x4(-100.0f, 100.0f);
simde_float16x16_t r = simde_vst1_f16_x4(val[4]);
simde_test_arm_neon_write_f16x4(2, val[4], SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_f16x16(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vst1_f32_x4 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
simde_float32 r[4][2];
simde_float32 a[8];
} test_vec[] = {
{
{ { SIMDE_FLOAT32_C( -888.87), SIMDE_FLOAT32_C( 708.47) },
{ SIMDE_FLOAT32_C( -777.85), SIMDE_FLOAT32_C( -799.91) },
{ SIMDE_FLOAT32_C( 264.52), SIMDE_FLOAT32_C( -980.05) },
{ SIMDE_FLOAT32_C( 823.07), SIMDE_FLOAT32_C( -578.13) } },
{ SIMDE_FLOAT32_C( -888.87), SIMDE_FLOAT32_C( 708.47), SIMDE_FLOAT32_C( -777.85), SIMDE_FLOAT32_C( -799.91),
SIMDE_FLOAT32_C( 264.52), SIMDE_FLOAT32_C( -980.05), SIMDE_FLOAT32_C( 823.07), SIMDE_FLOAT32_C( -578.13) } },
{
{ { SIMDE_FLOAT32_C( -306.04), SIMDE_FLOAT32_C( 710.58) },
{ SIMDE_FLOAT32_C( 931.81), SIMDE_FLOAT32_C( -975.48) },
{ SIMDE_FLOAT32_C( -597.35), SIMDE_FLOAT32_C( -797.34) },
{ SIMDE_FLOAT32_C( -552.00), SIMDE_FLOAT32_C( 948.97) } },
{ SIMDE_FLOAT32_C( -306.04), SIMDE_FLOAT32_C( 710.58), SIMDE_FLOAT32_C( 931.81), SIMDE_FLOAT32_C( -975.48),
SIMDE_FLOAT32_C( -597.35), SIMDE_FLOAT32_C( -797.34), SIMDE_FLOAT32_C( -552.00), SIMDE_FLOAT32_C( 948.97) } },
{
{ { SIMDE_FLOAT32_C( 491.44), SIMDE_FLOAT32_C( 902.32) },
{ SIMDE_FLOAT32_C( 651.63), SIMDE_FLOAT32_C( -87.23) },
{ SIMDE_FLOAT32_C( -496.24), SIMDE_FLOAT32_C( -468.31) },
{ SIMDE_FLOAT32_C( -590.91), SIMDE_FLOAT32_C( 295.14) } },
{ SIMDE_FLOAT32_C( 491.44), SIMDE_FLOAT32_C( 902.32), SIMDE_FLOAT32_C( 651.63), SIMDE_FLOAT32_C( -87.23),
SIMDE_FLOAT32_C( -496.24), SIMDE_FLOAT32_C( -468.31), SIMDE_FLOAT32_C( -590.91), SIMDE_FLOAT32_C( 295.14) } },
{
{ { SIMDE_FLOAT32_C( -655.57), SIMDE_FLOAT32_C( -620.90) },
{ SIMDE_FLOAT32_C( -517.88), SIMDE_FLOAT32_C( -603.98) },
{ SIMDE_FLOAT32_C( 181.30), SIMDE_FLOAT32_C( -312.67) },
{ SIMDE_FLOAT32_C( 733.21), SIMDE_FLOAT32_C( 292.43) } },
{ SIMDE_FLOAT32_C( -655.57), SIMDE_FLOAT32_C( -620.90), SIMDE_FLOAT32_C( -517.88), SIMDE_FLOAT32_C( -603.98),
SIMDE_FLOAT32_C( 181.30), SIMDE_FLOAT32_C( -312.67), SIMDE_FLOAT32_C( 733.21), SIMDE_FLOAT32_C( 292.43) } },
{
{ { SIMDE_FLOAT32_C( -604.20), SIMDE_FLOAT32_C( 955.36) },
{ SIMDE_FLOAT32_C( 492.52), SIMDE_FLOAT32_C( 660.31) },
{ SIMDE_FLOAT32_C( 975.31), SIMDE_FLOAT32_C( 315.60) },
{ SIMDE_FLOAT32_C( -917.81), SIMDE_FLOAT32_C( -330.72) } },
{ SIMDE_FLOAT32_C( -604.20), SIMDE_FLOAT32_C( 955.36), SIMDE_FLOAT32_C( 492.52), SIMDE_FLOAT32_C( 660.31),
SIMDE_FLOAT32_C( 975.31), SIMDE_FLOAT32_C( 315.60), SIMDE_FLOAT32_C( -917.81), SIMDE_FLOAT32_C( -330.72) } },
{
{ { SIMDE_FLOAT32_C( 26.18), SIMDE_FLOAT32_C( -986.00) },
{ SIMDE_FLOAT32_C( -306.20), SIMDE_FLOAT32_C( 428.83) },
{ SIMDE_FLOAT32_C( -783.34), SIMDE_FLOAT32_C( 141.79) },
{ SIMDE_FLOAT32_C( 377.80), SIMDE_FLOAT32_C( 708.09) } },
{ SIMDE_FLOAT32_C( 26.18), SIMDE_FLOAT32_C( -986.00), SIMDE_FLOAT32_C( -306.20), SIMDE_FLOAT32_C( 428.83),
SIMDE_FLOAT32_C( -783.34), SIMDE_FLOAT32_C( 141.79), SIMDE_FLOAT32_C( 377.80), SIMDE_FLOAT32_C( 708.09) } },
{
{ { SIMDE_FLOAT32_C( 44.11), SIMDE_FLOAT32_C( 29.43) },
{ SIMDE_FLOAT32_C( -379.13), SIMDE_FLOAT32_C( 547.87) },
{ SIMDE_FLOAT32_C( 561.12), SIMDE_FLOAT32_C( 29.96) },
{ SIMDE_FLOAT32_C( -156.99), SIMDE_FLOAT32_C( 905.55) } },
{ SIMDE_FLOAT32_C( 44.11), SIMDE_FLOAT32_C( 29.43), SIMDE_FLOAT32_C( -379.13), SIMDE_FLOAT32_C( 547.87),
SIMDE_FLOAT32_C( 561.12), SIMDE_FLOAT32_C( 29.96), SIMDE_FLOAT32_C( -156.99), SIMDE_FLOAT32_C( 905.55) } },
{
{ { SIMDE_FLOAT32_C( 409.06), SIMDE_FLOAT32_C( 325.12) },
{ SIMDE_FLOAT32_C( -698.43), SIMDE_FLOAT32_C( -409.64) },
{ SIMDE_FLOAT32_C( -987.55), SIMDE_FLOAT32_C( -965.21) },
{ SIMDE_FLOAT32_C( 882.79), SIMDE_FLOAT32_C( -591.76) } },
{ SIMDE_FLOAT32_C( 409.06), SIMDE_FLOAT32_C( 325.12), SIMDE_FLOAT32_C( -698.43), SIMDE_FLOAT32_C( -409.64),
SIMDE_FLOAT32_C( -987.55), SIMDE_FLOAT32_C( -965.21), SIMDE_FLOAT32_C( 882.79), SIMDE_FLOAT32_C( -591.76) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_float32x2x4_t r_ = { { simde_vld1_f32(test_vec[i].r[0]),
simde_vld1_f32(test_vec[i].r[1]),
simde_vld1_f32(test_vec[i].r[2]),
simde_vld1_f32(test_vec[i].r[3]) } };
SIMDE_ALIGN_TO_16 simde_float32 a_[8];
simde_vst1_f32_x4(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_float32x2_t a = simde_test_arm_neon_random_f32x2(-1000.0f, 1000.0f);
simde_float32x2_t b = simde_test_arm_neon_random_f32x2(-1000.0f, 1000.0f);
simde_float32x2_t c = simde_test_arm_neon_random_f32x2(-1000.0f, 1000.0f);
simde_float32x2_t d = simde_test_arm_neon_random_f32x2(-1000.0f, 1000.0f);
simde_float32x2x4_t e = {{a, b, c, d}};
simde_test_arm_neon_write_f32x2x4(2, e, SIMDE_TEST_VEC_POS_FIRST);
simde_float32 buf[8];
simde_vst1_f32_x4(buf, e);
simde_test_codegen_write_vf32(2, sizeof(buf) / sizeof(buf[0]), buf,
SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vst1_f64_x4 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
simde_float64 r[4][1];
simde_float64 a[4];
} test_vec[] = {
{
{ { SIMDE_FLOAT64_C( 990.15) },
{ SIMDE_FLOAT64_C( 375.32) },
{ SIMDE_FLOAT64_C( -931.44) },
{ SIMDE_FLOAT64_C( 965.47) } },
{ SIMDE_FLOAT64_C( 990.15), SIMDE_FLOAT64_C( 375.32), SIMDE_FLOAT64_C( -931.44), SIMDE_FLOAT64_C( 965.47) } },
{
{ { SIMDE_FLOAT64_C( -309.09) },
{ SIMDE_FLOAT64_C( -849.25) },
{ SIMDE_FLOAT64_C( -365.26) },
{ SIMDE_FLOAT64_C( 717.09) } },
{ SIMDE_FLOAT64_C( -309.09), SIMDE_FLOAT64_C( -849.25), SIMDE_FLOAT64_C( -365.26), SIMDE_FLOAT64_C( 717.09) } },
{
{ { SIMDE_FLOAT64_C( -835.25) },
{ SIMDE_FLOAT64_C( 328.54) },
{ SIMDE_FLOAT64_C( 145.92) },
{ SIMDE_FLOAT64_C( -618.59) } },
{ SIMDE_FLOAT64_C( -835.25), SIMDE_FLOAT64_C( 328.54), SIMDE_FLOAT64_C( 145.92), SIMDE_FLOAT64_C( -618.59) } },
{
{ { SIMDE_FLOAT64_C( -529.67) },
{ SIMDE_FLOAT64_C( -476.28) },
{ SIMDE_FLOAT64_C( -910.50) },
{ SIMDE_FLOAT64_C( 514.44) } },
{ SIMDE_FLOAT64_C( -529.67), SIMDE_FLOAT64_C( -476.28), SIMDE_FLOAT64_C( -910.50), SIMDE_FLOAT64_C( 514.44) } },
{
{ { SIMDE_FLOAT64_C( 553.15) },
{ SIMDE_FLOAT64_C( -289.63) },
{ SIMDE_FLOAT64_C( 62.31) },
{ SIMDE_FLOAT64_C( 114.28) } },
{ SIMDE_FLOAT64_C( 553.15), SIMDE_FLOAT64_C( -289.63), SIMDE_FLOAT64_C( 62.31), SIMDE_FLOAT64_C( 114.28) } },
{
{ { SIMDE_FLOAT64_C( 740.34) },
{ SIMDE_FLOAT64_C( 905.32) },
{ SIMDE_FLOAT64_C( 19.83) },
{ SIMDE_FLOAT64_C( 149.40) } },
{ SIMDE_FLOAT64_C( 740.34), SIMDE_FLOAT64_C( 905.32), SIMDE_FLOAT64_C( 19.83), SIMDE_FLOAT64_C( 149.40) } },
{
{ { SIMDE_FLOAT64_C( 230.44) },
{ SIMDE_FLOAT64_C( 321.40) },
{ SIMDE_FLOAT64_C( 739.76) },
{ SIMDE_FLOAT64_C( 242.89) } },
{ SIMDE_FLOAT64_C( 230.44), SIMDE_FLOAT64_C( 321.40), SIMDE_FLOAT64_C( 739.76), SIMDE_FLOAT64_C( 242.89) } },
{
{ { SIMDE_FLOAT64_C( 356.19) },
{ SIMDE_FLOAT64_C( 622.55) },
{ SIMDE_FLOAT64_C( 651.14) },
{ SIMDE_FLOAT64_C( 346.34) } },
{ SIMDE_FLOAT64_C( 356.19), SIMDE_FLOAT64_C( 622.55), SIMDE_FLOAT64_C( 651.14), SIMDE_FLOAT64_C( 346.34) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_float64x1x4_t r_ = { { simde_vld1_f64(test_vec[i].r[0]),
simde_vld1_f64(test_vec[i].r[1]),
simde_vld1_f64(test_vec[i].r[2]),
simde_vld1_f64(test_vec[i].r[3]) } };
SIMDE_ALIGN_TO_16 simde_float64 a_[4];
simde_vst1_f64_x4(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_float64x1_t a = simde_test_arm_neon_random_f64x1(-1000.0, 1000.0);
simde_float64x1_t b = simde_test_arm_neon_random_f64x1(-1000.0, 1000.0);
simde_float64x1_t c = simde_test_arm_neon_random_f64x1(-1000.0, 1000.0);
simde_float64x1_t d = simde_test_arm_neon_random_f64x1(-1000.0, 1000.0);
simde_float64x1x4_t e = {{a, b, c, d}};
simde_test_arm_neon_write_f64x1x4(2, e, SIMDE_TEST_VEC_POS_FIRST);
simde_float64 buf[4];
simde_vst1_f64_x4(buf, e);
simde_test_codegen_write_vf64(2, sizeof(buf) / sizeof(buf[0]), buf,
SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vst1_s8_x4 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
int8_t r[4][8];
int8_t a[32];
} test_vec[] = {
{
{ { -INT8_C( 60), INT8_C( 53), INT8_C( 119), -INT8_C( 27), -INT8_C( 113), -INT8_C( 14), INT8_C( 22), -INT8_C( 97) },
{ INT8_C( 55), INT8_C( 89), -INT8_C( 119), -INT8_C( 114), -INT8_C( 103), INT8_C( 60), -INT8_C( 26), -INT8_C( 100) },
{ -INT8_C( 115), -INT8_C( 38), -INT8_C( 93), -INT8_C( 67), INT8_C( 31), INT8_C( 19), INT8_C( 66), INT8_C( 107) },
{ -INT8_C( 54), -INT8_C( 94), -INT8_C( 65), INT8_C( 45), INT8_C( 61), -INT8_C( 46), INT8_C( 56), INT8_C( 1) } },
{ -INT8_C( 60), INT8_C( 53), INT8_C( 119), -INT8_C( 27), -INT8_C( 113), -INT8_C( 14), INT8_C( 22), -INT8_C( 97),
INT8_C( 55), INT8_C( 89), -INT8_C( 119), -INT8_C( 114), -INT8_C( 103), INT8_C( 60), -INT8_C( 26), -INT8_C( 100),
-INT8_C( 115), -INT8_C( 38), -INT8_C( 93), -INT8_C( 67), INT8_C( 31), INT8_C( 19), INT8_C( 66), INT8_C( 107),
-INT8_C( 54), -INT8_C( 94), -INT8_C( 65), INT8_C( 45), INT8_C( 61), -INT8_C( 46), INT8_C( 56), INT8_C( 1) } },
{
{ { INT8_C( 7), -INT8_C( 80), -INT8_C( 26), -INT8_C( 105), -INT8_C( 94), -INT8_C( 3), INT8_C( 54), -INT8_C( 38) },
{ INT8_C( 86), -INT8_C( 65), INT8_C( 104), -INT8_C( 17), -INT8_C( 5), INT8_C( 78), -INT8_C( 117), -INT8_C( 120) },
{ INT8_C( 40), INT8_C( 46), INT8_C( 69), INT8_C( 71), INT8_C( 66), -INT8_C( 121), -INT8_C( 77), INT8_C( 12) },
{ INT8_C( 42), INT8_C( 114), INT8_C( 58), INT8_C( 103), INT8_C( 68), INT8_C( 114), INT8_C( 104), INT8_C( 75) } },
{ INT8_C( 7), -INT8_C( 80), -INT8_C( 26), -INT8_C( 105), -INT8_C( 94), -INT8_C( 3), INT8_C( 54), -INT8_C( 38),
INT8_C( 86), -INT8_C( 65), INT8_C( 104), -INT8_C( 17), -INT8_C( 5), INT8_C( 78), -INT8_C( 117), -INT8_C( 120),
INT8_C( 40), INT8_C( 46), INT8_C( 69), INT8_C( 71), INT8_C( 66), -INT8_C( 121), -INT8_C( 77), INT8_C( 12),
INT8_C( 42), INT8_C( 114), INT8_C( 58), INT8_C( 103), INT8_C( 68), INT8_C( 114), INT8_C( 104), INT8_C( 75) } },
{
{ { INT8_C( 34), INT8_C( 78), -INT8_C( 30), -INT8_C( 59), INT8_C( 75), INT8_C( 24), -INT8_C( 97), -INT8_C( 95) },
{ -INT8_C( 41), INT8_C( 7), -INT8_C( 112), -INT8_C( 46), INT8_C( 85), INT8_C( 28), INT8_C( 90), INT8_C( 125) },
{ INT8_C( 74), -INT8_C( 96), -INT8_C( 60), -INT8_C( 116), INT8_C( 39), INT8_C( 119), -INT8_C( 103), INT8_C( 81) },
{ -INT8_C( 23), -INT8_C( 45), -INT8_C( 72), INT8_C( 45), INT8_C( 69), INT8_C( 32), INT8_C( 121), INT8_C( 104) } },
{ INT8_C( 34), INT8_C( 78), -INT8_C( 30), -INT8_C( 59), INT8_C( 75), INT8_C( 24), -INT8_C( 97), -INT8_C( 95),
-INT8_C( 41), INT8_C( 7), -INT8_C( 112), -INT8_C( 46), INT8_C( 85), INT8_C( 28), INT8_C( 90), INT8_C( 125),
INT8_C( 74), -INT8_C( 96), -INT8_C( 60), -INT8_C( 116), INT8_C( 39), INT8_C( 119), -INT8_C( 103), INT8_C( 81),
-INT8_C( 23), -INT8_C( 45), -INT8_C( 72), INT8_C( 45), INT8_C( 69), INT8_C( 32), INT8_C( 121), INT8_C( 104) } },
{
{ { INT8_C( 111), INT8_C( 91), INT8_C( 45), -INT8_C( 70), INT8_C( 116), -INT8_C( 52), INT8_C( 92), INT8_C( 75) },
{ -INT8_C( 45), -INT8_C( 20), INT8_C( 30), INT8_C( 40), INT8_C( 8), INT8_C( 120), -INT8_C( 91), INT8_C( 83) },
{ INT8_C( 24), INT8_C( 105), -INT8_C( 33), INT8_C( 64), -INT8_C( 31), INT8_C( 120), -INT8_C( 111), -INT8_C( 54) },
{ INT8_C( 75), INT8_C( 74), -INT8_C( 8), -INT8_C( 111), INT8_C( 106), INT8_C( 113), -INT8_C( 7), -INT8_C( 39) } },
{ INT8_C( 111), INT8_C( 91), INT8_C( 45), -INT8_C( 70), INT8_C( 116), -INT8_C( 52), INT8_C( 92), INT8_C( 75),
-INT8_C( 45), -INT8_C( 20), INT8_C( 30), INT8_C( 40), INT8_C( 8), INT8_C( 120), -INT8_C( 91), INT8_C( 83),
INT8_C( 24), INT8_C( 105), -INT8_C( 33), INT8_C( 64), -INT8_C( 31), INT8_C( 120), -INT8_C( 111), -INT8_C( 54),
INT8_C( 75), INT8_C( 74), -INT8_C( 8), -INT8_C( 111), INT8_C( 106), INT8_C( 113), -INT8_C( 7), -INT8_C( 39) } },
{
{ { -INT8_C( 52), INT8_C( 38), -INT8_C( 108), INT8_C( 64), -INT8_C( 14), -INT8_C( 16), -INT8_C( 116), -INT8_C( 59) },
{ -INT8_C( 36), -INT8_C( 86), -INT8_C( 19), -INT8_C( 27), INT8_C( 34), -INT8_C( 110), INT8_C( 56), INT8_C( 59) },
{ -INT8_C( 5), INT8_C( 23), INT8_C( 123), -INT8_C( 36), -INT8_C( 112), INT8_C( 12), -INT8_C( 89), -INT8_C( 37) },
{ INT8_C( 86), -INT8_C( 97), INT8_C( 108), -INT8_C( 63), INT8_C( 16), INT8_C( 101), -INT8_C( 102), -INT8_C( 36) } },
{ -INT8_C( 52), INT8_C( 38), -INT8_C( 108), INT8_C( 64), -INT8_C( 14), -INT8_C( 16), -INT8_C( 116), -INT8_C( 59),
-INT8_C( 36), -INT8_C( 86), -INT8_C( 19), -INT8_C( 27), INT8_C( 34), -INT8_C( 110), INT8_C( 56), INT8_C( 59),
-INT8_C( 5), INT8_C( 23), INT8_C( 123), -INT8_C( 36), -INT8_C( 112), INT8_C( 12), -INT8_C( 89), -INT8_C( 37),
INT8_C( 86), -INT8_C( 97), INT8_C( 108), -INT8_C( 63), INT8_C( 16), INT8_C( 101), -INT8_C( 102), -INT8_C( 36) } },
{
{ { -INT8_C( 117), INT8_C( 46), INT8_C( 29), INT8_C( 125), INT8_C( 30), -INT8_C( 87), INT8_C( 66), -INT8_C( 5) },
{ INT8_C( 83), INT8_C( 47), -INT8_C( 32), INT8_C( 117), -INT8_C( 63), INT8_C( 24), -INT8_C( 80), -INT8_C( 67) },
{ INT8_C( 47), INT8_C( 43), -INT8_C( 103), -INT8_C( 65), INT8_C( 56), INT8_C( 64), -INT8_C( 101), -INT8_C( 114) },
{ -INT8_C( 33), INT8_C( 7), INT8_C( 79), -INT8_C( 17), INT8_C( 109), -INT8_C( 22), -INT8_C( 52), -INT8_C( 8) } },
{ -INT8_C( 117), INT8_C( 46), INT8_C( 29), INT8_C( 125), INT8_C( 30), -INT8_C( 87), INT8_C( 66), -INT8_C( 5),
INT8_C( 83), INT8_C( 47), -INT8_C( 32), INT8_C( 117), -INT8_C( 63), INT8_C( 24), -INT8_C( 80), -INT8_C( 67),
INT8_C( 47), INT8_C( 43), -INT8_C( 103), -INT8_C( 65), INT8_C( 56), INT8_C( 64), -INT8_C( 101), -INT8_C( 114),
-INT8_C( 33), INT8_C( 7), INT8_C( 79), -INT8_C( 17), INT8_C( 109), -INT8_C( 22), -INT8_C( 52), -INT8_C( 8) } },
{
{ { INT8_C( 24), -INT8_C( 23), INT8_C( 118), INT8_C( 55), -INT8_C( 110), -INT8_C( 72), INT8_C( 50), -INT8_C( 27) },
{ -INT8_C( 24), INT8_C( 18), INT8_C( 90), -INT8_C( 87), INT8_C( 42), INT8_C( 11), INT8_C( 102), INT8_C( 89) },
{ INT8_C( 54), INT8_C( 0), INT8_C( 25), INT8_C( 110), INT8_C( 64), -INT8_C( 76), -INT8_C( 3), INT8_C( 32) },
{ -INT8_C( 69), INT8_C( 76), INT8_C( 15), INT8_C( 40), INT8_C( 54), -INT8_C( 37), INT8_C( 33), INT8_C( 79) } },
{ INT8_C( 24), -INT8_C( 23), INT8_C( 118), INT8_C( 55), -INT8_C( 110), -INT8_C( 72), INT8_C( 50), -INT8_C( 27),
-INT8_C( 24), INT8_C( 18), INT8_C( 90), -INT8_C( 87), INT8_C( 42), INT8_C( 11), INT8_C( 102), INT8_C( 89),
INT8_C( 54), INT8_C( 0), INT8_C( 25), INT8_C( 110), INT8_C( 64), -INT8_C( 76), -INT8_C( 3), INT8_C( 32),
-INT8_C( 69), INT8_C( 76), INT8_C( 15), INT8_C( 40), INT8_C( 54), -INT8_C( 37), INT8_C( 33), INT8_C( 79) } },
{
{ { -INT8_C( 60), -INT8_C( 105), -INT8_C( 122), INT8_C( 86), INT8_C( 79), -INT8_C( 72), INT8_C( 59), INT8_C( 55) },
{ -INT8_C( 54), -INT8_C( 106), -INT8_C( 31), -INT8_C( 12), -INT8_C( 95), INT8_C( 71), INT8_C( 77), -INT8_C( 41) },
{ INT8_C( 71), INT8_C( 102), INT8_C( 70), -INT8_C( 120), INT8_C( 26), INT8_C( 67), -INT8_C( 88), -INT8_C( 42) },
{ -INT8_C( 113), -INT8_C( 73), -INT8_C( 2), -INT8_C( 58), -INT8_C( 109), INT8_C( 31), INT8_C( 21), INT8_C( 87) } },
{ -INT8_C( 60), -INT8_C( 105), -INT8_C( 122), INT8_C( 86), INT8_C( 79), -INT8_C( 72), INT8_C( 59), INT8_C( 55),
-INT8_C( 54), -INT8_C( 106), -INT8_C( 31), -INT8_C( 12), -INT8_C( 95), INT8_C( 71), INT8_C( 77), -INT8_C( 41),
INT8_C( 71), INT8_C( 102), INT8_C( 70), -INT8_C( 120), INT8_C( 26), INT8_C( 67), -INT8_C( 88), -INT8_C( 42),
-INT8_C( 113), -INT8_C( 73), -INT8_C( 2), -INT8_C( 58), -INT8_C( 109), INT8_C( 31), INT8_C( 21), INT8_C( 87) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int8x8x4_t r_ = { { simde_vld1_s8(test_vec[i].r[0]),
simde_vld1_s8(test_vec[i].r[1]),
simde_vld1_s8(test_vec[i].r[2]),
simde_vld1_s8(test_vec[i].r[3]) } };
SIMDE_ALIGN_TO_16 int8_t a_[32];
simde_vst1_s8_x4(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_int8x8_t a = simde_test_arm_neon_random_i8x8();
simde_int8x8_t b = simde_test_arm_neon_random_i8x8();
simde_int8x8_t c = simde_test_arm_neon_random_i8x8();
simde_int8x8_t d = simde_test_arm_neon_random_i8x8();
simde_int8x8x4_t e = {{a, b, c, d}};
simde_test_arm_neon_write_i8x8x4(2, e, SIMDE_TEST_VEC_POS_FIRST);
int8_t buf[32];
simde_vst1_s8_x4(buf, e);
simde_test_codegen_write_vi8(2, sizeof(buf) / sizeof(buf[0]), buf,
SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vst1_s16_x4 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
int16_t r[4][4];
int16_t a[16];
} test_vec[] = {
{
{ { -INT16_C( 25674), INT16_C( 1710), -INT16_C( 5805), INT16_C( 7485) },
{ INT16_C( 7807), INT16_C( 8209), INT16_C( 24166), -INT16_C( 21000) },
{ INT16_C( 16069), -INT16_C( 8395), -INT16_C( 8831), INT16_C( 4277) },
{ -INT16_C( 19307), INT16_C( 10454), -INT16_C( 5165), -INT16_C( 30081) } },
{ -INT16_C( 25674), INT16_C( 1710), -INT16_C( 5805), INT16_C( 7485), INT16_C( 7807), INT16_C( 8209), INT16_C( 24166), -INT16_C( 21000),
INT16_C( 16069), -INT16_C( 8395), -INT16_C( 8831), INT16_C( 4277), -INT16_C( 19307), INT16_C( 10454), -INT16_C( 5165), -INT16_C( 30081) } },
{
{ { INT16_C( 11654), -INT16_C( 9840), -INT16_C( 13033), -INT16_C( 26890) },
{ INT16_C( 2028), INT16_C( 21175), -INT16_C( 20634), INT16_C( 11263) },
{ INT16_C( 13805), INT16_C( 28170), -INT16_C( 16366), -INT16_C( 22658) },
{ INT16_C( 21876), INT16_C( 18383), INT16_C( 20288), -INT16_C( 14383) } },
{ INT16_C( 11654), -INT16_C( 9840), -INT16_C( 13033), -INT16_C( 26890), INT16_C( 2028), INT16_C( 21175), -INT16_C( 20634), INT16_C( 11263),
INT16_C( 13805), INT16_C( 28170), -INT16_C( 16366), -INT16_C( 22658), INT16_C( 21876), INT16_C( 18383), INT16_C( 20288), -INT16_C( 14383) } },
{
{ { INT16_C( 24956), -INT16_C( 27744), -INT16_C( 26833), INT16_C( 6954) },
{ -INT16_C( 7778), INT16_C( 1133), INT16_C( 27792), INT16_C( 32047) },
{ INT16_C( 15009), -INT16_C( 19221), INT16_C( 27130), INT16_C( 28251) },
{ INT16_C( 11198), -INT16_C( 75), -INT16_C( 30854), -INT16_C( 2362) } },
{ INT16_C( 24956), -INT16_C( 27744), -INT16_C( 26833), INT16_C( 6954), -INT16_C( 7778), INT16_C( 1133), INT16_C( 27792), INT16_C( 32047),
INT16_C( 15009), -INT16_C( 19221), INT16_C( 27130), INT16_C( 28251), INT16_C( 11198), -INT16_C( 75), -INT16_C( 30854), -INT16_C( 2362) } },
{
{ { INT16_C( 26344), INT16_C( 6026), -INT16_C( 19203), -INT16_C( 25550) },
{ -INT16_C( 24683), INT16_C( 9632), -INT16_C( 12276), -INT16_C( 21086) },
{ -INT16_C( 29430), INT16_C( 1121), -INT16_C( 16906), -INT16_C( 19086) },
{ INT16_C( 10216), INT16_C( 25268), INT16_C( 31406), -INT16_C( 26792) } },
{ INT16_C( 26344), INT16_C( 6026), -INT16_C( 19203), -INT16_C( 25550), -INT16_C( 24683), INT16_C( 9632), -INT16_C( 12276), -INT16_C( 21086),
-INT16_C( 29430), INT16_C( 1121), -INT16_C( 16906), -INT16_C( 19086), INT16_C( 10216), INT16_C( 25268), INT16_C( 31406), -INT16_C( 26792) } },
{
{ { -INT16_C( 7456), -INT16_C( 8530), -INT16_C( 7786), INT16_C( 11130) },
{ INT16_C( 6784), -INT16_C( 29616), -INT16_C( 3350), -INT16_C( 3014) },
{ -INT16_C( 25729), INT16_C( 30456), INT16_C( 27224), INT16_C( 16427) },
{ -INT16_C( 8302), INT16_C( 16546), -INT16_C( 1191), INT16_C( 14807) } },
{ -INT16_C( 7456), -INT16_C( 8530), -INT16_C( 7786), INT16_C( 11130), INT16_C( 6784), -INT16_C( 29616), -INT16_C( 3350), -INT16_C( 3014),
-INT16_C( 25729), INT16_C( 30456), INT16_C( 27224), INT16_C( 16427), -INT16_C( 8302), INT16_C( 16546), -INT16_C( 1191), INT16_C( 14807) } },
{
{ { -INT16_C( 31011), INT16_C( 29719), -INT16_C( 28313), -INT16_C( 6241) },
{ -INT16_C( 3924), -INT16_C( 27020), -INT16_C( 20766), INT16_C( 25227) },
{ -INT16_C( 31927), -INT16_C( 23848), INT16_C( 1006), -INT16_C( 32542) },
{ -INT16_C( 31262), INT16_C( 15296), -INT16_C( 26496), INT16_C( 23924) } },
{ -INT16_C( 31011), INT16_C( 29719), -INT16_C( 28313), -INT16_C( 6241), -INT16_C( 3924), -INT16_C( 27020), -INT16_C( 20766), INT16_C( 25227),
-INT16_C( 31927), -INT16_C( 23848), INT16_C( 1006), -INT16_C( 32542), -INT16_C( 31262), INT16_C( 15296), -INT16_C( 26496), INT16_C( 23924) } },
{
{ { -INT16_C( 29666), -INT16_C( 31279), INT16_C( 28957), -INT16_C( 13972) },
{ -INT16_C( 8095), INT16_C( 17248), -INT16_C( 5234), -INT16_C( 10075) },
{ INT16_C( 32110), INT16_C( 23674), INT16_C( 23680), INT16_C( 25308) },
{ -INT16_C( 25119), INT16_C( 24989), INT16_C( 4661), INT16_C( 21439) } },
{ -INT16_C( 29666), -INT16_C( 31279), INT16_C( 28957), -INT16_C( 13972), -INT16_C( 8095), INT16_C( 17248), -INT16_C( 5234), -INT16_C( 10075),
INT16_C( 32110), INT16_C( 23674), INT16_C( 23680), INT16_C( 25308), -INT16_C( 25119), INT16_C( 24989), INT16_C( 4661), INT16_C( 21439) } },
{
{ { -INT16_C( 28514), -INT16_C( 17448), INT16_C( 17409), INT16_C( 25221) },
{ -INT16_C( 6875), -INT16_C( 19546), INT16_C( 19408), INT16_C( 16011) },
{ INT16_C( 1481), INT16_C( 18843), INT16_C( 30562), INT16_C( 17324) },
{ INT16_C( 18708), INT16_C( 18853), INT16_C( 25691), -INT16_C( 1636) } },
{ -INT16_C( 28514), -INT16_C( 17448), INT16_C( 17409), INT16_C( 25221), -INT16_C( 6875), -INT16_C( 19546), INT16_C( 19408), INT16_C( 16011),
INT16_C( 1481), INT16_C( 18843), INT16_C( 30562), INT16_C( 17324), INT16_C( 18708), INT16_C( 18853), INT16_C( 25691), -INT16_C( 1636) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int16x4x4_t r_ = { { simde_vld1_s16(test_vec[i].r[0]),
simde_vld1_s16(test_vec[i].r[1]),
simde_vld1_s16(test_vec[i].r[2]),
simde_vld1_s16(test_vec[i].r[3]) } };
SIMDE_ALIGN_TO_16 int16_t a_[16];
simde_vst1_s16_x4(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_int16x4_t a = simde_test_arm_neon_random_i16x4();
simde_int16x4_t b = simde_test_arm_neon_random_i16x4();
simde_int16x4_t c = simde_test_arm_neon_random_i16x4();
simde_int16x4_t d = simde_test_arm_neon_random_i16x4();
simde_int16x4x4_t e = {{a, b, c, d}};
simde_test_arm_neon_write_i16x4x4(2, e, SIMDE_TEST_VEC_POS_FIRST);
int16_t buf[16];
simde_vst1_s16_x4(buf, e);
simde_test_codegen_write_vi16(2, sizeof(buf) / sizeof(buf[0]), buf,
SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vst1_s32_x4 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
int32_t r[4][2];
int32_t a[8];
} test_vec[] = {
{
{ { -INT32_C( 155880204), -INT32_C( 564643143) },
{ -INT32_C( 275644897), INT32_C( 321723722) },
{ -INT32_C( 2074294238), INT32_C( 1422395456) },
{ -INT32_C( 1382126254), -INT32_C( 978896175) } },
{ -INT32_C( 155880204), -INT32_C( 564643143), -INT32_C( 275644897), INT32_C( 321723722), -INT32_C( 2074294238), INT32_C( 1422395456), -INT32_C( 1382126254), -INT32_C( 978896175) } },
{
{ { INT32_C( 1757109423), -INT32_C( 1253698410) },
{ INT32_C( 1554306834), INT32_C( 393204212) },
{ -INT32_C( 627323750), INT32_C( 640574420) },
{ -INT32_C( 1579889456), -INT32_C( 1234732281) } },
{ INT32_C( 1757109423), -INT32_C( 1253698410), INT32_C( 1554306834), INT32_C( 393204212), -INT32_C( 627323750), INT32_C( 640574420), -INT32_C( 1579889456), -INT32_C( 1234732281) } },
{
{ { INT32_C( 1830691543), INT32_C( 1226990646) },
{ INT32_C( 816170555), INT32_C( 826742167) },
{ -INT32_C( 1257512223), INT32_C( 383531590) },
{ INT32_C( 230207494), INT32_C( 46341931) } },
{ INT32_C( 1830691543), INT32_C( 1226990646), INT32_C( 816170555), INT32_C( 826742167), -INT32_C( 1257512223), INT32_C( 383531590), INT32_C( 230207494), INT32_C( 46341931) } },
{
{ { INT32_C( 2020598081), -INT32_C( 2118020795) },
{ -INT32_C( 290363817), INT32_C( 1545664635) },
{ INT32_C( 538061786), INT32_C( 1815604837) },
{ -INT32_C( 914755682), INT32_C( 1338719502) } },
{ INT32_C( 2020598081), -INT32_C( 2118020795), -INT32_C( 290363817), INT32_C( 1545664635), INT32_C( 538061786), INT32_C( 1815604837), -INT32_C( 914755682), INT32_C( 1338719502) } },
{
{ { INT32_C( 1690778142), INT32_C( 585468107) },
{ INT32_C( 1779472111), INT32_C( 1757884558) },
{ -INT32_C( 1047930532), INT32_C( 1697497287) },
{ -INT32_C( 1121015889), INT32_C( 34404836) } },
{ INT32_C( 1690778142), INT32_C( 585468107), INT32_C( 1779472111), INT32_C( 1757884558), -INT32_C( 1047930532), INT32_C( 1697497287), -INT32_C( 1121015889), INT32_C( 34404836) } },
{
{ { -INT32_C( 26815437), INT32_C( 1260407644) },
{ INT32_C( 1874211041), -INT32_C( 1109885599) },
{ INT32_C( 494821718), -INT32_C( 796742623) },
{ INT32_C( 932032595), -INT32_C( 600204887) } },
{ -INT32_C( 26815437), INT32_C( 1260407644), INT32_C( 1874211041), -INT32_C( 1109885599), INT32_C( 494821718), -INT32_C( 796742623), INT32_C( 932032595), -INT32_C( 600204887) } },
{
{ { -INT32_C( 891641747), -INT32_C( 854197525) },
{ -INT32_C( 1958950102), -INT32_C( 1639443384) },
{ -INT32_C( 1766078603), -INT32_C( 966378125) },
{ -INT32_C( 1761741843), -INT32_C( 93178227) } },
{ -INT32_C( 891641747), -INT32_C( 854197525), -INT32_C( 1958950102), -INT32_C( 1639443384), -INT32_C( 1766078603), -INT32_C( 966378125), -INT32_C( 1761741843), -INT32_C( 93178227) } },
{
{ { -INT32_C( 1027322666), INT32_C( 1905252934) },
{ -INT32_C( 285422683), INT32_C( 1435256288) },
{ INT32_C( 2146191372), INT32_C( 1933922949) },
{ -INT32_C( 754367930), INT32_C( 1338866808) } },
{ -INT32_C( 1027322666), INT32_C( 1905252934), -INT32_C( 285422683), INT32_C( 1435256288), INT32_C( 2146191372), INT32_C( 1933922949), -INT32_C( 754367930), INT32_C( 1338866808) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int32x2x4_t r_ = { { simde_vld1_s32(test_vec[i].r[0]),
simde_vld1_s32(test_vec[i].r[1]),
simde_vld1_s32(test_vec[i].r[2]),
simde_vld1_s32(test_vec[i].r[3]) } };
SIMDE_ALIGN_TO_16 int32_t a_[8];
simde_vst1_s32_x4(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_int32x2_t a = simde_test_arm_neon_random_i32x2();
simde_int32x2_t b = simde_test_arm_neon_random_i32x2();
simde_int32x2_t c = simde_test_arm_neon_random_i32x2();
simde_int32x2_t d = simde_test_arm_neon_random_i32x2();
simde_int32x2x4_t e = {{a, b, c, d}};
simde_test_arm_neon_write_i32x2x4(2, e, SIMDE_TEST_VEC_POS_FIRST);
int32_t buf[8];
simde_vst1_s32_x4(buf, e);
simde_test_codegen_write_vi32(2, sizeof(buf) / sizeof(buf[0]), buf,
SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vst1_s64_x4 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
int64_t r[4][1];
int64_t a[4];
} test_vec[] = {
{
{ { INT64_C( 1261184281633460936) },
{ -INT64_C( 3629465062852297621) },
{ INT64_C( 2723712263114231252) },
{ INT64_C( 1917344123157272275) } },
{ INT64_C( 1261184281633460936), -INT64_C( 3629465062852297621), INT64_C( 2723712263114231252), INT64_C( 1917344123157272275) } },
{
{ { -INT64_C( 5200064047555695528) },
{ INT64_C( 3870180195189380390) },
{ INT64_C( 7365174927807086897) },
{ INT64_C( 5520654430802947633) } },
{ -INT64_C( 5200064047555695528), INT64_C( 3870180195189380390), INT64_C( 7365174927807086897), INT64_C( 5520654430802947633) } },
{
{ { -INT64_C( 7566638429043111943) },
{ -INT64_C( 3075620290571665221) },
{ INT64_C( 7723140350262763316) },
{ INT64_C( 2849525319494197322) } },
{ -INT64_C( 7566638429043111943), -INT64_C( 3075620290571665221), INT64_C( 7723140350262763316), INT64_C( 2849525319494197322) } },
{
{ { INT64_C( 4348905495741700947) },
{ INT64_C( 4603709109053216874) },
{ INT64_C( 3327937906290968713) },
{ -INT64_C( 257840247290979051) } },
{ INT64_C( 4348905495741700947), INT64_C( 4603709109053216874), INT64_C( 3327937906290968713), -INT64_C( 257840247290979051) } },
{
{ { -INT64_C( 6030009554954037101) },
{ -INT64_C( 2577011902698051086) },
{ -INT64_C( 8180843182068645019) },
{ INT64_C( 7967497604580893932) } },
{ -INT64_C( 6030009554954037101), -INT64_C( 2577011902698051086), -INT64_C( 8180843182068645019), INT64_C( 7967497604580893932) } },
{
{ { INT64_C( 6774210351291650580) },
{ -INT64_C( 4635163504467526531) },
{ INT64_C( 495818284538023131) },
{ INT64_C( 337258627198661476) } },
{ INT64_C( 6774210351291650580), -INT64_C( 4635163504467526531), INT64_C( 495818284538023131), INT64_C( 337258627198661476) } },
{
{ { -INT64_C( 9058325420480777856) },
{ INT64_C( 1671679046805857561) },
{ INT64_C( 2192211482088520267) },
{ -INT64_C( 5263850109382293249) } },
{ -INT64_C( 9058325420480777856), INT64_C( 1671679046805857561), INT64_C( 2192211482088520267), -INT64_C( 5263850109382293249) } },
{
{ { -INT64_C( 4268026330833859267) },
{ INT64_C( 7126217536348559249) },
{ -INT64_C( 7170797556664348509) },
{ INT64_C( 2533977268612225597) } },
{ -INT64_C( 4268026330833859267), INT64_C( 7126217536348559249), -INT64_C( 7170797556664348509), INT64_C( 2533977268612225597) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int64x1x4_t r_ = { { simde_vld1_s64(test_vec[i].r[0]),
simde_vld1_s64(test_vec[i].r[1]),
simde_vld1_s64(test_vec[i].r[2]),
simde_vld1_s64(test_vec[i].r[3]) } };
SIMDE_ALIGN_TO_16 int64_t a_[4];
simde_vst1_s64_x4(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_int64x1_t a = simde_test_arm_neon_random_i64x1();
simde_int64x1_t b = simde_test_arm_neon_random_i64x1();
simde_int64x1_t c = simde_test_arm_neon_random_i64x1();
simde_int64x1_t d = simde_test_arm_neon_random_i64x1();
simde_int64x1x4_t e = {{a, b, c, d}};
simde_test_arm_neon_write_i64x1x4(2, e, SIMDE_TEST_VEC_POS_FIRST);
int64_t buf[4];
simde_vst1_s64_x4(buf, e);
simde_test_codegen_write_vi64(2, sizeof(buf) / sizeof(buf[0]), buf,
SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vst1_u8_x4 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
uint8_t r[4][8];
uint8_t a[32];
} test_vec[] = {
{
{ { UINT8_C(204), UINT8_C(205), UINT8_C(101), UINT8_C(118), UINT8_C(185), UINT8_C( 42), UINT8_C( 58), UINT8_C( 75) },
{ UINT8_C( 65), UINT8_C(113), UINT8_C( 25), UINT8_C( 88), UINT8_C(218), UINT8_C(254), UINT8_C(187), UINT8_C(126) },
{ UINT8_C( 79), UINT8_C(131), UINT8_C(220), UINT8_C(236), UINT8_C(184), UINT8_C( 88), UINT8_C(136), UINT8_C(246) },
{ UINT8_C( 51), UINT8_C( 20), UINT8_C(106), UINT8_C( 25), UINT8_C(146), UINT8_C(148), UINT8_C( 61), UINT8_C( 94) } },
{ UINT8_C(204), UINT8_C(205), UINT8_C(101), UINT8_C(118), UINT8_C(185), UINT8_C( 42), UINT8_C( 58), UINT8_C( 75),
UINT8_C( 65), UINT8_C(113), UINT8_C( 25), UINT8_C( 88), UINT8_C(218), UINT8_C(254), UINT8_C(187), UINT8_C(126),
UINT8_C( 79), UINT8_C(131), UINT8_C(220), UINT8_C(236), UINT8_C(184), UINT8_C( 88), UINT8_C(136), UINT8_C(246),
UINT8_C( 51), UINT8_C( 20), UINT8_C(106), UINT8_C( 25), UINT8_C(146), UINT8_C(148), UINT8_C( 61), UINT8_C( 94) } },
{
{ { UINT8_C( 97), UINT8_C(162), UINT8_C(213), UINT8_C( 27), UINT8_C(204), UINT8_C( 15), UINT8_C(102), UINT8_C( 14) },
{ UINT8_C(129), UINT8_C(127), UINT8_C(102), UINT8_C( 91), UINT8_C(125), UINT8_C( 33), UINT8_C(217), UINT8_C(204) },
{ UINT8_C(165), UINT8_C(181), UINT8_C(184), UINT8_C( 93), UINT8_C( 14), UINT8_C( 65), UINT8_C( 83), UINT8_C( 65) },
{ UINT8_C( 85), UINT8_C(189), UINT8_C( 90), UINT8_C(231), UINT8_C( 82), UINT8_C(151), UINT8_C( 70), UINT8_C(179) } },
{ UINT8_C( 97), UINT8_C(162), UINT8_C(213), UINT8_C( 27), UINT8_C(204), UINT8_C( 15), UINT8_C(102), UINT8_C( 14),
UINT8_C(129), UINT8_C(127), UINT8_C(102), UINT8_C( 91), UINT8_C(125), UINT8_C( 33), UINT8_C(217), UINT8_C(204),
UINT8_C(165), UINT8_C(181), UINT8_C(184), UINT8_C( 93), UINT8_C( 14), UINT8_C( 65), UINT8_C( 83), UINT8_C( 65),
UINT8_C( 85), UINT8_C(189), UINT8_C( 90), UINT8_C(231), UINT8_C( 82), UINT8_C(151), UINT8_C( 70), UINT8_C(179) } },
{
{ { UINT8_C( 58), UINT8_C( 27), UINT8_C(206), UINT8_C( 6), UINT8_C( 42), UINT8_C( 52), UINT8_C( 20), UINT8_C(171) },
{ UINT8_C(179), UINT8_C(123), UINT8_C( 7), UINT8_C( 49), UINT8_C(156), UINT8_C(224), UINT8_C(253), UINT8_C( 65) },
{ UINT8_C(150), UINT8_C(182), UINT8_C(159), UINT8_C(164), UINT8_C(247), UINT8_C(242), UINT8_C(229), UINT8_C( 76) },
{ UINT8_C(176), UINT8_C( 63), UINT8_C( 51), UINT8_C( 2), UINT8_C(215), UINT8_C(121), UINT8_C(181), UINT8_C( 17) } },
{ UINT8_C( 58), UINT8_C( 27), UINT8_C(206), UINT8_C( 6), UINT8_C( 42), UINT8_C( 52), UINT8_C( 20), UINT8_C(171),
UINT8_C(179), UINT8_C(123), UINT8_C( 7), UINT8_C( 49), UINT8_C(156), UINT8_C(224), UINT8_C(253), UINT8_C( 65),
UINT8_C(150), UINT8_C(182), UINT8_C(159), UINT8_C(164), UINT8_C(247), UINT8_C(242), UINT8_C(229), UINT8_C( 76),
UINT8_C(176), UINT8_C( 63), UINT8_C( 51), UINT8_C( 2), UINT8_C(215), UINT8_C(121), UINT8_C(181), UINT8_C( 17) } },
{
{ { UINT8_C(148), UINT8_C(132), UINT8_C( 23), UINT8_C(191), UINT8_C(184), UINT8_C( 44), UINT8_C(106), UINT8_C(108) },
{ UINT8_C(167), UINT8_C(113), UINT8_C(157), UINT8_C( 67), UINT8_C( 82), UINT8_C(154), UINT8_C(133), UINT8_C(232) },
{ UINT8_C( 80), UINT8_C( 36), UINT8_C(140), UINT8_C( 71), UINT8_C( 22), UINT8_C(113), UINT8_C(147), UINT8_C(198) },
{ UINT8_C(176), UINT8_C(199), UINT8_C(200), UINT8_C(135), UINT8_C( 64), UINT8_C(126), UINT8_C(152), UINT8_C(213) } },
{ UINT8_C(148), UINT8_C(132), UINT8_C( 23), UINT8_C(191), UINT8_C(184), UINT8_C( 44), UINT8_C(106), UINT8_C(108),
UINT8_C(167), UINT8_C(113), UINT8_C(157), UINT8_C( 67), UINT8_C( 82), UINT8_C(154), UINT8_C(133), UINT8_C(232),
UINT8_C( 80), UINT8_C( 36), UINT8_C(140), UINT8_C( 71), UINT8_C( 22), UINT8_C(113), UINT8_C(147), UINT8_C(198),
UINT8_C(176), UINT8_C(199), UINT8_C(200), UINT8_C(135), UINT8_C( 64), UINT8_C(126), UINT8_C(152), UINT8_C(213) } },
{
{ { UINT8_C( 2), UINT8_C(176), UINT8_C(148), UINT8_C(186), UINT8_C(220), UINT8_C(254), UINT8_C( 38), UINT8_C(131) },
{ UINT8_C(112), UINT8_C(195), UINT8_C(198), UINT8_C(194), UINT8_C( 94), UINT8_C( 75), UINT8_C(170), UINT8_C(174) },
{ UINT8_C(111), UINT8_C( 54), UINT8_C(246), UINT8_C(134), UINT8_C(167), UINT8_C(137), UINT8_C( 76), UINT8_C( 87) },
{ UINT8_C( 80), UINT8_C( 21), UINT8_C(223), UINT8_C(145), UINT8_C(147), UINT8_C(119), UINT8_C(102), UINT8_C(149) } },
{ UINT8_C( 2), UINT8_C(176), UINT8_C(148), UINT8_C(186), UINT8_C(220), UINT8_C(254), UINT8_C( 38), UINT8_C(131),
UINT8_C(112), UINT8_C(195), UINT8_C(198), UINT8_C(194), UINT8_C( 94), UINT8_C( 75), UINT8_C(170), UINT8_C(174),
UINT8_C(111), UINT8_C( 54), UINT8_C(246), UINT8_C(134), UINT8_C(167), UINT8_C(137), UINT8_C( 76), UINT8_C( 87),
UINT8_C( 80), UINT8_C( 21), UINT8_C(223), UINT8_C(145), UINT8_C(147), UINT8_C(119), UINT8_C(102), UINT8_C(149) } },
{
{ { UINT8_C( 39), UINT8_C(250), UINT8_C( 79), UINT8_C( 3), UINT8_C(248), UINT8_C(118), UINT8_C(134), UINT8_C(104) },
{ UINT8_C( 57), UINT8_C( 77), UINT8_C( 42), UINT8_C(151), UINT8_C(152), UINT8_C(212), UINT8_C( 70), UINT8_C( 8) },
{ UINT8_C( 10), UINT8_C( 60), UINT8_C(142), UINT8_C(177), UINT8_C(197), UINT8_C(218), UINT8_C( 9), UINT8_C( 22) },
{ UINT8_C(239), UINT8_C(232), UINT8_C(167), UINT8_C(130), UINT8_C( 95), UINT8_C( 13), UINT8_C( 23), UINT8_C(135) } },
{ UINT8_C( 39), UINT8_C(250), UINT8_C( 79), UINT8_C( 3), UINT8_C(248), UINT8_C(118), UINT8_C(134), UINT8_C(104),
UINT8_C( 57), UINT8_C( 77), UINT8_C( 42), UINT8_C(151), UINT8_C(152), UINT8_C(212), UINT8_C( 70), UINT8_C( 8),
UINT8_C( 10), UINT8_C( 60), UINT8_C(142), UINT8_C(177), UINT8_C(197), UINT8_C(218), UINT8_C( 9), UINT8_C( 22),
UINT8_C(239), UINT8_C(232), UINT8_C(167), UINT8_C(130), UINT8_C( 95), UINT8_C( 13), UINT8_C( 23), UINT8_C(135) } },
{
{ { UINT8_C( 7), UINT8_C(103), UINT8_C(138), UINT8_MAX, UINT8_C(221), UINT8_C( 17), UINT8_C(104), UINT8_C( 22) },
{ UINT8_C( 94), UINT8_C(146), UINT8_C(174), UINT8_C(246), UINT8_C(103), UINT8_C(244), UINT8_C(254), UINT8_C(113) },
{ UINT8_C( 48), UINT8_C(140), UINT8_C( 35), UINT8_C(245), UINT8_C(103), UINT8_C( 44), UINT8_C( 11), UINT8_C( 86) },
{ UINT8_C( 20), UINT8_C(178), UINT8_C(217), UINT8_C(115), UINT8_C(191), UINT8_C(240), UINT8_C(250), UINT8_C(198) } },
{ UINT8_C( 7), UINT8_C(103), UINT8_C(138), UINT8_MAX, UINT8_C(221), UINT8_C( 17), UINT8_C(104), UINT8_C( 22),
UINT8_C( 94), UINT8_C(146), UINT8_C(174), UINT8_C(246), UINT8_C(103), UINT8_C(244), UINT8_C(254), UINT8_C(113),
UINT8_C( 48), UINT8_C(140), UINT8_C( 35), UINT8_C(245), UINT8_C(103), UINT8_C( 44), UINT8_C( 11), UINT8_C( 86),
UINT8_C( 20), UINT8_C(178), UINT8_C(217), UINT8_C(115), UINT8_C(191), UINT8_C(240), UINT8_C(250), UINT8_C(198) } },
{
{ { UINT8_C( 87), UINT8_C(133), UINT8_C(198), UINT8_C( 52), UINT8_C(150), UINT8_C( 46), UINT8_C( 75), UINT8_C(244) },
{ UINT8_C(192), UINT8_C(249), UINT8_C(234), UINT8_C( 39), UINT8_C(237), UINT8_C(233), UINT8_C(153), UINT8_C( 29) },
{ UINT8_C(117), UINT8_C(188), UINT8_C( 18), UINT8_C(220), UINT8_C(232), UINT8_C( 30), UINT8_C( 51), UINT8_C(252) },
{ UINT8_C(208), UINT8_C( 12), UINT8_C(111), UINT8_C(144), UINT8_C(252), UINT8_C(106), UINT8_C( 86), UINT8_C( 84) } },
{ UINT8_C( 87), UINT8_C(133), UINT8_C(198), UINT8_C( 52), UINT8_C(150), UINT8_C( 46), UINT8_C( 75), UINT8_C(244),
UINT8_C(192), UINT8_C(249), UINT8_C(234), UINT8_C( 39), UINT8_C(237), UINT8_C(233), UINT8_C(153), UINT8_C( 29),
UINT8_C(117), UINT8_C(188), UINT8_C( 18), UINT8_C(220), UINT8_C(232), UINT8_C( 30), UINT8_C( 51), UINT8_C(252),
UINT8_C(208), UINT8_C( 12), UINT8_C(111), UINT8_C(144), UINT8_C(252), UINT8_C(106), UINT8_C( 86), UINT8_C( 84) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint8x8x4_t r_ = { { simde_vld1_u8(test_vec[i].r[0]),
simde_vld1_u8(test_vec[i].r[1]),
simde_vld1_u8(test_vec[i].r[2]),
simde_vld1_u8(test_vec[i].r[3]) } };
SIMDE_ALIGN_TO_16 uint8_t a_[32];
simde_vst1_u8_x4(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_uint8x8_t a = simde_test_arm_neon_random_u8x8();
simde_uint8x8_t b = simde_test_arm_neon_random_u8x8();
simde_uint8x8_t c = simde_test_arm_neon_random_u8x8();
simde_uint8x8_t d = simde_test_arm_neon_random_u8x8();
simde_uint8x8x4_t e = {{a, b, c, d}};
simde_test_arm_neon_write_u8x8x4(2, e, SIMDE_TEST_VEC_POS_FIRST);
uint8_t buf[32];
simde_vst1_u8_x4(buf, e);
simde_test_codegen_write_vu8(2, sizeof(buf) / sizeof(buf[0]), buf,
SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vst1_u16_x4 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
uint16_t r[4][4];
uint16_t a[16];
} test_vec[] = {
{
{ { UINT16_C( 7407), UINT16_C(34184), UINT16_C(54090), UINT16_C( 2937) },
{ UINT16_C(25548), UINT16_C(47410), UINT16_C(52044), UINT16_C(49878) },
{ UINT16_C(59783), UINT16_C(28574), UINT16_C(53511), UINT16_C(55147) },
{ UINT16_C(56285), UINT16_C(55911), UINT16_C(48709), UINT16_C(13358) } },
{ UINT16_C( 7407), UINT16_C(34184), UINT16_C(54090), UINT16_C( 2937), UINT16_C(25548), UINT16_C(47410), UINT16_C(52044), UINT16_C(49878),
UINT16_C(59783), UINT16_C(28574), UINT16_C(53511), UINT16_C(55147), UINT16_C(56285), UINT16_C(55911), UINT16_C(48709), UINT16_C(13358) } },
{
{ { UINT16_C(46810), UINT16_C( 9657), UINT16_C(12938), UINT16_C(22064) },
{ UINT16_C(25237), UINT16_C(57872), UINT16_C(58926), UINT16_C(46500) },
{ UINT16_C(17103), UINT16_C(54821), UINT16_C(36884), UINT16_C(61870) },
{ UINT16_C( 5483), UINT16_C(45259), UINT16_C(63955), UINT16_C(44772) } },
{ UINT16_C(46810), UINT16_C( 9657), UINT16_C(12938), UINT16_C(22064), UINT16_C(25237), UINT16_C(57872), UINT16_C(58926), UINT16_C(46500),
UINT16_C(17103), UINT16_C(54821), UINT16_C(36884), UINT16_C(61870), UINT16_C( 5483), UINT16_C(45259), UINT16_C(63955), UINT16_C(44772) } },
{
{ { UINT16_C(40368), UINT16_C(15059), UINT16_C( 975), UINT16_C(26000) },
{ UINT16_C(41061), UINT16_C(37703), UINT16_C(60295), UINT16_C(22089) },
{ UINT16_C(28205), UINT16_C(16685), UINT16_C(56318), UINT16_C(27187) },
{ UINT16_C(65264), UINT16_C(50202), UINT16_C(65528), UINT16_C(43122) } },
{ UINT16_C(40368), UINT16_C(15059), UINT16_C( 975), UINT16_C(26000), UINT16_C(41061), UINT16_C(37703), UINT16_C(60295), UINT16_C(22089),
UINT16_C(28205), UINT16_C(16685), UINT16_C(56318), UINT16_C(27187), UINT16_C(65264), UINT16_C(50202), UINT16_C(65528), UINT16_C(43122) } },
{
{ { UINT16_C(17820), UINT16_C(27874), UINT16_C(29256), UINT16_C(44497) },
{ UINT16_C( 6163), UINT16_C(39489), UINT16_C(35331), UINT16_C(12528) },
{ UINT16_C( 7672), UINT16_C(63090), UINT16_C(42488), UINT16_C(59744) },
{ UINT16_C(31651), UINT16_C(39853), UINT16_C( 8058), UINT16_C( 5699) } },
{ UINT16_C(17820), UINT16_C(27874), UINT16_C(29256), UINT16_C(44497), UINT16_C( 6163), UINT16_C(39489), UINT16_C(35331), UINT16_C(12528),
UINT16_C( 7672), UINT16_C(63090), UINT16_C(42488), UINT16_C(59744), UINT16_C(31651), UINT16_C(39853), UINT16_C( 8058), UINT16_C( 5699) } },
{
{ { UINT16_C( 9572), UINT16_C(44162), UINT16_C(21400), UINT16_C(43865) },
{ UINT16_C(39531), UINT16_C(28229), UINT16_C(13604), UINT16_C( 7327) },
{ UINT16_C( 4435), UINT16_C(19219), UINT16_C(29622), UINT16_C(22836) },
{ UINT16_C(57838), UINT16_C(26869), UINT16_C(14336), UINT16_C(25727) } },
{ UINT16_C( 9572), UINT16_C(44162), UINT16_C(21400), UINT16_C(43865), UINT16_C(39531), UINT16_C(28229), UINT16_C(13604), UINT16_C( 7327),
UINT16_C( 4435), UINT16_C(19219), UINT16_C(29622), UINT16_C(22836), UINT16_C(57838), UINT16_C(26869), UINT16_C(14336), UINT16_C(25727) } },
{
{ { UINT16_C( 350), UINT16_C(62992), UINT16_C(27221), UINT16_C(49313) },
{ UINT16_C(58884), UINT16_C(10543), UINT16_C(52763), UINT16_C(28229) },
{ UINT16_C(22751), UINT16_C(38330), UINT16_C(61132), UINT16_C(47854) },
{ UINT16_C(58320), UINT16_C(53283), UINT16_C(41500), UINT16_C(31285) } },
{ UINT16_C( 350), UINT16_C(62992), UINT16_C(27221), UINT16_C(49313), UINT16_C(58884), UINT16_C(10543), UINT16_C(52763), UINT16_C(28229),
UINT16_C(22751), UINT16_C(38330), UINT16_C(61132), UINT16_C(47854), UINT16_C(58320), UINT16_C(53283), UINT16_C(41500), UINT16_C(31285) } },
{
{ { UINT16_C(17827), UINT16_C(63600), UINT16_C( 4527), UINT16_C(46265) },
{ UINT16_C(59639), UINT16_C( 4829), UINT16_C( 8886), UINT16_C(38273) },
{ UINT16_C(15227), UINT16_C(18218), UINT16_C( 6185), UINT16_C(63745) },
{ UINT16_C( 9468), UINT16_C( 6346), UINT16_C(65478), UINT16_C(27282) } },
{ UINT16_C(17827), UINT16_C(63600), UINT16_C( 4527), UINT16_C(46265), UINT16_C(59639), UINT16_C( 4829), UINT16_C( 8886), UINT16_C(38273),
UINT16_C(15227), UINT16_C(18218), UINT16_C( 6185), UINT16_C(63745), UINT16_C( 9468), UINT16_C( 6346), UINT16_C(65478), UINT16_C(27282) } },
{
{ { UINT16_C( 580), UINT16_C(62562), UINT16_C( 6931), UINT16_C( 2728) },
{ UINT16_C(34051), UINT16_C(47388), UINT16_C(40359), UINT16_C( 8782) },
{ UINT16_C(30936), UINT16_C( 617), UINT16_C(27537), UINT16_C(36347) },
{ UINT16_C(50575), UINT16_C(22181), UINT16_C(14276), UINT16_C( 2496) } },
{ UINT16_C( 580), UINT16_C(62562), UINT16_C( 6931), UINT16_C( 2728), UINT16_C(34051), UINT16_C(47388), UINT16_C(40359), UINT16_C( 8782),
UINT16_C(30936), UINT16_C( 617), UINT16_C(27537), UINT16_C(36347), UINT16_C(50575), UINT16_C(22181), UINT16_C(14276), UINT16_C( 2496) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint16x4x4_t r_ = { { simde_vld1_u16(test_vec[i].r[0]),
simde_vld1_u16(test_vec[i].r[1]),
simde_vld1_u16(test_vec[i].r[2]),
simde_vld1_u16(test_vec[i].r[3]) } };
SIMDE_ALIGN_TO_16 uint16_t a_[16];
simde_vst1_u16_x4(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_uint16x4_t a = simde_test_arm_neon_random_u16x4();
simde_uint16x4_t b = simde_test_arm_neon_random_u16x4();
simde_uint16x4_t c = simde_test_arm_neon_random_u16x4();
simde_uint16x4_t d = simde_test_arm_neon_random_u16x4();
simde_uint16x4x4_t e = {{a, b, c, d}};
simde_test_arm_neon_write_u16x4x4(2, e, SIMDE_TEST_VEC_POS_FIRST);
uint16_t buf[16];
simde_vst1_u16_x4(buf, e);
simde_test_codegen_write_vu16(2, sizeof(buf) / sizeof(buf[0]), buf,
SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vst1_u32_x4 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
uint32_t r[4][2];
uint32_t a[8];
} test_vec[] = {
{
{ { UINT32_C(1291657785), UINT32_C(1096197438) },
{ UINT32_C(3522916906), UINT32_C(3908323600) },
{ UINT32_C(1407868354), UINT32_C(1491134152) },
{ UINT32_C(1890485675), UINT32_C(4118376124) } },
{ UINT32_C(1291657785), UINT32_C(1096197438), UINT32_C(3522916906), UINT32_C(3908323600), UINT32_C(1407868354), UINT32_C(1491134152), UINT32_C(1890485675), UINT32_C(4118376124) } },
{
{ { UINT32_C(3460396688), UINT32_C(1158715163) },
{ UINT32_C( 420875017), UINT32_C( 369232468) },
{ UINT32_C( 812248168), UINT32_C(2122861010) },
{ UINT32_C(2330867406), UINT32_C( 897542052) } },
{ UINT32_C(3460396688), UINT32_C(1158715163), UINT32_C( 420875017), UINT32_C( 369232468), UINT32_C( 812248168), UINT32_C(2122861010), UINT32_C(2330867406), UINT32_C( 897542052) } },
{
{ { UINT32_C(4160995549), UINT32_C(1631392599) },
{ UINT32_C(1937396510), UINT32_C(3330899038) },
{ UINT32_C(1006039913), UINT32_C( 196706108) },
{ UINT32_C(1519757237), UINT32_C(3952022798) } },
{ UINT32_C(4160995549), UINT32_C(1631392599), UINT32_C(1937396510), UINT32_C(3330899038), UINT32_C(1006039913), UINT32_C( 196706108), UINT32_C(1519757237), UINT32_C(3952022798) } },
{
{ { UINT32_C( 769888981), UINT32_C(3297648806) },
{ UINT32_C(3526822004), UINT32_C(4002988421) },
{ UINT32_C(4029255348), UINT32_C(3288064781) },
{ UINT32_C(2568851850), UINT32_C(2072292518) } },
{ UINT32_C( 769888981), UINT32_C(3297648806), UINT32_C(3526822004), UINT32_C(4002988421), UINT32_C(4029255348), UINT32_C(3288064781), UINT32_C(2568851850), UINT32_C(2072292518) } },
{
{ { UINT32_C(3836241982), UINT32_C(4238947976) },
{ UINT32_C(3301892159), UINT32_C(1437755041) },
{ UINT32_C( 38198261), UINT32_C(1237664190) },
{ UINT32_C(2028135122), UINT32_C(3455346318) } },
{ UINT32_C(3836241982), UINT32_C(4238947976), UINT32_C(3301892159), UINT32_C(1437755041), UINT32_C( 38198261), UINT32_C(1237664190), UINT32_C(2028135122), UINT32_C(3455346318) } },
{
{ { UINT32_C(1471257806), UINT32_C( 307452627) },
{ UINT32_C(3705020987), UINT32_C(2100463752) },
{ UINT32_C( 578844771), UINT32_C(2355840441) },
{ UINT32_C(3053735208), UINT32_C(2189686963) } },
{ UINT32_C(1471257806), UINT32_C( 307452627), UINT32_C(3705020987), UINT32_C(2100463752), UINT32_C( 578844771), UINT32_C(2355840441), UINT32_C(3053735208), UINT32_C(2189686963) } },
{
{ { UINT32_C(1759065493), UINT32_C(3397004431) },
{ UINT32_C(3618066510), UINT32_C( 995416536) },
{ UINT32_C( 173921361), UINT32_C(1117177882) },
{ UINT32_C(3388513045), UINT32_C( 676035731) } },
{ UINT32_C(1759065493), UINT32_C(3397004431), UINT32_C(3618066510), UINT32_C( 995416536), UINT32_C( 173921361), UINT32_C(1117177882), UINT32_C(3388513045), UINT32_C( 676035731) } },
{
{ { UINT32_C(1083188401), UINT32_C(2668300880) },
{ UINT32_C( 846639706), UINT32_C(3698248331) },
{ UINT32_C(3118910367), UINT32_C(2851831188) },
{ UINT32_C(2876437272), UINT32_C( 550813039) } },
{ UINT32_C(1083188401), UINT32_C(2668300880), UINT32_C( 846639706), UINT32_C(3698248331), UINT32_C(3118910367), UINT32_C(2851831188), UINT32_C(2876437272), UINT32_C( 550813039) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint32x2x4_t r_ = { { simde_vld1_u32(test_vec[i].r[0]),
simde_vld1_u32(test_vec[i].r[1]),
simde_vld1_u32(test_vec[i].r[2]),
simde_vld1_u32(test_vec[i].r[3]) } };
SIMDE_ALIGN_TO_16 uint32_t a_[8];
simde_vst1_u32_x4(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_uint32x2_t a = simde_test_arm_neon_random_u32x2();
simde_uint32x2_t b = simde_test_arm_neon_random_u32x2();
simde_uint32x2_t c = simde_test_arm_neon_random_u32x2();
simde_uint32x2_t d = simde_test_arm_neon_random_u32x2();
simde_uint32x2x4_t e = {{a, b, c, d}};
simde_test_arm_neon_write_u32x2x4(2, e, SIMDE_TEST_VEC_POS_FIRST);
uint32_t buf[8];
simde_vst1_u32_x4(buf, e);
simde_test_codegen_write_vu32(2, sizeof(buf) / sizeof(buf[0]), buf,
SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vst1_u64_x4 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
uint64_t r[4][1];
uint64_t a[4];
} test_vec[] = {
{
{ { UINT64_C(14542523896598455521) },
{ UINT64_C(12719689346676705054) },
{ UINT64_C( 32480573296044853) },
{ UINT64_C( 9577046048521381208) } },
{ UINT64_C(14542523896598455521), UINT64_C(12719689346676705054), UINT64_C( 32480573296044853), UINT64_C( 9577046048521381208) } },
{
{ { UINT64_C(15212464329190689252) },
{ UINT64_C(13299131365543647694) },
{ UINT64_C(13138677273433668204) },
{ UINT64_C( 7350550248164295130) } },
{ UINT64_C(15212464329190689252), UINT64_C(13299131365543647694), UINT64_C(13138677273433668204), UINT64_C( 7350550248164295130) } },
{
{ { UINT64_C( 1024523012306221231) },
{ UINT64_C( 2318086846211339247) },
{ UINT64_C( 8975335007655931257) },
{ UINT64_C( 2428843666941021388) } },
{ UINT64_C( 1024523012306221231), UINT64_C( 2318086846211339247), UINT64_C( 8975335007655931257), UINT64_C( 2428843666941021388) } },
{
{ { UINT64_C( 3675988725210639796) },
{ UINT64_C(16808508513841508719) },
{ UINT64_C( 5808605048304941438) },
{ UINT64_C( 5183171011618444891) } },
{ UINT64_C( 3675988725210639796), UINT64_C(16808508513841508719), UINT64_C( 5808605048304941438), UINT64_C( 5183171011618444891) } },
{
{ { UINT64_C(11400649353367090112) },
{ UINT64_C( 3209382832522779952) },
{ UINT64_C(17695462734621854653) },
{ UINT64_C( 4853104150470340735) } },
{ UINT64_C(11400649353367090112), UINT64_C( 3209382832522779952), UINT64_C(17695462734621854653), UINT64_C( 4853104150470340735) } },
{
{ { UINT64_C( 283866222607963171) },
{ UINT64_C( 8302154693671629148) },
{ UINT64_C(17007639947772199800) },
{ UINT64_C(11258250824909769079) } },
{ UINT64_C( 283866222607963171), UINT64_C( 8302154693671629148), UINT64_C(17007639947772199800), UINT64_C(11258250824909769079) } },
{
{ { UINT64_C( 6827982613444986091) },
{ UINT64_C( 844601480222172559) },
{ UINT64_C( 3061363299852315683) },
{ UINT64_C(13548061131060574958) } },
{ UINT64_C( 6827982613444986091), UINT64_C( 844601480222172559), UINT64_C( 3061363299852315683), UINT64_C(13548061131060574958) } },
{
{ { UINT64_C( 7009356742278247397) },
{ UINT64_C( 8232402338135322529) },
{ UINT64_C( 8117595947971796170) },
{ UINT64_C( 1262938830447102968) } },
{ UINT64_C( 7009356742278247397), UINT64_C( 8232402338135322529), UINT64_C( 8117595947971796170), UINT64_C( 1262938830447102968) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint64x1x4_t r_ = { { simde_vld1_u64(test_vec[i].r[0]),
simde_vld1_u64(test_vec[i].r[1]),
simde_vld1_u64(test_vec[i].r[2]),
simde_vld1_u64(test_vec[i].r[3]) } };
SIMDE_ALIGN_TO_16 uint64_t a_[4];
simde_vst1_u64_x4(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_uint64x1_t a = simde_test_arm_neon_random_u64x1();
simde_uint64x1_t b = simde_test_arm_neon_random_u64x1();
simde_uint64x1_t c = simde_test_arm_neon_random_u64x1();
simde_uint64x1_t d = simde_test_arm_neon_random_u64x1();
simde_uint64x1x4_t e = {{a, b, c, d}};
simde_test_arm_neon_write_u64x1x4(2, e, SIMDE_TEST_VEC_POS_FIRST);
uint64_t buf[4];
simde_vst1_u64_x4(buf, e);
simde_test_codegen_write_vu64(2, sizeof(buf) / sizeof(buf[0]), buf,
SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vst1_p8_x4 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
SIMDE_ALIGN_TO_16 simde_poly8_t val[4][8];
SIMDE_ALIGN_TO_16 simde_poly8_t r[32];
} test_vec[] = {
{ { { SIMDE_POLY8_C( 239), SIMDE_POLY8_C( 168), SIMDE_POLY8_C( 132), SIMDE_POLY8_C( 115),
SIMDE_POLY8_C( 182), SIMDE_POLY8_C( 107), SIMDE_POLY8_C( 214), SIMDE_POLY8_C( 157) },
{ SIMDE_POLY8_C( 141), SIMDE_POLY8_C( 100), SIMDE_POLY8_C( 49), SIMDE_POLY8_C( 219),
SIMDE_POLY8_C( 208), SIMDE_POLY8_C( 195), SIMDE_POLY8_C( 213), SIMDE_POLY8_C( 115) },
{ SIMDE_POLY8_C( 92), SIMDE_POLY8_C( 129), SIMDE_POLY8_C( 185), SIMDE_POLY8_C( 113),
SIMDE_POLY8_C( 95), SIMDE_POLY8_C( 0), SIMDE_POLY8_C( 33), SIMDE_POLY8_C( 41) },
{ SIMDE_POLY8_C( 75), SIMDE_POLY8_C( 38), SIMDE_POLY8_C( 32), SIMDE_POLY8_C( 235),
SIMDE_POLY8_C( 170), SIMDE_POLY8_C( 98), SIMDE_POLY8_C( 6), SIMDE_POLY8_C( 209) } },
{ SIMDE_POLY8_C( 239), SIMDE_POLY8_C( 168), SIMDE_POLY8_C( 132), SIMDE_POLY8_C( 115),
SIMDE_POLY8_C( 182), SIMDE_POLY8_C( 107), SIMDE_POLY8_C( 214), SIMDE_POLY8_C( 157),
SIMDE_POLY8_C( 141), SIMDE_POLY8_C( 100), SIMDE_POLY8_C( 49), SIMDE_POLY8_C( 219),
SIMDE_POLY8_C( 208), SIMDE_POLY8_C( 195), SIMDE_POLY8_C( 213), SIMDE_POLY8_C( 115),
SIMDE_POLY8_C( 92), SIMDE_POLY8_C( 129), SIMDE_POLY8_C( 185), SIMDE_POLY8_C( 113),
SIMDE_POLY8_C( 95), SIMDE_POLY8_C( 0), SIMDE_POLY8_C( 33), SIMDE_POLY8_C( 41),
SIMDE_POLY8_C( 75), SIMDE_POLY8_C( 38), SIMDE_POLY8_C( 32), SIMDE_POLY8_C( 235),
SIMDE_POLY8_C( 170), SIMDE_POLY8_C( 98), SIMDE_POLY8_C( 6), SIMDE_POLY8_C( 209) } },
{ { { SIMDE_POLY8_C( 148), SIMDE_POLY8_C( 50), SIMDE_POLY8_C( 48), SIMDE_POLY8_C( 185),
SIMDE_POLY8_C( 110), SIMDE_POLY8_C( 138), SIMDE_POLY8_C( 144), SIMDE_POLY8_C( 176) },
{ SIMDE_POLY8_C( 122), SIMDE_POLY8_C( 143), SIMDE_POLY8_C( 192), SIMDE_POLY8_C( 216),
SIMDE_POLY8_C( 143), SIMDE_POLY8_C( 194), SIMDE_POLY8_C( 121), SIMDE_POLY8_C( 67) },
{ SIMDE_POLY8_C( 179), SIMDE_POLY8_C( 168), SIMDE_POLY8_C( 133), SIMDE_POLY8_C( 72),
SIMDE_POLY8_C( 179), SIMDE_POLY8_C( 95), SIMDE_POLY8_C( 148), SIMDE_POLY8_C( 195) },
{ SIMDE_POLY8_C( 223), SIMDE_POLY8_C( 88), SIMDE_POLY8_C( 63), SIMDE_POLY8_C( 11),
SIMDE_POLY8_C( 36), SIMDE_POLY8_C( 178), SIMDE_POLY8_C( 194), SIMDE_POLY8_C( 157) } },
{ SIMDE_POLY8_C( 148), SIMDE_POLY8_C( 50), SIMDE_POLY8_C( 48), SIMDE_POLY8_C( 185),
SIMDE_POLY8_C( 110), SIMDE_POLY8_C( 138), SIMDE_POLY8_C( 144), SIMDE_POLY8_C( 176),
SIMDE_POLY8_C( 122), SIMDE_POLY8_C( 143), SIMDE_POLY8_C( 192), SIMDE_POLY8_C( 216),
SIMDE_POLY8_C( 143), SIMDE_POLY8_C( 194), SIMDE_POLY8_C( 121), SIMDE_POLY8_C( 67),
SIMDE_POLY8_C( 179), SIMDE_POLY8_C( 168), SIMDE_POLY8_C( 133), SIMDE_POLY8_C( 72),
SIMDE_POLY8_C( 179), SIMDE_POLY8_C( 95), SIMDE_POLY8_C( 148), SIMDE_POLY8_C( 195),
SIMDE_POLY8_C( 223), SIMDE_POLY8_C( 88), SIMDE_POLY8_C( 63), SIMDE_POLY8_C( 11),
SIMDE_POLY8_C( 36), SIMDE_POLY8_C( 178), SIMDE_POLY8_C( 194), SIMDE_POLY8_C( 157) } },
{ { { SIMDE_POLY8_C( 43), SIMDE_POLY8_C( 177), SIMDE_POLY8_C( 40), SIMDE_POLY8_C( 24),
SIMDE_POLY8_C( 213), SIMDE_POLY8_C( 77), SIMDE_POLY8_C( 57), SIMDE_POLY8_C( 192) },
{ SIMDE_POLY8_C( 132), SIMDE_POLY8_C( 178), SIMDE_POLY8_C( 180), SIMDE_POLY8_C( 94),
SIMDE_POLY8_C( 165), SIMDE_POLY8_C( 67), SIMDE_POLY8_C( 250), SIMDE_POLY8_C( 181) },
{ SIMDE_POLY8_C( 228), SIMDE_POLY8_C( 198), SIMDE_POLY8_C( 209), SIMDE_POLY8_C( 170),
SIMDE_POLY8_C( 116), SIMDE_POLY8_C( 78), SIMDE_POLY8_C( 243), SIMDE_POLY8_C( 109) },
{ SIMDE_POLY8_C( 206), SIMDE_POLY8_C( 24), SIMDE_POLY8_C( 164), SIMDE_POLY8_C( 108),
SIMDE_POLY8_C( 42), SIMDE_POLY8_C( 143), SIMDE_POLY8_C( 212), SIMDE_POLY8_C( 141) } },
{ SIMDE_POLY8_C( 43), SIMDE_POLY8_C( 177), SIMDE_POLY8_C( 40), SIMDE_POLY8_C( 24),
SIMDE_POLY8_C( 213), SIMDE_POLY8_C( 77), SIMDE_POLY8_C( 57), SIMDE_POLY8_C( 192),
SIMDE_POLY8_C( 132), SIMDE_POLY8_C( 178), SIMDE_POLY8_C( 180), SIMDE_POLY8_C( 94),
SIMDE_POLY8_C( 165), SIMDE_POLY8_C( 67), SIMDE_POLY8_C( 250), SIMDE_POLY8_C( 181),
SIMDE_POLY8_C( 228), SIMDE_POLY8_C( 198), SIMDE_POLY8_C( 209), SIMDE_POLY8_C( 170),
SIMDE_POLY8_C( 116), SIMDE_POLY8_C( 78), SIMDE_POLY8_C( 243), SIMDE_POLY8_C( 109),
SIMDE_POLY8_C( 206), SIMDE_POLY8_C( 24), SIMDE_POLY8_C( 164), SIMDE_POLY8_C( 108),
SIMDE_POLY8_C( 42), SIMDE_POLY8_C( 143), SIMDE_POLY8_C( 212), SIMDE_POLY8_C( 141) } },
{ { { SIMDE_POLY8_C( 182), SIMDE_POLY8_C( 18), SIMDE_POLY8_C( 47), SIMDE_POLY8_C( 217),
SIMDE_POLY8_C( 176), SIMDE_POLY8_C( 61), SIMDE_POLY8_C( 103), SIMDE_POLY8_C( 194) },
{ SIMDE_POLY8_C( 88), SIMDE_POLY8_C( 238), SIMDE_POLY8_C( 228), SIMDE_POLY8_C( 6),
SIMDE_POLY8_C( 41), SIMDE_POLY8_C( 120), SIMDE_POLY8_C( 117), SIMDE_POLY8_C( 253) },
{ SIMDE_POLY8_C( 97), SIMDE_POLY8_C( 139), SIMDE_POLY8_C( 69), SIMDE_POLY8_C( 245),
SIMDE_POLY8_C( 231), SIMDE_POLY8_C( 199), SIMDE_POLY8_C( 213), SIMDE_POLY8_C(UINT8_MAX) },
{ SIMDE_POLY8_C( 22), SIMDE_POLY8_C( 83), SIMDE_POLY8_C( 169), SIMDE_POLY8_C( 201),
SIMDE_POLY8_C( 197), SIMDE_POLY8_C( 237), SIMDE_POLY8_C( 9), SIMDE_POLY8_C( 172) } },
{ SIMDE_POLY8_C( 182), SIMDE_POLY8_C( 18), SIMDE_POLY8_C( 47), SIMDE_POLY8_C( 217),
SIMDE_POLY8_C( 176), SIMDE_POLY8_C( 61), SIMDE_POLY8_C( 103), SIMDE_POLY8_C( 194),
SIMDE_POLY8_C( 88), SIMDE_POLY8_C( 238), SIMDE_POLY8_C( 228), SIMDE_POLY8_C( 6),
SIMDE_POLY8_C( 41), SIMDE_POLY8_C( 120), SIMDE_POLY8_C( 117), SIMDE_POLY8_C( 253),
SIMDE_POLY8_C( 97), SIMDE_POLY8_C( 139), SIMDE_POLY8_C( 69), SIMDE_POLY8_C( 245),
SIMDE_POLY8_C( 231), SIMDE_POLY8_C( 199), SIMDE_POLY8_C( 213), SIMDE_POLY8_C(UINT8_MAX),
SIMDE_POLY8_C( 22), SIMDE_POLY8_C( 83), SIMDE_POLY8_C( 169), SIMDE_POLY8_C( 201),
SIMDE_POLY8_C( 197), SIMDE_POLY8_C( 237), SIMDE_POLY8_C( 9), SIMDE_POLY8_C( 172) } },
{ { { SIMDE_POLY8_C( 128), SIMDE_POLY8_C( 154), SIMDE_POLY8_C( 118), SIMDE_POLY8_C( 61),
SIMDE_POLY8_C( 73), SIMDE_POLY8_C( 6), SIMDE_POLY8_C( 166), SIMDE_POLY8_C( 118) },
{ SIMDE_POLY8_C( 187), SIMDE_POLY8_C( 16), SIMDE_POLY8_C( 233), SIMDE_POLY8_C( 193),
SIMDE_POLY8_C( 249), SIMDE_POLY8_C( 106), SIMDE_POLY8_C( 51), SIMDE_POLY8_C( 5) },
{ SIMDE_POLY8_C( 0), SIMDE_POLY8_C( 75), SIMDE_POLY8_C( 26), SIMDE_POLY8_C( 149),
SIMDE_POLY8_C( 47), SIMDE_POLY8_C( 146), SIMDE_POLY8_C( 151), SIMDE_POLY8_C( 119) },
{ SIMDE_POLY8_C( 49), SIMDE_POLY8_C( 179), SIMDE_POLY8_C( 152), SIMDE_POLY8_C( 44),
SIMDE_POLY8_C( 240), SIMDE_POLY8_C( 34), SIMDE_POLY8_C( 6), SIMDE_POLY8_C( 157) } },
{ SIMDE_POLY8_C( 128), SIMDE_POLY8_C( 154), SIMDE_POLY8_C( 118), SIMDE_POLY8_C( 61),
SIMDE_POLY8_C( 73), SIMDE_POLY8_C( 6), SIMDE_POLY8_C( 166), SIMDE_POLY8_C( 118),
SIMDE_POLY8_C( 187), SIMDE_POLY8_C( 16), SIMDE_POLY8_C( 233), SIMDE_POLY8_C( 193),
SIMDE_POLY8_C( 249), SIMDE_POLY8_C( 106), SIMDE_POLY8_C( 51), SIMDE_POLY8_C( 5),
SIMDE_POLY8_C( 0), SIMDE_POLY8_C( 75), SIMDE_POLY8_C( 26), SIMDE_POLY8_C( 149),
SIMDE_POLY8_C( 47), SIMDE_POLY8_C( 146), SIMDE_POLY8_C( 151), SIMDE_POLY8_C( 119),
SIMDE_POLY8_C( 49), SIMDE_POLY8_C( 179), SIMDE_POLY8_C( 152), SIMDE_POLY8_C( 44),
SIMDE_POLY8_C( 240), SIMDE_POLY8_C( 34), SIMDE_POLY8_C( 6), SIMDE_POLY8_C( 157) } },
{ { { SIMDE_POLY8_C( 167), SIMDE_POLY8_C( 171), SIMDE_POLY8_C( 139), SIMDE_POLY8_C( 154),
SIMDE_POLY8_C( 37), SIMDE_POLY8_C( 63), SIMDE_POLY8_C( 72), SIMDE_POLY8_C( 222) },
{ SIMDE_POLY8_C( 201), SIMDE_POLY8_C( 57), SIMDE_POLY8_C( 213), SIMDE_POLY8_C( 212),
SIMDE_POLY8_C( 191), SIMDE_POLY8_C( 24), SIMDE_POLY8_C( 111), SIMDE_POLY8_C( 131) },
{ SIMDE_POLY8_C( 254), SIMDE_POLY8_C( 151), SIMDE_POLY8_C( 9), SIMDE_POLY8_C( 174),
SIMDE_POLY8_C( 99), SIMDE_POLY8_C( 10), SIMDE_POLY8_C( 210), SIMDE_POLY8_C( 94) },
{ SIMDE_POLY8_C( 195), SIMDE_POLY8_C( 94), SIMDE_POLY8_C( 45), SIMDE_POLY8_C( 141),
SIMDE_POLY8_C( 153), SIMDE_POLY8_C( 247), SIMDE_POLY8_C( 220), SIMDE_POLY8_C( 86) } },
{ SIMDE_POLY8_C( 167), SIMDE_POLY8_C( 171), SIMDE_POLY8_C( 139), SIMDE_POLY8_C( 154),
SIMDE_POLY8_C( 37), SIMDE_POLY8_C( 63), SIMDE_POLY8_C( 72), SIMDE_POLY8_C( 222),
SIMDE_POLY8_C( 201), SIMDE_POLY8_C( 57), SIMDE_POLY8_C( 213), SIMDE_POLY8_C( 212),
SIMDE_POLY8_C( 191), SIMDE_POLY8_C( 24), SIMDE_POLY8_C( 111), SIMDE_POLY8_C( 131),
SIMDE_POLY8_C( 254), SIMDE_POLY8_C( 151), SIMDE_POLY8_C( 9), SIMDE_POLY8_C( 174),
SIMDE_POLY8_C( 99), SIMDE_POLY8_C( 10), SIMDE_POLY8_C( 210), SIMDE_POLY8_C( 94),
SIMDE_POLY8_C( 195), SIMDE_POLY8_C( 94), SIMDE_POLY8_C( 45), SIMDE_POLY8_C( 141),
SIMDE_POLY8_C( 153), SIMDE_POLY8_C( 247), SIMDE_POLY8_C( 220), SIMDE_POLY8_C( 86) } },
{ { { SIMDE_POLY8_C( 102), SIMDE_POLY8_C( 10), SIMDE_POLY8_C( 211), SIMDE_POLY8_C( 85),
SIMDE_POLY8_C( 84), SIMDE_POLY8_C( 254), SIMDE_POLY8_C( 78), SIMDE_POLY8_C( 151) },
{ SIMDE_POLY8_C( 91), SIMDE_POLY8_C( 193), SIMDE_POLY8_C( 79), SIMDE_POLY8_C( 231),
SIMDE_POLY8_C( 192), SIMDE_POLY8_C( 64), SIMDE_POLY8_C( 200), SIMDE_POLY8_C( 174) },
{ SIMDE_POLY8_C( 98), SIMDE_POLY8_C( 89), SIMDE_POLY8_C( 171), SIMDE_POLY8_C( 211),
SIMDE_POLY8_C( 7), SIMDE_POLY8_C( 78), SIMDE_POLY8_C( 147), SIMDE_POLY8_C( 134) },
{ SIMDE_POLY8_C( 142), SIMDE_POLY8_C( 197), SIMDE_POLY8_C( 109), SIMDE_POLY8_C( 68),
SIMDE_POLY8_C( 58), SIMDE_POLY8_C( 95), SIMDE_POLY8_C( 247), SIMDE_POLY8_C( 91) } },
{ SIMDE_POLY8_C( 102), SIMDE_POLY8_C( 10), SIMDE_POLY8_C( 211), SIMDE_POLY8_C( 85),
SIMDE_POLY8_C( 84), SIMDE_POLY8_C( 254), SIMDE_POLY8_C( 78), SIMDE_POLY8_C( 151),
SIMDE_POLY8_C( 91), SIMDE_POLY8_C( 193), SIMDE_POLY8_C( 79), SIMDE_POLY8_C( 231),
SIMDE_POLY8_C( 192), SIMDE_POLY8_C( 64), SIMDE_POLY8_C( 200), SIMDE_POLY8_C( 174),
SIMDE_POLY8_C( 98), SIMDE_POLY8_C( 89), SIMDE_POLY8_C( 171), SIMDE_POLY8_C( 211),
SIMDE_POLY8_C( 7), SIMDE_POLY8_C( 78), SIMDE_POLY8_C( 147), SIMDE_POLY8_C( 134),
SIMDE_POLY8_C( 142), SIMDE_POLY8_C( 197), SIMDE_POLY8_C( 109), SIMDE_POLY8_C( 68),
SIMDE_POLY8_C( 58), SIMDE_POLY8_C( 95), SIMDE_POLY8_C( 247), SIMDE_POLY8_C( 91) } },
{ { { SIMDE_POLY8_C( 123), SIMDE_POLY8_C( 118), SIMDE_POLY8_C( 31), SIMDE_POLY8_C( 26),
SIMDE_POLY8_C( 252), SIMDE_POLY8_C( 113), SIMDE_POLY8_C( 237), SIMDE_POLY8_C( 182) },
{ SIMDE_POLY8_C( 242), SIMDE_POLY8_C( 208), SIMDE_POLY8_C( 24), SIMDE_POLY8_C( 107),
SIMDE_POLY8_C( 70), SIMDE_POLY8_C( 26), SIMDE_POLY8_C( 252), SIMDE_POLY8_C( 190) },
{ SIMDE_POLY8_C( 35), SIMDE_POLY8_C( 227), SIMDE_POLY8_C( 22), SIMDE_POLY8_C( 221),
SIMDE_POLY8_C( 34), SIMDE_POLY8_C( 116), SIMDE_POLY8_C( 6), SIMDE_POLY8_C( 26) },
{ SIMDE_POLY8_C( 219), SIMDE_POLY8_C( 78), SIMDE_POLY8_C( 38), SIMDE_POLY8_C( 32),
SIMDE_POLY8_C( 207), SIMDE_POLY8_C( 67), SIMDE_POLY8_C( 113), SIMDE_POLY8_C( 148) } },
{ SIMDE_POLY8_C( 123), SIMDE_POLY8_C( 118), SIMDE_POLY8_C( 31), SIMDE_POLY8_C( 26),
SIMDE_POLY8_C( 252), SIMDE_POLY8_C( 113), SIMDE_POLY8_C( 237), SIMDE_POLY8_C( 182),
SIMDE_POLY8_C( 242), SIMDE_POLY8_C( 208), SIMDE_POLY8_C( 24), SIMDE_POLY8_C( 107),
SIMDE_POLY8_C( 70), SIMDE_POLY8_C( 26), SIMDE_POLY8_C( 252), SIMDE_POLY8_C( 190),
SIMDE_POLY8_C( 35), SIMDE_POLY8_C( 227), SIMDE_POLY8_C( 22), SIMDE_POLY8_C( 221),
SIMDE_POLY8_C( 34), SIMDE_POLY8_C( 116), SIMDE_POLY8_C( 6), SIMDE_POLY8_C( 26),
SIMDE_POLY8_C( 219), SIMDE_POLY8_C( 78), SIMDE_POLY8_C( 38), SIMDE_POLY8_C( 32),
SIMDE_POLY8_C( 207), SIMDE_POLY8_C( 67), SIMDE_POLY8_C( 113), SIMDE_POLY8_C( 148) } },
};
for (size_t i = 0; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
SIMDE_ALIGN_TO_16 simde_poly8x8x4_t val = {{
simde_vld1_p8(test_vec[i].val[0]),
simde_vld1_p8(test_vec[i].val[1]),
simde_vld1_p8(test_vec[i].val[2]),
simde_vld1_p8(test_vec[i].val[3]),
}};
SIMDE_ALIGN_TO_16 simde_poly8_t r_[32];
simde_vst1_p8_x4(r_, val);
simde_assert_equal_i(0, simde_memcmp(r_, test_vec[i].r, sizeof(test_vec[i].r)));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_poly8x4_t val[4] = simde_test_arm_neon_random_p8x4();
simde_poly8x32_t r = simde_vst1_p8_x4(val[4]);
simde_test_arm_neon_write_p8x4(2, val[4], SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_p8x32(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vst1_p16_x4 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
SIMDE_ALIGN_TO_16 simde_poly16_t val[4][4];
SIMDE_ALIGN_TO_16 simde_poly16_t r[16];
} test_vec[] = {
{ { { SIMDE_POLY16_C( 25729), SIMDE_POLY16_C( 57056), SIMDE_POLY16_C( 7758), SIMDE_POLY16_C( 29592) },
{ SIMDE_POLY16_C( 62257), SIMDE_POLY16_C( 4465), SIMDE_POLY16_C( 51976), SIMDE_POLY16_C( 54089) },
{ SIMDE_POLY16_C( 26431), SIMDE_POLY16_C( 44784), SIMDE_POLY16_C( 55229), SIMDE_POLY16_C( 15821) },
{ SIMDE_POLY16_C( 50051), SIMDE_POLY16_C( 60405), SIMDE_POLY16_C( 45404), SIMDE_POLY16_C( 55525) } },
{ SIMDE_POLY16_C( 25729), SIMDE_POLY16_C( 57056), SIMDE_POLY16_C( 7758), SIMDE_POLY16_C( 29592),
SIMDE_POLY16_C( 62257), SIMDE_POLY16_C( 4465), SIMDE_POLY16_C( 51976), SIMDE_POLY16_C( 54089),
SIMDE_POLY16_C( 26431), SIMDE_POLY16_C( 44784), SIMDE_POLY16_C( 55229), SIMDE_POLY16_C( 15821),
SIMDE_POLY16_C( 50051), SIMDE_POLY16_C( 60405), SIMDE_POLY16_C( 45404), SIMDE_POLY16_C( 55525) } },
{ { { SIMDE_POLY16_C( 17349), SIMDE_POLY16_C( 44793), SIMDE_POLY16_C( 25550), SIMDE_POLY16_C( 46441) },
{ SIMDE_POLY16_C( 24722), SIMDE_POLY16_C( 64482), SIMDE_POLY16_C( 10748), SIMDE_POLY16_C( 18274) },
{ SIMDE_POLY16_C( 5783), SIMDE_POLY16_C( 59648), SIMDE_POLY16_C( 35010), SIMDE_POLY16_C( 22686) },
{ SIMDE_POLY16_C( 30096), SIMDE_POLY16_C( 53437), SIMDE_POLY16_C( 44820), SIMDE_POLY16_C( 20697) } },
{ SIMDE_POLY16_C( 17349), SIMDE_POLY16_C( 44793), SIMDE_POLY16_C( 25550), SIMDE_POLY16_C( 46441),
SIMDE_POLY16_C( 24722), SIMDE_POLY16_C( 64482), SIMDE_POLY16_C( 10748), SIMDE_POLY16_C( 18274),
SIMDE_POLY16_C( 5783), SIMDE_POLY16_C( 59648), SIMDE_POLY16_C( 35010), SIMDE_POLY16_C( 22686),
SIMDE_POLY16_C( 30096), SIMDE_POLY16_C( 53437), SIMDE_POLY16_C( 44820), SIMDE_POLY16_C( 20697) } },
{ { { SIMDE_POLY16_C( 42648), SIMDE_POLY16_C( 4377), SIMDE_POLY16_C( 27340), SIMDE_POLY16_C( 51159) },
{ SIMDE_POLY16_C( 4903), SIMDE_POLY16_C( 14904), SIMDE_POLY16_C( 13563), SIMDE_POLY16_C( 32034) },
{ SIMDE_POLY16_C( 32057), SIMDE_POLY16_C( 56981), SIMDE_POLY16_C( 19267), SIMDE_POLY16_C( 2532) },
{ SIMDE_POLY16_C( 30715), SIMDE_POLY16_C( 52038), SIMDE_POLY16_C( 306), SIMDE_POLY16_C( 22885) } },
{ SIMDE_POLY16_C( 42648), SIMDE_POLY16_C( 4377), SIMDE_POLY16_C( 27340), SIMDE_POLY16_C( 51159),
SIMDE_POLY16_C( 4903), SIMDE_POLY16_C( 14904), SIMDE_POLY16_C( 13563), SIMDE_POLY16_C( 32034),
SIMDE_POLY16_C( 32057), SIMDE_POLY16_C( 56981), SIMDE_POLY16_C( 19267), SIMDE_POLY16_C( 2532),
SIMDE_POLY16_C( 30715), SIMDE_POLY16_C( 52038), SIMDE_POLY16_C( 306), SIMDE_POLY16_C( 22885) } },
{ { { SIMDE_POLY16_C( 53559), SIMDE_POLY16_C( 6890), SIMDE_POLY16_C( 56353), SIMDE_POLY16_C( 57009) },
{ SIMDE_POLY16_C( 48909), SIMDE_POLY16_C( 11096), SIMDE_POLY16_C( 51800), SIMDE_POLY16_C( 23412) },
{ SIMDE_POLY16_C( 14981), SIMDE_POLY16_C( 56121), SIMDE_POLY16_C( 837), SIMDE_POLY16_C( 40527) },
{ SIMDE_POLY16_C( 50574), SIMDE_POLY16_C( 43382), SIMDE_POLY16_C( 51940), SIMDE_POLY16_C( 27375) } },
{ SIMDE_POLY16_C( 53559), SIMDE_POLY16_C( 6890), SIMDE_POLY16_C( 56353), SIMDE_POLY16_C( 57009),
SIMDE_POLY16_C( 48909), SIMDE_POLY16_C( 11096), SIMDE_POLY16_C( 51800), SIMDE_POLY16_C( 23412),
SIMDE_POLY16_C( 14981), SIMDE_POLY16_C( 56121), SIMDE_POLY16_C( 837), SIMDE_POLY16_C( 40527),
SIMDE_POLY16_C( 50574), SIMDE_POLY16_C( 43382), SIMDE_POLY16_C( 51940), SIMDE_POLY16_C( 27375) } },
{ { { SIMDE_POLY16_C( 39251), SIMDE_POLY16_C( 42099), SIMDE_POLY16_C( 5104), SIMDE_POLY16_C( 2499) },
{ SIMDE_POLY16_C( 57630), SIMDE_POLY16_C( 34855), SIMDE_POLY16_C( 31484), SIMDE_POLY16_C( 34958) },
{ SIMDE_POLY16_C( 2288), SIMDE_POLY16_C( 43010), SIMDE_POLY16_C( 36889), SIMDE_POLY16_C( 47213) },
{ SIMDE_POLY16_C( 34452), SIMDE_POLY16_C( 51460), SIMDE_POLY16_C( 2692), SIMDE_POLY16_C( 63261) } },
{ SIMDE_POLY16_C( 39251), SIMDE_POLY16_C( 42099), SIMDE_POLY16_C( 5104), SIMDE_POLY16_C( 2499),
SIMDE_POLY16_C( 57630), SIMDE_POLY16_C( 34855), SIMDE_POLY16_C( 31484), SIMDE_POLY16_C( 34958),
SIMDE_POLY16_C( 2288), SIMDE_POLY16_C( 43010), SIMDE_POLY16_C( 36889), SIMDE_POLY16_C( 47213),
SIMDE_POLY16_C( 34452), SIMDE_POLY16_C( 51460), SIMDE_POLY16_C( 2692), SIMDE_POLY16_C( 63261) } },
{ { { SIMDE_POLY16_C( 58118), SIMDE_POLY16_C( 59824), SIMDE_POLY16_C( 23288), SIMDE_POLY16_C( 53095) },
{ SIMDE_POLY16_C( 50525), SIMDE_POLY16_C( 55648), SIMDE_POLY16_C( 5199), SIMDE_POLY16_C( 13794) },
{ SIMDE_POLY16_C( 14969), SIMDE_POLY16_C( 37017), SIMDE_POLY16_C( 8919), SIMDE_POLY16_C( 17478) },
{ SIMDE_POLY16_C( 37316), SIMDE_POLY16_C( 55686), SIMDE_POLY16_C( 24672), SIMDE_POLY16_C( 28152) } },
{ SIMDE_POLY16_C( 58118), SIMDE_POLY16_C( 59824), SIMDE_POLY16_C( 23288), SIMDE_POLY16_C( 53095),
SIMDE_POLY16_C( 50525), SIMDE_POLY16_C( 55648), SIMDE_POLY16_C( 5199), SIMDE_POLY16_C( 13794),
SIMDE_POLY16_C( 14969), SIMDE_POLY16_C( 37017), SIMDE_POLY16_C( 8919), SIMDE_POLY16_C( 17478),
SIMDE_POLY16_C( 37316), SIMDE_POLY16_C( 55686), SIMDE_POLY16_C( 24672), SIMDE_POLY16_C( 28152) } },
{ { { SIMDE_POLY16_C( 17543), SIMDE_POLY16_C( 40074), SIMDE_POLY16_C( 30410), SIMDE_POLY16_C( 26387) },
{ SIMDE_POLY16_C( 21270), SIMDE_POLY16_C( 41373), SIMDE_POLY16_C( 31235), SIMDE_POLY16_C( 50624) },
{ SIMDE_POLY16_C( 19705), SIMDE_POLY16_C( 34403), SIMDE_POLY16_C( 19947), SIMDE_POLY16_C( 59226) },
{ SIMDE_POLY16_C( 47944), SIMDE_POLY16_C( 63286), SIMDE_POLY16_C( 49228), SIMDE_POLY16_C( 47010) } },
{ SIMDE_POLY16_C( 17543), SIMDE_POLY16_C( 40074), SIMDE_POLY16_C( 30410), SIMDE_POLY16_C( 26387),
SIMDE_POLY16_C( 21270), SIMDE_POLY16_C( 41373), SIMDE_POLY16_C( 31235), SIMDE_POLY16_C( 50624),
SIMDE_POLY16_C( 19705), SIMDE_POLY16_C( 34403), SIMDE_POLY16_C( 19947), SIMDE_POLY16_C( 59226),
SIMDE_POLY16_C( 47944), SIMDE_POLY16_C( 63286), SIMDE_POLY16_C( 49228), SIMDE_POLY16_C( 47010) } },
{ { { SIMDE_POLY16_C( 53438), SIMDE_POLY16_C( 17092), SIMDE_POLY16_C( 36983), SIMDE_POLY16_C( 2008) },
{ SIMDE_POLY16_C( 2670), SIMDE_POLY16_C( 53725), SIMDE_POLY16_C( 26306), SIMDE_POLY16_C( 62606) },
{ SIMDE_POLY16_C( 43376), SIMDE_POLY16_C( 50048), SIMDE_POLY16_C( 48101), SIMDE_POLY16_C( 24429) },
{ SIMDE_POLY16_C( 49509), SIMDE_POLY16_C( 7357), SIMDE_POLY16_C( 64642), SIMDE_POLY16_C( 5212) } },
{ SIMDE_POLY16_C( 53438), SIMDE_POLY16_C( 17092), SIMDE_POLY16_C( 36983), SIMDE_POLY16_C( 2008),
SIMDE_POLY16_C( 2670), SIMDE_POLY16_C( 53725), SIMDE_POLY16_C( 26306), SIMDE_POLY16_C( 62606),
SIMDE_POLY16_C( 43376), SIMDE_POLY16_C( 50048), SIMDE_POLY16_C( 48101), SIMDE_POLY16_C( 24429),
SIMDE_POLY16_C( 49509), SIMDE_POLY16_C( 7357), SIMDE_POLY16_C( 64642), SIMDE_POLY16_C( 5212) } },
};
for (size_t i = 0; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
SIMDE_ALIGN_TO_16 simde_poly16x4x4_t val = {{
simde_vld1_p16(test_vec[i].val[0]),
simde_vld1_p16(test_vec[i].val[1]),
simde_vld1_p16(test_vec[i].val[2]),
simde_vld1_p16(test_vec[i].val[3]),
}};
SIMDE_ALIGN_TO_16 simde_poly16_t r_[16];
simde_vst1_p16_x4(r_, val);
simde_assert_equal_i(0, simde_memcmp(r_, test_vec[i].r, sizeof(test_vec[i].r)));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_poly16x4_t val[4] = simde_test_arm_neon_random_p16x4();
simde_poly16x16_t r = simde_vst1_p16_x4(val[4]);
simde_test_arm_neon_write_p16x4(2, val[4], SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_p16x16(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vst1_p64_x4 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
simde_poly64_t val[4][1];
simde_poly64_t r[4];
} test_vec[] = {
{ { { SIMDE_POLY64_C(11331190946082064707) },
{ SIMDE_POLY64_C(11498420970478559256) },
{ SIMDE_POLY64_C(17459515880911279401) },
{ SIMDE_POLY64_C(14751399554180394610) } },
{ SIMDE_POLY64_C(11331190946082064707), SIMDE_POLY64_C(11498420970478559256), SIMDE_POLY64_C(17459515880911279401), SIMDE_POLY64_C(14751399554180394610) } },
{ { { SIMDE_POLY64_C(12349406127557705267) },
{ SIMDE_POLY64_C( 8536837362503229377) },
{ SIMDE_POLY64_C(16068182070406184944) },
{ SIMDE_POLY64_C( 6428988212758009192) } },
{ SIMDE_POLY64_C(12349406127557705267), SIMDE_POLY64_C( 8536837362503229377), SIMDE_POLY64_C(16068182070406184944), SIMDE_POLY64_C( 6428988212758009192) } },
{ { { SIMDE_POLY64_C(10337944098472616063) },
{ SIMDE_POLY64_C(17492108346561249817) },
{ SIMDE_POLY64_C(17233336674284866078) },
{ SIMDE_POLY64_C(15935359759627089722) } },
{ SIMDE_POLY64_C(10337944098472616063), SIMDE_POLY64_C(17492108346561249817), SIMDE_POLY64_C(17233336674284866078), SIMDE_POLY64_C(15935359759627089722) } },
{ { { SIMDE_POLY64_C(16279553021308737546) },
{ SIMDE_POLY64_C( 9018088935562207240) },
{ SIMDE_POLY64_C(17764612581298294279) },
{ SIMDE_POLY64_C( 2603852360698883883) } },
{ SIMDE_POLY64_C(16279553021308737546), SIMDE_POLY64_C( 9018088935562207240), SIMDE_POLY64_C(17764612581298294279), SIMDE_POLY64_C( 2603852360698883883) } },
{ { { SIMDE_POLY64_C(18144162643747849065) },
{ SIMDE_POLY64_C( 2649716231223261360) },
{ SIMDE_POLY64_C(10930916692415351524) },
{ SIMDE_POLY64_C(15142691853928273144) } },
{ SIMDE_POLY64_C(18144162643747849065), SIMDE_POLY64_C( 2649716231223261360), SIMDE_POLY64_C(10930916692415351524), SIMDE_POLY64_C(15142691853928273144) } },
{ { { SIMDE_POLY64_C( 7120409268978699567) },
{ SIMDE_POLY64_C( 23296796017984974) },
{ SIMDE_POLY64_C( 4405647812432063866) },
{ SIMDE_POLY64_C(13471050062601811241) } },
{ SIMDE_POLY64_C( 7120409268978699567), SIMDE_POLY64_C( 23296796017984974), SIMDE_POLY64_C( 4405647812432063866), SIMDE_POLY64_C(13471050062601811241) } },
{ { { SIMDE_POLY64_C( 4203922365968289552) },
{ SIMDE_POLY64_C( 8555413176694307830) },
{ SIMDE_POLY64_C( 6661072410805989454) },
{ SIMDE_POLY64_C(13297436747740813836) } },
{ SIMDE_POLY64_C( 4203922365968289552), SIMDE_POLY64_C( 8555413176694307830), SIMDE_POLY64_C( 6661072410805989454), SIMDE_POLY64_C(13297436747740813836) } },
{ { { SIMDE_POLY64_C( 2706593918937914786) },
{ SIMDE_POLY64_C(17237405973050261558) },
{ SIMDE_POLY64_C(15312265763484903164) },
{ SIMDE_POLY64_C( 664393409059271305) } },
{ SIMDE_POLY64_C( 2706593918937914786), SIMDE_POLY64_C(17237405973050261558), SIMDE_POLY64_C(15312265763484903164), SIMDE_POLY64_C( 664393409059271305) } },
};
for (size_t i = 0; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
simde_poly64x1x4_t val = {{
simde_vld1_p64(test_vec[i].val[0]),
simde_vld1_p64(test_vec[i].val[1]),
simde_vld1_p64(test_vec[i].val[2]),
simde_vld1_p64(test_vec[i].val[3]),
}};
simde_poly64_t r_[4];
simde_vst1_p64_x4(r_, val);
simde_assert_equal_i(0, simde_memcmp(r_, test_vec[i].r, sizeof(test_vec[i].r)));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_poly64x4_t val[4] = simde_test_arm_neon_random_p64x4();
simde_poly64x4_t r = simde_vst1_p64_x4(val[4]);
simde_test_arm_neon_write_p64x4(2, val[4], SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_p64x4(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vst1_bf16_x4 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
simde_bfloat16 val[4][4];
simde_bfloat16 r[16];
} test_vec[] = {
{ { { SIMDE_BFLOAT16_VALUE( 82.328), SIMDE_BFLOAT16_VALUE( 70.920), SIMDE_BFLOAT16_VALUE( - 2.164), SIMDE_BFLOAT16_VALUE( 20.248) },
{ SIMDE_BFLOAT16_VALUE( 17.827), SIMDE_BFLOAT16_VALUE( - 14.465), SIMDE_BFLOAT16_VALUE( - 88.806), SIMDE_BFLOAT16_VALUE( 79.077) },
{ SIMDE_BFLOAT16_VALUE( 1.568), SIMDE_BFLOAT16_VALUE( - 20.954), SIMDE_BFLOAT16_VALUE( - 34.479), SIMDE_BFLOAT16_VALUE( - 40.339) },
{ SIMDE_BFLOAT16_VALUE( 35.388), SIMDE_BFLOAT16_VALUE( 7.745), SIMDE_BFLOAT16_VALUE( 48.873), SIMDE_BFLOAT16_VALUE( - 89.095) } },
{ SIMDE_BFLOAT16_VALUE( 82.328), SIMDE_BFLOAT16_VALUE( 70.920), SIMDE_BFLOAT16_VALUE( - 2.164), SIMDE_BFLOAT16_VALUE( 20.248),
SIMDE_BFLOAT16_VALUE( 17.827), SIMDE_BFLOAT16_VALUE( - 14.465), SIMDE_BFLOAT16_VALUE( - 88.806), SIMDE_BFLOAT16_VALUE( 79.077),
SIMDE_BFLOAT16_VALUE( 1.568), SIMDE_BFLOAT16_VALUE( - 20.954), SIMDE_BFLOAT16_VALUE( - 34.479), SIMDE_BFLOAT16_VALUE( - 40.339),
SIMDE_BFLOAT16_VALUE( 35.388), SIMDE_BFLOAT16_VALUE( 7.745), SIMDE_BFLOAT16_VALUE( 48.873), SIMDE_BFLOAT16_VALUE( - 89.095) } },
{ { { SIMDE_BFLOAT16_VALUE( - 85.226), SIMDE_BFLOAT16_VALUE( 68.050), SIMDE_BFLOAT16_VALUE( - 79.246), SIMDE_BFLOAT16_VALUE( - 6.999) },
{ SIMDE_BFLOAT16_VALUE( - 57.697), SIMDE_BFLOAT16_VALUE( - 37.357), SIMDE_BFLOAT16_VALUE( - 77.997), SIMDE_BFLOAT16_VALUE( - 49.541) },
{ SIMDE_BFLOAT16_VALUE( - 97.845), SIMDE_BFLOAT16_VALUE( - 58.594), SIMDE_BFLOAT16_VALUE( 49.242), SIMDE_BFLOAT16_VALUE( 38.316) },
{ SIMDE_BFLOAT16_VALUE( - 4.874), SIMDE_BFLOAT16_VALUE( 31.136), SIMDE_BFLOAT16_VALUE( 51.676), SIMDE_BFLOAT16_VALUE( - 89.351) } },
{ SIMDE_BFLOAT16_VALUE( - 85.226), SIMDE_BFLOAT16_VALUE( 68.050), SIMDE_BFLOAT16_VALUE( - 79.246), SIMDE_BFLOAT16_VALUE( - 6.999),
SIMDE_BFLOAT16_VALUE( - 57.697), SIMDE_BFLOAT16_VALUE( - 37.357), SIMDE_BFLOAT16_VALUE( - 77.997), SIMDE_BFLOAT16_VALUE( - 49.541),
SIMDE_BFLOAT16_VALUE( - 97.845), SIMDE_BFLOAT16_VALUE( - 58.594), SIMDE_BFLOAT16_VALUE( 49.242), SIMDE_BFLOAT16_VALUE( 38.316),
SIMDE_BFLOAT16_VALUE( - 4.874), SIMDE_BFLOAT16_VALUE( 31.136), SIMDE_BFLOAT16_VALUE( 51.676), SIMDE_BFLOAT16_VALUE( - 89.351) } },
{ { { SIMDE_BFLOAT16_VALUE( - 30.265), SIMDE_BFLOAT16_VALUE( - 14.175), SIMDE_BFLOAT16_VALUE( 36.709), SIMDE_BFLOAT16_VALUE( 19.621) },
{ SIMDE_BFLOAT16_VALUE( 43.887), SIMDE_BFLOAT16_VALUE( - 72.313), SIMDE_BFLOAT16_VALUE( 75.465), SIMDE_BFLOAT16_VALUE( - 60.500) },
{ SIMDE_BFLOAT16_VALUE( - 4.007), SIMDE_BFLOAT16_VALUE( 97.670), SIMDE_BFLOAT16_VALUE( - 48.236), SIMDE_BFLOAT16_VALUE( 41.558) },
{ SIMDE_BFLOAT16_VALUE( - 87.828), SIMDE_BFLOAT16_VALUE( 55.865), SIMDE_BFLOAT16_VALUE( 40.049), SIMDE_BFLOAT16_VALUE( - 99.926) } },
{ SIMDE_BFLOAT16_VALUE( - 30.265), SIMDE_BFLOAT16_VALUE( - 14.175), SIMDE_BFLOAT16_VALUE( 36.709), SIMDE_BFLOAT16_VALUE( 19.621),
SIMDE_BFLOAT16_VALUE( 43.887), SIMDE_BFLOAT16_VALUE( - 72.313), SIMDE_BFLOAT16_VALUE( 75.465), SIMDE_BFLOAT16_VALUE( - 60.500),
SIMDE_BFLOAT16_VALUE( - 4.007), SIMDE_BFLOAT16_VALUE( 97.670), SIMDE_BFLOAT16_VALUE( - 48.236), SIMDE_BFLOAT16_VALUE( 41.558),
SIMDE_BFLOAT16_VALUE( - 87.828), SIMDE_BFLOAT16_VALUE( 55.865), SIMDE_BFLOAT16_VALUE( 40.049), SIMDE_BFLOAT16_VALUE( - 99.926) } },
{ { { SIMDE_BFLOAT16_VALUE( - 44.272), SIMDE_BFLOAT16_VALUE( 10.085), SIMDE_BFLOAT16_VALUE( - 12.450), SIMDE_BFLOAT16_VALUE( 58.234) },
{ SIMDE_BFLOAT16_VALUE( - 92.323), SIMDE_BFLOAT16_VALUE( - 72.811), SIMDE_BFLOAT16_VALUE( - 75.942), SIMDE_BFLOAT16_VALUE( - 33.709) },
{ SIMDE_BFLOAT16_VALUE( - 54.556), SIMDE_BFLOAT16_VALUE( - 96.713), SIMDE_BFLOAT16_VALUE( - 44.482), SIMDE_BFLOAT16_VALUE( 86.965) },
{ SIMDE_BFLOAT16_VALUE( 91.324), SIMDE_BFLOAT16_VALUE( - 40.202), SIMDE_BFLOAT16_VALUE( - 14.814), SIMDE_BFLOAT16_VALUE( 88.549) } },
{ SIMDE_BFLOAT16_VALUE( - 44.272), SIMDE_BFLOAT16_VALUE( 10.085), SIMDE_BFLOAT16_VALUE( - 12.450), SIMDE_BFLOAT16_VALUE( 58.234),
SIMDE_BFLOAT16_VALUE( - 92.323), SIMDE_BFLOAT16_VALUE( - 72.811), SIMDE_BFLOAT16_VALUE( - 75.942), SIMDE_BFLOAT16_VALUE( - 33.709),
SIMDE_BFLOAT16_VALUE( - 54.556), SIMDE_BFLOAT16_VALUE( - 96.713), SIMDE_BFLOAT16_VALUE( - 44.482), SIMDE_BFLOAT16_VALUE( 86.965),
SIMDE_BFLOAT16_VALUE( 91.324), SIMDE_BFLOAT16_VALUE( - 40.202), SIMDE_BFLOAT16_VALUE( - 14.814), SIMDE_BFLOAT16_VALUE( 88.549) } },
{ { { SIMDE_BFLOAT16_VALUE( 2.562), SIMDE_BFLOAT16_VALUE( - 38.287), SIMDE_BFLOAT16_VALUE( - 35.816), SIMDE_BFLOAT16_VALUE( 15.466) },
{ SIMDE_BFLOAT16_VALUE( 18.376), SIMDE_BFLOAT16_VALUE( - 90.001), SIMDE_BFLOAT16_VALUE( 64.324), SIMDE_BFLOAT16_VALUE( - 33.166) },
{ SIMDE_BFLOAT16_VALUE( - 69.347), SIMDE_BFLOAT16_VALUE( 26.212), SIMDE_BFLOAT16_VALUE( - 90.466), SIMDE_BFLOAT16_VALUE( - 27.484) },
{ SIMDE_BFLOAT16_VALUE( - 55.925), SIMDE_BFLOAT16_VALUE( - 34.864), SIMDE_BFLOAT16_VALUE( - 97.656), SIMDE_BFLOAT16_VALUE( - 7.985) } },
{ SIMDE_BFLOAT16_VALUE( 2.562), SIMDE_BFLOAT16_VALUE( - 38.287), SIMDE_BFLOAT16_VALUE( - 35.816), SIMDE_BFLOAT16_VALUE( 15.466),
SIMDE_BFLOAT16_VALUE( 18.376), SIMDE_BFLOAT16_VALUE( - 90.001), SIMDE_BFLOAT16_VALUE( 64.324), SIMDE_BFLOAT16_VALUE( - 33.166),
SIMDE_BFLOAT16_VALUE( - 69.347), SIMDE_BFLOAT16_VALUE( 26.212), SIMDE_BFLOAT16_VALUE( - 90.466), SIMDE_BFLOAT16_VALUE( - 27.484),
SIMDE_BFLOAT16_VALUE( - 55.925), SIMDE_BFLOAT16_VALUE( - 34.864), SIMDE_BFLOAT16_VALUE( - 97.656), SIMDE_BFLOAT16_VALUE( - 7.985) } },
{ { { SIMDE_BFLOAT16_VALUE( 52.345), SIMDE_BFLOAT16_VALUE( - 67.483), SIMDE_BFLOAT16_VALUE( 35.701), SIMDE_BFLOAT16_VALUE( 91.753) },
{ SIMDE_BFLOAT16_VALUE( 19.358), SIMDE_BFLOAT16_VALUE( - 88.690), SIMDE_BFLOAT16_VALUE( 47.635), SIMDE_BFLOAT16_VALUE( 8.845) },
{ SIMDE_BFLOAT16_VALUE( - 20.974), SIMDE_BFLOAT16_VALUE( 4.303), SIMDE_BFLOAT16_VALUE( - 69.975), SIMDE_BFLOAT16_VALUE( - 29.454) },
{ SIMDE_BFLOAT16_VALUE( 18.539), SIMDE_BFLOAT16_VALUE( 11.611), SIMDE_BFLOAT16_VALUE( - 30.865), SIMDE_BFLOAT16_VALUE( 45.777) } },
{ SIMDE_BFLOAT16_VALUE( 52.345), SIMDE_BFLOAT16_VALUE( - 67.483), SIMDE_BFLOAT16_VALUE( 35.701), SIMDE_BFLOAT16_VALUE( 91.753),
SIMDE_BFLOAT16_VALUE( 19.358), SIMDE_BFLOAT16_VALUE( - 88.690), SIMDE_BFLOAT16_VALUE( 47.635), SIMDE_BFLOAT16_VALUE( 8.845),
SIMDE_BFLOAT16_VALUE( - 20.974), SIMDE_BFLOAT16_VALUE( 4.303), SIMDE_BFLOAT16_VALUE( - 69.975), SIMDE_BFLOAT16_VALUE( - 29.454),
SIMDE_BFLOAT16_VALUE( 18.539), SIMDE_BFLOAT16_VALUE( 11.611), SIMDE_BFLOAT16_VALUE( - 30.865), SIMDE_BFLOAT16_VALUE( 45.777) } },
{ { { SIMDE_BFLOAT16_VALUE( - 6.544), SIMDE_BFLOAT16_VALUE( 72.545), SIMDE_BFLOAT16_VALUE( - 38.100), SIMDE_BFLOAT16_VALUE( 66.147) },
{ SIMDE_BFLOAT16_VALUE( - 39.990), SIMDE_BFLOAT16_VALUE( 59.395), SIMDE_BFLOAT16_VALUE( 58.133), SIMDE_BFLOAT16_VALUE( 62.227) },
{ SIMDE_BFLOAT16_VALUE( 17.801), SIMDE_BFLOAT16_VALUE( 50.002), SIMDE_BFLOAT16_VALUE( 92.224), SIMDE_BFLOAT16_VALUE( - 44.924) },
{ SIMDE_BFLOAT16_VALUE( 11.046), SIMDE_BFLOAT16_VALUE( 54.927), SIMDE_BFLOAT16_VALUE( - 65.414), SIMDE_BFLOAT16_VALUE( - 73.599) } },
{ SIMDE_BFLOAT16_VALUE( - 6.544), SIMDE_BFLOAT16_VALUE( 72.545), SIMDE_BFLOAT16_VALUE( - 38.100), SIMDE_BFLOAT16_VALUE( 66.147),
SIMDE_BFLOAT16_VALUE( - 39.990), SIMDE_BFLOAT16_VALUE( 59.395), SIMDE_BFLOAT16_VALUE( 58.133), SIMDE_BFLOAT16_VALUE( 62.227),
SIMDE_BFLOAT16_VALUE( 17.801), SIMDE_BFLOAT16_VALUE( 50.002), SIMDE_BFLOAT16_VALUE( 92.224), SIMDE_BFLOAT16_VALUE( - 44.924),
SIMDE_BFLOAT16_VALUE( 11.046), SIMDE_BFLOAT16_VALUE( 54.927), SIMDE_BFLOAT16_VALUE( - 65.414), SIMDE_BFLOAT16_VALUE( - 73.599) } },
{ { { SIMDE_BFLOAT16_VALUE( - 96.039), SIMDE_BFLOAT16_VALUE( 20.111), SIMDE_BFLOAT16_VALUE( - 49.906), SIMDE_BFLOAT16_VALUE( - 73.928) },
{ SIMDE_BFLOAT16_VALUE( 70.164), SIMDE_BFLOAT16_VALUE( 52.349), SIMDE_BFLOAT16_VALUE( 46.465), SIMDE_BFLOAT16_VALUE( 59.387) },
{ SIMDE_BFLOAT16_VALUE( - 74.522), SIMDE_BFLOAT16_VALUE( - 64.090), SIMDE_BFLOAT16_VALUE( - 64.099), SIMDE_BFLOAT16_VALUE( 19.591) },
{ SIMDE_BFLOAT16_VALUE( 39.551), SIMDE_BFLOAT16_VALUE( - 75.560), SIMDE_BFLOAT16_VALUE( - 12.722), SIMDE_BFLOAT16_VALUE( - 45.531) } },
{ SIMDE_BFLOAT16_VALUE( - 96.039), SIMDE_BFLOAT16_VALUE( 20.111), SIMDE_BFLOAT16_VALUE( - 49.906), SIMDE_BFLOAT16_VALUE( - 73.928),
SIMDE_BFLOAT16_VALUE( 70.164), SIMDE_BFLOAT16_VALUE( 52.349), SIMDE_BFLOAT16_VALUE( 46.465), SIMDE_BFLOAT16_VALUE( 59.387),
SIMDE_BFLOAT16_VALUE( - 74.522), SIMDE_BFLOAT16_VALUE( - 64.090), SIMDE_BFLOAT16_VALUE( - 64.099), SIMDE_BFLOAT16_VALUE( 19.591),
SIMDE_BFLOAT16_VALUE( 39.551), SIMDE_BFLOAT16_VALUE( - 75.560), SIMDE_BFLOAT16_VALUE( - 12.722), SIMDE_BFLOAT16_VALUE( - 45.531) } },
};
for (size_t i = 0; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
simde_bfloat16x4x4_t val = {{
simde_vld1_bf16(test_vec[i].val[0]),
simde_vld1_bf16(test_vec[i].val[1]),
simde_vld1_bf16(test_vec[i].val[2]),
simde_vld1_bf16(test_vec[i].val[3]),
}};
simde_bfloat16 r_[16];
simde_vst1_bf16_x4(r_, val);
simde_assert_equal_i(0, simde_memcmp(r_, test_vec[i].r, sizeof(test_vec[i].r)));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_bfloat16x4_t val[4] = simde_test_arm_neon_random_bf16x4(-100.0f, 100.0f);
simde_bfloat16x16_t r = simde_vst1_bf16_x4(val[4]);
simde_test_arm_neon_write_bf16x4(2, val[4], SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_bf16x16(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
#endif
SIMDE_TEST_FUNC_LIST_BEGIN
#if !defined(SIMDE_BUG_INTEL_857088)
SIMDE_TEST_FUNC_LIST_ENTRY(vst1_f16_x4)
SIMDE_TEST_FUNC_LIST_ENTRY(vst1_f32_x4)
SIMDE_TEST_FUNC_LIST_ENTRY(vst1_f64_x4)
SIMDE_TEST_FUNC_LIST_ENTRY(vst1_s8_x4)
SIMDE_TEST_FUNC_LIST_ENTRY(vst1_s16_x4)
SIMDE_TEST_FUNC_LIST_ENTRY(vst1_s32_x4)
SIMDE_TEST_FUNC_LIST_ENTRY(vst1_s64_x4)
SIMDE_TEST_FUNC_LIST_ENTRY(vst1_u8_x4)
SIMDE_TEST_FUNC_LIST_ENTRY(vst1_u16_x4)
SIMDE_TEST_FUNC_LIST_ENTRY(vst1_u32_x4)
SIMDE_TEST_FUNC_LIST_ENTRY(vst1_u64_x4)
SIMDE_TEST_FUNC_LIST_ENTRY(vst1_p8_x4)
SIMDE_TEST_FUNC_LIST_ENTRY(vst1_p16_x4)
SIMDE_TEST_FUNC_LIST_ENTRY(vst1_p64_x4)
SIMDE_TEST_FUNC_LIST_ENTRY(vst1_bf16_x4)
#endif
SIMDE_TEST_FUNC_LIST_END
#include "test-neon-footer.h"