#define SIMDE_TEST_ARM_NEON_INSN ld1_x3
#include "test/test.h"
#include "test-neon.h"
#include "../../../simde/arm/neon/ld1_x3.h"
#include "../../../simde/arm/neon/ld1_lane.h"
#if !defined(SIMDE_BUG_INTEL_857088)
static int
test_simde_vld1_f16_x3 (SIMDE_MUNIT_TEST_ARGS) {
struct {
simde_float16_t buf[12];
simde_float16_t expected[3][4];
} test_vec[] = {
{ { SIMDE_FLOAT16_VALUE(-5.79), SIMDE_FLOAT16_VALUE(4.80), SIMDE_FLOAT16_VALUE(9.66), SIMDE_FLOAT16_VALUE(-2.49),
SIMDE_FLOAT16_VALUE(-3.48), SIMDE_FLOAT16_VALUE(2.38), SIMDE_FLOAT16_VALUE(-7.06), SIMDE_FLOAT16_VALUE(-9.89),
SIMDE_FLOAT16_VALUE(-0.42), SIMDE_FLOAT16_VALUE(4.02), SIMDE_FLOAT16_VALUE(1.60), SIMDE_FLOAT16_VALUE(4.63) },
{ { SIMDE_FLOAT16_VALUE(-5.79), SIMDE_FLOAT16_VALUE(4.80), SIMDE_FLOAT16_VALUE(9.66), SIMDE_FLOAT16_VALUE(-2.49) },
{ SIMDE_FLOAT16_VALUE(-3.48), SIMDE_FLOAT16_VALUE(2.38), SIMDE_FLOAT16_VALUE(-7.06), SIMDE_FLOAT16_VALUE(-9.89) },
{ SIMDE_FLOAT16_VALUE(-0.42), SIMDE_FLOAT16_VALUE(4.02), SIMDE_FLOAT16_VALUE(1.60), SIMDE_FLOAT16_VALUE(4.63) } } },
{ { SIMDE_FLOAT16_VALUE(-7.02), SIMDE_FLOAT16_VALUE(1.17), SIMDE_FLOAT16_VALUE(-2.58), SIMDE_FLOAT16_VALUE(-1.99),
SIMDE_FLOAT16_VALUE(8.35), SIMDE_FLOAT16_VALUE(-6.76), SIMDE_FLOAT16_VALUE(-2.81), SIMDE_FLOAT16_VALUE(-8.55),
SIMDE_FLOAT16_VALUE(5.89), SIMDE_FLOAT16_VALUE(-9.99), SIMDE_FLOAT16_VALUE(3.60), SIMDE_FLOAT16_VALUE(-5.29) },
{ { SIMDE_FLOAT16_VALUE(-7.02), SIMDE_FLOAT16_VALUE(1.17), SIMDE_FLOAT16_VALUE(-2.58), SIMDE_FLOAT16_VALUE(-1.99) },
{ SIMDE_FLOAT16_VALUE(8.35), SIMDE_FLOAT16_VALUE(-6.76), SIMDE_FLOAT16_VALUE(-2.81), SIMDE_FLOAT16_VALUE(-8.55) },
{ SIMDE_FLOAT16_VALUE(5.89), SIMDE_FLOAT16_VALUE(-9.99), SIMDE_FLOAT16_VALUE(3.60), SIMDE_FLOAT16_VALUE(-5.29) } } },
{ { SIMDE_FLOAT16_VALUE(-0.56), SIMDE_FLOAT16_VALUE(-4.61), SIMDE_FLOAT16_VALUE(4.12), SIMDE_FLOAT16_VALUE(6.86),
SIMDE_FLOAT16_VALUE(-0.93), SIMDE_FLOAT16_VALUE(8.80), SIMDE_FLOAT16_VALUE(-4.47), SIMDE_FLOAT16_VALUE(-0.16),
SIMDE_FLOAT16_VALUE(-2.20), SIMDE_FLOAT16_VALUE(9.97), SIMDE_FLOAT16_VALUE(2.92), SIMDE_FLOAT16_VALUE(4.50) },
{ { SIMDE_FLOAT16_VALUE(-0.56), SIMDE_FLOAT16_VALUE(-4.61), SIMDE_FLOAT16_VALUE(4.12), SIMDE_FLOAT16_VALUE(6.86) },
{ SIMDE_FLOAT16_VALUE(-0.93), SIMDE_FLOAT16_VALUE(8.80), SIMDE_FLOAT16_VALUE(-4.47), SIMDE_FLOAT16_VALUE(-0.16) },
{ SIMDE_FLOAT16_VALUE(-2.20), SIMDE_FLOAT16_VALUE(9.97), SIMDE_FLOAT16_VALUE(2.92), SIMDE_FLOAT16_VALUE(4.50) } } },
{ { SIMDE_FLOAT16_VALUE(5.33), SIMDE_FLOAT16_VALUE(1.10), SIMDE_FLOAT16_VALUE(-0.07), SIMDE_FLOAT16_VALUE(4.80),
SIMDE_FLOAT16_VALUE(-7.40), SIMDE_FLOAT16_VALUE(4.65), SIMDE_FLOAT16_VALUE(9.31), SIMDE_FLOAT16_VALUE(8.79),
SIMDE_FLOAT16_VALUE(-3.82), SIMDE_FLOAT16_VALUE(4.51), SIMDE_FLOAT16_VALUE(-9.93), SIMDE_FLOAT16_VALUE(-6.90) },
{ { SIMDE_FLOAT16_VALUE(5.33), SIMDE_FLOAT16_VALUE(1.10), SIMDE_FLOAT16_VALUE(-0.07), SIMDE_FLOAT16_VALUE(4.80) },
{ SIMDE_FLOAT16_VALUE(-7.40), SIMDE_FLOAT16_VALUE(4.65), SIMDE_FLOAT16_VALUE(9.31), SIMDE_FLOAT16_VALUE(8.79) },
{ SIMDE_FLOAT16_VALUE(-3.82), SIMDE_FLOAT16_VALUE(4.51), SIMDE_FLOAT16_VALUE(-9.93), SIMDE_FLOAT16_VALUE(-6.90) } } },
{ { SIMDE_FLOAT16_VALUE(6.23), SIMDE_FLOAT16_VALUE(9.84), SIMDE_FLOAT16_VALUE(1.44), SIMDE_FLOAT16_VALUE(-9.15),
SIMDE_FLOAT16_VALUE(0.50), SIMDE_FLOAT16_VALUE(6.55), SIMDE_FLOAT16_VALUE(-3.70), SIMDE_FLOAT16_VALUE(-1.56),
SIMDE_FLOAT16_VALUE(-1.16), SIMDE_FLOAT16_VALUE(1.56), SIMDE_FLOAT16_VALUE(-4.94), SIMDE_FLOAT16_VALUE(-5.71) },
{ { SIMDE_FLOAT16_VALUE(6.23), SIMDE_FLOAT16_VALUE(9.84), SIMDE_FLOAT16_VALUE(1.44), SIMDE_FLOAT16_VALUE(-9.15) },
{ SIMDE_FLOAT16_VALUE(0.50), SIMDE_FLOAT16_VALUE(6.55), SIMDE_FLOAT16_VALUE(-3.70), SIMDE_FLOAT16_VALUE(-1.56) },
{ SIMDE_FLOAT16_VALUE(-1.16), SIMDE_FLOAT16_VALUE(1.56), SIMDE_FLOAT16_VALUE(-4.94), SIMDE_FLOAT16_VALUE(-5.71) } } },
};
for (size_t i = 0; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
simde_float16x4x3_t r = simde_vld1_f16_x3(test_vec[i].buf);
simde_float16x4x3_t expected = {{
simde_vld1_f16(test_vec[i].expected[0]),
simde_vld1_f16(test_vec[i].expected[1]),
simde_vld1_f16(test_vec[i].expected[2]),
}};
simde_test_arm_neon_assert_equal_f16x4x3(r, expected, 1);
}
return 0;
}
static int
test_simde_vld1_f32_x3 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
simde_float32 buf[6];
simde_float32 expected[3][2];
} test_vec[] = {
{ { SIMDE_FLOAT32_C( -888.98), SIMDE_FLOAT32_C( -694.40), SIMDE_FLOAT32_C( 20.16), SIMDE_FLOAT32_C( -917.81),
SIMDE_FLOAT32_C( 420.99), SIMDE_FLOAT32_C( 574.51) },
{ { SIMDE_FLOAT32_C( -888.98), SIMDE_FLOAT32_C( -694.40) },
{ SIMDE_FLOAT32_C( 20.16), SIMDE_FLOAT32_C( -917.81) },
{ SIMDE_FLOAT32_C( 420.99), SIMDE_FLOAT32_C( 574.51) } },
},
{ { SIMDE_FLOAT32_C( 346.79), SIMDE_FLOAT32_C( 618.26), SIMDE_FLOAT32_C( -931.06), SIMDE_FLOAT32_C( 657.47),
SIMDE_FLOAT32_C( 404.28), SIMDE_FLOAT32_C( 373.34) },
{ { SIMDE_FLOAT32_C( 346.79), SIMDE_FLOAT32_C( 618.26) },
{ SIMDE_FLOAT32_C( -931.06), SIMDE_FLOAT32_C( 657.47) },
{ SIMDE_FLOAT32_C( 404.28), SIMDE_FLOAT32_C( 373.34) } },
},
{ { SIMDE_FLOAT32_C( 444.60), SIMDE_FLOAT32_C( -509.24), SIMDE_FLOAT32_C( 602.28), SIMDE_FLOAT32_C( 77.95),
SIMDE_FLOAT32_C( 861.00), SIMDE_FLOAT32_C( 523.46) },
{ { SIMDE_FLOAT32_C( 444.60), SIMDE_FLOAT32_C( -509.24) },
{ SIMDE_FLOAT32_C( 602.28), SIMDE_FLOAT32_C( 77.95) },
{ SIMDE_FLOAT32_C( 861.00), SIMDE_FLOAT32_C( 523.46) } },
},
{ { SIMDE_FLOAT32_C( -666.26), SIMDE_FLOAT32_C( 585.18), SIMDE_FLOAT32_C( 589.29), SIMDE_FLOAT32_C( 163.58),
SIMDE_FLOAT32_C( -888.98), SIMDE_FLOAT32_C( -328.02) },
{ { SIMDE_FLOAT32_C( -666.26), SIMDE_FLOAT32_C( 585.18) },
{ SIMDE_FLOAT32_C( 589.29), SIMDE_FLOAT32_C( 163.58) },
{ SIMDE_FLOAT32_C( -888.98), SIMDE_FLOAT32_C( -328.02) } },
},
{ { SIMDE_FLOAT32_C( 903.32), SIMDE_FLOAT32_C( 619.16), SIMDE_FLOAT32_C( -497.00), SIMDE_FLOAT32_C( 850.93),
SIMDE_FLOAT32_C( 857.80), SIMDE_FLOAT32_C( 37.13) },
{ { SIMDE_FLOAT32_C( 903.32), SIMDE_FLOAT32_C( 619.16) },
{ SIMDE_FLOAT32_C( -497.00), SIMDE_FLOAT32_C( 850.93) },
{ SIMDE_FLOAT32_C( 857.80), SIMDE_FLOAT32_C( 37.13) } },
},
{ { SIMDE_FLOAT32_C( 302.11), SIMDE_FLOAT32_C( 968.83), SIMDE_FLOAT32_C( 342.73), SIMDE_FLOAT32_C( -677.74),
SIMDE_FLOAT32_C( -948.98), SIMDE_FLOAT32_C( -236.28) },
{ { SIMDE_FLOAT32_C( 302.11), SIMDE_FLOAT32_C( 968.83) },
{ SIMDE_FLOAT32_C( 342.73), SIMDE_FLOAT32_C( -677.74) },
{ SIMDE_FLOAT32_C( -948.98), SIMDE_FLOAT32_C( -236.28) } },
},
{ { SIMDE_FLOAT32_C( 896.77), SIMDE_FLOAT32_C( 397.81), SIMDE_FLOAT32_C( -618.02), SIMDE_FLOAT32_C( 965.72),
SIMDE_FLOAT32_C( 55.28), SIMDE_FLOAT32_C( 786.26) },
{ { SIMDE_FLOAT32_C( 896.77), SIMDE_FLOAT32_C( 397.81) },
{ SIMDE_FLOAT32_C( -618.02), SIMDE_FLOAT32_C( 965.72) },
{ SIMDE_FLOAT32_C( 55.28), SIMDE_FLOAT32_C( 786.26) } },
},
{ { SIMDE_FLOAT32_C( 339.06), SIMDE_FLOAT32_C( -500.12), SIMDE_FLOAT32_C( -722.98), SIMDE_FLOAT32_C( -58.66),
SIMDE_FLOAT32_C( 577.82), SIMDE_FLOAT32_C( -861.98) },
{ { SIMDE_FLOAT32_C( 339.06), SIMDE_FLOAT32_C( -500.12) },
{ SIMDE_FLOAT32_C( -722.98), SIMDE_FLOAT32_C( -58.66) },
{ SIMDE_FLOAT32_C( 577.82), SIMDE_FLOAT32_C( -861.98) } },
},
};
for (size_t i = 0; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
simde_float32x2x3_t r = simde_vld1_f32_x3(test_vec[i].buf);
simde_float32x2x3_t expected = {{
simde_vld1_f32(test_vec[i].expected[0]),
simde_vld1_f32(test_vec[i].expected[1]),
simde_vld1_f32(test_vec[i].expected[2]),
}};
simde_test_arm_neon_assert_equal_f32x2x3(r, expected, 1);
}
return 0;
#else
for (int i = 0 ; i < 8 ; i++) {
simde_float32 buf[6];
for (int j = 0 ; j < 6 ; j++) {
buf[j] = simde_test_codegen_random_f32(-1000.0f, 1000.0f);
}
simde_test_codegen_write_vf32(2, 6, buf, SIMDE_TEST_VEC_POS_FIRST);
simde_float32x2x3_t val = simde_vld1_f32_x3(buf);
simde_test_arm_neon_write_f32x2x3(2, val, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vld1_f64_x3 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
simde_float64 buf[3];
simde_float64 expected[3][1];
} test_vec[] = {
{ { SIMDE_FLOAT64_C( 569.90), SIMDE_FLOAT64_C( 741.85), SIMDE_FLOAT64_C( 966.09) },
{ { SIMDE_FLOAT64_C( 569.90) },
{ SIMDE_FLOAT64_C( 741.85) },
{ SIMDE_FLOAT64_C( 966.09) } },
},
{ { SIMDE_FLOAT64_C( -897.50), SIMDE_FLOAT64_C( 973.15), SIMDE_FLOAT64_C( -68.38) },
{ { SIMDE_FLOAT64_C( -897.50) },
{ SIMDE_FLOAT64_C( 973.15) },
{ SIMDE_FLOAT64_C( -68.38) } },
},
{ { SIMDE_FLOAT64_C( 262.37), SIMDE_FLOAT64_C( 619.82), SIMDE_FLOAT64_C( -410.17) },
{ { SIMDE_FLOAT64_C( 262.37) },
{ SIMDE_FLOAT64_C( 619.82) },
{ SIMDE_FLOAT64_C( -410.17) } },
},
{ { SIMDE_FLOAT64_C( 584.45), SIMDE_FLOAT64_C( -682.10), SIMDE_FLOAT64_C( -60.19) },
{ { SIMDE_FLOAT64_C( 584.45) },
{ SIMDE_FLOAT64_C( -682.10) },
{ SIMDE_FLOAT64_C( -60.19) } },
},
{ { SIMDE_FLOAT64_C( -712.90), SIMDE_FLOAT64_C( 33.31), SIMDE_FLOAT64_C( 411.66) },
{ { SIMDE_FLOAT64_C( -712.90) },
{ SIMDE_FLOAT64_C( 33.31) },
{ SIMDE_FLOAT64_C( 411.66) } },
},
{ { SIMDE_FLOAT64_C( -744.44), SIMDE_FLOAT64_C( 809.96), SIMDE_FLOAT64_C( -111.78) },
{ { SIMDE_FLOAT64_C( -744.44) },
{ SIMDE_FLOAT64_C( 809.96) },
{ SIMDE_FLOAT64_C( -111.78) } },
},
{ { SIMDE_FLOAT64_C( -857.02), SIMDE_FLOAT64_C( 251.71), SIMDE_FLOAT64_C( -229.61) },
{ { SIMDE_FLOAT64_C( -857.02) },
{ SIMDE_FLOAT64_C( 251.71) },
{ SIMDE_FLOAT64_C( -229.61) } },
},
{ { SIMDE_FLOAT64_C( 478.06), SIMDE_FLOAT64_C( -343.50), SIMDE_FLOAT64_C( 723.80) },
{ { SIMDE_FLOAT64_C( 478.06) },
{ SIMDE_FLOAT64_C( -343.50) },
{ SIMDE_FLOAT64_C( 723.80) } },
},
};
for (size_t i = 0; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
simde_float64x1x3_t r = simde_vld1_f64_x3(test_vec[i].buf);
simde_float64x1x3_t expected = {{
simde_vld1_f64(test_vec[i].expected[0]),
simde_vld1_f64(test_vec[i].expected[1]),
simde_vld1_f64(test_vec[i].expected[2]),
}};
simde_test_arm_neon_assert_equal_f64x1x3(r, expected, 1);
}
return 0;
#else
for (int i = 0 ; i < 8 ; i++) {
simde_float64 buf[3];
for (int j = 0 ; j < 3 ; j++) {
buf[j] = simde_test_codegen_random_f64(-1000.0, 1000.0);
}
simde_test_codegen_write_vf64(2, 3, buf, SIMDE_TEST_VEC_POS_FIRST);
simde_float64x1x3_t val = simde_vld1_f64_x3(buf);
simde_test_arm_neon_write_f64x1x3(2, val, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vld1_s8_x3 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
int8_t buf[24];
int8_t expected[3][8];
} test_vec[] = {
{ { -INT8_C( 11), -INT8_C( 121), INT8_C( 101), -INT8_C( 21), -INT8_C( 80), -INT8_C( 10), INT8_C( 117), -INT8_C( 117),
-INT8_C( 40), -INT8_C( 37), -INT8_C( 59), INT8_C( 16), -INT8_C( 11), INT8_C( 41), -INT8_C( 109), INT8_C( 76),
INT8_C( 10), -INT8_C( 40), -INT8_C( 85), INT8_C( 5), -INT8_C( 106), INT8_C( 100), INT8_C( 96), INT8_C( 54) },
{ { -INT8_C( 11), -INT8_C( 121), INT8_C( 101), -INT8_C( 21), -INT8_C( 80), -INT8_C( 10), INT8_C( 117), -INT8_C( 117) },
{ -INT8_C( 40), -INT8_C( 37), -INT8_C( 59), INT8_C( 16), -INT8_C( 11), INT8_C( 41), -INT8_C( 109), INT8_C( 76) },
{ INT8_C( 10), -INT8_C( 40), -INT8_C( 85), INT8_C( 5), -INT8_C( 106), INT8_C( 100), INT8_C( 96), INT8_C( 54) } },
},
{ { -INT8_C( 97), -INT8_C( 65), INT8_C( 42), -INT8_C( 27), INT8_C( 31), INT8_C( 108), INT8_C( 50), INT8_C( 21),
-INT8_C( 13), -INT8_C( 105), INT8_C( 0), -INT8_C( 92), -INT8_C( 114), INT8_C( 117), INT8_C( 47), INT8_C( 102),
INT8_C( 80), -INT8_C( 12), INT8_C( 118), INT8_C( 69), INT8_C( 29), INT8_C( 9), -INT8_C( 110), INT8_C( 39) },
{ { -INT8_C( 97), -INT8_C( 65), INT8_C( 42), -INT8_C( 27), INT8_C( 31), INT8_C( 108), INT8_C( 50), INT8_C( 21) },
{ -INT8_C( 13), -INT8_C( 105), INT8_C( 0), -INT8_C( 92), -INT8_C( 114), INT8_C( 117), INT8_C( 47), INT8_C( 102) },
{ INT8_C( 80), -INT8_C( 12), INT8_C( 118), INT8_C( 69), INT8_C( 29), INT8_C( 9), -INT8_C( 110), INT8_C( 39) } },
},
{ { -INT8_C( 31), INT8_C( 61), INT8_C( 44), INT8_C( 119), -INT8_C( 95), -INT8_C( 116), -INT8_C( 83), INT8_C( 64),
INT8_C( 75), -INT8_C( 40), INT8_C( 38), INT8_C( 107), INT8_C( 68), INT8_C( 88), INT8_MIN, INT8_C( 56),
-INT8_C( 17), INT8_MIN, -INT8_C( 36), INT8_C( 125), -INT8_C( 11), INT8_C( 11), -INT8_C( 29), INT8_C( 69) },
{ { -INT8_C( 31), INT8_C( 61), INT8_C( 44), INT8_C( 119), -INT8_C( 95), -INT8_C( 116), -INT8_C( 83), INT8_C( 64) },
{ INT8_C( 75), -INT8_C( 40), INT8_C( 38), INT8_C( 107), INT8_C( 68), INT8_C( 88), INT8_MIN, INT8_C( 56) },
{ -INT8_C( 17), INT8_MIN, -INT8_C( 36), INT8_C( 125), -INT8_C( 11), INT8_C( 11), -INT8_C( 29), INT8_C( 69) } },
},
{ { -INT8_C( 1), INT8_C( 90), -INT8_C( 117), INT8_C( 29), INT8_C( 99), INT8_C( 29), INT8_C( 68), INT8_C( 69),
INT8_C( 90), INT8_C( 113), -INT8_C( 68), -INT8_C( 5), -INT8_C( 3), INT8_C( 106), INT8_C( 59), INT8_C( 73),
INT8_C( 66), INT8_C( 97), -INT8_C( 76), -INT8_C( 122), -INT8_C( 71), INT8_C( 52), -INT8_C( 66), -INT8_C( 87) },
{ { -INT8_C( 1), INT8_C( 90), -INT8_C( 117), INT8_C( 29), INT8_C( 99), INT8_C( 29), INT8_C( 68), INT8_C( 69) },
{ INT8_C( 90), INT8_C( 113), -INT8_C( 68), -INT8_C( 5), -INT8_C( 3), INT8_C( 106), INT8_C( 59), INT8_C( 73) },
{ INT8_C( 66), INT8_C( 97), -INT8_C( 76), -INT8_C( 122), -INT8_C( 71), INT8_C( 52), -INT8_C( 66), -INT8_C( 87) } },
},
{ { -INT8_C( 76), -INT8_C( 102), INT8_C( 38), -INT8_C( 87), -INT8_C( 91), INT8_C( 10), -INT8_C( 18), -INT8_C( 91),
INT8_C( 100), INT8_C( 121), -INT8_C( 62), -INT8_C( 57), -INT8_C( 106), INT8_C( 6), INT8_C( 12), -INT8_C( 16),
INT8_C( 119), -INT8_C( 55), -INT8_C( 21), INT8_C( 117), INT8_C( 51), INT8_C( 39), -INT8_C( 66), INT8_C( 117) },
{ { -INT8_C( 76), -INT8_C( 102), INT8_C( 38), -INT8_C( 87), -INT8_C( 91), INT8_C( 10), -INT8_C( 18), -INT8_C( 91) },
{ INT8_C( 100), INT8_C( 121), -INT8_C( 62), -INT8_C( 57), -INT8_C( 106), INT8_C( 6), INT8_C( 12), -INT8_C( 16) },
{ INT8_C( 119), -INT8_C( 55), -INT8_C( 21), INT8_C( 117), INT8_C( 51), INT8_C( 39), -INT8_C( 66), INT8_C( 117) } },
},
{ { -INT8_C( 120), INT8_C( 114), -INT8_C( 5), INT8_C( 66), -INT8_C( 90), -INT8_C( 70), -INT8_C( 21), INT8_C( 90),
INT8_C( 84), INT8_C( 17), INT8_C( 3), -INT8_C( 6), INT8_C( 27), -INT8_C( 15), -INT8_C( 97), INT8_MAX,
INT8_C( 107), INT8_C( 97), INT8_C( 71), INT8_C( 1), INT8_C( 103), INT8_C( 83), -INT8_C( 14), -INT8_C( 33) },
{ { -INT8_C( 120), INT8_C( 114), -INT8_C( 5), INT8_C( 66), -INT8_C( 90), -INT8_C( 70), -INT8_C( 21), INT8_C( 90) },
{ INT8_C( 84), INT8_C( 17), INT8_C( 3), -INT8_C( 6), INT8_C( 27), -INT8_C( 15), -INT8_C( 97), INT8_MAX },
{ INT8_C( 107), INT8_C( 97), INT8_C( 71), INT8_C( 1), INT8_C( 103), INT8_C( 83), -INT8_C( 14), -INT8_C( 33) } },
},
{ { INT8_C( 28), -INT8_C( 35), INT8_C( 84), INT8_C( 79), INT8_C( 4), INT8_C( 18), -INT8_C( 60), -INT8_C( 115),
-INT8_C( 124), -INT8_C( 64), -INT8_C( 49), INT8_C( 42), INT8_C( 122), -INT8_C( 70), -INT8_C( 124), -INT8_C( 50),
-INT8_C( 53), -INT8_C( 121), -INT8_C( 56), -INT8_C( 25), INT8_C( 120), INT8_C( 103), INT8_C( 102), -INT8_C( 29) },
{ { INT8_C( 28), -INT8_C( 35), INT8_C( 84), INT8_C( 79), INT8_C( 4), INT8_C( 18), -INT8_C( 60), -INT8_C( 115) },
{ -INT8_C( 124), -INT8_C( 64), -INT8_C( 49), INT8_C( 42), INT8_C( 122), -INT8_C( 70), -INT8_C( 124), -INT8_C( 50) },
{ -INT8_C( 53), -INT8_C( 121), -INT8_C( 56), -INT8_C( 25), INT8_C( 120), INT8_C( 103), INT8_C( 102), -INT8_C( 29) } },
},
{ { -INT8_C( 56), -INT8_C( 83), -INT8_C( 27), INT8_C( 48), INT8_C( 1), -INT8_C( 41), INT8_C( 15), INT8_C( 29),
-INT8_C( 76), INT8_C( 99), INT8_C( 109), -INT8_C( 71), INT8_C( 117), INT8_C( 49), INT8_C( 70), -INT8_C( 7),
-INT8_C( 15), INT8_C( 21), INT8_C( 35), INT8_C( 107), -INT8_C( 49), -INT8_C( 89), INT8_C( 58), -INT8_C( 102) },
{ { -INT8_C( 56), -INT8_C( 83), -INT8_C( 27), INT8_C( 48), INT8_C( 1), -INT8_C( 41), INT8_C( 15), INT8_C( 29) },
{ -INT8_C( 76), INT8_C( 99), INT8_C( 109), -INT8_C( 71), INT8_C( 117), INT8_C( 49), INT8_C( 70), -INT8_C( 7) },
{ -INT8_C( 15), INT8_C( 21), INT8_C( 35), INT8_C( 107), -INT8_C( 49), -INT8_C( 89), INT8_C( 58), -INT8_C( 102) } },
},
};
for (size_t i = 0; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
simde_int8x8x3_t r = simde_vld1_s8_x3(test_vec[i].buf);
simde_int8x8x3_t expected = {{
simde_vld1_s8(test_vec[i].expected[0]),
simde_vld1_s8(test_vec[i].expected[1]),
simde_vld1_s8(test_vec[i].expected[2]),
}};
simde_test_arm_neon_assert_equal_i8x8x3(r, expected);
}
return 0;
#else
for (int i = 0 ; i < 8 ; i++) {
int8_t buf[24];
simde_test_codegen_random_memory(24, (uint8_t*)buf);
simde_test_codegen_write_vi8(2, 24, buf, SIMDE_TEST_VEC_POS_FIRST);
simde_int8x8x3_t val = simde_vld1_s8_x3(buf);
simde_test_arm_neon_write_i8x8x3(2, val, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vld1_s16_x3 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
int16_t buf[12];
int16_t expected[3][4];
} test_vec[] = {
{ { INT16_C( 25595), -INT16_C( 21319), INT16_C( 30814), -INT16_C( 703), INT16_C( 5368), INT16_C( 18560), -INT16_C( 14528), -INT16_C( 9009),
INT16_C( 19110), INT16_C( 1126), INT16_C( 2820), -INT16_C( 24628) },
{ { INT16_C( 25595), -INT16_C( 21319), INT16_C( 30814), -INT16_C( 703) },
{ INT16_C( 5368), INT16_C( 18560), -INT16_C( 14528), -INT16_C( 9009) },
{ INT16_C( 19110), INT16_C( 1126), INT16_C( 2820), -INT16_C( 24628) } },
},
{ { -INT16_C( 25991), -INT16_C( 15949), -INT16_C( 31863), -INT16_C( 31250), -INT16_C( 22553), INT16_C( 17713), INT16_C( 29472), INT16_C( 6210),
-INT16_C( 15481), -INT16_C( 14495), INT16_C( 12426), INT16_C( 12707) },
{ { -INT16_C( 25991), -INT16_C( 15949), -INT16_C( 31863), -INT16_C( 31250) },
{ -INT16_C( 22553), INT16_C( 17713), INT16_C( 29472), INT16_C( 6210) },
{ -INT16_C( 15481), -INT16_C( 14495), INT16_C( 12426), INT16_C( 12707) } },
},
{ { INT16_C( 2682), INT16_C( 32309), INT16_C( 533), -INT16_C( 28898), -INT16_C( 11876), INT16_C( 9808), INT16_C( 15956), INT16_C( 15275),
-INT16_C( 8987), INT16_C( 1409), -INT16_C( 15537), -INT16_C( 10466) },
{ { INT16_C( 2682), INT16_C( 32309), INT16_C( 533), -INT16_C( 28898) },
{ -INT16_C( 11876), INT16_C( 9808), INT16_C( 15956), INT16_C( 15275) },
{ -INT16_C( 8987), INT16_C( 1409), -INT16_C( 15537), -INT16_C( 10466) } },
},
{ { INT16_C( 32646), INT16_C( 4510), INT16_C( 17071), INT16_C( 10562), INT16_C( 30540), INT16_C( 25000), -INT16_C( 14727), INT16_C( 5872),
INT16_C( 16535), -INT16_C( 5316), -INT16_C( 6274), INT16_C( 25639) },
{ { INT16_C( 32646), INT16_C( 4510), INT16_C( 17071), INT16_C( 10562) },
{ INT16_C( 30540), INT16_C( 25000), -INT16_C( 14727), INT16_C( 5872) },
{ INT16_C( 16535), -INT16_C( 5316), -INT16_C( 6274), INT16_C( 25639) } },
},
{ { -INT16_C( 22333), INT16_C( 4969), -INT16_C( 30869), -INT16_C( 3350), -INT16_C( 30714), -INT16_C( 19197), INT16_C( 17866), INT16_C( 5855),
-INT16_C( 30788), INT16_C( 13944), INT16_C( 26701), -INT16_C( 7092) },
{ { -INT16_C( 22333), INT16_C( 4969), -INT16_C( 30869), -INT16_C( 3350) },
{ -INT16_C( 30714), -INT16_C( 19197), INT16_C( 17866), INT16_C( 5855) },
{ -INT16_C( 30788), INT16_C( 13944), INT16_C( 26701), -INT16_C( 7092) } },
},
{ { -INT16_C( 30551), INT16_C( 10191), -INT16_C( 2449), INT16_C( 12939), -INT16_C( 2658), INT16_C( 2629), INT16_C( 12156), -INT16_C( 31748),
-INT16_C( 72), -INT16_C( 32200), INT16_C( 5956), INT16_C( 153) },
{ { -INT16_C( 30551), INT16_C( 10191), -INT16_C( 2449), INT16_C( 12939) },
{ -INT16_C( 2658), INT16_C( 2629), INT16_C( 12156), -INT16_C( 31748) },
{ -INT16_C( 72), -INT16_C( 32200), INT16_C( 5956), INT16_C( 153) } },
},
{ { INT16_C( 4510), -INT16_C( 5322), -INT16_C( 32135), INT16_C( 8911), -INT16_C( 24822), INT16_C( 31050), -INT16_C( 10859), INT16_C( 13484),
-INT16_C( 3638), INT16_C( 18238), INT16_C( 14881), -INT16_C( 9782) },
{ { INT16_C( 4510), -INT16_C( 5322), -INT16_C( 32135), INT16_C( 8911) },
{ -INT16_C( 24822), INT16_C( 31050), -INT16_C( 10859), INT16_C( 13484) },
{ -INT16_C( 3638), INT16_C( 18238), INT16_C( 14881), -INT16_C( 9782) } },
},
{ { INT16_C( 569), INT16_C( 32091), -INT16_C( 3046), -INT16_C( 18307), -INT16_C( 19451), INT16_C( 32676), INT16_C( 29494), INT16_C( 16801),
-INT16_C( 5358), -INT16_C( 22342), INT16_C( 26305), -INT16_C( 29732) },
{ { INT16_C( 569), INT16_C( 32091), -INT16_C( 3046), -INT16_C( 18307) },
{ -INT16_C( 19451), INT16_C( 32676), INT16_C( 29494), INT16_C( 16801) },
{ -INT16_C( 5358), -INT16_C( 22342), INT16_C( 26305), -INT16_C( 29732) } },
},
};
for (size_t i = 0; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
simde_int16x4x3_t r = simde_vld1_s16_x3(test_vec[i].buf);
simde_int16x4x3_t expected = {{
simde_vld1_s16(test_vec[i].expected[0]),
simde_vld1_s16(test_vec[i].expected[1]),
simde_vld1_s16(test_vec[i].expected[2]),
}};
simde_test_arm_neon_assert_equal_i16x4x3(r, expected);
}
return 0;
#else
for (int i = 0 ; i < 8 ; i++) {
int16_t buf[12];
simde_test_codegen_random_memory(24, (uint8_t*)buf);
simde_test_codegen_write_vi16(2, 12, buf, SIMDE_TEST_VEC_POS_FIRST);
simde_int16x4x3_t val = simde_vld1_s16_x3(buf);
simde_test_arm_neon_write_i16x4x3(2, val, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vld1_s32_x3 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
int32_t buf[6];
int32_t expected[3][2];
} test_vec[] = {
{ { INT32_C( 2043812440), -INT32_C( 1923965868), -INT32_C( 1190482529), -INT32_C( 1485731934), INT32_C( 1915098427), -INT32_C( 1682716535) },
{ { INT32_C( 2043812440), -INT32_C( 1923965868) },
{ -INT32_C( 1190482529), -INT32_C( 1485731934) },
{ INT32_C( 1915098427), -INT32_C( 1682716535) } },
},
{ { INT32_C( 1950576051), INT32_C( 738205652), -INT32_C( 1918512583), INT32_C( 236648303), INT32_C( 1187456164), -INT32_C( 403818324) },
{ { INT32_C( 1950576051), INT32_C( 738205652) },
{ -INT32_C( 1918512583), INT32_C( 236648303) },
{ INT32_C( 1187456164), -INT32_C( 403818324) } },
},
{ { -INT32_C( 682027954), -INT32_C( 1871573796), INT32_C( 1308931706), INT32_C( 259654869), INT32_C( 1184636887), -INT32_C( 1168853226) },
{ { -INT32_C( 682027954), -INT32_C( 1871573796) },
{ INT32_C( 1308931706), INT32_C( 259654869) },
{ INT32_C( 1184636887), -INT32_C( 1168853226) } },
},
{ { -INT32_C( 2029970469), -INT32_C( 1586499757), -INT32_C( 528955389), INT32_C( 1332800469), INT32_C( 1990030497), INT32_C( 1350899577) },
{ { -INT32_C( 2029970469), -INT32_C( 1586499757) },
{ -INT32_C( 528955389), INT32_C( 1332800469) },
{ INT32_C( 1990030497), INT32_C( 1350899577) } },
},
{ { INT32_C( 1284907574), -INT32_C( 1274615079), INT32_C( 1480328965), -INT32_C( 84235274), INT32_C( 1222275699), -INT32_C( 23639459) },
{ { INT32_C( 1284907574), -INT32_C( 1274615079) },
{ INT32_C( 1480328965), -INT32_C( 84235274) },
{ INT32_C( 1222275699), -INT32_C( 23639459) } },
},
{ { INT32_C( 930428094), -INT32_C( 2121794997), -INT32_C( 171107044), INT32_C( 212521991), -INT32_C( 765073701), INT32_C( 80502673) },
{ { INT32_C( 930428094), -INT32_C( 2121794997) },
{ -INT32_C( 171107044), INT32_C( 212521991) },
{ -INT32_C( 765073701), INT32_C( 80502673) } },
},
{ { INT32_C( 793618129), -INT32_C( 1372723984), INT32_C( 1692836377), -INT32_C( 1176080995), -INT32_C( 1833978997), INT32_C( 1671387527) },
{ { INT32_C( 793618129), -INT32_C( 1372723984) },
{ INT32_C( 1692836377), -INT32_C( 1176080995) },
{ -INT32_C( 1833978997), INT32_C( 1671387527) } },
},
{ { -INT32_C( 801831873), INT32_C( 886309219), -INT32_C( 1755111001), INT32_C( 524652806), -INT32_C( 796710093), INT32_C( 613050777) },
{ { -INT32_C( 801831873), INT32_C( 886309219) },
{ -INT32_C( 1755111001), INT32_C( 524652806) },
{ -INT32_C( 796710093), INT32_C( 613050777) } },
},
};
for (size_t i = 0; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
simde_int32x2x3_t r = simde_vld1_s32_x3(test_vec[i].buf);
simde_int32x2x3_t expected = {{
simde_vld1_s32(test_vec[i].expected[0]),
simde_vld1_s32(test_vec[i].expected[1]),
simde_vld1_s32(test_vec[i].expected[2]),
}};
simde_test_arm_neon_assert_equal_i32x2x3(r, expected);
}
return 0;
#else
for (int i = 0 ; i < 8 ; i++) {
int32_t buf[6];
simde_test_codegen_random_memory(24, (uint8_t*)buf);
simde_test_codegen_write_vi32(2, 6, buf, SIMDE_TEST_VEC_POS_FIRST);
simde_int32x2x3_t val = simde_vld1_s32_x3(buf);
simde_test_arm_neon_write_i32x2x3(2, val, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vld1_s64_x3 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
int64_t buf[3];
int64_t expected[3][1];
} test_vec[] = {
{ { INT64_C( 417499293700581051), -INT64_C( 1219175381170673886), -INT64_C( 3786260281518077139) },
{ { INT64_C( 417499293700581051) },
{ -INT64_C( 1219175381170673886) },
{ -INT64_C( 3786260281518077139) } },
},
{ { -INT64_C( 3561255404491550293), -INT64_C( 706254993944636729), INT64_C( 7704058335413968519) },
{ { -INT64_C( 3561255404491550293) },
{ -INT64_C( 706254993944636729) },
{ INT64_C( 7704058335413968519) } },
},
{ { INT64_C( 521426194319989788), -INT64_C( 4850782561955540020), INT64_C( 3164373178695402272) },
{ { INT64_C( 521426194319989788) },
{ -INT64_C( 4850782561955540020) },
{ INT64_C( 3164373178695402272) } },
},
{ { -INT64_C( 7899295643285969222), -INT64_C( 5958190970674387220), -INT64_C( 358815886111650733) },
{ { -INT64_C( 7899295643285969222) },
{ -INT64_C( 5958190970674387220) },
{ -INT64_C( 358815886111650733) } },
},
{ { -INT64_C( 4265796107336945923), -INT64_C( 1222697601451953409), -INT64_C( 6984933164683097214) },
{ { -INT64_C( 4265796107336945923) },
{ -INT64_C( 1222697601451953409) },
{ -INT64_C( 6984933164683097214) } },
},
{ { -INT64_C( 3122422980514702124), INT64_C( 8190430834058435035), INT64_C( 154791996658443571) },
{ { -INT64_C( 3122422980514702124) },
{ INT64_C( 8190430834058435035) },
{ INT64_C( 154791996658443571) } },
},
{ { -INT64_C( 4979725660392694278), -INT64_C( 7801057294624895982), -INT64_C( 6300778372033596500) },
{ { -INT64_C( 4979725660392694278) },
{ -INT64_C( 7801057294624895982) },
{ -INT64_C( 6300778372033596500) } },
},
{ { INT64_C( 6776513792489452936), -INT64_C( 504534110650011552), INT64_C( 2855456415087159380) },
{ { INT64_C( 6776513792489452936) },
{ -INT64_C( 504534110650011552) },
{ INT64_C( 2855456415087159380) } },
},
};
for (size_t i = 0; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
simde_int64x1x3_t r = simde_vld1_s64_x3(test_vec[i].buf);
simde_int64x1x3_t expected = {{
simde_vld1_s64(test_vec[i].expected[0]),
simde_vld1_s64(test_vec[i].expected[1]),
simde_vld1_s64(test_vec[i].expected[2]),
}};
simde_test_arm_neon_assert_equal_i64x1x3(r, expected);
}
return 0;
#else
for (int i = 0 ; i < 8 ; i++) {
int64_t buf[3];
simde_test_codegen_random_memory(24, (uint8_t*)buf);
simde_test_codegen_write_vi64(2, 3, buf, SIMDE_TEST_VEC_POS_FIRST);
simde_int64x1x3_t val = simde_vld1_s64_x3(buf);
simde_test_arm_neon_write_i64x1x3(2, val, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vld1_u8_x3 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
uint8_t buf[24];
uint8_t expected[3][8];
} test_vec[] = {
{ { UINT8_C( 46), UINT8_C( 2), UINT8_C(129), UINT8_C(166), UINT8_C(106), UINT8_C(232), UINT8_C(138), UINT8_C( 50),
UINT8_C(149), UINT8_C(111), UINT8_C( 98), UINT8_C(150), UINT8_C( 70), UINT8_C(113), UINT8_C(180), UINT8_C(250),
UINT8_C(212), UINT8_C( 33), UINT8_C(179), UINT8_C( 73), UINT8_C( 82), UINT8_C(249), UINT8_C( 66), UINT8_C( 68) },
{ { UINT8_C( 46), UINT8_C( 2), UINT8_C(129), UINT8_C(166), UINT8_C(106), UINT8_C(232), UINT8_C(138), UINT8_C( 50) },
{ UINT8_C(149), UINT8_C(111), UINT8_C( 98), UINT8_C(150), UINT8_C( 70), UINT8_C(113), UINT8_C(180), UINT8_C(250) },
{ UINT8_C(212), UINT8_C( 33), UINT8_C(179), UINT8_C( 73), UINT8_C( 82), UINT8_C(249), UINT8_C( 66), UINT8_C( 68) } },
},
{ { UINT8_C( 14), UINT8_C(101), UINT8_C(175), UINT8_C(221), UINT8_C( 12), UINT8_C(233), UINT8_C(120), UINT8_C( 58),
UINT8_C(236), UINT8_C(249), UINT8_C(225), UINT8_C( 86), UINT8_C(225), UINT8_C(107), UINT8_C(136), UINT8_C(119),
UINT8_C(218), UINT8_C(235), UINT8_C( 13), UINT8_C( 32), UINT8_C( 92), UINT8_C(193), UINT8_C( 26), UINT8_C( 49) },
{ { UINT8_C( 14), UINT8_C(101), UINT8_C(175), UINT8_C(221), UINT8_C( 12), UINT8_C(233), UINT8_C(120), UINT8_C( 58) },
{ UINT8_C(236), UINT8_C(249), UINT8_C(225), UINT8_C( 86), UINT8_C(225), UINT8_C(107), UINT8_C(136), UINT8_C(119) },
{ UINT8_C(218), UINT8_C(235), UINT8_C( 13), UINT8_C( 32), UINT8_C( 92), UINT8_C(193), UINT8_C( 26), UINT8_C( 49) } },
},
{ { UINT8_C(226), UINT8_C(206), UINT8_C(122), UINT8_C( 53), UINT8_C(199), UINT8_C(189), UINT8_C(121), UINT8_C(214),
UINT8_C( 34), UINT8_C( 40), UINT8_C(179), UINT8_C( 47), UINT8_C( 18), UINT8_C( 43), UINT8_C(105), UINT8_C(254),
UINT8_C( 37), UINT8_C( 74), UINT8_C( 84), UINT8_C( 6), UINT8_C(181), UINT8_C(220), UINT8_C(125), UINT8_C(143) },
{ { UINT8_C(226), UINT8_C(206), UINT8_C(122), UINT8_C( 53), UINT8_C(199), UINT8_C(189), UINT8_C(121), UINT8_C(214) },
{ UINT8_C( 34), UINT8_C( 40), UINT8_C(179), UINT8_C( 47), UINT8_C( 18), UINT8_C( 43), UINT8_C(105), UINT8_C(254) },
{ UINT8_C( 37), UINT8_C( 74), UINT8_C( 84), UINT8_C( 6), UINT8_C(181), UINT8_C(220), UINT8_C(125), UINT8_C(143) } },
},
{ { UINT8_C(199), UINT8_C(139), UINT8_C(175), UINT8_C( 36), UINT8_C( 76), UINT8_C(202), UINT8_C( 85), UINT8_C( 47),
UINT8_C(152), UINT8_C(207), UINT8_C(100), UINT8_C( 95), UINT8_C(140), UINT8_C(221), UINT8_C( 53), UINT8_C(175),
UINT8_C( 5), UINT8_C(233), UINT8_C(222), UINT8_C( 23), UINT8_C( 20), UINT8_C( 71), UINT8_C( 21), UINT8_C( 57) },
{ { UINT8_C(199), UINT8_C(139), UINT8_C(175), UINT8_C( 36), UINT8_C( 76), UINT8_C(202), UINT8_C( 85), UINT8_C( 47) },
{ UINT8_C(152), UINT8_C(207), UINT8_C(100), UINT8_C( 95), UINT8_C(140), UINT8_C(221), UINT8_C( 53), UINT8_C(175) },
{ UINT8_C( 5), UINT8_C(233), UINT8_C(222), UINT8_C( 23), UINT8_C( 20), UINT8_C( 71), UINT8_C( 21), UINT8_C( 57) } },
},
{ { UINT8_C(146), UINT8_C(105), UINT8_C( 64), UINT8_C( 71), UINT8_C( 70), UINT8_C(189), UINT8_C(215), UINT8_C( 13),
UINT8_C( 72), UINT8_C(134), UINT8_C( 49), UINT8_C(149), UINT8_C( 80), UINT8_C(134), UINT8_C(196), UINT8_C(232),
UINT8_C( 86), UINT8_C( 40), UINT8_C( 72), UINT8_C(226), UINT8_C( 5), UINT8_C(125), UINT8_C(145), UINT8_C( 10) },
{ { UINT8_C(146), UINT8_C(105), UINT8_C( 64), UINT8_C( 71), UINT8_C( 70), UINT8_C(189), UINT8_C(215), UINT8_C( 13) },
{ UINT8_C( 72), UINT8_C(134), UINT8_C( 49), UINT8_C(149), UINT8_C( 80), UINT8_C(134), UINT8_C(196), UINT8_C(232) },
{ UINT8_C( 86), UINT8_C( 40), UINT8_C( 72), UINT8_C(226), UINT8_C( 5), UINT8_C(125), UINT8_C(145), UINT8_C( 10) } },
},
{ { UINT8_C(102), UINT8_C(111), UINT8_C( 34), UINT8_C(123), UINT8_C(183), UINT8_C( 55), UINT8_C(180), UINT8_C( 73),
UINT8_C(161), UINT8_C(244), UINT8_C(144), UINT8_C(231), UINT8_C(178), UINT8_C(103), UINT8_C(244), UINT8_C(250),
UINT8_C(238), UINT8_C( 38), UINT8_C(143), UINT8_C( 62), UINT8_C(172), UINT8_C( 83), UINT8_C( 39), UINT8_C( 2) },
{ { UINT8_C(102), UINT8_C(111), UINT8_C( 34), UINT8_C(123), UINT8_C(183), UINT8_C( 55), UINT8_C(180), UINT8_C( 73) },
{ UINT8_C(161), UINT8_C(244), UINT8_C(144), UINT8_C(231), UINT8_C(178), UINT8_C(103), UINT8_C(244), UINT8_C(250) },
{ UINT8_C(238), UINT8_C( 38), UINT8_C(143), UINT8_C( 62), UINT8_C(172), UINT8_C( 83), UINT8_C( 39), UINT8_C( 2) } },
},
{ { UINT8_C(123), UINT8_C(111), UINT8_C(229), UINT8_C(128), UINT8_C(236), UINT8_C(118), UINT8_C(139), UINT8_C( 83),
UINT8_C(230), UINT8_C(173), UINT8_C(206), UINT8_C(157), UINT8_C(228), UINT8_C(130), UINT8_C(230), UINT8_C(133),
UINT8_C(119), UINT8_C(118), UINT8_C(108), UINT8_C( 41), UINT8_C(222), UINT8_C( 97), UINT8_C( 35), UINT8_C(204) },
{ { UINT8_C(123), UINT8_C(111), UINT8_C(229), UINT8_C(128), UINT8_C(236), UINT8_C(118), UINT8_C(139), UINT8_C( 83) },
{ UINT8_C(230), UINT8_C(173), UINT8_C(206), UINT8_C(157), UINT8_C(228), UINT8_C(130), UINT8_C(230), UINT8_C(133) },
{ UINT8_C(119), UINT8_C(118), UINT8_C(108), UINT8_C( 41), UINT8_C(222), UINT8_C( 97), UINT8_C( 35), UINT8_C(204) } },
},
{ { UINT8_C(135), UINT8_C(179), UINT8_C( 10), UINT8_C( 51), UINT8_C( 6), UINT8_C( 49), UINT8_C( 54), UINT8_C(130),
UINT8_C(160), UINT8_C( 27), UINT8_C( 2), UINT8_C(141), UINT8_C(145), UINT8_C(141), UINT8_C(224), UINT8_C(119),
UINT8_C( 58), UINT8_C(174), UINT8_C( 20), UINT8_C( 31), UINT8_C( 48), UINT8_C(250), UINT8_C(164), UINT8_C(167) },
{ { UINT8_C(135), UINT8_C(179), UINT8_C( 10), UINT8_C( 51), UINT8_C( 6), UINT8_C( 49), UINT8_C( 54), UINT8_C(130) },
{ UINT8_C(160), UINT8_C( 27), UINT8_C( 2), UINT8_C(141), UINT8_C(145), UINT8_C(141), UINT8_C(224), UINT8_C(119) },
{ UINT8_C( 58), UINT8_C(174), UINT8_C( 20), UINT8_C( 31), UINT8_C( 48), UINT8_C(250), UINT8_C(164), UINT8_C(167) } },
},
};
for (size_t i = 0; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
simde_uint8x8x3_t r = simde_vld1_u8_x3(test_vec[i].buf);
simde_uint8x8x3_t expected = {{
simde_vld1_u8(test_vec[i].expected[0]),
simde_vld1_u8(test_vec[i].expected[1]),
simde_vld1_u8(test_vec[i].expected[2]),
}};
simde_test_arm_neon_assert_equal_u8x8x3(r, expected);
}
return 0;
#else
for (int i = 0 ; i < 8 ; i++) {
uint8_t buf[24];
simde_test_codegen_random_memory(24, buf);
simde_test_codegen_write_vu8(2, 24, buf, SIMDE_TEST_VEC_POS_FIRST);
simde_uint8x8x3_t val = simde_vld1_u8_x3(buf);
simde_test_arm_neon_write_u8x8x3(2, val, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vld1_u16_x3 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
uint16_t buf[12];
uint16_t expected[3][4];
} test_vec[] = {
{ { UINT16_C( 6609), UINT16_C(17989), UINT16_C(54332), UINT16_C(50414), UINT16_C(52298), UINT16_C(44748), UINT16_C(55247), UINT16_C(12044),
UINT16_C(44872), UINT16_C(11892), UINT16_C(29751), UINT16_C(35622) },
{ { UINT16_C( 6609), UINT16_C(17989), UINT16_C(54332), UINT16_C(50414) },
{ UINT16_C(52298), UINT16_C(44748), UINT16_C(55247), UINT16_C(12044) },
{ UINT16_C(44872), UINT16_C(11892), UINT16_C(29751), UINT16_C(35622) } },
},
{ { UINT16_C( 2012), UINT16_C(22680), UINT16_C(14501), UINT16_C(30591), UINT16_C(50513), UINT16_C(36285), UINT16_C(43929), UINT16_C(58193),
UINT16_C( 7543), UINT16_C(18065), UINT16_C(40437), UINT16_C(15733) },
{ { UINT16_C( 2012), UINT16_C(22680), UINT16_C(14501), UINT16_C(30591) },
{ UINT16_C(50513), UINT16_C(36285), UINT16_C(43929), UINT16_C(58193) },
{ UINT16_C( 7543), UINT16_C(18065), UINT16_C(40437), UINT16_C(15733) } },
},
{ { UINT16_C(59725), UINT16_C(33899), UINT16_C(37213), UINT16_C(14864), UINT16_C(43160), UINT16_C(15762), UINT16_C( 4576), UINT16_C(12724),
UINT16_C(29142), UINT16_C(28862), UINT16_C( 3868), UINT16_C(37715) },
{ { UINT16_C(59725), UINT16_C(33899), UINT16_C(37213), UINT16_C(14864) },
{ UINT16_C(43160), UINT16_C(15762), UINT16_C( 4576), UINT16_C(12724) },
{ UINT16_C(29142), UINT16_C(28862), UINT16_C( 3868), UINT16_C(37715) } },
},
{ { UINT16_C(58668), UINT16_C( 8665), UINT16_C(20098), UINT16_C(53086), UINT16_C(51512), UINT16_C(38228), UINT16_C(25690), UINT16_C(62159),
UINT16_C(24844), UINT16_C(60464), UINT16_C(58483), UINT16_C(18717) },
{ { UINT16_C(58668), UINT16_C( 8665), UINT16_C(20098), UINT16_C(53086) },
{ UINT16_C(51512), UINT16_C(38228), UINT16_C(25690), UINT16_C(62159) },
{ UINT16_C(24844), UINT16_C(60464), UINT16_C(58483), UINT16_C(18717) } },
},
{ { UINT16_C(56150), UINT16_C(29369), UINT16_C( 3562), UINT16_C( 5638), UINT16_C(57330), UINT16_C(29752), UINT16_C(38446), UINT16_C(26180),
UINT16_C(39008), UINT16_C(47867), UINT16_C(52220), UINT16_C( 2221) },
{ { UINT16_C(56150), UINT16_C(29369), UINT16_C( 3562), UINT16_C( 5638) },
{ UINT16_C(57330), UINT16_C(29752), UINT16_C(38446), UINT16_C(26180) },
{ UINT16_C(39008), UINT16_C(47867), UINT16_C(52220), UINT16_C( 2221) } },
},
{ { UINT16_C(56620), UINT16_C(40948), UINT16_C( 4545), UINT16_C( 6121), UINT16_C(41708), UINT16_C(54922), UINT16_C(37039), UINT16_C(41452),
UINT16_C( 9327), UINT16_C(40214), UINT16_C(23227), UINT16_C( 6915) },
{ { UINT16_C(56620), UINT16_C(40948), UINT16_C( 4545), UINT16_C( 6121) },
{ UINT16_C(41708), UINT16_C(54922), UINT16_C(37039), UINT16_C(41452) },
{ UINT16_C( 9327), UINT16_C(40214), UINT16_C(23227), UINT16_C( 6915) } },
},
{ { UINT16_C(65522), UINT16_C(61141), UINT16_C(33482), UINT16_C(63222), UINT16_C(59999), UINT16_C( 8598), UINT16_C(32763), UINT16_C(59192),
UINT16_C(49697), UINT16_C(53693), UINT16_C(43346), UINT16_C(49778) },
{ { UINT16_C(65522), UINT16_C(61141), UINT16_C(33482), UINT16_C(63222) },
{ UINT16_C(59999), UINT16_C( 8598), UINT16_C(32763), UINT16_C(59192) },
{ UINT16_C(49697), UINT16_C(53693), UINT16_C(43346), UINT16_C(49778) } },
},
{ { UINT16_C(35022), UINT16_C(35167), UINT16_C(25570), UINT16_C(54436), UINT16_C(31074), UINT16_C(11458), UINT16_C(47356), UINT16_C(23330),
UINT16_C(47266), UINT16_C(40316), UINT16_C(46391), UINT16_C(22916) },
{ { UINT16_C(35022), UINT16_C(35167), UINT16_C(25570), UINT16_C(54436) },
{ UINT16_C(31074), UINT16_C(11458), UINT16_C(47356), UINT16_C(23330) },
{ UINT16_C(47266), UINT16_C(40316), UINT16_C(46391), UINT16_C(22916) } },
},
};
for (size_t i = 0; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
simde_uint16x4x3_t r = simde_vld1_u16_x3(test_vec[i].buf);
simde_uint16x4x3_t expected = {{
simde_vld1_u16(test_vec[i].expected[0]),
simde_vld1_u16(test_vec[i].expected[1]),
simde_vld1_u16(test_vec[i].expected[2]),
}};
simde_test_arm_neon_assert_equal_u16x4x3(r, expected);
}
return 0;
#else
for (int i = 0 ; i < 8 ; i++) {
uint16_t buf[12];
simde_test_codegen_random_memory(24, (uint8_t*)buf);
simde_test_codegen_write_vu16(2, 12, buf, SIMDE_TEST_VEC_POS_FIRST);
simde_uint16x4x3_t val = simde_vld1_u16_x3(buf);
simde_test_arm_neon_write_u16x4x3(2, val, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vld1_u32_x3 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
uint32_t buf[6];
uint32_t expected[3][2];
} test_vec[] = {
{ { UINT32_C(3391766903), UINT32_C(3113000171), UINT32_C( 121826085), UINT32_C(2967266894), UINT32_C(1541185119), UINT32_C(4189585239) },
{ { UINT32_C(3391766903), UINT32_C(3113000171) },
{ UINT32_C( 121826085), UINT32_C(2967266894) },
{ UINT32_C(1541185119), UINT32_C(4189585239) } },
},
{ { UINT32_C(4019663799), UINT32_C(1615338472), UINT32_C(1210741341), UINT32_C( 855750158), UINT32_C(4030415777), UINT32_C(2292193065) },
{ { UINT32_C(4019663799), UINT32_C(1615338472) },
{ UINT32_C(1210741341), UINT32_C( 855750158) },
{ UINT32_C(4030415777), UINT32_C(2292193065) } },
},
{ { UINT32_C( 216300981), UINT32_C( 856071036), UINT32_C(3072499150), UINT32_C( 353856184), UINT32_C(3948757468), UINT32_C(2552127223) },
{ { UINT32_C( 216300981), UINT32_C( 856071036) },
{ UINT32_C(3072499150), UINT32_C( 353856184) },
{ UINT32_C(3948757468), UINT32_C(2552127223) } },
},
{ { UINT32_C(3397933473), UINT32_C( 642984304), UINT32_C( 573716390), UINT32_C(2689939666), UINT32_C(2388097237), UINT32_C(3215159010) },
{ { UINT32_C(3397933473), UINT32_C( 642984304) },
{ UINT32_C( 573716390), UINT32_C(2689939666) },
{ UINT32_C(2388097237), UINT32_C(3215159010) } },
},
{ { UINT32_C(2796159407), UINT32_C( 20957279), UINT32_C(2462828322), UINT32_C(2528648944), UINT32_C( 666430293), UINT32_C(4190637603) },
{ { UINT32_C(2796159407), UINT32_C( 20957279) },
{ UINT32_C(2462828322), UINT32_C(2528648944) },
{ UINT32_C( 666430293), UINT32_C(4190637603) } },
},
{ { UINT32_C(1753685894), UINT32_C(1025976974), UINT32_C(2347028779), UINT32_C(3163300762), UINT32_C(3679344618), UINT32_C(3413182326) },
{ { UINT32_C(1753685894), UINT32_C(1025976974) },
{ UINT32_C(2347028779), UINT32_C(3163300762) },
{ UINT32_C(3679344618), UINT32_C(3413182326) } },
},
{ { UINT32_C( 368257778), UINT32_C(3188636472), UINT32_C(1747359194), UINT32_C(3953544896), UINT32_C(3111553567), UINT32_C(2541028013) },
{ { UINT32_C( 368257778), UINT32_C(3188636472) },
{ UINT32_C(1747359194), UINT32_C(3953544896) },
{ UINT32_C(3111553567), UINT32_C(2541028013) } },
},
{ { UINT32_C(3497182298), UINT32_C(3181110475), UINT32_C(1188204046), UINT32_C( 604299593), UINT32_C( 915155574), UINT32_C(2552377976) },
{ { UINT32_C(3497182298), UINT32_C(3181110475) },
{ UINT32_C(1188204046), UINT32_C( 604299593) },
{ UINT32_C( 915155574), UINT32_C(2552377976) } },
},
};
for (size_t i = 0; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
simde_uint32x2x3_t r = simde_vld1_u32_x3(test_vec[i].buf);
simde_uint32x2x3_t expected = {{
simde_vld1_u32(test_vec[i].expected[0]),
simde_vld1_u32(test_vec[i].expected[1]),
simde_vld1_u32(test_vec[i].expected[2]),
}};
simde_test_arm_neon_assert_equal_u32x2x3(r, expected);
}
return 0;
#else
for (int i = 0 ; i < 8 ; i++) {
uint32_t buf[6];
simde_test_codegen_random_memory(24, (uint8_t*)buf);
simde_test_codegen_write_vu32(2, 6, buf, SIMDE_TEST_VEC_POS_FIRST);
simde_uint32x2x3_t val = simde_vld1_u32_x3(buf);
simde_test_arm_neon_write_u32x2x3(2, val, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vld1_u64_x3 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
uint64_t buf[3];
uint64_t expected[3][1];
} test_vec[] = {
{ { UINT64_C(17654611484569868476), UINT64_C( 7283270950622425995), UINT64_C( 4421602200060159471) },
{ { UINT64_C(17654611484569868476) },
{ UINT64_C( 7283270950622425995) },
{ UINT64_C( 4421602200060159471) } },
},
{ { UINT64_C(15630469401322711514), UINT64_C(10285731182989622318), UINT64_C(15164736924849308598) },
{ { UINT64_C(15630469401322711514) },
{ UINT64_C(10285731182989622318) },
{ UINT64_C(15164736924849308598) } },
},
{ { UINT64_C(12168840330351419100), UINT64_C( 1676717752007152464), UINT64_C( 9129533977082758433) },
{ { UINT64_C(12168840330351419100) },
{ UINT64_C( 1676717752007152464) },
{ UINT64_C( 9129533977082758433) } },
},
{ { UINT64_C( 7626844375595324961), UINT64_C(11138506105637626397), UINT64_C(10610562576259910976) },
{ { UINT64_C( 7626844375595324961) },
{ UINT64_C(11138506105637626397) },
{ UINT64_C(10610562576259910976) } },
},
{ { UINT64_C(16074870712278917327), UINT64_C(13616275717827568127), UINT64_C( 3422800518842876572) },
{ { UINT64_C(16074870712278917327) },
{ UINT64_C(13616275717827568127) },
{ UINT64_C( 3422800518842876572) } },
},
{ { UINT64_C(11515309317332436680), UINT64_C(17173717345411499448), UINT64_C(10324908911588227309) },
{ { UINT64_C(11515309317332436680) },
{ UINT64_C(17173717345411499448) },
{ UINT64_C(10324908911588227309) } },
},
{ { UINT64_C(17551078789523829107), UINT64_C( 4173707111931242875), UINT64_C( 6656043646660321921) },
{ { UINT64_C(17551078789523829107) },
{ UINT64_C( 4173707111931242875) },
{ UINT64_C( 6656043646660321921) } },
},
{ { UINT64_C(13744759886282611261), UINT64_C(11980333853544887587), UINT64_C(17174438060917616796) },
{ { UINT64_C(13744759886282611261) },
{ UINT64_C(11980333853544887587) },
{ UINT64_C(17174438060917616796) } },
},
};
for (size_t i = 0; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
simde_uint64x1x3_t r = simde_vld1_u64_x3(test_vec[i].buf);
simde_uint64x1x3_t expected = {{
simde_vld1_u64(test_vec[i].expected[0]),
simde_vld1_u64(test_vec[i].expected[1]),
simde_vld1_u64(test_vec[i].expected[2]),
}};
simde_test_arm_neon_assert_equal_u64x1x3(r, expected);
}
return 0;
#else
for (int i = 0 ; i < 8 ; i++) {
uint64_t buf[3];
simde_test_codegen_random_memory(24, (uint8_t*)buf);
simde_test_codegen_write_vu64(2, 3, buf, SIMDE_TEST_VEC_POS_FIRST);
simde_uint64x1x3_t val = simde_vld1_u64_x3(buf);
simde_test_arm_neon_write_u64x1x3(2, val, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vld1_p8_x3 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
simde_poly8_t buf[24];
simde_poly8_t expected[3][8];
} test_vec[] = {
{ { SIMDE_POLY8_C( 46), SIMDE_POLY8_C( 2), SIMDE_POLY8_C(129), SIMDE_POLY8_C(166), SIMDE_POLY8_C(106), SIMDE_POLY8_C(232), SIMDE_POLY8_C(138), SIMDE_POLY8_C( 50),
SIMDE_POLY8_C(149), SIMDE_POLY8_C(111), SIMDE_POLY8_C( 98), SIMDE_POLY8_C(150), SIMDE_POLY8_C( 70), SIMDE_POLY8_C(113), SIMDE_POLY8_C(180), SIMDE_POLY8_C(250),
SIMDE_POLY8_C(212), SIMDE_POLY8_C( 33), SIMDE_POLY8_C(179), SIMDE_POLY8_C( 73), SIMDE_POLY8_C( 82), SIMDE_POLY8_C(249), SIMDE_POLY8_C( 66), SIMDE_POLY8_C( 68) },
{ { SIMDE_POLY8_C( 46), SIMDE_POLY8_C( 2), SIMDE_POLY8_C(129), SIMDE_POLY8_C(166), SIMDE_POLY8_C(106), SIMDE_POLY8_C(232), SIMDE_POLY8_C(138), SIMDE_POLY8_C( 50) },
{ SIMDE_POLY8_C(149), SIMDE_POLY8_C(111), SIMDE_POLY8_C( 98), SIMDE_POLY8_C(150), SIMDE_POLY8_C( 70), SIMDE_POLY8_C(113), SIMDE_POLY8_C(180), SIMDE_POLY8_C(250) },
{ SIMDE_POLY8_C(212), SIMDE_POLY8_C( 33), SIMDE_POLY8_C(179), SIMDE_POLY8_C( 73), SIMDE_POLY8_C( 82), SIMDE_POLY8_C(249), SIMDE_POLY8_C( 66), SIMDE_POLY8_C( 68) } },
},
{ { SIMDE_POLY8_C( 14), SIMDE_POLY8_C(101), SIMDE_POLY8_C(175), SIMDE_POLY8_C(221), SIMDE_POLY8_C( 12), SIMDE_POLY8_C(233), SIMDE_POLY8_C(120), SIMDE_POLY8_C( 58),
SIMDE_POLY8_C(236), SIMDE_POLY8_C(249), SIMDE_POLY8_C(225), SIMDE_POLY8_C( 86), SIMDE_POLY8_C(225), SIMDE_POLY8_C(107), SIMDE_POLY8_C(136), SIMDE_POLY8_C(119),
SIMDE_POLY8_C(218), SIMDE_POLY8_C(235), SIMDE_POLY8_C( 13), SIMDE_POLY8_C( 32), SIMDE_POLY8_C( 92), SIMDE_POLY8_C(193), SIMDE_POLY8_C( 26), SIMDE_POLY8_C( 49) },
{ { SIMDE_POLY8_C( 14), SIMDE_POLY8_C(101), SIMDE_POLY8_C(175), SIMDE_POLY8_C(221), SIMDE_POLY8_C( 12), SIMDE_POLY8_C(233), SIMDE_POLY8_C(120), SIMDE_POLY8_C( 58) },
{ SIMDE_POLY8_C(236), SIMDE_POLY8_C(249), SIMDE_POLY8_C(225), SIMDE_POLY8_C( 86), SIMDE_POLY8_C(225), SIMDE_POLY8_C(107), SIMDE_POLY8_C(136), SIMDE_POLY8_C(119) },
{ SIMDE_POLY8_C(218), SIMDE_POLY8_C(235), SIMDE_POLY8_C( 13), SIMDE_POLY8_C( 32), SIMDE_POLY8_C( 92), SIMDE_POLY8_C(193), SIMDE_POLY8_C( 26), SIMDE_POLY8_C( 49) } },
},
{ { SIMDE_POLY8_C(226), SIMDE_POLY8_C(206), SIMDE_POLY8_C(122), SIMDE_POLY8_C( 53), SIMDE_POLY8_C(199), SIMDE_POLY8_C(189), SIMDE_POLY8_C(121), SIMDE_POLY8_C(214),
SIMDE_POLY8_C( 34), SIMDE_POLY8_C( 40), SIMDE_POLY8_C(179), SIMDE_POLY8_C( 47), SIMDE_POLY8_C( 18), SIMDE_POLY8_C( 43), SIMDE_POLY8_C(105), SIMDE_POLY8_C(254),
SIMDE_POLY8_C( 37), SIMDE_POLY8_C( 74), SIMDE_POLY8_C( 84), SIMDE_POLY8_C( 6), SIMDE_POLY8_C(181), SIMDE_POLY8_C(220), SIMDE_POLY8_C(125), SIMDE_POLY8_C(143) },
{ { SIMDE_POLY8_C(226), SIMDE_POLY8_C(206), SIMDE_POLY8_C(122), SIMDE_POLY8_C( 53), SIMDE_POLY8_C(199), SIMDE_POLY8_C(189), SIMDE_POLY8_C(121), SIMDE_POLY8_C(214) },
{ SIMDE_POLY8_C( 34), SIMDE_POLY8_C( 40), SIMDE_POLY8_C(179), SIMDE_POLY8_C( 47), SIMDE_POLY8_C( 18), SIMDE_POLY8_C( 43), SIMDE_POLY8_C(105), SIMDE_POLY8_C(254) },
{ SIMDE_POLY8_C( 37), SIMDE_POLY8_C( 74), SIMDE_POLY8_C( 84), SIMDE_POLY8_C( 6), SIMDE_POLY8_C(181), SIMDE_POLY8_C(220), SIMDE_POLY8_C(125), SIMDE_POLY8_C(143) } },
},
{ { SIMDE_POLY8_C(199), SIMDE_POLY8_C(139), SIMDE_POLY8_C(175), SIMDE_POLY8_C( 36), SIMDE_POLY8_C( 76), SIMDE_POLY8_C(202), SIMDE_POLY8_C( 85), SIMDE_POLY8_C( 47),
SIMDE_POLY8_C(152), SIMDE_POLY8_C(207), SIMDE_POLY8_C(100), SIMDE_POLY8_C( 95), SIMDE_POLY8_C(140), SIMDE_POLY8_C(221), SIMDE_POLY8_C( 53), SIMDE_POLY8_C(175),
SIMDE_POLY8_C( 5), SIMDE_POLY8_C(233), SIMDE_POLY8_C(222), SIMDE_POLY8_C( 23), SIMDE_POLY8_C( 20), SIMDE_POLY8_C( 71), SIMDE_POLY8_C( 21), SIMDE_POLY8_C( 57) },
{ { SIMDE_POLY8_C(199), SIMDE_POLY8_C(139), SIMDE_POLY8_C(175), SIMDE_POLY8_C( 36), SIMDE_POLY8_C( 76), SIMDE_POLY8_C(202), SIMDE_POLY8_C( 85), SIMDE_POLY8_C( 47) },
{ SIMDE_POLY8_C(152), SIMDE_POLY8_C(207), SIMDE_POLY8_C(100), SIMDE_POLY8_C( 95), SIMDE_POLY8_C(140), SIMDE_POLY8_C(221), SIMDE_POLY8_C( 53), SIMDE_POLY8_C(175) },
{ SIMDE_POLY8_C( 5), SIMDE_POLY8_C(233), SIMDE_POLY8_C(222), SIMDE_POLY8_C( 23), SIMDE_POLY8_C( 20), SIMDE_POLY8_C( 71), SIMDE_POLY8_C( 21), SIMDE_POLY8_C( 57) } },
},
{ { SIMDE_POLY8_C(146), SIMDE_POLY8_C(105), SIMDE_POLY8_C( 64), SIMDE_POLY8_C( 71), SIMDE_POLY8_C( 70), SIMDE_POLY8_C(189), SIMDE_POLY8_C(215), SIMDE_POLY8_C( 13),
SIMDE_POLY8_C( 72), SIMDE_POLY8_C(134), SIMDE_POLY8_C( 49), SIMDE_POLY8_C(149), SIMDE_POLY8_C( 80), SIMDE_POLY8_C(134), SIMDE_POLY8_C(196), SIMDE_POLY8_C(232),
SIMDE_POLY8_C( 86), SIMDE_POLY8_C( 40), SIMDE_POLY8_C( 72), SIMDE_POLY8_C(226), SIMDE_POLY8_C( 5), SIMDE_POLY8_C(125), SIMDE_POLY8_C(145), SIMDE_POLY8_C( 10) },
{ { SIMDE_POLY8_C(146), SIMDE_POLY8_C(105), SIMDE_POLY8_C( 64), SIMDE_POLY8_C( 71), SIMDE_POLY8_C( 70), SIMDE_POLY8_C(189), SIMDE_POLY8_C(215), SIMDE_POLY8_C( 13) },
{ SIMDE_POLY8_C( 72), SIMDE_POLY8_C(134), SIMDE_POLY8_C( 49), SIMDE_POLY8_C(149), SIMDE_POLY8_C( 80), SIMDE_POLY8_C(134), SIMDE_POLY8_C(196), SIMDE_POLY8_C(232) },
{ SIMDE_POLY8_C( 86), SIMDE_POLY8_C( 40), SIMDE_POLY8_C( 72), SIMDE_POLY8_C(226), SIMDE_POLY8_C( 5), SIMDE_POLY8_C(125), SIMDE_POLY8_C(145), SIMDE_POLY8_C( 10) } },
},
{ { SIMDE_POLY8_C(102), SIMDE_POLY8_C(111), SIMDE_POLY8_C( 34), SIMDE_POLY8_C(123), SIMDE_POLY8_C(183), SIMDE_POLY8_C( 55), SIMDE_POLY8_C(180), SIMDE_POLY8_C( 73),
SIMDE_POLY8_C(161), SIMDE_POLY8_C(244), SIMDE_POLY8_C(144), SIMDE_POLY8_C(231), SIMDE_POLY8_C(178), SIMDE_POLY8_C(103), SIMDE_POLY8_C(244), SIMDE_POLY8_C(250),
SIMDE_POLY8_C(238), SIMDE_POLY8_C( 38), SIMDE_POLY8_C(143), SIMDE_POLY8_C( 62), SIMDE_POLY8_C(172), SIMDE_POLY8_C( 83), SIMDE_POLY8_C( 39), SIMDE_POLY8_C( 2) },
{ { SIMDE_POLY8_C(102), SIMDE_POLY8_C(111), SIMDE_POLY8_C( 34), SIMDE_POLY8_C(123), SIMDE_POLY8_C(183), SIMDE_POLY8_C( 55), SIMDE_POLY8_C(180), SIMDE_POLY8_C( 73) },
{ SIMDE_POLY8_C(161), SIMDE_POLY8_C(244), SIMDE_POLY8_C(144), SIMDE_POLY8_C(231), SIMDE_POLY8_C(178), SIMDE_POLY8_C(103), SIMDE_POLY8_C(244), SIMDE_POLY8_C(250) },
{ SIMDE_POLY8_C(238), SIMDE_POLY8_C( 38), SIMDE_POLY8_C(143), SIMDE_POLY8_C( 62), SIMDE_POLY8_C(172), SIMDE_POLY8_C( 83), SIMDE_POLY8_C( 39), SIMDE_POLY8_C( 2) } },
},
{ { SIMDE_POLY8_C(123), SIMDE_POLY8_C(111), SIMDE_POLY8_C(229), SIMDE_POLY8_C(128), SIMDE_POLY8_C(236), SIMDE_POLY8_C(118), SIMDE_POLY8_C(139), SIMDE_POLY8_C( 83),
SIMDE_POLY8_C(230), SIMDE_POLY8_C(173), SIMDE_POLY8_C(206), SIMDE_POLY8_C(157), SIMDE_POLY8_C(228), SIMDE_POLY8_C(130), SIMDE_POLY8_C(230), SIMDE_POLY8_C(133),
SIMDE_POLY8_C(119), SIMDE_POLY8_C(118), SIMDE_POLY8_C(108), SIMDE_POLY8_C( 41), SIMDE_POLY8_C(222), SIMDE_POLY8_C( 97), SIMDE_POLY8_C( 35), SIMDE_POLY8_C(204) },
{ { SIMDE_POLY8_C(123), SIMDE_POLY8_C(111), SIMDE_POLY8_C(229), SIMDE_POLY8_C(128), SIMDE_POLY8_C(236), SIMDE_POLY8_C(118), SIMDE_POLY8_C(139), SIMDE_POLY8_C( 83) },
{ SIMDE_POLY8_C(230), SIMDE_POLY8_C(173), SIMDE_POLY8_C(206), SIMDE_POLY8_C(157), SIMDE_POLY8_C(228), SIMDE_POLY8_C(130), SIMDE_POLY8_C(230), SIMDE_POLY8_C(133) },
{ SIMDE_POLY8_C(119), SIMDE_POLY8_C(118), SIMDE_POLY8_C(108), SIMDE_POLY8_C( 41), SIMDE_POLY8_C(222), SIMDE_POLY8_C( 97), SIMDE_POLY8_C( 35), SIMDE_POLY8_C(204) } },
},
{ { SIMDE_POLY8_C(135), SIMDE_POLY8_C(179), SIMDE_POLY8_C( 10), SIMDE_POLY8_C( 51), SIMDE_POLY8_C( 6), SIMDE_POLY8_C( 49), SIMDE_POLY8_C( 54), SIMDE_POLY8_C(130),
SIMDE_POLY8_C(160), SIMDE_POLY8_C( 27), SIMDE_POLY8_C( 2), SIMDE_POLY8_C(141), SIMDE_POLY8_C(145), SIMDE_POLY8_C(141), SIMDE_POLY8_C(224), SIMDE_POLY8_C(119),
SIMDE_POLY8_C( 58), SIMDE_POLY8_C(174), SIMDE_POLY8_C( 20), SIMDE_POLY8_C( 31), SIMDE_POLY8_C( 48), SIMDE_POLY8_C(250), SIMDE_POLY8_C(164), SIMDE_POLY8_C(167) },
{ { SIMDE_POLY8_C(135), SIMDE_POLY8_C(179), SIMDE_POLY8_C( 10), SIMDE_POLY8_C( 51), SIMDE_POLY8_C( 6), SIMDE_POLY8_C( 49), SIMDE_POLY8_C( 54), SIMDE_POLY8_C(130) },
{ SIMDE_POLY8_C(160), SIMDE_POLY8_C( 27), SIMDE_POLY8_C( 2), SIMDE_POLY8_C(141), SIMDE_POLY8_C(145), SIMDE_POLY8_C(141), SIMDE_POLY8_C(224), SIMDE_POLY8_C(119) },
{ SIMDE_POLY8_C( 58), SIMDE_POLY8_C(174), SIMDE_POLY8_C( 20), SIMDE_POLY8_C( 31), SIMDE_POLY8_C( 48), SIMDE_POLY8_C(250), SIMDE_POLY8_C(164), SIMDE_POLY8_C(167) } },
},
};
for (size_t i = 0; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
simde_poly8x8x3_t r = simde_vld1_p8_x3(test_vec[i].buf);
simde_poly8x8x3_t expected = {{
simde_vld1_p8(test_vec[i].expected[0]),
simde_vld1_p8(test_vec[i].expected[1]),
simde_vld1_p8(test_vec[i].expected[2]),
}};
simde_test_arm_neon_assert_equal_p8x8x3(r, expected);
}
return 0;
#else
for (int i = 0 ; i < 8 ; i++) {
simde_poly8_t buf[24];
simde_test_codegen_random_memory(24, (uint8_t*)buf);
simde_test_codegen_write_vp8(2, 24, buf, SIMDE_TEST_VEC_POS_FIRST);
simde_poly8x8x3_t val = simde_vld1_p8_x3(buf);
simde_test_arm_neon_write_p8x8x3(2, val, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vld1_p16_x3 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
simde_poly16_t buf[12];
simde_poly16_t expected[3][4];
} test_vec[] = {
{ { SIMDE_POLY16_C( 6609), SIMDE_POLY16_C(17989), SIMDE_POLY16_C(54332), SIMDE_POLY16_C(50414), SIMDE_POLY16_C(52298), SIMDE_POLY16_C(44748), SIMDE_POLY16_C(55247), SIMDE_POLY16_C(12044),
SIMDE_POLY16_C(44872), SIMDE_POLY16_C(11892), SIMDE_POLY16_C(29751), SIMDE_POLY16_C(35622) },
{ { SIMDE_POLY16_C( 6609), SIMDE_POLY16_C(17989), SIMDE_POLY16_C(54332), SIMDE_POLY16_C(50414) },
{ SIMDE_POLY16_C(52298), SIMDE_POLY16_C(44748), SIMDE_POLY16_C(55247), SIMDE_POLY16_C(12044) },
{ SIMDE_POLY16_C(44872), SIMDE_POLY16_C(11892), SIMDE_POLY16_C(29751), SIMDE_POLY16_C(35622) } },
},
{ { SIMDE_POLY16_C( 2012), SIMDE_POLY16_C(22680), SIMDE_POLY16_C(14501), SIMDE_POLY16_C(30591), SIMDE_POLY16_C(50513), SIMDE_POLY16_C(36285), SIMDE_POLY16_C(43929), SIMDE_POLY16_C(58193),
SIMDE_POLY16_C( 7543), SIMDE_POLY16_C(18065), SIMDE_POLY16_C(40437), SIMDE_POLY16_C(15733) },
{ { SIMDE_POLY16_C( 2012), SIMDE_POLY16_C(22680), SIMDE_POLY16_C(14501), SIMDE_POLY16_C(30591) },
{ SIMDE_POLY16_C(50513), SIMDE_POLY16_C(36285), SIMDE_POLY16_C(43929), SIMDE_POLY16_C(58193) },
{ SIMDE_POLY16_C( 7543), SIMDE_POLY16_C(18065), SIMDE_POLY16_C(40437), SIMDE_POLY16_C(15733) } },
},
{ { SIMDE_POLY16_C(59725), SIMDE_POLY16_C(33899), SIMDE_POLY16_C(37213), SIMDE_POLY16_C(14864), SIMDE_POLY16_C(43160), SIMDE_POLY16_C(15762), SIMDE_POLY16_C( 4576), SIMDE_POLY16_C(12724),
SIMDE_POLY16_C(29142), SIMDE_POLY16_C(28862), SIMDE_POLY16_C( 3868), SIMDE_POLY16_C(37715) },
{ { SIMDE_POLY16_C(59725), SIMDE_POLY16_C(33899), SIMDE_POLY16_C(37213), SIMDE_POLY16_C(14864) },
{ SIMDE_POLY16_C(43160), SIMDE_POLY16_C(15762), SIMDE_POLY16_C( 4576), SIMDE_POLY16_C(12724) },
{ SIMDE_POLY16_C(29142), SIMDE_POLY16_C(28862), SIMDE_POLY16_C( 3868), SIMDE_POLY16_C(37715) } },
},
{ { SIMDE_POLY16_C(58668), SIMDE_POLY16_C( 8665), SIMDE_POLY16_C(20098), SIMDE_POLY16_C(53086), SIMDE_POLY16_C(51512), SIMDE_POLY16_C(38228), SIMDE_POLY16_C(25690), SIMDE_POLY16_C(62159),
SIMDE_POLY16_C(24844), SIMDE_POLY16_C(60464), SIMDE_POLY16_C(58483), SIMDE_POLY16_C(18717) },
{ { SIMDE_POLY16_C(58668), SIMDE_POLY16_C( 8665), SIMDE_POLY16_C(20098), SIMDE_POLY16_C(53086) },
{ SIMDE_POLY16_C(51512), SIMDE_POLY16_C(38228), SIMDE_POLY16_C(25690), SIMDE_POLY16_C(62159) },
{ SIMDE_POLY16_C(24844), SIMDE_POLY16_C(60464), SIMDE_POLY16_C(58483), SIMDE_POLY16_C(18717) } },
},
{ { SIMDE_POLY16_C(56150), SIMDE_POLY16_C(29369), SIMDE_POLY16_C( 3562), SIMDE_POLY16_C( 5638), SIMDE_POLY16_C(57330), SIMDE_POLY16_C(29752), SIMDE_POLY16_C(38446), SIMDE_POLY16_C(26180),
SIMDE_POLY16_C(39008), SIMDE_POLY16_C(47867), SIMDE_POLY16_C(52220), SIMDE_POLY16_C( 2221) },
{ { SIMDE_POLY16_C(56150), SIMDE_POLY16_C(29369), SIMDE_POLY16_C( 3562), SIMDE_POLY16_C( 5638) },
{ SIMDE_POLY16_C(57330), SIMDE_POLY16_C(29752), SIMDE_POLY16_C(38446), SIMDE_POLY16_C(26180) },
{ SIMDE_POLY16_C(39008), SIMDE_POLY16_C(47867), SIMDE_POLY16_C(52220), SIMDE_POLY16_C( 2221) } },
},
{ { SIMDE_POLY16_C(56620), SIMDE_POLY16_C(40948), SIMDE_POLY16_C( 4545), SIMDE_POLY16_C( 6121), SIMDE_POLY16_C(41708), SIMDE_POLY16_C(54922), SIMDE_POLY16_C(37039), SIMDE_POLY16_C(41452),
SIMDE_POLY16_C( 9327), SIMDE_POLY16_C(40214), SIMDE_POLY16_C(23227), SIMDE_POLY16_C( 6915) },
{ { SIMDE_POLY16_C(56620), SIMDE_POLY16_C(40948), SIMDE_POLY16_C( 4545), SIMDE_POLY16_C( 6121) },
{ SIMDE_POLY16_C(41708), SIMDE_POLY16_C(54922), SIMDE_POLY16_C(37039), SIMDE_POLY16_C(41452) },
{ SIMDE_POLY16_C( 9327), SIMDE_POLY16_C(40214), SIMDE_POLY16_C(23227), SIMDE_POLY16_C( 6915) } },
},
{ { SIMDE_POLY16_C(65522), SIMDE_POLY16_C(61141), SIMDE_POLY16_C(33482), SIMDE_POLY16_C(63222), SIMDE_POLY16_C(59999), SIMDE_POLY16_C( 8598), SIMDE_POLY16_C(32763), SIMDE_POLY16_C(59192),
SIMDE_POLY16_C(49697), SIMDE_POLY16_C(53693), SIMDE_POLY16_C(43346), SIMDE_POLY16_C(49778) },
{ { SIMDE_POLY16_C(65522), SIMDE_POLY16_C(61141), SIMDE_POLY16_C(33482), SIMDE_POLY16_C(63222) },
{ SIMDE_POLY16_C(59999), SIMDE_POLY16_C( 8598), SIMDE_POLY16_C(32763), SIMDE_POLY16_C(59192) },
{ SIMDE_POLY16_C(49697), SIMDE_POLY16_C(53693), SIMDE_POLY16_C(43346), SIMDE_POLY16_C(49778) } },
},
{ { SIMDE_POLY16_C(35022), SIMDE_POLY16_C(35167), SIMDE_POLY16_C(25570), SIMDE_POLY16_C(54436), SIMDE_POLY16_C(31074), SIMDE_POLY16_C(11458), SIMDE_POLY16_C(47356), SIMDE_POLY16_C(23330),
SIMDE_POLY16_C(47266), SIMDE_POLY16_C(40316), SIMDE_POLY16_C(46391), SIMDE_POLY16_C(22916) },
{ { SIMDE_POLY16_C(35022), SIMDE_POLY16_C(35167), SIMDE_POLY16_C(25570), SIMDE_POLY16_C(54436) },
{ SIMDE_POLY16_C(31074), SIMDE_POLY16_C(11458), SIMDE_POLY16_C(47356), SIMDE_POLY16_C(23330) },
{ SIMDE_POLY16_C(47266), SIMDE_POLY16_C(40316), SIMDE_POLY16_C(46391), SIMDE_POLY16_C(22916) } },
},
};
for (size_t i = 0; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
simde_poly16x4x3_t r = simde_vld1_p16_x3(test_vec[i].buf);
simde_poly16x4x3_t expected = {{
simde_vld1_p16(test_vec[i].expected[0]),
simde_vld1_p16(test_vec[i].expected[1]),
simde_vld1_p16(test_vec[i].expected[2]),
}};
simde_test_arm_neon_assert_equal_p16x4x3(r, expected);
}
return 0;
#else
for (int i = 0 ; i < 8 ; i++) {
simde_poly16_t buf[12];
simde_test_codegen_random_memory(24, (uint8_t*)buf);
simde_test_codegen_write_vp16(2, 12, buf, SIMDE_TEST_VEC_POS_FIRST);
simde_poly16x4x3_t val = simde_vld1_p16_x3(buf);
simde_test_arm_neon_write_p16x4x3(2, val, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vld1_p64_x3 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
simde_poly64_t buf[3];
simde_poly64_t expected[3][1];
} test_vec[] = {
{ { SIMDE_POLY64_C(17654611484569868476), SIMDE_POLY64_C( 7283270950622425995), SIMDE_POLY64_C( 4421602200060159471) },
{ { SIMDE_POLY64_C(17654611484569868476) },
{ SIMDE_POLY64_C( 7283270950622425995) },
{ SIMDE_POLY64_C( 4421602200060159471) } },
},
{ { SIMDE_POLY64_C(15630469401322711514), SIMDE_POLY64_C(10285731182989622318), SIMDE_POLY64_C(15164736924849308598) },
{ { SIMDE_POLY64_C(15630469401322711514) },
{ SIMDE_POLY64_C(10285731182989622318) },
{ SIMDE_POLY64_C(15164736924849308598) } },
},
{ { SIMDE_POLY64_C(12168840330351419100), SIMDE_POLY64_C( 1676717752007152464), SIMDE_POLY64_C( 9129533977082758433) },
{ { SIMDE_POLY64_C(12168840330351419100) },
{ SIMDE_POLY64_C( 1676717752007152464) },
{ SIMDE_POLY64_C( 9129533977082758433) } },
},
{ { SIMDE_POLY64_C( 7626844375595324961), SIMDE_POLY64_C(11138506105637626397), SIMDE_POLY64_C(10610562576259910976) },
{ { SIMDE_POLY64_C( 7626844375595324961) },
{ SIMDE_POLY64_C(11138506105637626397) },
{ SIMDE_POLY64_C(10610562576259910976) } },
},
{ { SIMDE_POLY64_C(16074870712278917327), SIMDE_POLY64_C(13616275717827568127), SIMDE_POLY64_C( 3422800518842876572) },
{ { SIMDE_POLY64_C(16074870712278917327) },
{ SIMDE_POLY64_C(13616275717827568127) },
{ SIMDE_POLY64_C( 3422800518842876572) } },
},
{ { SIMDE_POLY64_C(11515309317332436680), SIMDE_POLY64_C(17173717345411499448), SIMDE_POLY64_C(10324908911588227309) },
{ { SIMDE_POLY64_C(11515309317332436680) },
{ SIMDE_POLY64_C(17173717345411499448) },
{ SIMDE_POLY64_C(10324908911588227309) } },
},
{ { SIMDE_POLY64_C(17551078789523829107), SIMDE_POLY64_C( 4173707111931242875), SIMDE_POLY64_C( 6656043646660321921) },
{ { SIMDE_POLY64_C(17551078789523829107) },
{ SIMDE_POLY64_C( 4173707111931242875) },
{ SIMDE_POLY64_C( 6656043646660321921) } },
},
{ { SIMDE_POLY64_C(13744759886282611261), SIMDE_POLY64_C(11980333853544887587), SIMDE_POLY64_C(17174438060917616796) },
{ { SIMDE_POLY64_C(13744759886282611261) },
{ SIMDE_POLY64_C(11980333853544887587) },
{ SIMDE_POLY64_C(17174438060917616796) } },
},
};
for (size_t i = 0; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
simde_poly64x1x3_t r = simde_vld1_p64_x3(test_vec[i].buf);
simde_poly64x1x3_t expected = {{
simde_vld1_p64(test_vec[i].expected[0]),
simde_vld1_p64(test_vec[i].expected[1]),
simde_vld1_p64(test_vec[i].expected[2]),
}};
simde_test_arm_neon_assert_equal_p64x1x3(r, expected);
}
return 0;
#else
for (int i = 0 ; i < 8 ; i++) {
simde_poly64_t buf[3];
simde_test_codegen_random_memory(24, (uint8_t*)buf);
simde_test_codegen_write_vp64(2, 3, buf, SIMDE_TEST_VEC_POS_FIRST);
simde_poly64x1x3_t val = simde_vld1_p64_x3(buf);
simde_test_arm_neon_write_p64x1x3(2, val, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vld1_bf16_x3 (SIMDE_MUNIT_TEST_ARGS) {
struct {
simde_bfloat16 buf[12];
simde_bfloat16 expected[3][4];
} test_vec[] = {
{ { SIMDE_BFLOAT16_VALUE(-5.79), SIMDE_BFLOAT16_VALUE(4.80), SIMDE_BFLOAT16_VALUE(9.66), SIMDE_BFLOAT16_VALUE(-2.49),
SIMDE_BFLOAT16_VALUE(-3.48), SIMDE_BFLOAT16_VALUE(2.38), SIMDE_BFLOAT16_VALUE(-7.06), SIMDE_BFLOAT16_VALUE(-9.89),
SIMDE_BFLOAT16_VALUE(-0.42), SIMDE_BFLOAT16_VALUE(4.02), SIMDE_BFLOAT16_VALUE(1.60), SIMDE_BFLOAT16_VALUE(4.63) },
{ { SIMDE_BFLOAT16_VALUE(-5.79), SIMDE_BFLOAT16_VALUE(4.80), SIMDE_BFLOAT16_VALUE(9.66), SIMDE_BFLOAT16_VALUE(-2.49) },
{ SIMDE_BFLOAT16_VALUE(-3.48), SIMDE_BFLOAT16_VALUE(2.38), SIMDE_BFLOAT16_VALUE(-7.06), SIMDE_BFLOAT16_VALUE(-9.89) },
{ SIMDE_BFLOAT16_VALUE(-0.42), SIMDE_BFLOAT16_VALUE(4.02), SIMDE_BFLOAT16_VALUE(1.60), SIMDE_BFLOAT16_VALUE(4.63) } } },
{ { SIMDE_BFLOAT16_VALUE(-7.02), SIMDE_BFLOAT16_VALUE(1.17), SIMDE_BFLOAT16_VALUE(-2.58), SIMDE_BFLOAT16_VALUE(-1.99),
SIMDE_BFLOAT16_VALUE(8.35), SIMDE_BFLOAT16_VALUE(-6.76), SIMDE_BFLOAT16_VALUE(-2.81), SIMDE_BFLOAT16_VALUE(-8.55),
SIMDE_BFLOAT16_VALUE(5.89), SIMDE_BFLOAT16_VALUE(-9.99), SIMDE_BFLOAT16_VALUE(3.60), SIMDE_BFLOAT16_VALUE(-5.29) },
{ { SIMDE_BFLOAT16_VALUE(-7.02), SIMDE_BFLOAT16_VALUE(1.17), SIMDE_BFLOAT16_VALUE(-2.58), SIMDE_BFLOAT16_VALUE(-1.99) },
{ SIMDE_BFLOAT16_VALUE(8.35), SIMDE_BFLOAT16_VALUE(-6.76), SIMDE_BFLOAT16_VALUE(-2.81), SIMDE_BFLOAT16_VALUE(-8.55) },
{ SIMDE_BFLOAT16_VALUE(5.89), SIMDE_BFLOAT16_VALUE(-9.99), SIMDE_BFLOAT16_VALUE(3.60), SIMDE_BFLOAT16_VALUE(-5.29) } } },
{ { SIMDE_BFLOAT16_VALUE(-0.56), SIMDE_BFLOAT16_VALUE(-4.61), SIMDE_BFLOAT16_VALUE(4.12), SIMDE_BFLOAT16_VALUE(6.86),
SIMDE_BFLOAT16_VALUE(-0.93), SIMDE_BFLOAT16_VALUE(8.80), SIMDE_BFLOAT16_VALUE(-4.47), SIMDE_BFLOAT16_VALUE(-0.16),
SIMDE_BFLOAT16_VALUE(-2.20), SIMDE_BFLOAT16_VALUE(9.97), SIMDE_BFLOAT16_VALUE(2.92), SIMDE_BFLOAT16_VALUE(4.50) },
{ { SIMDE_BFLOAT16_VALUE(-0.56), SIMDE_BFLOAT16_VALUE(-4.61), SIMDE_BFLOAT16_VALUE(4.12), SIMDE_BFLOAT16_VALUE(6.86) },
{ SIMDE_BFLOAT16_VALUE(-0.93), SIMDE_BFLOAT16_VALUE(8.80), SIMDE_BFLOAT16_VALUE(-4.47), SIMDE_BFLOAT16_VALUE(-0.16) },
{ SIMDE_BFLOAT16_VALUE(-2.20), SIMDE_BFLOAT16_VALUE(9.97), SIMDE_BFLOAT16_VALUE(2.92), SIMDE_BFLOAT16_VALUE(4.50) } } },
{ { SIMDE_BFLOAT16_VALUE(5.33), SIMDE_BFLOAT16_VALUE(1.10), SIMDE_BFLOAT16_VALUE(-0.07), SIMDE_BFLOAT16_VALUE(4.80),
SIMDE_BFLOAT16_VALUE(-7.40), SIMDE_BFLOAT16_VALUE(4.65), SIMDE_BFLOAT16_VALUE(9.31), SIMDE_BFLOAT16_VALUE(8.79),
SIMDE_BFLOAT16_VALUE(-3.82), SIMDE_BFLOAT16_VALUE(4.51), SIMDE_BFLOAT16_VALUE(-9.93), SIMDE_BFLOAT16_VALUE(-6.90) },
{ { SIMDE_BFLOAT16_VALUE(5.33), SIMDE_BFLOAT16_VALUE(1.10), SIMDE_BFLOAT16_VALUE(-0.07), SIMDE_BFLOAT16_VALUE(4.80) },
{ SIMDE_BFLOAT16_VALUE(-7.40), SIMDE_BFLOAT16_VALUE(4.65), SIMDE_BFLOAT16_VALUE(9.31), SIMDE_BFLOAT16_VALUE(8.79) },
{ SIMDE_BFLOAT16_VALUE(-3.82), SIMDE_BFLOAT16_VALUE(4.51), SIMDE_BFLOAT16_VALUE(-9.93), SIMDE_BFLOAT16_VALUE(-6.90) } } },
{ { SIMDE_BFLOAT16_VALUE(6.23), SIMDE_BFLOAT16_VALUE(9.84), SIMDE_BFLOAT16_VALUE(1.44), SIMDE_BFLOAT16_VALUE(-9.15),
SIMDE_BFLOAT16_VALUE(0.50), SIMDE_BFLOAT16_VALUE(6.55), SIMDE_BFLOAT16_VALUE(-3.70), SIMDE_BFLOAT16_VALUE(-1.56),
SIMDE_BFLOAT16_VALUE(-1.16), SIMDE_BFLOAT16_VALUE(1.56), SIMDE_BFLOAT16_VALUE(-4.94), SIMDE_BFLOAT16_VALUE(-5.71) },
{ { SIMDE_BFLOAT16_VALUE(6.23), SIMDE_BFLOAT16_VALUE(9.84), SIMDE_BFLOAT16_VALUE(1.44), SIMDE_BFLOAT16_VALUE(-9.15) },
{ SIMDE_BFLOAT16_VALUE(0.50), SIMDE_BFLOAT16_VALUE(6.55), SIMDE_BFLOAT16_VALUE(-3.70), SIMDE_BFLOAT16_VALUE(-1.56) },
{ SIMDE_BFLOAT16_VALUE(-1.16), SIMDE_BFLOAT16_VALUE(1.56), SIMDE_BFLOAT16_VALUE(-4.94), SIMDE_BFLOAT16_VALUE(-5.71) } } },
};
for (size_t i = 0; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
simde_bfloat16x4x3_t r = simde_vld1_bf16_x3(test_vec[i].buf);
simde_bfloat16x4x3_t expected = {{
simde_vld1_bf16(test_vec[i].expected[0]),
simde_vld1_bf16(test_vec[i].expected[1]),
simde_vld1_bf16(test_vec[i].expected[2]),
}};
simde_test_arm_neon_assert_equal_bf16x4x3(r, expected, 1);
}
return 0;
}
#endif
SIMDE_TEST_FUNC_LIST_BEGIN
#if !defined(SIMDE_BUG_INTEL_857088)
SIMDE_TEST_FUNC_LIST_ENTRY(vld1_f16_x3)
SIMDE_TEST_FUNC_LIST_ENTRY(vld1_f32_x3)
SIMDE_TEST_FUNC_LIST_ENTRY(vld1_f64_x3)
SIMDE_TEST_FUNC_LIST_ENTRY(vld1_s8_x3)
SIMDE_TEST_FUNC_LIST_ENTRY(vld1_s16_x3)
SIMDE_TEST_FUNC_LIST_ENTRY(vld1_s32_x3)
SIMDE_TEST_FUNC_LIST_ENTRY(vld1_s64_x3)
SIMDE_TEST_FUNC_LIST_ENTRY(vld1_u8_x3)
SIMDE_TEST_FUNC_LIST_ENTRY(vld1_u16_x3)
SIMDE_TEST_FUNC_LIST_ENTRY(vld1_u32_x3)
SIMDE_TEST_FUNC_LIST_ENTRY(vld1_u64_x3)
SIMDE_TEST_FUNC_LIST_ENTRY(vld1_p8_x3)
SIMDE_TEST_FUNC_LIST_ENTRY(vld1_p16_x3)
SIMDE_TEST_FUNC_LIST_ENTRY(vld1_p64_x3)
SIMDE_TEST_FUNC_LIST_ENTRY(vld1_bf16_x3)
#endif
SIMDE_TEST_FUNC_LIST_END
#include "test-neon-footer.h"