libdpf/thirdparty/simde/test/arm/neon/ld3_dup.c

2278 lines
145 KiB
C
Raw Permalink Normal View History

#define SIMDE_TEST_ARM_NEON_INSN ld3_dup
#include "test-neon.h"
#include "../../../simde/arm/neon/ld3_dup.h"
#if !defined(SIMDE_BUG_INTEL_857088)
static int
test_simde_vld3_dup_f16 (SIMDE_MUNIT_TEST_ARGS) {
struct {
simde_float16_t a[3];
simde_float16_t unused[3];
simde_float16_t r[3][4];
} test_vec[] = {
{ { SIMDE_FLOAT16_VALUE(-6.58), SIMDE_FLOAT16_VALUE(2.17), SIMDE_FLOAT16_VALUE(3.51) },
{ SIMDE_FLOAT16_VALUE(-28.23), SIMDE_FLOAT16_VALUE(27.18), SIMDE_FLOAT16_VALUE(21.06)},
{ { SIMDE_FLOAT16_VALUE(-6.58), SIMDE_FLOAT16_VALUE(-6.58), SIMDE_FLOAT16_VALUE(-6.58), SIMDE_FLOAT16_VALUE(-6.58) },
{ SIMDE_FLOAT16_VALUE(2.17), SIMDE_FLOAT16_VALUE(2.17), SIMDE_FLOAT16_VALUE(2.17), SIMDE_FLOAT16_VALUE(2.17) },
{ SIMDE_FLOAT16_VALUE(3.51), SIMDE_FLOAT16_VALUE(3.51), SIMDE_FLOAT16_VALUE(3.51), SIMDE_FLOAT16_VALUE(3.51) } } },
{ { SIMDE_FLOAT16_VALUE(-46.99), SIMDE_FLOAT16_VALUE(-6.72), SIMDE_FLOAT16_VALUE(41.08) },
{ SIMDE_FLOAT16_VALUE(-2.06), SIMDE_FLOAT16_VALUE(-6.78), SIMDE_FLOAT16_VALUE(36.58)},
{ { SIMDE_FLOAT16_VALUE(-46.99), SIMDE_FLOAT16_VALUE(-46.99), SIMDE_FLOAT16_VALUE(-46.99), SIMDE_FLOAT16_VALUE(-46.99) },
{ SIMDE_FLOAT16_VALUE(-6.72), SIMDE_FLOAT16_VALUE(-6.72), SIMDE_FLOAT16_VALUE(-6.72), SIMDE_FLOAT16_VALUE(-6.72) },
{ SIMDE_FLOAT16_VALUE(41.08), SIMDE_FLOAT16_VALUE(41.08), SIMDE_FLOAT16_VALUE(41.08), SIMDE_FLOAT16_VALUE(41.08) } } },
{ { SIMDE_FLOAT16_VALUE(39.86), SIMDE_FLOAT16_VALUE(40.77), SIMDE_FLOAT16_VALUE(-32.22) },
{ SIMDE_FLOAT16_VALUE(-24.94), SIMDE_FLOAT16_VALUE(-38.80), SIMDE_FLOAT16_VALUE(7.87)},
{ { SIMDE_FLOAT16_VALUE(39.86), SIMDE_FLOAT16_VALUE(39.86), SIMDE_FLOAT16_VALUE(39.86), SIMDE_FLOAT16_VALUE(39.86) },
{ SIMDE_FLOAT16_VALUE(40.77), SIMDE_FLOAT16_VALUE(40.77), SIMDE_FLOAT16_VALUE(40.77), SIMDE_FLOAT16_VALUE(40.77) },
{ SIMDE_FLOAT16_VALUE(-32.22), SIMDE_FLOAT16_VALUE(-32.22), SIMDE_FLOAT16_VALUE(-32.22), SIMDE_FLOAT16_VALUE(-32.22) } } },
{ { SIMDE_FLOAT16_VALUE(3.72), SIMDE_FLOAT16_VALUE(45.41), SIMDE_FLOAT16_VALUE(4.48) },
{ SIMDE_FLOAT16_VALUE(47.09), SIMDE_FLOAT16_VALUE(-24.14), SIMDE_FLOAT16_VALUE(-0.13)},
{ { SIMDE_FLOAT16_VALUE(3.72), SIMDE_FLOAT16_VALUE(3.72), SIMDE_FLOAT16_VALUE(3.72), SIMDE_FLOAT16_VALUE(3.72) },
{ SIMDE_FLOAT16_VALUE(45.41), SIMDE_FLOAT16_VALUE(45.41), SIMDE_FLOAT16_VALUE(45.41), SIMDE_FLOAT16_VALUE(45.41) },
{ SIMDE_FLOAT16_VALUE(4.48), SIMDE_FLOAT16_VALUE(4.48), SIMDE_FLOAT16_VALUE(4.48), SIMDE_FLOAT16_VALUE(4.48) } } },
{ { SIMDE_FLOAT16_VALUE(-31.75), SIMDE_FLOAT16_VALUE(20.34), SIMDE_FLOAT16_VALUE(-29.59) },
{ SIMDE_FLOAT16_VALUE(-11.56), SIMDE_FLOAT16_VALUE(-7.53), SIMDE_FLOAT16_VALUE(28.61)},
{ { SIMDE_FLOAT16_VALUE(-31.75), SIMDE_FLOAT16_VALUE(-31.75), SIMDE_FLOAT16_VALUE(-31.75), SIMDE_FLOAT16_VALUE(-31.75) },
{ SIMDE_FLOAT16_VALUE(20.34), SIMDE_FLOAT16_VALUE(20.34), SIMDE_FLOAT16_VALUE(20.34), SIMDE_FLOAT16_VALUE(20.34) },
{ SIMDE_FLOAT16_VALUE(-29.59), SIMDE_FLOAT16_VALUE(-29.59), SIMDE_FLOAT16_VALUE(-29.59), SIMDE_FLOAT16_VALUE(-29.59) } } },
{ { SIMDE_FLOAT16_VALUE(37.05), SIMDE_FLOAT16_VALUE(17.72), SIMDE_FLOAT16_VALUE(-49.37) },
{ SIMDE_FLOAT16_VALUE(-27.61), SIMDE_FLOAT16_VALUE(-29.16), SIMDE_FLOAT16_VALUE(2.30)},
{ { SIMDE_FLOAT16_VALUE(37.05), SIMDE_FLOAT16_VALUE(37.05), SIMDE_FLOAT16_VALUE(37.05), SIMDE_FLOAT16_VALUE(37.05) },
{ SIMDE_FLOAT16_VALUE(17.72), SIMDE_FLOAT16_VALUE(17.72), SIMDE_FLOAT16_VALUE(17.72), SIMDE_FLOAT16_VALUE(17.72) },
{ SIMDE_FLOAT16_VALUE(-49.37), SIMDE_FLOAT16_VALUE(-49.37), SIMDE_FLOAT16_VALUE(-49.37), SIMDE_FLOAT16_VALUE(-49.37) } } },
{ { SIMDE_FLOAT16_VALUE(-49.24), SIMDE_FLOAT16_VALUE(-2.48), SIMDE_FLOAT16_VALUE(-45.21) },
{ SIMDE_FLOAT16_VALUE(19.81), SIMDE_FLOAT16_VALUE(5.79), SIMDE_FLOAT16_VALUE(42.08)},
{ { SIMDE_FLOAT16_VALUE(-49.24), SIMDE_FLOAT16_VALUE(-49.24), SIMDE_FLOAT16_VALUE(-49.24), SIMDE_FLOAT16_VALUE(-49.24) },
{ SIMDE_FLOAT16_VALUE(-2.48), SIMDE_FLOAT16_VALUE(-2.48), SIMDE_FLOAT16_VALUE(-2.48), SIMDE_FLOAT16_VALUE(-2.48) },
{ SIMDE_FLOAT16_VALUE(-45.21), SIMDE_FLOAT16_VALUE(-45.21), SIMDE_FLOAT16_VALUE(-45.21), SIMDE_FLOAT16_VALUE(-45.21) } } },
{ { SIMDE_FLOAT16_VALUE(26.41), SIMDE_FLOAT16_VALUE(49.96), SIMDE_FLOAT16_VALUE(20.11) },
{ SIMDE_FLOAT16_VALUE(34.64), SIMDE_FLOAT16_VALUE(-7.87), SIMDE_FLOAT16_VALUE(-43.78)},
{ { SIMDE_FLOAT16_VALUE(26.41), SIMDE_FLOAT16_VALUE(26.41), SIMDE_FLOAT16_VALUE(26.41), SIMDE_FLOAT16_VALUE(26.41) },
{ SIMDE_FLOAT16_VALUE(49.96), SIMDE_FLOAT16_VALUE(49.96), SIMDE_FLOAT16_VALUE(49.96), SIMDE_FLOAT16_VALUE(49.96) },
{ SIMDE_FLOAT16_VALUE(20.11), SIMDE_FLOAT16_VALUE(20.11), SIMDE_FLOAT16_VALUE(20.11), SIMDE_FLOAT16_VALUE(20.11) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_float16x4x3_t r = simde_vld3_dup_f16(test_vec[i].a);
simde_float16x4x3_t expected = {
{simde_vld1_f16(test_vec[i].r[0]), simde_vld1_f16(test_vec[i].r[1]), simde_vld1_f16(test_vec[i].r[2])}};
simde_test_arm_neon_assert_equal_f16x4(r.val[0], expected.val[0], INT_MAX);
simde_test_arm_neon_assert_equal_f16x4(r.val[1], expected.val[1], INT_MAX);
simde_test_arm_neon_assert_equal_f16x4(r.val[2], expected.val[2], INT_MAX);
}
return 0;
}
static int
test_simde_vld3_dup_f32 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
float a[3];
float unused[3];
float r[3][2];
} test_vec[] = {
{ { SIMDE_FLOAT32_C(-2382.50), SIMDE_FLOAT32_C(1337.52), SIMDE_FLOAT32_C(-2555.52) },
{ SIMDE_FLOAT32_C(2329.55), SIMDE_FLOAT32_C(-2887.02), SIMDE_FLOAT32_C(-1085.66)},
{ { SIMDE_FLOAT32_C(-2382.50), SIMDE_FLOAT32_C(-2382.50) },
{ SIMDE_FLOAT32_C(1337.52), SIMDE_FLOAT32_C(1337.52) },
{ SIMDE_FLOAT32_C(-2555.52), SIMDE_FLOAT32_C(-2555.52) } } },
{ { SIMDE_FLOAT32_C(-4735.63), SIMDE_FLOAT32_C(-1105.19), SIMDE_FLOAT32_C(2348.59) },
{ SIMDE_FLOAT32_C(1863.06), SIMDE_FLOAT32_C(-2989.05), SIMDE_FLOAT32_C(3957.38)},
{ { SIMDE_FLOAT32_C(-4735.63), SIMDE_FLOAT32_C(-4735.63) },
{ SIMDE_FLOAT32_C(-1105.19), SIMDE_FLOAT32_C(-1105.19) },
{ SIMDE_FLOAT32_C(2348.59), SIMDE_FLOAT32_C(2348.59) } } },
{ { SIMDE_FLOAT32_C(-2290.48), SIMDE_FLOAT32_C(1772.72), SIMDE_FLOAT32_C(4473.71) },
{ SIMDE_FLOAT32_C(-2560.60), SIMDE_FLOAT32_C(-3282.98), SIMDE_FLOAT32_C(-4654.17)},
{ { SIMDE_FLOAT32_C(-2290.48), SIMDE_FLOAT32_C(-2290.48) },
{ SIMDE_FLOAT32_C(1772.72), SIMDE_FLOAT32_C(1772.72) },
{ SIMDE_FLOAT32_C(4473.71), SIMDE_FLOAT32_C(4473.71) } } },
{ { SIMDE_FLOAT32_C(2639.57), SIMDE_FLOAT32_C(-2227.82), SIMDE_FLOAT32_C(4717.55) },
{ SIMDE_FLOAT32_C(4303.36), SIMDE_FLOAT32_C(-1218.20), SIMDE_FLOAT32_C(3830.48)},
{ { SIMDE_FLOAT32_C(2639.57), SIMDE_FLOAT32_C(2639.57) },
{ SIMDE_FLOAT32_C(-2227.82), SIMDE_FLOAT32_C(-2227.82) },
{ SIMDE_FLOAT32_C(4717.55), SIMDE_FLOAT32_C(4717.55) } } },
{ { SIMDE_FLOAT32_C(2452.62), SIMDE_FLOAT32_C(1625.56), SIMDE_FLOAT32_C(-228.25) },
{ SIMDE_FLOAT32_C(-1171.56), SIMDE_FLOAT32_C(1910.83), SIMDE_FLOAT32_C(3954.71)},
{ { SIMDE_FLOAT32_C(2452.62), SIMDE_FLOAT32_C(2452.62) },
{ SIMDE_FLOAT32_C(1625.56), SIMDE_FLOAT32_C(1625.56) },
{ SIMDE_FLOAT32_C(-228.25), SIMDE_FLOAT32_C(-228.25) } } },
{ { SIMDE_FLOAT32_C(-2742.46), SIMDE_FLOAT32_C(3293.38), SIMDE_FLOAT32_C(346.01) },
{ SIMDE_FLOAT32_C(4929.24), SIMDE_FLOAT32_C(2432.88), SIMDE_FLOAT32_C(1629.40)},
{ { SIMDE_FLOAT32_C(-2742.46), SIMDE_FLOAT32_C(-2742.46) },
{ SIMDE_FLOAT32_C(3293.38), SIMDE_FLOAT32_C(3293.38) },
{ SIMDE_FLOAT32_C(346.01), SIMDE_FLOAT32_C(346.01) } } },
{ { SIMDE_FLOAT32_C(4711.75), SIMDE_FLOAT32_C(4806.28), SIMDE_FLOAT32_C(941.70) },
{ SIMDE_FLOAT32_C(572.76), SIMDE_FLOAT32_C(2872.54), SIMDE_FLOAT32_C(2021.90)},
{ { SIMDE_FLOAT32_C(4711.75), SIMDE_FLOAT32_C(4711.75) },
{ SIMDE_FLOAT32_C(4806.28), SIMDE_FLOAT32_C(4806.28) },
{ SIMDE_FLOAT32_C(941.70), SIMDE_FLOAT32_C(941.70) } } },
{ { SIMDE_FLOAT32_C(4312.83), SIMDE_FLOAT32_C(-1093.57), SIMDE_FLOAT32_C(-4143.46) },
{ SIMDE_FLOAT32_C(-73.76), SIMDE_FLOAT32_C(4246.17), SIMDE_FLOAT32_C(-233.49)},
{ { SIMDE_FLOAT32_C(4312.83), SIMDE_FLOAT32_C(4312.83) },
{ SIMDE_FLOAT32_C(-1093.57), SIMDE_FLOAT32_C(-1093.57) },
{ SIMDE_FLOAT32_C(-4143.46), SIMDE_FLOAT32_C(-4143.46) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_float32x2x3_t r = simde_vld3_dup_f32(test_vec[i].a);
simde_float32x2x3_t expected = {
{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_test_arm_neon_assert_equal_f32x2(r.val[0], expected.val[0], INT_MAX);
simde_test_arm_neon_assert_equal_f32x2(r.val[1], expected.val[1], INT_MAX);
simde_test_arm_neon_assert_equal_f32x2(r.val[2], expected.val[2], INT_MAX);
}
return 0;
}
static int
test_simde_vld3_dup_f64 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
simde_float64 a[3];
simde_float64 unused[3];
simde_float64 r[3][1];
} test_vec[] = {
{ { SIMDE_FLOAT64_C(236226.67), SIMDE_FLOAT64_C(192939.74), SIMDE_FLOAT64_C(384504.37) },
{ SIMDE_FLOAT64_C(-378339.05), SIMDE_FLOAT64_C(76696.47), SIMDE_FLOAT64_C(438417.90)},
{ { SIMDE_FLOAT64_C(236226.67) },
{ SIMDE_FLOAT64_C(192939.74) },
{ SIMDE_FLOAT64_C(384504.37) } } },
{ { SIMDE_FLOAT64_C(144897.63), SIMDE_FLOAT64_C(483753.45), SIMDE_FLOAT64_C(-377140.44) },
{ SIMDE_FLOAT64_C(-21825.93), SIMDE_FLOAT64_C(429765.52), SIMDE_FLOAT64_C(43437.54)},
{ { SIMDE_FLOAT64_C(144897.63) },
{ SIMDE_FLOAT64_C(483753.45) },
{ SIMDE_FLOAT64_C(-377140.44) } } },
{ { SIMDE_FLOAT64_C(394483.35), SIMDE_FLOAT64_C(-488967.56), SIMDE_FLOAT64_C(-59025.38) },
{ SIMDE_FLOAT64_C(-493532.19), SIMDE_FLOAT64_C(-466855.88), SIMDE_FLOAT64_C(-38442.08)},
{ { SIMDE_FLOAT64_C(394483.35) },
{ SIMDE_FLOAT64_C(-488967.56) },
{ SIMDE_FLOAT64_C(-59025.38) } } },
{ { SIMDE_FLOAT64_C(354858.43), SIMDE_FLOAT64_C(-400360.87), SIMDE_FLOAT64_C(375674.67) },
{ SIMDE_FLOAT64_C(-20167.12), SIMDE_FLOAT64_C(-172548.28), SIMDE_FLOAT64_C(-108982.35)},
{ { SIMDE_FLOAT64_C(354858.43) },
{ SIMDE_FLOAT64_C(-400360.87) },
{ SIMDE_FLOAT64_C(375674.67) } } },
{ { SIMDE_FLOAT64_C(379531.80), SIMDE_FLOAT64_C(-427312.47), SIMDE_FLOAT64_C(-243573.72) },
{ SIMDE_FLOAT64_C(-414651.89), SIMDE_FLOAT64_C(174702.00), SIMDE_FLOAT64_C(56533.13)},
{ { SIMDE_FLOAT64_C(379531.80) },
{ SIMDE_FLOAT64_C(-427312.47) },
{ SIMDE_FLOAT64_C(-243573.72) } } },
{ { SIMDE_FLOAT64_C(8488.31), SIMDE_FLOAT64_C(-324836.80), SIMDE_FLOAT64_C(-438953.32) },
{ SIMDE_FLOAT64_C(-109126.89), SIMDE_FLOAT64_C(-388098.72), SIMDE_FLOAT64_C(-93955.75)},
{ { SIMDE_FLOAT64_C(8488.31) },
{ SIMDE_FLOAT64_C(-324836.80) },
{ SIMDE_FLOAT64_C(-438953.32) } } },
{ { SIMDE_FLOAT64_C(-446810.13), SIMDE_FLOAT64_C(-275424.67), SIMDE_FLOAT64_C(453798.55) },
{ SIMDE_FLOAT64_C(493858.73), SIMDE_FLOAT64_C(73175.04), SIMDE_FLOAT64_C(-101153.68)},
{ { SIMDE_FLOAT64_C(-446810.13) },
{ SIMDE_FLOAT64_C(-275424.67) },
{ SIMDE_FLOAT64_C(453798.55) } } },
{ { SIMDE_FLOAT64_C(183424.28), SIMDE_FLOAT64_C(115671.75), SIMDE_FLOAT64_C(165990.60) },
{ SIMDE_FLOAT64_C(-460186.50), SIMDE_FLOAT64_C(408473.34), SIMDE_FLOAT64_C(85833.78)},
{ { SIMDE_FLOAT64_C(183424.28) },
{ SIMDE_FLOAT64_C(115671.75) },
{ SIMDE_FLOAT64_C(165990.60) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_float64x1x3_t r = simde_vld3_dup_f64(test_vec[i].a);
simde_float64x1x3_t expected = {
{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_test_arm_neon_assert_equal_f64x1(r.val[0], expected.val[0], INT_MAX);
simde_test_arm_neon_assert_equal_f64x1(r.val[1], expected.val[1], INT_MAX);
simde_test_arm_neon_assert_equal_f64x1(r.val[2], expected.val[2], INT_MAX);
}
return 0;
}
static int
test_simde_vld3_dup_s8 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
int8_t a[3];
int8_t unused[3];
int8_t r[3][8];
} test_vec[] = {
{ { INT8_C(55), -INT8_C(67), INT8_C(34) },
{ -INT8_C(4), INT8_C(29), INT8_C(62)},
{ { INT8_C(55), INT8_C(55), INT8_C(55), INT8_C(55),
INT8_C(55), INT8_C(55), INT8_C(55), INT8_C(55) },
{ -INT8_C(67), -INT8_C(67), -INT8_C(67), -INT8_C(67),
-INT8_C(67), -INT8_C(67), -INT8_C(67), -INT8_C(67) },
{ INT8_C(34), INT8_C(34), INT8_C(34), INT8_C(34),
INT8_C(34), INT8_C(34), INT8_C(34), INT8_C(34) } } },
{ { INT8_C(58), INT8_C(53), INT8_C(86) },
{ INT8_C(5), INT8_C(6), -INT8_C(5)},
{ { INT8_C(58), INT8_C(58), INT8_C(58), INT8_C(58),
INT8_C(58), INT8_C(58), INT8_C(58), INT8_C(58) },
{ INT8_C(53), INT8_C(53), INT8_C(53), INT8_C(53),
INT8_C(53), INT8_C(53), INT8_C(53), INT8_C(53) },
{ INT8_C(86), INT8_C(86), INT8_C(86), INT8_C(86),
INT8_C(86), INT8_C(86), INT8_C(86), INT8_C(86) } } },
{ { INT8_C(92), -INT8_C(1), -INT8_C(94) },
{ -INT8_C(6), INT8_C(61), -INT8_C(61)},
{ { INT8_C(92), INT8_C(92), INT8_C(92), INT8_C(92),
INT8_C(92), INT8_C(92), INT8_C(92), INT8_C(92) },
{ -INT8_C(1), -INT8_C(1), -INT8_C(1), -INT8_C(1),
-INT8_C(1), -INT8_C(1), -INT8_C(1), -INT8_C(1) },
{ -INT8_C(94), -INT8_C(94), -INT8_C(94), -INT8_C(94),
-INT8_C(94), -INT8_C(94), -INT8_C(94), -INT8_C(94) } } },
{ { INT8_C(99), INT8_C(89), -INT8_C(30) },
{ -INT8_C(83), INT8_C(36), INT8_C(27)},
{ { INT8_C(99), INT8_C(99), INT8_C(99), INT8_C(99),
INT8_C(99), INT8_C(99), INT8_C(99), INT8_C(99) },
{ INT8_C(89), INT8_C(89), INT8_C(89), INT8_C(89),
INT8_C(89), INT8_C(89), INT8_C(89), INT8_C(89) },
{ -INT8_C(30), -INT8_C(30), -INT8_C(30), -INT8_C(30),
-INT8_C(30), -INT8_C(30), -INT8_C(30), -INT8_C(30) } } },
{ { -INT8_C(92), INT8_C(73), INT8_C(70) },
{ -INT8_C(33), -INT8_C(90), -INT8_C(72)},
{ { -INT8_C(92), -INT8_C(92), -INT8_C(92), -INT8_C(92),
-INT8_C(92), -INT8_C(92), -INT8_C(92), -INT8_C(92) },
{ INT8_C(73), INT8_C(73), INT8_C(73), INT8_C(73),
INT8_C(73), INT8_C(73), INT8_C(73), INT8_C(73) },
{ INT8_C(70), INT8_C(70), INT8_C(70), INT8_C(70),
INT8_C(70), INT8_C(70), INT8_C(70), INT8_C(70) } } },
{ { -INT8_C(93), -INT8_C(78), INT8_C(35) },
{ -INT8_C(20), -INT8_C(43), INT8_C(12)},
{ { -INT8_C(93), -INT8_C(93), -INT8_C(93), -INT8_C(93),
-INT8_C(93), -INT8_C(93), -INT8_C(93), -INT8_C(93) },
{ -INT8_C(78), -INT8_C(78), -INT8_C(78), -INT8_C(78),
-INT8_C(78), -INT8_C(78), -INT8_C(78), -INT8_C(78) },
{ INT8_C(35), INT8_C(35), INT8_C(35), INT8_C(35),
INT8_C(35), INT8_C(35), INT8_C(35), INT8_C(35) } } },
{ { -INT8_C(97), INT8_C(19), -INT8_C(95) },
{ INT8_C(10), INT8_C(91), -INT8_C(14)},
{ { -INT8_C(97), -INT8_C(97), -INT8_C(97), -INT8_C(97),
-INT8_C(97), -INT8_C(97), -INT8_C(97), -INT8_C(97) },
{ INT8_C(19), INT8_C(19), INT8_C(19), INT8_C(19),
INT8_C(19), INT8_C(19), INT8_C(19), INT8_C(19) },
{ -INT8_C(95), -INT8_C(95), -INT8_C(95), -INT8_C(95),
-INT8_C(95), -INT8_C(95), -INT8_C(95), -INT8_C(95) } } },
{ { INT8_C(36), -INT8_C(24), -INT8_C(59) },
{ -INT8_C(78), INT8_C(76), INT8_C(53)},
{ { INT8_C(36), INT8_C(36), INT8_C(36), INT8_C(36),
INT8_C(36), INT8_C(36), INT8_C(36), INT8_C(36) },
{ -INT8_C(24), -INT8_C(24), -INT8_C(24), -INT8_C(24),
-INT8_C(24), -INT8_C(24), -INT8_C(24), -INT8_C(24) },
{ -INT8_C(59), -INT8_C(59), -INT8_C(59), -INT8_C(59),
-INT8_C(59), -INT8_C(59), -INT8_C(59), -INT8_C(59) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int8x8x3_t r = simde_vld3_dup_s8(test_vec[i].a);
simde_int8x8x3_t expected = {
{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_test_arm_neon_assert_equal_i8x8(r.val[0], expected.val[0]);
simde_test_arm_neon_assert_equal_i8x8(r.val[1], expected.val[1]);
simde_test_arm_neon_assert_equal_i8x8(r.val[2], expected.val[2]);
}
return 0;
}
static int
test_simde_vld3_dup_s16 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
int16_t a[3];
int16_t unused[3];
int16_t r[3][4];
} test_vec[] = {
{ { -INT16_C(2921), INT16_C(8854), -INT16_C(1686) },
{ -INT16_C(4075), -INT16_C(1501), INT16_C(1121)},
{ { -INT16_C(2921), -INT16_C(2921), -INT16_C(2921), -INT16_C(2921) },
{ INT16_C(8854), INT16_C(8854), INT16_C(8854), INT16_C(8854) },
{ -INT16_C(1686), -INT16_C(1686), -INT16_C(1686), -INT16_C(1686) } } },
{ { -INT16_C(6896), INT16_C(2743), -INT16_C(1644) },
{ -INT16_C(2845), -INT16_C(6251), INT16_C(9882)},
{ { -INT16_C(6896), -INT16_C(6896), -INT16_C(6896), -INT16_C(6896) },
{ INT16_C(2743), INT16_C(2743), INT16_C(2743), INT16_C(2743) },
{ -INT16_C(1644), -INT16_C(1644), -INT16_C(1644), -INT16_C(1644) } } },
{ { INT16_C(7425), INT16_C(1407), -INT16_C(9810) },
{ INT16_C(5827), INT16_C(7010), INT16_C(2508)},
{ { INT16_C(7425), INT16_C(7425), INT16_C(7425), INT16_C(7425) },
{ INT16_C(1407), INT16_C(1407), INT16_C(1407), INT16_C(1407) },
{ -INT16_C(9810), -INT16_C(9810), -INT16_C(9810), -INT16_C(9810) } } },
{ { -INT16_C(5814), INT16_C(168), -INT16_C(2609) },
{ INT16_C(7740), INT16_C(5018), -INT16_C(7738)},
{ { -INT16_C(5814), -INT16_C(5814), -INT16_C(5814), -INT16_C(5814) },
{ INT16_C(168), INT16_C(168), INT16_C(168), INT16_C(168) },
{ -INT16_C(2609), -INT16_C(2609), -INT16_C(2609), -INT16_C(2609) } } },
{ { INT16_C(4688), -INT16_C(4953), -INT16_C(1696) },
{ INT16_C(7371), -INT16_C(9194), INT16_C(8018)},
{ { INT16_C(4688), INT16_C(4688), INT16_C(4688), INT16_C(4688) },
{ -INT16_C(4953), -INT16_C(4953), -INT16_C(4953), -INT16_C(4953) },
{ -INT16_C(1696), -INT16_C(1696), -INT16_C(1696), -INT16_C(1696) } } },
{ { INT16_C(5322), -INT16_C(3475), -INT16_C(1646) },
{ INT16_C(3260), INT16_C(9616), -INT16_C(7563)},
{ { INT16_C(5322), INT16_C(5322), INT16_C(5322), INT16_C(5322) },
{ -INT16_C(3475), -INT16_C(3475), -INT16_C(3475), -INT16_C(3475) },
{ -INT16_C(1646), -INT16_C(1646), -INT16_C(1646), -INT16_C(1646) } } },
{ { INT16_C(1866), INT16_C(5035), INT16_C(6718) },
{ -INT16_C(3904), INT16_C(8154), INT16_C(3705)},
{ { INT16_C(1866), INT16_C(1866), INT16_C(1866), INT16_C(1866) },
{ INT16_C(5035), INT16_C(5035), INT16_C(5035), INT16_C(5035) },
{ INT16_C(6718), INT16_C(6718), INT16_C(6718), INT16_C(6718) } } },
{ { INT16_C(2449), INT16_C(2426), -INT16_C(4109) },
{ -INT16_C(3807), INT16_C(2524), -INT16_C(585)},
{ { INT16_C(2449), INT16_C(2449), INT16_C(2449), INT16_C(2449) },
{ INT16_C(2426), INT16_C(2426), INT16_C(2426), INT16_C(2426) },
{ -INT16_C(4109), -INT16_C(4109), -INT16_C(4109), -INT16_C(4109) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int16x4x3_t r = simde_vld3_dup_s16(test_vec[i].a);
simde_int16x4x3_t expected = {
{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_test_arm_neon_assert_equal_i16x4(r.val[0], expected.val[0]);
simde_test_arm_neon_assert_equal_i16x4(r.val[1], expected.val[1]);
simde_test_arm_neon_assert_equal_i16x4(r.val[2], expected.val[2]);
}
return 0;
}
static int
test_simde_vld3_dup_s32 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
int32_t a[3];
int32_t unused[3];
int32_t r[3][2];
} test_vec[] = {
{ { INT32_C(9359), -INT32_C(791754), INT32_C(780198) },
{ -INT32_C(692894), -INT32_C(601710), INT32_C(160090)},
{ { INT32_C(9359), INT32_C(9359) },
{ -INT32_C(791754), -INT32_C(791754) },
{ INT32_C(780198), INT32_C(780198) } } },
{ { -INT32_C(445729), INT32_C(492254), INT32_C(729801) },
{ INT32_C(172233), -INT32_C(996411), INT32_C(527512)},
{ { -INT32_C(445729), -INT32_C(445729) },
{ INT32_C(492254), INT32_C(492254) },
{ INT32_C(729801), INT32_C(729801) } } },
{ { -INT32_C(80447), -INT32_C(632170), INT32_C(712178) },
{ INT32_C(644121), INT32_C(399198), INT32_C(706984)},
{ { -INT32_C(80447), -INT32_C(80447) },
{ -INT32_C(632170), -INT32_C(632170) },
{ INT32_C(712178), INT32_C(712178) } } },
{ { -INT32_C(181596), INT32_C(493128), -INT32_C(330413) },
{ -INT32_C(510772), -INT32_C(439183), INT32_C(228483)},
{ { -INT32_C(181596), -INT32_C(181596) },
{ INT32_C(493128), INT32_C(493128) },
{ -INT32_C(330413), -INT32_C(330413) } } },
{ { INT32_C(415181), -INT32_C(745887), -INT32_C(767306) },
{ INT32_C(843741), INT32_C(249059), -INT32_C(35530)},
{ { INT32_C(415181), INT32_C(415181) },
{ -INT32_C(745887), -INT32_C(745887) },
{ -INT32_C(767306), -INT32_C(767306) } } },
{ { INT32_C(264934), -INT32_C(922140), -INT32_C(924397) },
{ -INT32_C(823933), INT32_C(333243), -INT32_C(862050)},
{ { INT32_C(264934), INT32_C(264934) },
{ -INT32_C(922140), -INT32_C(922140) },
{ -INT32_C(924397), -INT32_C(924397) } } },
{ { -INT32_C(211892), -INT32_C(108610), INT32_C(775205) },
{ -INT32_C(732876), INT32_C(220414), -INT32_C(39935)},
{ { -INT32_C(211892), -INT32_C(211892) },
{ -INT32_C(108610), -INT32_C(108610) },
{ INT32_C(775205), INT32_C(775205) } } },
{ { INT32_C(52472), INT32_C(404931), -INT32_C(266802) },
{ INT32_C(192308), INT32_C(487453), INT32_C(771119)},
{ { INT32_C(52472), INT32_C(52472) },
{ INT32_C(404931), INT32_C(404931) },
{ -INT32_C(266802), -INT32_C(266802) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int32x2x3_t r = simde_vld3_dup_s32(test_vec[i].a);
simde_int32x2x3_t expected = {
{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_test_arm_neon_assert_equal_i32x2(r.val[0], expected.val[0]);
simde_test_arm_neon_assert_equal_i32x2(r.val[1], expected.val[1]);
simde_test_arm_neon_assert_equal_i32x2(r.val[2], expected.val[2]);
}
return 0;
}
static int
test_simde_vld3_dup_s64 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
int64_t a[3];
int64_t unused[3];
int64_t r[3][1];
} test_vec[] = {
{ { INT64_C(51518731), -INT64_C(53716248), -INT64_C(89452262) },
{ INT64_C(84707352), -INT64_C(86842244), -INT64_C(80580693)},
{ { INT64_C(51518731) },
{ -INT64_C(53716248) },
{ -INT64_C(89452262) } } },
{ { -INT64_C(44610849), -INT64_C(52160709), -INT64_C(95346428) },
{ INT64_C(72202015), INT64_C(35144772), -INT64_C(29764090)},
{ { -INT64_C(44610849) },
{ -INT64_C(52160709) },
{ -INT64_C(95346428) } } },
{ { -INT64_C(13186336), INT64_C(44857075), -INT64_C(85282798) },
{ INT64_C(56936164), INT64_C(65920241), INT64_C(30317650)},
{ { -INT64_C(13186336) },
{ INT64_C(44857075) },
{ -INT64_C(85282798) } } },
{ { -INT64_C(52586359), -INT64_C(72094720), INT64_C(86111358) },
{ INT64_C(38491545), -INT64_C(41719422), INT64_C(26443629)},
{ { -INT64_C(52586359) },
{ -INT64_C(72094720) },
{ INT64_C(86111358) } } },
{ { -INT64_C(7491042), INT64_C(65098523), INT64_C(45614065) },
{ -INT64_C(34048766), INT64_C(32766230), -INT64_C(19050598)},
{ { -INT64_C(7491042) },
{ INT64_C(65098523) },
{ INT64_C(45614065) } } },
{ { -INT64_C(15626393), -INT64_C(90534831), INT64_C(77179247) },
{ INT64_C(66256354), INT64_C(28944347), -INT64_C(58272864)},
{ { -INT64_C(15626393) },
{ -INT64_C(90534831) },
{ INT64_C(77179247) } } },
{ { -INT64_C(591805), -INT64_C(23226575), -INT64_C(94673457) },
{ INT64_C(92387981), -INT64_C(78597599), INT64_C(71171711)},
{ { -INT64_C(591805) },
{ -INT64_C(23226575) },
{ -INT64_C(94673457) } } },
{ { -INT64_C(22331289), INT64_C(63626465), -INT64_C(59469151) },
{ -INT64_C(50710329), INT64_C(52199199), INT64_C(34000198)},
{ { -INT64_C(22331289) },
{ INT64_C(63626465) },
{ -INT64_C(59469151) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int64x1x3_t r = simde_vld3_dup_s64(test_vec[i].a);
simde_int64x1x3_t expected = {
{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_test_arm_neon_assert_equal_i64x1(r.val[0], expected.val[0]);
simde_test_arm_neon_assert_equal_i64x1(r.val[1], expected.val[1]);
simde_test_arm_neon_assert_equal_i64x1(r.val[2], expected.val[2]);
}
return 0;
}
static int
test_simde_vld3_dup_u8 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
uint8_t a[3];
uint8_t unused[3];
uint8_t r[3][8];
} test_vec[] = {
{ { UINT8_C(135), UINT8_C(154), UINT8_C(34) },
{ UINT8_C(4), UINT8_C(55), UINT8_C(125)},
{ { UINT8_C(135), UINT8_C(135), UINT8_C(135), UINT8_C(135),
UINT8_C(135), UINT8_C(135), UINT8_C(135), UINT8_C(135) },
{ UINT8_C(154), UINT8_C(154), UINT8_C(154), UINT8_C(154),
UINT8_C(154), UINT8_C(154), UINT8_C(154), UINT8_C(154) },
{ UINT8_C(34), UINT8_C(34), UINT8_C(34), UINT8_C(34),
UINT8_C(34), UINT8_C(34), UINT8_C(34), UINT8_C(34) } } },
{ { UINT8_C(182), UINT8_C(2), UINT8_C(184) },
{ UINT8_C(165), UINT8_C(123), UINT8_C(191)},
{ { UINT8_C(182), UINT8_C(182), UINT8_C(182), UINT8_C(182),
UINT8_C(182), UINT8_C(182), UINT8_C(182), UINT8_C(182) },
{ UINT8_C(2), UINT8_C(2), UINT8_C(2), UINT8_C(2),
UINT8_C(2), UINT8_C(2), UINT8_C(2), UINT8_C(2) },
{ UINT8_C(184), UINT8_C(184), UINT8_C(184), UINT8_C(184),
UINT8_C(184), UINT8_C(184), UINT8_C(184), UINT8_C(184) } } },
{ { UINT8_C(127), UINT8_C(64), UINT8_C(31) },
{ UINT8_C(41), UINT8_C(77), UINT8_C(44)},
{ { UINT8_C(127), UINT8_C(127), UINT8_C(127), UINT8_C(127),
UINT8_C(127), UINT8_C(127), UINT8_C(127), UINT8_C(127) },
{ UINT8_C(64), UINT8_C(64), UINT8_C(64), UINT8_C(64),
UINT8_C(64), UINT8_C(64), UINT8_C(64), UINT8_C(64) },
{ UINT8_C(31), UINT8_C(31), UINT8_C(31), UINT8_C(31),
UINT8_C(31), UINT8_C(31), UINT8_C(31), UINT8_C(31) } } },
{ { UINT8_C(95), UINT8_C(134), UINT8_C(151) },
{ UINT8_C(30), UINT8_C(126), UINT8_C(11)},
{ { UINT8_C(95), UINT8_C(95), UINT8_C(95), UINT8_C(95),
UINT8_C(95), UINT8_C(95), UINT8_C(95), UINT8_C(95) },
{ UINT8_C(134), UINT8_C(134), UINT8_C(134), UINT8_C(134),
UINT8_C(134), UINT8_C(134), UINT8_C(134), UINT8_C(134) },
{ UINT8_C(151), UINT8_C(151), UINT8_C(151), UINT8_C(151),
UINT8_C(151), UINT8_C(151), UINT8_C(151), UINT8_C(151) } } },
{ { UINT8_C(198), UINT8_C(171), UINT8_C(185) },
{ UINT8_C(44), UINT8_C(68), UINT8_C(53)},
{ { UINT8_C(198), UINT8_C(198), UINT8_C(198), UINT8_C(198),
UINT8_C(198), UINT8_C(198), UINT8_C(198), UINT8_C(198) },
{ UINT8_C(171), UINT8_C(171), UINT8_C(171), UINT8_C(171),
UINT8_C(171), UINT8_C(171), UINT8_C(171), UINT8_C(171) },
{ UINT8_C(185), UINT8_C(185), UINT8_C(185), UINT8_C(185),
UINT8_C(185), UINT8_C(185), UINT8_C(185), UINT8_C(185) } } },
{ { UINT8_C(149), UINT8_C(156), UINT8_C(25) },
{ UINT8_C(131), UINT8_C(33), UINT8_C(82)},
{ { UINT8_C(149), UINT8_C(149), UINT8_C(149), UINT8_C(149),
UINT8_C(149), UINT8_C(149), UINT8_C(149), UINT8_C(149) },
{ UINT8_C(156), UINT8_C(156), UINT8_C(156), UINT8_C(156),
UINT8_C(156), UINT8_C(156), UINT8_C(156), UINT8_C(156) },
{ UINT8_C(25), UINT8_C(25), UINT8_C(25), UINT8_C(25),
UINT8_C(25), UINT8_C(25), UINT8_C(25), UINT8_C(25) } } },
{ { UINT8_C(168), UINT8_C(104), UINT8_C(156) },
{ UINT8_C(82), UINT8_C(180), UINT8_C(74)},
{ { UINT8_C(168), UINT8_C(168), UINT8_C(168), UINT8_C(168),
UINT8_C(168), UINT8_C(168), UINT8_C(168), UINT8_C(168) },
{ UINT8_C(104), UINT8_C(104), UINT8_C(104), UINT8_C(104),
UINT8_C(104), UINT8_C(104), UINT8_C(104), UINT8_C(104) },
{ UINT8_C(156), UINT8_C(156), UINT8_C(156), UINT8_C(156),
UINT8_C(156), UINT8_C(156), UINT8_C(156), UINT8_C(156) } } },
{ { UINT8_C(20), UINT8_C(9), UINT8_C(108) },
{ UINT8_C(197), UINT8_C(40), UINT8_C(191)},
{ { UINT8_C(20), UINT8_C(20), UINT8_C(20), UINT8_C(20),
UINT8_C(20), UINT8_C(20), UINT8_C(20), UINT8_C(20) },
{ UINT8_C(9), UINT8_C(9), UINT8_C(9), UINT8_C(9),
UINT8_C(9), UINT8_C(9), UINT8_C(9), UINT8_C(9) },
{ UINT8_C(108), UINT8_C(108), UINT8_C(108), UINT8_C(108),
UINT8_C(108), UINT8_C(108), UINT8_C(108), UINT8_C(108) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint8x8x3_t r = simde_vld3_dup_u8(test_vec[i].a);
simde_uint8x8x3_t expected = {
{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_test_arm_neon_assert_equal_u8x8(r.val[0], expected.val[0]);
simde_test_arm_neon_assert_equal_u8x8(r.val[1], expected.val[1]);
simde_test_arm_neon_assert_equal_u8x8(r.val[2], expected.val[2]);
}
return 0;
}
static int
test_simde_vld3_dup_u16 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
uint16_t a[3];
uint16_t unused[3];
uint16_t r[3][4];
} test_vec[] = {
{ { UINT16_C(13377), UINT16_C(10805), UINT16_C(14630) },
{ UINT16_C(10222), UINT16_C(12690), UINT16_C(19072)},
{ { UINT16_C(13377), UINT16_C(13377), UINT16_C(13377), UINT16_C(13377) },
{ UINT16_C(10805), UINT16_C(10805), UINT16_C(10805), UINT16_C(10805) },
{ UINT16_C(14630), UINT16_C(14630), UINT16_C(14630), UINT16_C(14630) } } },
{ { UINT16_C(8093), UINT16_C(11570), UINT16_C(183) },
{ UINT16_C(14974), UINT16_C(2867), UINT16_C(19983)},
{ { UINT16_C(8093), UINT16_C(8093), UINT16_C(8093), UINT16_C(8093) },
{ UINT16_C(11570), UINT16_C(11570), UINT16_C(11570), UINT16_C(11570) },
{ UINT16_C(183), UINT16_C(183), UINT16_C(183), UINT16_C(183) } } },
{ { UINT16_C(51), UINT16_C(11622), UINT16_C(2412) },
{ UINT16_C(186), UINT16_C(13191), UINT16_C(7620)},
{ { UINT16_C(51), UINT16_C(51), UINT16_C(51), UINT16_C(51) },
{ UINT16_C(11622), UINT16_C(11622), UINT16_C(11622), UINT16_C(11622) },
{ UINT16_C(2412), UINT16_C(2412), UINT16_C(2412), UINT16_C(2412) } } },
{ { UINT16_C(1319), UINT16_C(3015), UINT16_C(17065) },
{ UINT16_C(2405), UINT16_C(6666), UINT16_C(16892)},
{ { UINT16_C(1319), UINT16_C(1319), UINT16_C(1319), UINT16_C(1319) },
{ UINT16_C(3015), UINT16_C(3015), UINT16_C(3015), UINT16_C(3015) },
{ UINT16_C(17065), UINT16_C(17065), UINT16_C(17065), UINT16_C(17065) } } },
{ { UINT16_C(5845), UINT16_C(17414), UINT16_C(9474) },
{ UINT16_C(17463), UINT16_C(1796), UINT16_C(5656)},
{ { UINT16_C(5845), UINT16_C(5845), UINT16_C(5845), UINT16_C(5845) },
{ UINT16_C(17414), UINT16_C(17414), UINT16_C(17414), UINT16_C(17414) },
{ UINT16_C(9474), UINT16_C(9474), UINT16_C(9474), UINT16_C(9474) } } },
{ { UINT16_C(4232), UINT16_C(1927), UINT16_C(15662) },
{ UINT16_C(4302), UINT16_C(2477), UINT16_C(16338)},
{ { UINT16_C(4232), UINT16_C(4232), UINT16_C(4232), UINT16_C(4232) },
{ UINT16_C(1927), UINT16_C(1927), UINT16_C(1927), UINT16_C(1927) },
{ UINT16_C(15662), UINT16_C(15662), UINT16_C(15662), UINT16_C(15662) } } },
{ { UINT16_C(2091), UINT16_C(9041), UINT16_C(5199) },
{ UINT16_C(2392), UINT16_C(11870), UINT16_C(18327)},
{ { UINT16_C(2091), UINT16_C(2091), UINT16_C(2091), UINT16_C(2091) },
{ UINT16_C(9041), UINT16_C(9041), UINT16_C(9041), UINT16_C(9041) },
{ UINT16_C(5199), UINT16_C(5199), UINT16_C(5199), UINT16_C(5199) } } },
{ { UINT16_C(9669), UINT16_C(11054), UINT16_C(16736) },
{ UINT16_C(8412), UINT16_C(8721), UINT16_C(13754)},
{ { UINT16_C(9669), UINT16_C(9669), UINT16_C(9669), UINT16_C(9669) },
{ UINT16_C(11054), UINT16_C(11054), UINT16_C(11054), UINT16_C(11054) },
{ UINT16_C(16736), UINT16_C(16736), UINT16_C(16736), UINT16_C(16736) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint16x4x3_t r = simde_vld3_dup_u16(test_vec[i].a);
simde_uint16x4x3_t expected = {
{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_test_arm_neon_assert_equal_u16x4(r.val[0], expected.val[0]);
simde_test_arm_neon_assert_equal_u16x4(r.val[1], expected.val[1]);
simde_test_arm_neon_assert_equal_u16x4(r.val[2], expected.val[2]);
}
return 0;
}
static int
test_simde_vld3_dup_u32 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
uint32_t a[3];
uint32_t unused[3];
uint32_t r[3][2];
} test_vec[] = {
{ { UINT32_C(395765), UINT32_C(1580157), UINT32_C(1297063) },
{ UINT32_C(437858), UINT32_C(950362), UINT32_C(611421)},
{ { UINT32_C(395765), UINT32_C(395765) },
{ UINT32_C(1580157), UINT32_C(1580157) },
{ UINT32_C(1297063), UINT32_C(1297063) } } },
{ { UINT32_C(795810), UINT32_C(971010), UINT32_C(508108) },
{ UINT32_C(99068), UINT32_C(1593779), UINT32_C(1092559)},
{ { UINT32_C(795810), UINT32_C(795810) },
{ UINT32_C(971010), UINT32_C(971010) },
{ UINT32_C(508108), UINT32_C(508108) } } },
{ { UINT32_C(851511), UINT32_C(1871084), UINT32_C(1077984) },
{ UINT32_C(441102), UINT32_C(921978), UINT32_C(185864)},
{ { UINT32_C(851511), UINT32_C(851511) },
{ UINT32_C(1871084), UINT32_C(1871084) },
{ UINT32_C(1077984), UINT32_C(1077984) } } },
{ { UINT32_C(44627), UINT32_C(755307), UINT32_C(1310678) },
{ UINT32_C(1692632), UINT32_C(1730487), UINT32_C(33593)},
{ { UINT32_C(44627), UINT32_C(44627) },
{ UINT32_C(755307), UINT32_C(755307) },
{ UINT32_C(1310678), UINT32_C(1310678) } } },
{ { UINT32_C(1123068), UINT32_C(1764923), UINT32_C(135672) },
{ UINT32_C(748360), UINT32_C(1811211), UINT32_C(237332)},
{ { UINT32_C(1123068), UINT32_C(1123068) },
{ UINT32_C(1764923), UINT32_C(1764923) },
{ UINT32_C(135672), UINT32_C(135672) } } },
{ { UINT32_C(1762919), UINT32_C(212442), UINT32_C(403640) },
{ UINT32_C(95742), UINT32_C(870777), UINT32_C(1775043)},
{ { UINT32_C(1762919), UINT32_C(1762919) },
{ UINT32_C(212442), UINT32_C(212442) },
{ UINT32_C(403640), UINT32_C(403640) } } },
{ { UINT32_C(838356), UINT32_C(1713991), UINT32_C(1501513) },
{ UINT32_C(1515420), UINT32_C(835038), UINT32_C(322935)},
{ { UINT32_C(838356), UINT32_C(838356) },
{ UINT32_C(1713991), UINT32_C(1713991) },
{ UINT32_C(1501513), UINT32_C(1501513) } } },
{ { UINT32_C(295067), UINT32_C(128462), UINT32_C(205058) },
{ UINT32_C(758571), UINT32_C(757108), UINT32_C(669760)},
{ { UINT32_C(295067), UINT32_C(295067) },
{ UINT32_C(128462), UINT32_C(128462) },
{ UINT32_C(205058), UINT32_C(205058) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint32x2x3_t r = simde_vld3_dup_u32(test_vec[i].a);
simde_uint32x2x3_t expected = {
{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_test_arm_neon_assert_equal_u32x2(r.val[0], expected.val[0]);
simde_test_arm_neon_assert_equal_u32x2(r.val[1], expected.val[1]);
simde_test_arm_neon_assert_equal_u32x2(r.val[2], expected.val[2]);
}
return 0;
}
static int
test_simde_vld3_dup_u64 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
uint64_t a[3];
uint64_t unused[3];
uint64_t r[3][1];
} test_vec[] = {
{ { UINT64_C(160975844), UINT64_C(153508503), UINT64_C(173493973) },
{ UINT64_C(166251921), UINT64_C(65830676), UINT64_C(97239677)},
{ { UINT64_C(160975844) },
{ UINT64_C(153508503) },
{ UINT64_C(173493973) } } },
{ { UINT64_C(187315367), UINT64_C(5800842), UINT64_C(115739498) },
{ UINT64_C(84653812), UINT64_C(120517420), UINT64_C(175798293)},
{ { UINT64_C(187315367) },
{ UINT64_C(5800842) },
{ UINT64_C(115739498) } } },
{ { UINT64_C(76024341), UINT64_C(155566333), UINT64_C(101038279) },
{ UINT64_C(46074453), UINT64_C(151593559), UINT64_C(39262253)},
{ { UINT64_C(76024341) },
{ UINT64_C(155566333) },
{ UINT64_C(101038279) } } },
{ { UINT64_C(46906477), UINT64_C(997782), UINT64_C(69721610) },
{ UINT64_C(31134385), UINT64_C(173251253), UINT64_C(151509065)},
{ { UINT64_C(46906477) },
{ UINT64_C(997782) },
{ UINT64_C(69721610) } } },
{ { UINT64_C(59105148), UINT64_C(194933961), UINT64_C(18072130) },
{ UINT64_C(67463877), UINT64_C(80370119), UINT64_C(107818223)},
{ { UINT64_C(59105148) },
{ UINT64_C(194933961) },
{ UINT64_C(18072130) } } },
{ { UINT64_C(187736185), UINT64_C(161160447), UINT64_C(24909245) },
{ UINT64_C(110288501), UINT64_C(110076399), UINT64_C(184478722)},
{ { UINT64_C(187736185) },
{ UINT64_C(161160447) },
{ UINT64_C(24909245) } } },
{ { UINT64_C(113683975), UINT64_C(71734803), UINT64_C(50110366) },
{ UINT64_C(20964634), UINT64_C(167646318), UINT64_C(171677397)},
{ { UINT64_C(113683975) },
{ UINT64_C(71734803) },
{ UINT64_C(50110366) } } },
{ { UINT64_C(5715707), UINT64_C(147794026), UINT64_C(162515415) },
{ UINT64_C(142055920), UINT64_C(10766156), UINT64_C(64823110)},
{ { UINT64_C(5715707) },
{ UINT64_C(147794026) },
{ UINT64_C(162515415) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint64x1x3_t r = simde_vld3_dup_u64(test_vec[i].a);
simde_uint64x1x3_t expected = {
{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_test_arm_neon_assert_equal_u64x1(r.val[0], expected.val[0]);
simde_test_arm_neon_assert_equal_u64x1(r.val[1], expected.val[1]);
simde_test_arm_neon_assert_equal_u64x1(r.val[2], expected.val[2]);
}
return 0;
}
static int
test_simde_vld3q_dup_f16 (SIMDE_MUNIT_TEST_ARGS) {
struct {
simde_float16_t a[3];
simde_float16_t unused[3];
simde_float16_t r[3][8];
} test_vec[] = {
{ { SIMDE_FLOAT16_VALUE(20.19), SIMDE_FLOAT16_VALUE(16.39), SIMDE_FLOAT16_VALUE(46.17) },
{ SIMDE_FLOAT16_VALUE(29.32), SIMDE_FLOAT16_VALUE(-18.79), SIMDE_FLOAT16_VALUE(30.83)},
{ { SIMDE_FLOAT16_VALUE(20.19), SIMDE_FLOAT16_VALUE(20.19), SIMDE_FLOAT16_VALUE(20.19), SIMDE_FLOAT16_VALUE(20.19),
SIMDE_FLOAT16_VALUE(20.19), SIMDE_FLOAT16_VALUE(20.19), SIMDE_FLOAT16_VALUE(20.19), SIMDE_FLOAT16_VALUE(20.19) },
{ SIMDE_FLOAT16_VALUE(16.39), SIMDE_FLOAT16_VALUE(16.39), SIMDE_FLOAT16_VALUE(16.39), SIMDE_FLOAT16_VALUE(16.39),
SIMDE_FLOAT16_VALUE(16.39), SIMDE_FLOAT16_VALUE(16.39), SIMDE_FLOAT16_VALUE(16.39), SIMDE_FLOAT16_VALUE(16.39) },
{ SIMDE_FLOAT16_VALUE(46.17), SIMDE_FLOAT16_VALUE(46.17), SIMDE_FLOAT16_VALUE(46.17), SIMDE_FLOAT16_VALUE(46.17),
SIMDE_FLOAT16_VALUE(46.17), SIMDE_FLOAT16_VALUE(46.17), SIMDE_FLOAT16_VALUE(46.17), SIMDE_FLOAT16_VALUE(46.17) } } },
{ { SIMDE_FLOAT16_VALUE(-48.67), SIMDE_FLOAT16_VALUE(-21.20), SIMDE_FLOAT16_VALUE(-45.20) },
{ SIMDE_FLOAT16_VALUE(6.72), SIMDE_FLOAT16_VALUE(10.70), SIMDE_FLOAT16_VALUE(32.09)},
{ { SIMDE_FLOAT16_VALUE(-48.67), SIMDE_FLOAT16_VALUE(-48.67), SIMDE_FLOAT16_VALUE(-48.67), SIMDE_FLOAT16_VALUE(-48.67),
SIMDE_FLOAT16_VALUE(-48.67), SIMDE_FLOAT16_VALUE(-48.67), SIMDE_FLOAT16_VALUE(-48.67), SIMDE_FLOAT16_VALUE(-48.67) },
{ SIMDE_FLOAT16_VALUE(-21.20), SIMDE_FLOAT16_VALUE(-21.20), SIMDE_FLOAT16_VALUE(-21.20), SIMDE_FLOAT16_VALUE(-21.20),
SIMDE_FLOAT16_VALUE(-21.20), SIMDE_FLOAT16_VALUE(-21.20), SIMDE_FLOAT16_VALUE(-21.20), SIMDE_FLOAT16_VALUE(-21.20) },
{ SIMDE_FLOAT16_VALUE(-45.20), SIMDE_FLOAT16_VALUE(-45.20), SIMDE_FLOAT16_VALUE(-45.20), SIMDE_FLOAT16_VALUE(-45.20),
SIMDE_FLOAT16_VALUE(-45.20), SIMDE_FLOAT16_VALUE(-45.20), SIMDE_FLOAT16_VALUE(-45.20), SIMDE_FLOAT16_VALUE(-45.20) } } },
{ { SIMDE_FLOAT16_VALUE(-29.85), SIMDE_FLOAT16_VALUE(24.77), SIMDE_FLOAT16_VALUE(7.75) },
{ SIMDE_FLOAT16_VALUE(-19.50), SIMDE_FLOAT16_VALUE(-45.53), SIMDE_FLOAT16_VALUE(21.67)},
{ { SIMDE_FLOAT16_VALUE(-29.85), SIMDE_FLOAT16_VALUE(-29.85), SIMDE_FLOAT16_VALUE(-29.85), SIMDE_FLOAT16_VALUE(-29.85),
SIMDE_FLOAT16_VALUE(-29.85), SIMDE_FLOAT16_VALUE(-29.85), SIMDE_FLOAT16_VALUE(-29.85), SIMDE_FLOAT16_VALUE(-29.85) },
{ SIMDE_FLOAT16_VALUE(24.77), SIMDE_FLOAT16_VALUE(24.77), SIMDE_FLOAT16_VALUE(24.77), SIMDE_FLOAT16_VALUE(24.77),
SIMDE_FLOAT16_VALUE(24.77), SIMDE_FLOAT16_VALUE(24.77), SIMDE_FLOAT16_VALUE(24.77), SIMDE_FLOAT16_VALUE(24.77) },
{ SIMDE_FLOAT16_VALUE(7.75), SIMDE_FLOAT16_VALUE(7.75), SIMDE_FLOAT16_VALUE(7.75), SIMDE_FLOAT16_VALUE(7.75),
SIMDE_FLOAT16_VALUE(7.75), SIMDE_FLOAT16_VALUE(7.75), SIMDE_FLOAT16_VALUE(7.75), SIMDE_FLOAT16_VALUE(7.75) } } },
{ { SIMDE_FLOAT16_VALUE(-4.91), SIMDE_FLOAT16_VALUE(-25.17), SIMDE_FLOAT16_VALUE(45.00) },
{ SIMDE_FLOAT16_VALUE(2.89), SIMDE_FLOAT16_VALUE(7.87), SIMDE_FLOAT16_VALUE(24.69)},
{ { SIMDE_FLOAT16_VALUE(-4.91), SIMDE_FLOAT16_VALUE(-4.91), SIMDE_FLOAT16_VALUE(-4.91), SIMDE_FLOAT16_VALUE(-4.91),
SIMDE_FLOAT16_VALUE(-4.91), SIMDE_FLOAT16_VALUE(-4.91), SIMDE_FLOAT16_VALUE(-4.91), SIMDE_FLOAT16_VALUE(-4.91) },
{ SIMDE_FLOAT16_VALUE(-25.17), SIMDE_FLOAT16_VALUE(-25.17), SIMDE_FLOAT16_VALUE(-25.17), SIMDE_FLOAT16_VALUE(-25.17),
SIMDE_FLOAT16_VALUE(-25.17), SIMDE_FLOAT16_VALUE(-25.17), SIMDE_FLOAT16_VALUE(-25.17), SIMDE_FLOAT16_VALUE(-25.17) },
{ SIMDE_FLOAT16_VALUE(45.00), SIMDE_FLOAT16_VALUE(45.00), SIMDE_FLOAT16_VALUE(45.00), SIMDE_FLOAT16_VALUE(45.00),
SIMDE_FLOAT16_VALUE(45.00), SIMDE_FLOAT16_VALUE(45.00), SIMDE_FLOAT16_VALUE(45.00), SIMDE_FLOAT16_VALUE(45.00) } } },
{ { SIMDE_FLOAT16_VALUE(-47.11), SIMDE_FLOAT16_VALUE(-3.75), SIMDE_FLOAT16_VALUE(44.40) },
{ SIMDE_FLOAT16_VALUE(-8.68), SIMDE_FLOAT16_VALUE(49.28), SIMDE_FLOAT16_VALUE(49.67)},
{ { SIMDE_FLOAT16_VALUE(-47.11), SIMDE_FLOAT16_VALUE(-47.11), SIMDE_FLOAT16_VALUE(-47.11), SIMDE_FLOAT16_VALUE(-47.11),
SIMDE_FLOAT16_VALUE(-47.11), SIMDE_FLOAT16_VALUE(-47.11), SIMDE_FLOAT16_VALUE(-47.11), SIMDE_FLOAT16_VALUE(-47.11) },
{ SIMDE_FLOAT16_VALUE(-3.75), SIMDE_FLOAT16_VALUE(-3.75), SIMDE_FLOAT16_VALUE(-3.75), SIMDE_FLOAT16_VALUE(-3.75),
SIMDE_FLOAT16_VALUE(-3.75), SIMDE_FLOAT16_VALUE(-3.75), SIMDE_FLOAT16_VALUE(-3.75), SIMDE_FLOAT16_VALUE(-3.75) },
{ SIMDE_FLOAT16_VALUE(44.40), SIMDE_FLOAT16_VALUE(44.40), SIMDE_FLOAT16_VALUE(44.40), SIMDE_FLOAT16_VALUE(44.40),
SIMDE_FLOAT16_VALUE(44.40), SIMDE_FLOAT16_VALUE(44.40), SIMDE_FLOAT16_VALUE(44.40), SIMDE_FLOAT16_VALUE(44.40) } } },
{ { SIMDE_FLOAT16_VALUE(-32.16), SIMDE_FLOAT16_VALUE(30.51), SIMDE_FLOAT16_VALUE(15.52) },
{ SIMDE_FLOAT16_VALUE(24.82), SIMDE_FLOAT16_VALUE(34.29), SIMDE_FLOAT16_VALUE(-0.76)},
{ { SIMDE_FLOAT16_VALUE(-32.16), SIMDE_FLOAT16_VALUE(-32.16), SIMDE_FLOAT16_VALUE(-32.16), SIMDE_FLOAT16_VALUE(-32.16),
SIMDE_FLOAT16_VALUE(-32.16), SIMDE_FLOAT16_VALUE(-32.16), SIMDE_FLOAT16_VALUE(-32.16), SIMDE_FLOAT16_VALUE(-32.16) },
{ SIMDE_FLOAT16_VALUE(30.51), SIMDE_FLOAT16_VALUE(30.51), SIMDE_FLOAT16_VALUE(30.51), SIMDE_FLOAT16_VALUE(30.51),
SIMDE_FLOAT16_VALUE(30.51), SIMDE_FLOAT16_VALUE(30.51), SIMDE_FLOAT16_VALUE(30.51), SIMDE_FLOAT16_VALUE(30.51) },
{ SIMDE_FLOAT16_VALUE(15.52), SIMDE_FLOAT16_VALUE(15.52), SIMDE_FLOAT16_VALUE(15.52), SIMDE_FLOAT16_VALUE(15.52),
SIMDE_FLOAT16_VALUE(15.52), SIMDE_FLOAT16_VALUE(15.52), SIMDE_FLOAT16_VALUE(15.52), SIMDE_FLOAT16_VALUE(15.52) } } },
{ { SIMDE_FLOAT16_VALUE(-15.98), SIMDE_FLOAT16_VALUE(9.92), SIMDE_FLOAT16_VALUE(-43.38) },
{ SIMDE_FLOAT16_VALUE(3.24), SIMDE_FLOAT16_VALUE(-29.83), SIMDE_FLOAT16_VALUE(34.76)},
{ { SIMDE_FLOAT16_VALUE(-15.98), SIMDE_FLOAT16_VALUE(-15.98), SIMDE_FLOAT16_VALUE(-15.98), SIMDE_FLOAT16_VALUE(-15.98),
SIMDE_FLOAT16_VALUE(-15.98), SIMDE_FLOAT16_VALUE(-15.98), SIMDE_FLOAT16_VALUE(-15.98), SIMDE_FLOAT16_VALUE(-15.98) },
{ SIMDE_FLOAT16_VALUE(9.92), SIMDE_FLOAT16_VALUE(9.92), SIMDE_FLOAT16_VALUE(9.92), SIMDE_FLOAT16_VALUE(9.92),
SIMDE_FLOAT16_VALUE(9.92), SIMDE_FLOAT16_VALUE(9.92), SIMDE_FLOAT16_VALUE(9.92), SIMDE_FLOAT16_VALUE(9.92) },
{ SIMDE_FLOAT16_VALUE(-43.38), SIMDE_FLOAT16_VALUE(-43.38), SIMDE_FLOAT16_VALUE(-43.38), SIMDE_FLOAT16_VALUE(-43.38),
SIMDE_FLOAT16_VALUE(-43.38), SIMDE_FLOAT16_VALUE(-43.38), SIMDE_FLOAT16_VALUE(-43.38), SIMDE_FLOAT16_VALUE(-43.38) } } },
{ { SIMDE_FLOAT16_VALUE(34.74), SIMDE_FLOAT16_VALUE(3.30), SIMDE_FLOAT16_VALUE(-43.69) },
{ SIMDE_FLOAT16_VALUE(-47.12), SIMDE_FLOAT16_VALUE(-48.25), SIMDE_FLOAT16_VALUE(-34.42)},
{ { SIMDE_FLOAT16_VALUE(34.74), SIMDE_FLOAT16_VALUE(34.74), SIMDE_FLOAT16_VALUE(34.74), SIMDE_FLOAT16_VALUE(34.74),
SIMDE_FLOAT16_VALUE(34.74), SIMDE_FLOAT16_VALUE(34.74), SIMDE_FLOAT16_VALUE(34.74), SIMDE_FLOAT16_VALUE(34.74) },
{ SIMDE_FLOAT16_VALUE(3.30), SIMDE_FLOAT16_VALUE(3.30), SIMDE_FLOAT16_VALUE(3.30), SIMDE_FLOAT16_VALUE(3.30),
SIMDE_FLOAT16_VALUE(3.30), SIMDE_FLOAT16_VALUE(3.30), SIMDE_FLOAT16_VALUE(3.30), SIMDE_FLOAT16_VALUE(3.30) },
{ SIMDE_FLOAT16_VALUE(-43.69), SIMDE_FLOAT16_VALUE(-43.69), SIMDE_FLOAT16_VALUE(-43.69), SIMDE_FLOAT16_VALUE(-43.69),
SIMDE_FLOAT16_VALUE(-43.69), SIMDE_FLOAT16_VALUE(-43.69), SIMDE_FLOAT16_VALUE(-43.69), SIMDE_FLOAT16_VALUE(-43.69) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_float16x8x3_t r = simde_vld3q_dup_f16(test_vec[i].a);
simde_float16x8x3_t expected = {
{simde_vld1q_f16(test_vec[i].r[0]), simde_vld1q_f16(test_vec[i].r[1]), simde_vld1q_f16(test_vec[i].r[2])}};
simde_test_arm_neon_assert_equal_f16x8(r.val[0], expected.val[0], INT_MAX);
simde_test_arm_neon_assert_equal_f16x8(r.val[1], expected.val[1], INT_MAX);
simde_test_arm_neon_assert_equal_f16x8(r.val[2], expected.val[2], INT_MAX);
}
return 0;
}
static int
test_simde_vld3q_dup_f32 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
float a[3];
float unused[3];
float r[3][4];
} test_vec[] = {
{ { SIMDE_FLOAT32_C(3697.78), SIMDE_FLOAT32_C(2264.54), SIMDE_FLOAT32_C(1602.33) },
{ SIMDE_FLOAT32_C(2604.95), SIMDE_FLOAT32_C(3726.11), SIMDE_FLOAT32_C(-1452.17)},
{ { SIMDE_FLOAT32_C(3697.78), SIMDE_FLOAT32_C(3697.78), SIMDE_FLOAT32_C(3697.78), SIMDE_FLOAT32_C(3697.78) },
{ SIMDE_FLOAT32_C(2264.54), SIMDE_FLOAT32_C(2264.54), SIMDE_FLOAT32_C(2264.54), SIMDE_FLOAT32_C(2264.54) },
{ SIMDE_FLOAT32_C(1602.33), SIMDE_FLOAT32_C(1602.33), SIMDE_FLOAT32_C(1602.33), SIMDE_FLOAT32_C(1602.33) } } },
{ { SIMDE_FLOAT32_C(2171.36), SIMDE_FLOAT32_C(-1728.35), SIMDE_FLOAT32_C(-1392.20) },
{ SIMDE_FLOAT32_C(-373.74), SIMDE_FLOAT32_C(-2139.62), SIMDE_FLOAT32_C(2081.32)},
{ { SIMDE_FLOAT32_C(2171.36), SIMDE_FLOAT32_C(2171.36), SIMDE_FLOAT32_C(2171.36), SIMDE_FLOAT32_C(2171.36) },
{ SIMDE_FLOAT32_C(-1728.35), SIMDE_FLOAT32_C(-1728.35), SIMDE_FLOAT32_C(-1728.35), SIMDE_FLOAT32_C(-1728.35) },
{ SIMDE_FLOAT32_C(-1392.20), SIMDE_FLOAT32_C(-1392.20), SIMDE_FLOAT32_C(-1392.20), SIMDE_FLOAT32_C(-1392.20) } } },
{ { SIMDE_FLOAT32_C(2884.54), SIMDE_FLOAT32_C(1531.32), SIMDE_FLOAT32_C(-2902.25) },
{ SIMDE_FLOAT32_C(-4095.36), SIMDE_FLOAT32_C(4395.19), SIMDE_FLOAT32_C(-4907.26)},
{ { SIMDE_FLOAT32_C(2884.54), SIMDE_FLOAT32_C(2884.54), SIMDE_FLOAT32_C(2884.54), SIMDE_FLOAT32_C(2884.54) },
{ SIMDE_FLOAT32_C(1531.32), SIMDE_FLOAT32_C(1531.32), SIMDE_FLOAT32_C(1531.32), SIMDE_FLOAT32_C(1531.32) },
{ SIMDE_FLOAT32_C(-2902.25), SIMDE_FLOAT32_C(-2902.25), SIMDE_FLOAT32_C(-2902.25), SIMDE_FLOAT32_C(-2902.25) } } },
{ { SIMDE_FLOAT32_C(174.64), SIMDE_FLOAT32_C(-2150.06), SIMDE_FLOAT32_C(2897.93) },
{ SIMDE_FLOAT32_C(-2988.20), SIMDE_FLOAT32_C(-575.59), SIMDE_FLOAT32_C(3191.50)},
{ { SIMDE_FLOAT32_C(174.64), SIMDE_FLOAT32_C(174.64), SIMDE_FLOAT32_C(174.64), SIMDE_FLOAT32_C(174.64) },
{ SIMDE_FLOAT32_C(-2150.06), SIMDE_FLOAT32_C(-2150.06), SIMDE_FLOAT32_C(-2150.06), SIMDE_FLOAT32_C(-2150.06) },
{ SIMDE_FLOAT32_C(2897.93), SIMDE_FLOAT32_C(2897.93), SIMDE_FLOAT32_C(2897.93), SIMDE_FLOAT32_C(2897.93) } } },
{ { SIMDE_FLOAT32_C(-3237.71), SIMDE_FLOAT32_C(3879.02), SIMDE_FLOAT32_C(4954.54) },
{ SIMDE_FLOAT32_C(3405.09), SIMDE_FLOAT32_C(224.82), SIMDE_FLOAT32_C(-180.79)},
{ { SIMDE_FLOAT32_C(-3237.71), SIMDE_FLOAT32_C(-3237.71), SIMDE_FLOAT32_C(-3237.71), SIMDE_FLOAT32_C(-3237.71) },
{ SIMDE_FLOAT32_C(3879.02), SIMDE_FLOAT32_C(3879.02), SIMDE_FLOAT32_C(3879.02), SIMDE_FLOAT32_C(3879.02) },
{ SIMDE_FLOAT32_C(4954.54), SIMDE_FLOAT32_C(4954.54), SIMDE_FLOAT32_C(4954.54), SIMDE_FLOAT32_C(4954.54) } } },
{ { SIMDE_FLOAT32_C(-1667.55), SIMDE_FLOAT32_C(-1961.29), SIMDE_FLOAT32_C(-4785.81) },
{ SIMDE_FLOAT32_C(-988.22), SIMDE_FLOAT32_C(645.67), SIMDE_FLOAT32_C(-4900.78)},
{ { SIMDE_FLOAT32_C(-1667.55), SIMDE_FLOAT32_C(-1667.55), SIMDE_FLOAT32_C(-1667.55), SIMDE_FLOAT32_C(-1667.55) },
{ SIMDE_FLOAT32_C(-1961.29), SIMDE_FLOAT32_C(-1961.29), SIMDE_FLOAT32_C(-1961.29), SIMDE_FLOAT32_C(-1961.29) },
{ SIMDE_FLOAT32_C(-4785.81), SIMDE_FLOAT32_C(-4785.81), SIMDE_FLOAT32_C(-4785.81), SIMDE_FLOAT32_C(-4785.81) } } },
{ { SIMDE_FLOAT32_C(-1617.37), SIMDE_FLOAT32_C(-3727.98), SIMDE_FLOAT32_C(1464.46) },
{ SIMDE_FLOAT32_C(-3143.52), SIMDE_FLOAT32_C(-3238.88), SIMDE_FLOAT32_C(2569.95)},
{ { SIMDE_FLOAT32_C(-1617.37), SIMDE_FLOAT32_C(-1617.37), SIMDE_FLOAT32_C(-1617.37), SIMDE_FLOAT32_C(-1617.37) },
{ SIMDE_FLOAT32_C(-3727.98), SIMDE_FLOAT32_C(-3727.98), SIMDE_FLOAT32_C(-3727.98), SIMDE_FLOAT32_C(-3727.98) },
{ SIMDE_FLOAT32_C(1464.46), SIMDE_FLOAT32_C(1464.46), SIMDE_FLOAT32_C(1464.46), SIMDE_FLOAT32_C(1464.46) } } },
{ { SIMDE_FLOAT32_C(896.32), SIMDE_FLOAT32_C(3033.53), SIMDE_FLOAT32_C(2717.79) },
{ SIMDE_FLOAT32_C(-2243.74), SIMDE_FLOAT32_C(2624.94), SIMDE_FLOAT32_C(4491.28)},
{ { SIMDE_FLOAT32_C(896.32), SIMDE_FLOAT32_C(896.32), SIMDE_FLOAT32_C(896.32), SIMDE_FLOAT32_C(896.32) },
{ SIMDE_FLOAT32_C(3033.53), SIMDE_FLOAT32_C(3033.53), SIMDE_FLOAT32_C(3033.53), SIMDE_FLOAT32_C(3033.53) },
{ SIMDE_FLOAT32_C(2717.79), SIMDE_FLOAT32_C(2717.79), SIMDE_FLOAT32_C(2717.79), SIMDE_FLOAT32_C(2717.79) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_float32x4x3_t r = simde_vld3q_dup_f32(test_vec[i].a);
simde_float32x4x3_t expected = {
{simde_vld1q_f32(test_vec[i].r[0]), simde_vld1q_f32(test_vec[i].r[1]), simde_vld1q_f32(test_vec[i].r[2])}};
simde_test_arm_neon_assert_equal_f32x4(r.val[0], expected.val[0], INT_MAX);
simde_test_arm_neon_assert_equal_f32x4(r.val[1], expected.val[1], INT_MAX);
simde_test_arm_neon_assert_equal_f32x4(r.val[2], expected.val[2], INT_MAX);
}
return 0;
}
static int
test_simde_vld3q_dup_f64 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
simde_float64 a[3];
simde_float64 unused[3];
simde_float64 r[3][2];
} test_vec[] = {
{ { SIMDE_FLOAT64_C(-76188.51), SIMDE_FLOAT64_C(-158100.44), SIMDE_FLOAT64_C(450863.97) },
{ SIMDE_FLOAT64_C(-419497.68), SIMDE_FLOAT64_C(486477.94), SIMDE_FLOAT64_C(-161711.22)},
{ { SIMDE_FLOAT64_C(-76188.51), SIMDE_FLOAT64_C(-76188.51) },
{ SIMDE_FLOAT64_C(-158100.44), SIMDE_FLOAT64_C(-158100.44) },
{ SIMDE_FLOAT64_C(450863.97), SIMDE_FLOAT64_C(450863.97) } } },
{ { SIMDE_FLOAT64_C(-311999.81), SIMDE_FLOAT64_C(-133166.59), SIMDE_FLOAT64_C(19751.09) },
{ SIMDE_FLOAT64_C(381296.77), SIMDE_FLOAT64_C(4280.17), SIMDE_FLOAT64_C(200621.38)},
{ { SIMDE_FLOAT64_C(-311999.81), SIMDE_FLOAT64_C(-311999.81) },
{ SIMDE_FLOAT64_C(-133166.59), SIMDE_FLOAT64_C(-133166.59) },
{ SIMDE_FLOAT64_C(19751.09), SIMDE_FLOAT64_C(19751.09) } } },
{ { SIMDE_FLOAT64_C(431577.95), SIMDE_FLOAT64_C(77634.91), SIMDE_FLOAT64_C(266670.63) },
{ SIMDE_FLOAT64_C(53.33), SIMDE_FLOAT64_C(-384944.02), SIMDE_FLOAT64_C(283777.76)},
{ { SIMDE_FLOAT64_C(431577.95), SIMDE_FLOAT64_C(431577.95) },
{ SIMDE_FLOAT64_C(77634.91), SIMDE_FLOAT64_C(77634.91) },
{ SIMDE_FLOAT64_C(266670.63), SIMDE_FLOAT64_C(266670.63) } } },
{ { SIMDE_FLOAT64_C(-158517.04), SIMDE_FLOAT64_C(-133983.50), SIMDE_FLOAT64_C(338367.02) },
{ SIMDE_FLOAT64_C(-188683.95), SIMDE_FLOAT64_C(-130665.38), SIMDE_FLOAT64_C(393704.35)},
{ { SIMDE_FLOAT64_C(-158517.04), SIMDE_FLOAT64_C(-158517.04) },
{ SIMDE_FLOAT64_C(-133983.50), SIMDE_FLOAT64_C(-133983.50) },
{ SIMDE_FLOAT64_C(338367.02), SIMDE_FLOAT64_C(338367.02) } } },
{ { SIMDE_FLOAT64_C(-304331.98), SIMDE_FLOAT64_C(378917.44), SIMDE_FLOAT64_C(214241.91) },
{ SIMDE_FLOAT64_C(294684.17), SIMDE_FLOAT64_C(75983.67), SIMDE_FLOAT64_C(143540.59)},
{ { SIMDE_FLOAT64_C(-304331.98), SIMDE_FLOAT64_C(-304331.98) },
{ SIMDE_FLOAT64_C(378917.44), SIMDE_FLOAT64_C(378917.44) },
{ SIMDE_FLOAT64_C(214241.91), SIMDE_FLOAT64_C(214241.91) } } },
{ { SIMDE_FLOAT64_C(177828.72), SIMDE_FLOAT64_C(182291.88), SIMDE_FLOAT64_C(133239.91) },
{ SIMDE_FLOAT64_C(-367510.55), SIMDE_FLOAT64_C(11412.91), SIMDE_FLOAT64_C(-249368.85)},
{ { SIMDE_FLOAT64_C(177828.72), SIMDE_FLOAT64_C(177828.72) },
{ SIMDE_FLOAT64_C(182291.88), SIMDE_FLOAT64_C(182291.88) },
{ SIMDE_FLOAT64_C(133239.91), SIMDE_FLOAT64_C(133239.91) } } },
{ { SIMDE_FLOAT64_C(480108.45), SIMDE_FLOAT64_C(-112601.79), SIMDE_FLOAT64_C(-401218.95) },
{ SIMDE_FLOAT64_C(-132521.78), SIMDE_FLOAT64_C(-454060.72), SIMDE_FLOAT64_C(92070.34)},
{ { SIMDE_FLOAT64_C(480108.45), SIMDE_FLOAT64_C(480108.45) },
{ SIMDE_FLOAT64_C(-112601.79), SIMDE_FLOAT64_C(-112601.79) },
{ SIMDE_FLOAT64_C(-401218.95), SIMDE_FLOAT64_C(-401218.95) } } },
{ { SIMDE_FLOAT64_C(-209344.40), SIMDE_FLOAT64_C(-38397.36), SIMDE_FLOAT64_C(171975.62) },
{ SIMDE_FLOAT64_C(-306358.76), SIMDE_FLOAT64_C(-389466.37), SIMDE_FLOAT64_C(459048.36)},
{ { SIMDE_FLOAT64_C(-209344.40), SIMDE_FLOAT64_C(-209344.40) },
{ SIMDE_FLOAT64_C(-38397.36), SIMDE_FLOAT64_C(-38397.36) },
{ SIMDE_FLOAT64_C(171975.62), SIMDE_FLOAT64_C(171975.62) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_float64x2x3_t r = simde_vld3q_dup_f64(test_vec[i].a);
simde_float64x2x3_t expected = {
{simde_vld1q_f64(test_vec[i].r[0]), simde_vld1q_f64(test_vec[i].r[1]), simde_vld1q_f64(test_vec[i].r[2])}};
simde_test_arm_neon_assert_equal_f64x2(r.val[0], expected.val[0], INT_MAX);
simde_test_arm_neon_assert_equal_f64x2(r.val[1], expected.val[1], INT_MAX);
simde_test_arm_neon_assert_equal_f64x2(r.val[2], expected.val[2], INT_MAX);
}
return 0;
}
static int
test_simde_vld3q_dup_s8 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
int8_t a[3];
int8_t unused[3];
int8_t r[3][16];
} test_vec[] = {
{ { INT8_C(4), INT8_C(83), -INT8_C(85) },
{ -INT8_C(88), -INT8_C(66), INT8_C(59)},
{ { INT8_C(4), INT8_C(4), INT8_C(4), INT8_C(4), INT8_C(4), INT8_C(4), INT8_C(4), INT8_C(4),
INT8_C(4), INT8_C(4), INT8_C(4), INT8_C(4), INT8_C(4), INT8_C(4), INT8_C(4), INT8_C(4) },
{ INT8_C(83), INT8_C(83), INT8_C(83), INT8_C(83), INT8_C(83), INT8_C(83), INT8_C(83), INT8_C(83),
INT8_C(83), INT8_C(83), INT8_C(83), INT8_C(83), INT8_C(83), INT8_C(83), INT8_C(83), INT8_C(83) },
{ -INT8_C(85), -INT8_C(85), -INT8_C(85), -INT8_C(85), -INT8_C(85), -INT8_C(85), -INT8_C(85), -INT8_C(85),
-INT8_C(85), -INT8_C(85), -INT8_C(85), -INT8_C(85), -INT8_C(85), -INT8_C(85), -INT8_C(85), -INT8_C(85) } } },
{ { -INT8_C(22), INT8_C(10), -INT8_C(86) },
{ -INT8_C(79), -INT8_C(34), -INT8_C(27)},
{ { -INT8_C(22), -INT8_C(22), -INT8_C(22), -INT8_C(22), -INT8_C(22), -INT8_C(22), -INT8_C(22), -INT8_C(22),
-INT8_C(22), -INT8_C(22), -INT8_C(22), -INT8_C(22), -INT8_C(22), -INT8_C(22), -INT8_C(22), -INT8_C(22) },
{ INT8_C(10), INT8_C(10), INT8_C(10), INT8_C(10), INT8_C(10), INT8_C(10), INT8_C(10), INT8_C(10),
INT8_C(10), INT8_C(10), INT8_C(10), INT8_C(10), INT8_C(10), INT8_C(10), INT8_C(10), INT8_C(10) },
{ -INT8_C(86), -INT8_C(86), -INT8_C(86), -INT8_C(86), -INT8_C(86), -INT8_C(86), -INT8_C(86), -INT8_C(86),
-INT8_C(86), -INT8_C(86), -INT8_C(86), -INT8_C(86), -INT8_C(86), -INT8_C(86), -INT8_C(86), -INT8_C(86) } } },
{ { -INT8_C(6), -INT8_C(70), -INT8_C(75) },
{ INT8_C(64), -INT8_C(62), INT8_C(94)},
{ { -INT8_C(6), -INT8_C(6), -INT8_C(6), -INT8_C(6), -INT8_C(6), -INT8_C(6), -INT8_C(6), -INT8_C(6),
-INT8_C(6), -INT8_C(6), -INT8_C(6), -INT8_C(6), -INT8_C(6), -INT8_C(6), -INT8_C(6), -INT8_C(6) },
{ -INT8_C(70), -INT8_C(70), -INT8_C(70), -INT8_C(70), -INT8_C(70), -INT8_C(70), -INT8_C(70), -INT8_C(70),
-INT8_C(70), -INT8_C(70), -INT8_C(70), -INT8_C(70), -INT8_C(70), -INT8_C(70), -INT8_C(70), -INT8_C(70) },
{ -INT8_C(75), -INT8_C(75), -INT8_C(75), -INT8_C(75), -INT8_C(75), -INT8_C(75), -INT8_C(75), -INT8_C(75),
-INT8_C(75), -INT8_C(75), -INT8_C(75), -INT8_C(75), -INT8_C(75), -INT8_C(75), -INT8_C(75), -INT8_C(75) } } },
{ { -INT8_C(42), INT8_C(47), -INT8_C(43) },
{ INT8_C(90), INT8_C(56), INT8_C(31)},
{ { -INT8_C(42), -INT8_C(42), -INT8_C(42), -INT8_C(42), -INT8_C(42), -INT8_C(42), -INT8_C(42), -INT8_C(42),
-INT8_C(42), -INT8_C(42), -INT8_C(42), -INT8_C(42), -INT8_C(42), -INT8_C(42), -INT8_C(42), -INT8_C(42) },
{ INT8_C(47), INT8_C(47), INT8_C(47), INT8_C(47), INT8_C(47), INT8_C(47), INT8_C(47), INT8_C(47),
INT8_C(47), INT8_C(47), INT8_C(47), INT8_C(47), INT8_C(47), INT8_C(47), INT8_C(47), INT8_C(47) },
{ -INT8_C(43), -INT8_C(43), -INT8_C(43), -INT8_C(43), -INT8_C(43), -INT8_C(43), -INT8_C(43), -INT8_C(43),
-INT8_C(43), -INT8_C(43), -INT8_C(43), -INT8_C(43), -INT8_C(43), -INT8_C(43), -INT8_C(43), -INT8_C(43) } } },
{ { INT8_C(88), -INT8_C(67), -INT8_C(36) },
{ INT8_C(56), -INT8_C(54), INT8_C(66)},
{ { INT8_C(88), INT8_C(88), INT8_C(88), INT8_C(88), INT8_C(88), INT8_C(88), INT8_C(88), INT8_C(88),
INT8_C(88), INT8_C(88), INT8_C(88), INT8_C(88), INT8_C(88), INT8_C(88), INT8_C(88), INT8_C(88) },
{ -INT8_C(67), -INT8_C(67), -INT8_C(67), -INT8_C(67), -INT8_C(67), -INT8_C(67), -INT8_C(67), -INT8_C(67),
-INT8_C(67), -INT8_C(67), -INT8_C(67), -INT8_C(67), -INT8_C(67), -INT8_C(67), -INT8_C(67), -INT8_C(67) },
{ -INT8_C(36), -INT8_C(36), -INT8_C(36), -INT8_C(36), -INT8_C(36), -INT8_C(36), -INT8_C(36), -INT8_C(36),
-INT8_C(36), -INT8_C(36), -INT8_C(36), -INT8_C(36), -INT8_C(36), -INT8_C(36), -INT8_C(36), -INT8_C(36) } } },
{ { -INT8_C(58), -INT8_C(5), INT8_C(64) },
{ -INT8_C(87), -INT8_C(97), -INT8_C(71)},
{ { -INT8_C(58), -INT8_C(58), -INT8_C(58), -INT8_C(58), -INT8_C(58), -INT8_C(58), -INT8_C(58), -INT8_C(58),
-INT8_C(58), -INT8_C(58), -INT8_C(58), -INT8_C(58), -INT8_C(58), -INT8_C(58), -INT8_C(58), -INT8_C(58) },
{ -INT8_C(5), -INT8_C(5), -INT8_C(5), -INT8_C(5), -INT8_C(5), -INT8_C(5), -INT8_C(5), -INT8_C(5),
-INT8_C(5), -INT8_C(5), -INT8_C(5), -INT8_C(5), -INT8_C(5), -INT8_C(5), -INT8_C(5), -INT8_C(5) },
{ INT8_C(64), INT8_C(64), INT8_C(64), INT8_C(64), INT8_C(64), INT8_C(64), INT8_C(64), INT8_C(64),
INT8_C(64), INT8_C(64), INT8_C(64), INT8_C(64), INT8_C(64), INT8_C(64), INT8_C(64), INT8_C(64) } } },
{ { -INT8_C(68), INT8_C(98), INT8_C(64) },
{ -INT8_C(65), INT8_C(25), INT8_C(97)},
{ { -INT8_C(68), -INT8_C(68), -INT8_C(68), -INT8_C(68), -INT8_C(68), -INT8_C(68), -INT8_C(68), -INT8_C(68),
-INT8_C(68), -INT8_C(68), -INT8_C(68), -INT8_C(68), -INT8_C(68), -INT8_C(68), -INT8_C(68), -INT8_C(68) },
{ INT8_C(98), INT8_C(98), INT8_C(98), INT8_C(98), INT8_C(98), INT8_C(98), INT8_C(98), INT8_C(98),
INT8_C(98), INT8_C(98), INT8_C(98), INT8_C(98), INT8_C(98), INT8_C(98), INT8_C(98), INT8_C(98) },
{ INT8_C(64), INT8_C(64), INT8_C(64), INT8_C(64), INT8_C(64), INT8_C(64), INT8_C(64), INT8_C(64),
INT8_C(64), INT8_C(64), INT8_C(64), INT8_C(64), INT8_C(64), INT8_C(64), INT8_C(64), INT8_C(64) } } },
{ { -INT8_C(27), -INT8_C(43), -INT8_C(10) },
{ INT8_C(0), INT8_C(27), -INT8_C(24)},
{ { -INT8_C(27), -INT8_C(27), -INT8_C(27), -INT8_C(27), -INT8_C(27), -INT8_C(27), -INT8_C(27), -INT8_C(27),
-INT8_C(27), -INT8_C(27), -INT8_C(27), -INT8_C(27), -INT8_C(27), -INT8_C(27), -INT8_C(27), -INT8_C(27) },
{ -INT8_C(43), -INT8_C(43), -INT8_C(43), -INT8_C(43), -INT8_C(43), -INT8_C(43), -INT8_C(43), -INT8_C(43),
-INT8_C(43), -INT8_C(43), -INT8_C(43), -INT8_C(43), -INT8_C(43), -INT8_C(43), -INT8_C(43), -INT8_C(43) },
{ -INT8_C(10), -INT8_C(10), -INT8_C(10), -INT8_C(10), -INT8_C(10), -INT8_C(10), -INT8_C(10), -INT8_C(10),
-INT8_C(10), -INT8_C(10), -INT8_C(10), -INT8_C(10), -INT8_C(10), -INT8_C(10), -INT8_C(10), -INT8_C(10) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int8x16x3_t r = simde_vld3q_dup_s8(test_vec[i].a);
simde_int8x16x3_t expected = {
{simde_vld1q_s8(test_vec[i].r[0]), simde_vld1q_s8(test_vec[i].r[1]), simde_vld1q_s8(test_vec[i].r[2])}};
simde_test_arm_neon_assert_equal_i8x16(r.val[0], expected.val[0]);
simde_test_arm_neon_assert_equal_i8x16(r.val[1], expected.val[1]);
simde_test_arm_neon_assert_equal_i8x16(r.val[2], expected.val[2]);
}
return 0;
}
static int
test_simde_vld3q_dup_s16 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
int16_t a[3];
int16_t unused[3];
int16_t r[3][8];
} test_vec[] = {
{ { INT16_C(3070), INT16_C(3325), -INT16_C(8375) },
{ -INT16_C(8688), -INT16_C(7594), INT16_C(4565)},
{ { INT16_C(3070), INT16_C(3070), INT16_C(3070), INT16_C(3070),
INT16_C(3070), INT16_C(3070), INT16_C(3070), INT16_C(3070) },
{ INT16_C(3325), INT16_C(3325), INT16_C(3325), INT16_C(3325),
INT16_C(3325), INT16_C(3325), INT16_C(3325), INT16_C(3325) },
{ -INT16_C(8375), -INT16_C(8375), -INT16_C(8375), -INT16_C(8375),
-INT16_C(8375), -INT16_C(8375), -INT16_C(8375), -INT16_C(8375) } } },
{ { -INT16_C(4204), INT16_C(8721), INT16_C(5623) },
{ -INT16_C(472), INT16_C(2671), INT16_C(1200)},
{ { -INT16_C(4204), -INT16_C(4204), -INT16_C(4204), -INT16_C(4204),
-INT16_C(4204), -INT16_C(4204), -INT16_C(4204), -INT16_C(4204) },
{ INT16_C(8721), INT16_C(8721), INT16_C(8721), INT16_C(8721),
INT16_C(8721), INT16_C(8721), INT16_C(8721), INT16_C(8721) },
{ INT16_C(5623), INT16_C(5623), INT16_C(5623), INT16_C(5623),
INT16_C(5623), INT16_C(5623), INT16_C(5623), INT16_C(5623) } } },
{ { INT16_C(6944), INT16_C(2570), INT16_C(7777) },
{ -INT16_C(6788), -INT16_C(5739), INT16_C(634)},
{ { INT16_C(6944), INT16_C(6944), INT16_C(6944), INT16_C(6944),
INT16_C(6944), INT16_C(6944), INT16_C(6944), INT16_C(6944) },
{ INT16_C(2570), INT16_C(2570), INT16_C(2570), INT16_C(2570),
INT16_C(2570), INT16_C(2570), INT16_C(2570), INT16_C(2570) },
{ INT16_C(7777), INT16_C(7777), INT16_C(7777), INT16_C(7777),
INT16_C(7777), INT16_C(7777), INT16_C(7777), INT16_C(7777) } } },
{ { -INT16_C(2506), INT16_C(2490), -INT16_C(5108) },
{ -INT16_C(4656), -INT16_C(804), INT16_C(9299)},
{ { -INT16_C(2506), -INT16_C(2506), -INT16_C(2506), -INT16_C(2506),
-INT16_C(2506), -INT16_C(2506), -INT16_C(2506), -INT16_C(2506) },
{ INT16_C(2490), INT16_C(2490), INT16_C(2490), INT16_C(2490),
INT16_C(2490), INT16_C(2490), INT16_C(2490), INT16_C(2490) },
{ -INT16_C(5108), -INT16_C(5108), -INT16_C(5108), -INT16_C(5108),
-INT16_C(5108), -INT16_C(5108), -INT16_C(5108), -INT16_C(5108) } } },
{ { INT16_C(7062), -INT16_C(9613), INT16_C(5275) },
{ INT16_C(9211), -INT16_C(3971), INT16_C(2988)},
{ { INT16_C(7062), INT16_C(7062), INT16_C(7062), INT16_C(7062),
INT16_C(7062), INT16_C(7062), INT16_C(7062), INT16_C(7062) },
{ -INT16_C(9613), -INT16_C(9613), -INT16_C(9613), -INT16_C(9613),
-INT16_C(9613), -INT16_C(9613), -INT16_C(9613), -INT16_C(9613) },
{ INT16_C(5275), INT16_C(5275), INT16_C(5275), INT16_C(5275),
INT16_C(5275), INT16_C(5275), INT16_C(5275), INT16_C(5275) } } },
{ { -INT16_C(2278), INT16_C(2234), INT16_C(8224) },
{ INT16_C(377), INT16_C(8197), INT16_C(9563)},
{ { -INT16_C(2278), -INT16_C(2278), -INT16_C(2278), -INT16_C(2278),
-INT16_C(2278), -INT16_C(2278), -INT16_C(2278), -INT16_C(2278) },
{ INT16_C(2234), INT16_C(2234), INT16_C(2234), INT16_C(2234),
INT16_C(2234), INT16_C(2234), INT16_C(2234), INT16_C(2234) },
{ INT16_C(8224), INT16_C(8224), INT16_C(8224), INT16_C(8224),
INT16_C(8224), INT16_C(8224), INT16_C(8224), INT16_C(8224) } } },
{ { INT16_C(8937), -INT16_C(9972), INT16_C(4720) },
{ -INT16_C(5849), INT16_C(8449), INT16_C(7259)},
{ { INT16_C(8937), INT16_C(8937), INT16_C(8937), INT16_C(8937),
INT16_C(8937), INT16_C(8937), INT16_C(8937), INT16_C(8937) },
{ -INT16_C(9972), -INT16_C(9972), -INT16_C(9972), -INT16_C(9972),
-INT16_C(9972), -INT16_C(9972), -INT16_C(9972), -INT16_C(9972) },
{ INT16_C(4720), INT16_C(4720), INT16_C(4720), INT16_C(4720),
INT16_C(4720), INT16_C(4720), INT16_C(4720), INT16_C(4720) } } },
{ { -INT16_C(8860), -INT16_C(995), -INT16_C(3832) },
{ INT16_C(4136), -INT16_C(9880), -INT16_C(6950)},
{ { -INT16_C(8860), -INT16_C(8860), -INT16_C(8860), -INT16_C(8860),
-INT16_C(8860), -INT16_C(8860), -INT16_C(8860), -INT16_C(8860) },
{ -INT16_C(995), -INT16_C(995), -INT16_C(995), -INT16_C(995),
-INT16_C(995), -INT16_C(995), -INT16_C(995), -INT16_C(995) },
{ -INT16_C(3832), -INT16_C(3832), -INT16_C(3832), -INT16_C(3832),
-INT16_C(3832), -INT16_C(3832), -INT16_C(3832), -INT16_C(3832) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int16x8x3_t r = simde_vld3q_dup_s16(test_vec[i].a);
simde_int16x8x3_t expected = {
{simde_vld1q_s16(test_vec[i].r[0]), simde_vld1q_s16(test_vec[i].r[1]), simde_vld1q_s16(test_vec[i].r[2])}};
simde_test_arm_neon_assert_equal_i16x8(r.val[0], expected.val[0]);
simde_test_arm_neon_assert_equal_i16x8(r.val[1], expected.val[1]);
simde_test_arm_neon_assert_equal_i16x8(r.val[2], expected.val[2]);
}
return 0;
}
static int
test_simde_vld3q_dup_s32 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
int32_t a[3];
int32_t unused[3];
int32_t r[3][4];
} test_vec[] = {
{ { -INT32_C(220041), -INT32_C(136466), -INT32_C(639215) },
{ -INT32_C(317815), -INT32_C(462436), -INT32_C(731661)},
{ { -INT32_C(220041), -INT32_C(220041), -INT32_C(220041), -INT32_C(220041) },
{ -INT32_C(136466), -INT32_C(136466), -INT32_C(136466), -INT32_C(136466) },
{ -INT32_C(639215), -INT32_C(639215), -INT32_C(639215), -INT32_C(639215) } } },
{ { INT32_C(126360), INT32_C(731272), -INT32_C(643018) },
{ INT32_C(135164), INT32_C(44493), INT32_C(256793)},
{ { INT32_C(126360), INT32_C(126360), INT32_C(126360), INT32_C(126360) },
{ INT32_C(731272), INT32_C(731272), INT32_C(731272), INT32_C(731272) },
{ -INT32_C(643018), -INT32_C(643018), -INT32_C(643018), -INT32_C(643018) } } },
{ { -INT32_C(506698), INT32_C(847224), -INT32_C(263807) },
{ -INT32_C(322179), INT32_C(943052), INT32_C(403393)},
{ { -INT32_C(506698), -INT32_C(506698), -INT32_C(506698), -INT32_C(506698) },
{ INT32_C(847224), INT32_C(847224), INT32_C(847224), INT32_C(847224) },
{ -INT32_C(263807), -INT32_C(263807), -INT32_C(263807), -INT32_C(263807) } } },
{ { -INT32_C(269498), INT32_C(592114), -INT32_C(342573) },
{ -INT32_C(120068), -INT32_C(608432), -INT32_C(729451)},
{ { -INT32_C(269498), -INT32_C(269498), -INT32_C(269498), -INT32_C(269498) },
{ INT32_C(592114), INT32_C(592114), INT32_C(592114), INT32_C(592114) },
{ -INT32_C(342573), -INT32_C(342573), -INT32_C(342573), -INT32_C(342573) } } },
{ { -INT32_C(930622), -INT32_C(46600), -INT32_C(350088) },
{ -INT32_C(464765), -INT32_C(884750), INT32_C(205861)},
{ { -INT32_C(930622), -INT32_C(930622), -INT32_C(930622), -INT32_C(930622) },
{ -INT32_C(46600), -INT32_C(46600), -INT32_C(46600), -INT32_C(46600) },
{ -INT32_C(350088), -INT32_C(350088), -INT32_C(350088), -INT32_C(350088) } } },
{ { -INT32_C(243432), -INT32_C(205395), -INT32_C(893190) },
{ INT32_C(811036), INT32_C(262547), INT32_C(351628)},
{ { -INT32_C(243432), -INT32_C(243432), -INT32_C(243432), -INT32_C(243432) },
{ -INT32_C(205395), -INT32_C(205395), -INT32_C(205395), -INT32_C(205395) },
{ -INT32_C(893190), -INT32_C(893190), -INT32_C(893190), -INT32_C(893190) } } },
{ { INT32_C(347685), INT32_C(358948), INT32_C(914938) },
{ INT32_C(27640), INT32_C(919511), INT32_C(219147)},
{ { INT32_C(347685), INT32_C(347685), INT32_C(347685), INT32_C(347685) },
{ INT32_C(358948), INT32_C(358948), INT32_C(358948), INT32_C(358948) },
{ INT32_C(914938), INT32_C(914938), INT32_C(914938), INT32_C(914938) } } },
{ { INT32_C(561560), -INT32_C(274267), INT32_C(204485) },
{ INT32_C(765969), INT32_C(388245), INT32_C(257065)},
{ { INT32_C(561560), INT32_C(561560), INT32_C(561560), INT32_C(561560) },
{ -INT32_C(274267), -INT32_C(274267), -INT32_C(274267), -INT32_C(274267) },
{ INT32_C(204485), INT32_C(204485), INT32_C(204485), INT32_C(204485) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int32x4x3_t r = simde_vld3q_dup_s32(test_vec[i].a);
simde_int32x4x3_t expected = {
{simde_vld1q_s32(test_vec[i].r[0]), simde_vld1q_s32(test_vec[i].r[1]), simde_vld1q_s32(test_vec[i].r[2])}};
simde_test_arm_neon_assert_equal_i32x4(r.val[0], expected.val[0]);
simde_test_arm_neon_assert_equal_i32x4(r.val[1], expected.val[1]);
simde_test_arm_neon_assert_equal_i32x4(r.val[2], expected.val[2]);
}
return 0;
}
static int
test_simde_vld3q_dup_s64 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
int64_t a[3];
int64_t unused[3];
int64_t r[3][2];
} test_vec[] = {
{ { -INT64_C(79406386), INT64_C(41175464), INT64_C(7159478) },
{ INT64_C(30451828), INT64_C(73611566), INT64_C(82111454)},
{ { -INT64_C(79406386), -INT64_C(79406386) },
{ INT64_C(41175464), INT64_C(41175464) },
{ INT64_C(7159478), INT64_C(7159478) } } },
{ { -INT64_C(75960984), INT64_C(72605055), INT64_C(28446824) },
{ INT64_C(33111103), -INT64_C(83285820), INT64_C(74966460)},
{ { -INT64_C(75960984), -INT64_C(75960984) },
{ INT64_C(72605055), INT64_C(72605055) },
{ INT64_C(28446824), INT64_C(28446824) } } },
{ { INT64_C(12246277), INT64_C(13799747), INT64_C(5941147) },
{ -INT64_C(75658711), INT64_C(2033325), -INT64_C(46607368)},
{ { INT64_C(12246277), INT64_C(12246277) },
{ INT64_C(13799747), INT64_C(13799747) },
{ INT64_C(5941147), INT64_C(5941147) } } },
{ { -INT64_C(34340194), -INT64_C(85099997), INT64_C(58086303) },
{ -INT64_C(70737572), -INT64_C(35354753), -INT64_C(67958448)},
{ { -INT64_C(34340194), -INT64_C(34340194) },
{ -INT64_C(85099997), -INT64_C(85099997) },
{ INT64_C(58086303), INT64_C(58086303) } } },
{ { -INT64_C(55249984), -INT64_C(44930870), INT64_C(34202412) },
{ INT64_C(19535608), INT64_C(32670990), INT64_C(11914506)},
{ { -INT64_C(55249984), -INT64_C(55249984) },
{ -INT64_C(44930870), -INT64_C(44930870) },
{ INT64_C(34202412), INT64_C(34202412) } } },
{ { -INT64_C(70171393), -INT64_C(52064191), INT64_C(19678826) },
{ INT64_C(65818655), INT64_C(42062976), INT64_C(71093868)},
{ { -INT64_C(70171393), -INT64_C(70171393) },
{ -INT64_C(52064191), -INT64_C(52064191) },
{ INT64_C(19678826), INT64_C(19678826) } } },
{ { INT64_C(61111924), INT64_C(5653009), INT64_C(11261082) },
{ -INT64_C(29267150), INT64_C(49729783), INT64_C(59210528)},
{ { INT64_C(61111924), INT64_C(61111924) },
{ INT64_C(5653009), INT64_C(5653009) },
{ INT64_C(11261082), INT64_C(11261082) } } },
{ { -INT64_C(40289471), INT64_C(71520226), -INT64_C(74282823) },
{ INT64_C(65251834), INT64_C(91366098), INT64_C(57294064)},
{ { -INT64_C(40289471), -INT64_C(40289471) },
{ INT64_C(71520226), INT64_C(71520226) },
{ -INT64_C(74282823), -INT64_C(74282823) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int64x2x3_t r = simde_vld3q_dup_s64(test_vec[i].a);
simde_int64x2x3_t expected = {
{simde_vld1q_s64(test_vec[i].r[0]), simde_vld1q_s64(test_vec[i].r[1]), simde_vld1q_s64(test_vec[i].r[2])}};
simde_test_arm_neon_assert_equal_i64x2(r.val[0], expected.val[0]);
simde_test_arm_neon_assert_equal_i64x2(r.val[1], expected.val[1]);
simde_test_arm_neon_assert_equal_i64x2(r.val[2], expected.val[2]);
}
return 0;
}
static int
test_simde_vld3q_dup_u8 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
uint8_t a[3];
uint8_t unused[3];
uint8_t r[3][16];
} test_vec[] = {
{ { UINT8_C(131), UINT8_C(170), UINT8_C(140) },
{ UINT8_C(114), UINT8_C(199), UINT8_C(32)},
{ { UINT8_C(131), UINT8_C(131), UINT8_C(131), UINT8_C(131), UINT8_C(131), UINT8_C(131), UINT8_C(131), UINT8_C(131),
UINT8_C(131), UINT8_C(131), UINT8_C(131), UINT8_C(131), UINT8_C(131), UINT8_C(131), UINT8_C(131), UINT8_C(131) },
{ UINT8_C(170), UINT8_C(170), UINT8_C(170), UINT8_C(170), UINT8_C(170), UINT8_C(170), UINT8_C(170), UINT8_C(170),
UINT8_C(170), UINT8_C(170), UINT8_C(170), UINT8_C(170), UINT8_C(170), UINT8_C(170), UINT8_C(170), UINT8_C(170) },
{ UINT8_C(140), UINT8_C(140), UINT8_C(140), UINT8_C(140), UINT8_C(140), UINT8_C(140), UINT8_C(140), UINT8_C(140),
UINT8_C(140), UINT8_C(140), UINT8_C(140), UINT8_C(140), UINT8_C(140), UINT8_C(140), UINT8_C(140), UINT8_C(140) } } },
{ { UINT8_C(122), UINT8_C(34), UINT8_C(152) },
{ UINT8_C(111), UINT8_C(186), UINT8_C(172)},
{ { UINT8_C(122), UINT8_C(122), UINT8_C(122), UINT8_C(122), UINT8_C(122), UINT8_C(122), UINT8_C(122), UINT8_C(122),
UINT8_C(122), UINT8_C(122), UINT8_C(122), UINT8_C(122), UINT8_C(122), UINT8_C(122), UINT8_C(122), UINT8_C(122) },
{ UINT8_C(34), UINT8_C(34), UINT8_C(34), UINT8_C(34), UINT8_C(34), UINT8_C(34), UINT8_C(34), UINT8_C(34),
UINT8_C(34), UINT8_C(34), UINT8_C(34), UINT8_C(34), UINT8_C(34), UINT8_C(34), UINT8_C(34), UINT8_C(34) },
{ UINT8_C(152), UINT8_C(152), UINT8_C(152), UINT8_C(152), UINT8_C(152), UINT8_C(152), UINT8_C(152), UINT8_C(152),
UINT8_C(152), UINT8_C(152), UINT8_C(152), UINT8_C(152), UINT8_C(152), UINT8_C(152), UINT8_C(152), UINT8_C(152) } } },
{ { UINT8_C(198), UINT8_C(18), UINT8_C(101) },
{ UINT8_C(91), UINT8_C(119), UINT8_C(69)},
{ { UINT8_C(198), UINT8_C(198), UINT8_C(198), UINT8_C(198), UINT8_C(198), UINT8_C(198), UINT8_C(198), UINT8_C(198),
UINT8_C(198), UINT8_C(198), UINT8_C(198), UINT8_C(198), UINT8_C(198), UINT8_C(198), UINT8_C(198), UINT8_C(198) },
{ UINT8_C(18), UINT8_C(18), UINT8_C(18), UINT8_C(18), UINT8_C(18), UINT8_C(18), UINT8_C(18), UINT8_C(18),
UINT8_C(18), UINT8_C(18), UINT8_C(18), UINT8_C(18), UINT8_C(18), UINT8_C(18), UINT8_C(18), UINT8_C(18) },
{ UINT8_C(101), UINT8_C(101), UINT8_C(101), UINT8_C(101), UINT8_C(101), UINT8_C(101), UINT8_C(101), UINT8_C(101),
UINT8_C(101), UINT8_C(101), UINT8_C(101), UINT8_C(101), UINT8_C(101), UINT8_C(101), UINT8_C(101), UINT8_C(101) } } },
{ { UINT8_C(148), UINT8_C(113), UINT8_C(110) },
{ UINT8_C(57), UINT8_C(103), UINT8_C(149)},
{ { UINT8_C(148), UINT8_C(148), UINT8_C(148), UINT8_C(148), UINT8_C(148), UINT8_C(148), UINT8_C(148), UINT8_C(148),
UINT8_C(148), UINT8_C(148), UINT8_C(148), UINT8_C(148), UINT8_C(148), UINT8_C(148), UINT8_C(148), UINT8_C(148) },
{ UINT8_C(113), UINT8_C(113), UINT8_C(113), UINT8_C(113), UINT8_C(113), UINT8_C(113), UINT8_C(113), UINT8_C(113),
UINT8_C(113), UINT8_C(113), UINT8_C(113), UINT8_C(113), UINT8_C(113), UINT8_C(113), UINT8_C(113), UINT8_C(113) },
{ UINT8_C(110), UINT8_C(110), UINT8_C(110), UINT8_C(110), UINT8_C(110), UINT8_C(110), UINT8_C(110), UINT8_C(110),
UINT8_C(110), UINT8_C(110), UINT8_C(110), UINT8_C(110), UINT8_C(110), UINT8_C(110), UINT8_C(110), UINT8_C(110) } } },
{ { UINT8_C(13), UINT8_C(140), UINT8_C(72) },
{ UINT8_C(114), UINT8_C(161), UINT8_C(131)},
{ { UINT8_C(13), UINT8_C(13), UINT8_C(13), UINT8_C(13), UINT8_C(13), UINT8_C(13), UINT8_C(13), UINT8_C(13),
UINT8_C(13), UINT8_C(13), UINT8_C(13), UINT8_C(13), UINT8_C(13), UINT8_C(13), UINT8_C(13), UINT8_C(13) },
{ UINT8_C(140), UINT8_C(140), UINT8_C(140), UINT8_C(140), UINT8_C(140), UINT8_C(140), UINT8_C(140), UINT8_C(140),
UINT8_C(140), UINT8_C(140), UINT8_C(140), UINT8_C(140), UINT8_C(140), UINT8_C(140), UINT8_C(140), UINT8_C(140) },
{ UINT8_C(72), UINT8_C(72), UINT8_C(72), UINT8_C(72), UINT8_C(72), UINT8_C(72), UINT8_C(72), UINT8_C(72),
UINT8_C(72), UINT8_C(72), UINT8_C(72), UINT8_C(72), UINT8_C(72), UINT8_C(72), UINT8_C(72), UINT8_C(72) } } },
{ { UINT8_C(66), UINT8_C(23), UINT8_C(149) },
{ UINT8_C(20), UINT8_C(31), UINT8_C(114)},
{ { UINT8_C(66), UINT8_C(66), UINT8_C(66), UINT8_C(66), UINT8_C(66), UINT8_C(66), UINT8_C(66), UINT8_C(66),
UINT8_C(66), UINT8_C(66), UINT8_C(66), UINT8_C(66), UINT8_C(66), UINT8_C(66), UINT8_C(66), UINT8_C(66) },
{ UINT8_C(23), UINT8_C(23), UINT8_C(23), UINT8_C(23), UINT8_C(23), UINT8_C(23), UINT8_C(23), UINT8_C(23),
UINT8_C(23), UINT8_C(23), UINT8_C(23), UINT8_C(23), UINT8_C(23), UINT8_C(23), UINT8_C(23), UINT8_C(23) },
{ UINT8_C(149), UINT8_C(149), UINT8_C(149), UINT8_C(149), UINT8_C(149), UINT8_C(149), UINT8_C(149), UINT8_C(149),
UINT8_C(149), UINT8_C(149), UINT8_C(149), UINT8_C(149), UINT8_C(149), UINT8_C(149), UINT8_C(149), UINT8_C(149) } } },
{ { UINT8_C(65), UINT8_C(19), UINT8_C(124) },
{ UINT8_C(31), UINT8_C(9), UINT8_C(194)},
{ { UINT8_C(65), UINT8_C(65), UINT8_C(65), UINT8_C(65), UINT8_C(65), UINT8_C(65), UINT8_C(65), UINT8_C(65),
UINT8_C(65), UINT8_C(65), UINT8_C(65), UINT8_C(65), UINT8_C(65), UINT8_C(65), UINT8_C(65), UINT8_C(65) },
{ UINT8_C(19), UINT8_C(19), UINT8_C(19), UINT8_C(19), UINT8_C(19), UINT8_C(19), UINT8_C(19), UINT8_C(19),
UINT8_C(19), UINT8_C(19), UINT8_C(19), UINT8_C(19), UINT8_C(19), UINT8_C(19), UINT8_C(19), UINT8_C(19) },
{ UINT8_C(124), UINT8_C(124), UINT8_C(124), UINT8_C(124), UINT8_C(124), UINT8_C(124), UINT8_C(124), UINT8_C(124),
UINT8_C(124), UINT8_C(124), UINT8_C(124), UINT8_C(124), UINT8_C(124), UINT8_C(124), UINT8_C(124), UINT8_C(124) } } },
{ { UINT8_C(72), UINT8_C(144), UINT8_C(159) },
{ UINT8_C(87), UINT8_C(134), UINT8_C(28)},
{ { UINT8_C(72), UINT8_C(72), UINT8_C(72), UINT8_C(72), UINT8_C(72), UINT8_C(72), UINT8_C(72), UINT8_C(72),
UINT8_C(72), UINT8_C(72), UINT8_C(72), UINT8_C(72), UINT8_C(72), UINT8_C(72), UINT8_C(72), UINT8_C(72) },
{ UINT8_C(144), UINT8_C(144), UINT8_C(144), UINT8_C(144), UINT8_C(144), UINT8_C(144), UINT8_C(144), UINT8_C(144),
UINT8_C(144), UINT8_C(144), UINT8_C(144), UINT8_C(144), UINT8_C(144), UINT8_C(144), UINT8_C(144), UINT8_C(144) },
{ UINT8_C(159), UINT8_C(159), UINT8_C(159), UINT8_C(159), UINT8_C(159), UINT8_C(159), UINT8_C(159), UINT8_C(159),
UINT8_C(159), UINT8_C(159), UINT8_C(159), UINT8_C(159), UINT8_C(159), UINT8_C(159), UINT8_C(159), UINT8_C(159) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint8x16x3_t r = simde_vld3q_dup_u8(test_vec[i].a);
simde_uint8x16x3_t expected = {
{simde_vld1q_u8(test_vec[i].r[0]), simde_vld1q_u8(test_vec[i].r[1]), simde_vld1q_u8(test_vec[i].r[2])}};
simde_test_arm_neon_assert_equal_u8x16(r.val[0], expected.val[0]);
simde_test_arm_neon_assert_equal_u8x16(r.val[1], expected.val[1]);
simde_test_arm_neon_assert_equal_u8x16(r.val[2], expected.val[2]);
}
return 0;
}
static int
test_simde_vld3q_dup_u16 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
uint16_t a[3];
uint16_t unused[3];
uint16_t r[3][8];
} test_vec[] = {
{ { UINT16_C(13221), UINT16_C(12229), UINT16_C(11071) },
{ UINT16_C(17602), UINT16_C(4227), UINT16_C(7666)},
{ { UINT16_C(13221), UINT16_C(13221), UINT16_C(13221), UINT16_C(13221),
UINT16_C(13221), UINT16_C(13221), UINT16_C(13221), UINT16_C(13221) },
{ UINT16_C(12229), UINT16_C(12229), UINT16_C(12229), UINT16_C(12229),
UINT16_C(12229), UINT16_C(12229), UINT16_C(12229), UINT16_C(12229) },
{ UINT16_C(11071), UINT16_C(11071), UINT16_C(11071), UINT16_C(11071),
UINT16_C(11071), UINT16_C(11071), UINT16_C(11071), UINT16_C(11071) } } },
{ { UINT16_C(12420), UINT16_C(14500), UINT16_C(12248) },
{ UINT16_C(17926), UINT16_C(17458), UINT16_C(3685)},
{ { UINT16_C(12420), UINT16_C(12420), UINT16_C(12420), UINT16_C(12420),
UINT16_C(12420), UINT16_C(12420), UINT16_C(12420), UINT16_C(12420) },
{ UINT16_C(14500), UINT16_C(14500), UINT16_C(14500), UINT16_C(14500),
UINT16_C(14500), UINT16_C(14500), UINT16_C(14500), UINT16_C(14500) },
{ UINT16_C(12248), UINT16_C(12248), UINT16_C(12248), UINT16_C(12248),
UINT16_C(12248), UINT16_C(12248), UINT16_C(12248), UINT16_C(12248) } } },
{ { UINT16_C(8504), UINT16_C(3056), UINT16_C(15978) },
{ UINT16_C(11648), UINT16_C(2353), UINT16_C(16355)},
{ { UINT16_C(8504), UINT16_C(8504), UINT16_C(8504), UINT16_C(8504),
UINT16_C(8504), UINT16_C(8504), UINT16_C(8504), UINT16_C(8504) },
{ UINT16_C(3056), UINT16_C(3056), UINT16_C(3056), UINT16_C(3056),
UINT16_C(3056), UINT16_C(3056), UINT16_C(3056), UINT16_C(3056) },
{ UINT16_C(15978), UINT16_C(15978), UINT16_C(15978), UINT16_C(15978),
UINT16_C(15978), UINT16_C(15978), UINT16_C(15978), UINT16_C(15978) } } },
{ { UINT16_C(15523), UINT16_C(1359), UINT16_C(16502) },
{ UINT16_C(13928), UINT16_C(5794), UINT16_C(818)},
{ { UINT16_C(15523), UINT16_C(15523), UINT16_C(15523), UINT16_C(15523),
UINT16_C(15523), UINT16_C(15523), UINT16_C(15523), UINT16_C(15523) },
{ UINT16_C(1359), UINT16_C(1359), UINT16_C(1359), UINT16_C(1359),
UINT16_C(1359), UINT16_C(1359), UINT16_C(1359), UINT16_C(1359) },
{ UINT16_C(16502), UINT16_C(16502), UINT16_C(16502), UINT16_C(16502),
UINT16_C(16502), UINT16_C(16502), UINT16_C(16502), UINT16_C(16502) } } },
{ { UINT16_C(19929), UINT16_C(2856), UINT16_C(3524) },
{ UINT16_C(4725), UINT16_C(16666), UINT16_C(9010)},
{ { UINT16_C(19929), UINT16_C(19929), UINT16_C(19929), UINT16_C(19929),
UINT16_C(19929), UINT16_C(19929), UINT16_C(19929), UINT16_C(19929) },
{ UINT16_C(2856), UINT16_C(2856), UINT16_C(2856), UINT16_C(2856),
UINT16_C(2856), UINT16_C(2856), UINT16_C(2856), UINT16_C(2856) },
{ UINT16_C(3524), UINT16_C(3524), UINT16_C(3524), UINT16_C(3524),
UINT16_C(3524), UINT16_C(3524), UINT16_C(3524), UINT16_C(3524) } } },
{ { UINT16_C(1112), UINT16_C(8015), UINT16_C(4791) },
{ UINT16_C(18035), UINT16_C(7170), UINT16_C(3494)},
{ { UINT16_C(1112), UINT16_C(1112), UINT16_C(1112), UINT16_C(1112),
UINT16_C(1112), UINT16_C(1112), UINT16_C(1112), UINT16_C(1112) },
{ UINT16_C(8015), UINT16_C(8015), UINT16_C(8015), UINT16_C(8015),
UINT16_C(8015), UINT16_C(8015), UINT16_C(8015), UINT16_C(8015) },
{ UINT16_C(4791), UINT16_C(4791), UINT16_C(4791), UINT16_C(4791),
UINT16_C(4791), UINT16_C(4791), UINT16_C(4791), UINT16_C(4791) } } },
{ { UINT16_C(19750), UINT16_C(19409), UINT16_C(17275) },
{ UINT16_C(5089), UINT16_C(5163), UINT16_C(18594)},
{ { UINT16_C(19750), UINT16_C(19750), UINT16_C(19750), UINT16_C(19750),
UINT16_C(19750), UINT16_C(19750), UINT16_C(19750), UINT16_C(19750) },
{ UINT16_C(19409), UINT16_C(19409), UINT16_C(19409), UINT16_C(19409),
UINT16_C(19409), UINT16_C(19409), UINT16_C(19409), UINT16_C(19409) },
{ UINT16_C(17275), UINT16_C(17275), UINT16_C(17275), UINT16_C(17275),
UINT16_C(17275), UINT16_C(17275), UINT16_C(17275), UINT16_C(17275) } } },
{ { UINT16_C(7578), UINT16_C(8951), UINT16_C(11969) },
{ UINT16_C(15208), UINT16_C(9477), UINT16_C(18579)},
{ { UINT16_C(7578), UINT16_C(7578), UINT16_C(7578), UINT16_C(7578),
UINT16_C(7578), UINT16_C(7578), UINT16_C(7578), UINT16_C(7578) },
{ UINT16_C(8951), UINT16_C(8951), UINT16_C(8951), UINT16_C(8951),
UINT16_C(8951), UINT16_C(8951), UINT16_C(8951), UINT16_C(8951) },
{ UINT16_C(11969), UINT16_C(11969), UINT16_C(11969), UINT16_C(11969),
UINT16_C(11969), UINT16_C(11969), UINT16_C(11969), UINT16_C(11969) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint16x8x3_t r = simde_vld3q_dup_u16(test_vec[i].a);
simde_uint16x8x3_t expected = {
{simde_vld1q_u16(test_vec[i].r[0]), simde_vld1q_u16(test_vec[i].r[1]), simde_vld1q_u16(test_vec[i].r[2])}};
simde_test_arm_neon_assert_equal_u16x8(r.val[0], expected.val[0]);
simde_test_arm_neon_assert_equal_u16x8(r.val[1], expected.val[1]);
simde_test_arm_neon_assert_equal_u16x8(r.val[2], expected.val[2]);
}
return 0;
}
static int
test_simde_vld3q_dup_u32 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
uint32_t a[3];
uint32_t unused[3];
uint32_t r[3][4];
} test_vec[] = {
{ { UINT32_C(1876681), UINT32_C(383882), UINT32_C(1503446) },
{ UINT32_C(1131353), UINT32_C(685373), UINT32_C(644898)},
{ { UINT32_C(1876681), UINT32_C(1876681), UINT32_C(1876681), UINT32_C(1876681) },
{ UINT32_C(383882), UINT32_C(383882), UINT32_C(383882), UINT32_C(383882) },
{ UINT32_C(1503446), UINT32_C(1503446), UINT32_C(1503446), UINT32_C(1503446) } } },
{ { UINT32_C(1252582), UINT32_C(197720), UINT32_C(1532363) },
{ UINT32_C(149827), UINT32_C(586569), UINT32_C(781195)},
{ { UINT32_C(1252582), UINT32_C(1252582), UINT32_C(1252582), UINT32_C(1252582) },
{ UINT32_C(197720), UINT32_C(197720), UINT32_C(197720), UINT32_C(197720) },
{ UINT32_C(1532363), UINT32_C(1532363), UINT32_C(1532363), UINT32_C(1532363) } } },
{ { UINT32_C(1255475), UINT32_C(1250931), UINT32_C(344434) },
{ UINT32_C(20022), UINT32_C(598221), UINT32_C(1823423)},
{ { UINT32_C(1255475), UINT32_C(1255475), UINT32_C(1255475), UINT32_C(1255475) },
{ UINT32_C(1250931), UINT32_C(1250931), UINT32_C(1250931), UINT32_C(1250931) },
{ UINT32_C(344434), UINT32_C(344434), UINT32_C(344434), UINT32_C(344434) } } },
{ { UINT32_C(468848), UINT32_C(1580004), UINT32_C(349385) },
{ UINT32_C(398943), UINT32_C(1301831), UINT32_C(129635)},
{ { UINT32_C(468848), UINT32_C(468848), UINT32_C(468848), UINT32_C(468848) },
{ UINT32_C(1580004), UINT32_C(1580004), UINT32_C(1580004), UINT32_C(1580004) },
{ UINT32_C(349385), UINT32_C(349385), UINT32_C(349385), UINT32_C(349385) } } },
{ { UINT32_C(1151250), UINT32_C(233582), UINT32_C(1925943) },
{ UINT32_C(77066), UINT32_C(1269609), UINT32_C(294824)},
{ { UINT32_C(1151250), UINT32_C(1151250), UINT32_C(1151250), UINT32_C(1151250) },
{ UINT32_C(233582), UINT32_C(233582), UINT32_C(233582), UINT32_C(233582) },
{ UINT32_C(1925943), UINT32_C(1925943), UINT32_C(1925943), UINT32_C(1925943) } } },
{ { UINT32_C(498645), UINT32_C(274619), UINT32_C(816883) },
{ UINT32_C(647287), UINT32_C(31939), UINT32_C(1314337)},
{ { UINT32_C(498645), UINT32_C(498645), UINT32_C(498645), UINT32_C(498645) },
{ UINT32_C(274619), UINT32_C(274619), UINT32_C(274619), UINT32_C(274619) },
{ UINT32_C(816883), UINT32_C(816883), UINT32_C(816883), UINT32_C(816883) } } },
{ { UINT32_C(976290), UINT32_C(913370), UINT32_C(617200) },
{ UINT32_C(772841), UINT32_C(145369), UINT32_C(351685)},
{ { UINT32_C(976290), UINT32_C(976290), UINT32_C(976290), UINT32_C(976290) },
{ UINT32_C(913370), UINT32_C(913370), UINT32_C(913370), UINT32_C(913370) },
{ UINT32_C(617200), UINT32_C(617200), UINT32_C(617200), UINT32_C(617200) } } },
{ { UINT32_C(350154), UINT32_C(575781), UINT32_C(1368405) },
{ UINT32_C(172538), UINT32_C(1978412), UINT32_C(1670805)},
{ { UINT32_C(350154), UINT32_C(350154), UINT32_C(350154), UINT32_C(350154) },
{ UINT32_C(575781), UINT32_C(575781), UINT32_C(575781), UINT32_C(575781) },
{ UINT32_C(1368405), UINT32_C(1368405), UINT32_C(1368405), UINT32_C(1368405) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint32x4x3_t r = simde_vld3q_dup_u32(test_vec[i].a);
simde_uint32x4x3_t expected = {
{simde_vld1q_u32(test_vec[i].r[0]), simde_vld1q_u32(test_vec[i].r[1]), simde_vld1q_u32(test_vec[i].r[2])}};
simde_test_arm_neon_assert_equal_u32x4(r.val[0], expected.val[0]);
simde_test_arm_neon_assert_equal_u32x4(r.val[1], expected.val[1]);
simde_test_arm_neon_assert_equal_u32x4(r.val[2], expected.val[2]);
}
return 0;
}
static int
test_simde_vld3q_dup_u64 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
uint64_t a[3];
uint64_t unused[3];
uint64_t r[3][2];
} test_vec[] = {
{ { UINT64_C(155091681), UINT64_C(112589773), UINT64_C(63143791) },
{ UINT64_C(23716520), UINT64_C(176818970), UINT64_C(116173662)},
{ { UINT64_C(155091681), UINT64_C(155091681) },
{ UINT64_C(112589773), UINT64_C(112589773) },
{ UINT64_C(63143791), UINT64_C(63143791) } } },
{ { UINT64_C(130942524), UINT64_C(57780860), UINT64_C(31934739) },
{ UINT64_C(176079421), UINT64_C(5675018), UINT64_C(63494312)},
{ { UINT64_C(130942524), UINT64_C(130942524) },
{ UINT64_C(57780860), UINT64_C(57780860) },
{ UINT64_C(31934739), UINT64_C(31934739) } } },
{ { UINT64_C(194457642), UINT64_C(39554875), UINT64_C(15224283) },
{ UINT64_C(71051928), UINT64_C(81814738), UINT64_C(2283266)},
{ { UINT64_C(194457642), UINT64_C(194457642) },
{ UINT64_C(39554875), UINT64_C(39554875) },
{ UINT64_C(15224283), UINT64_C(15224283) } } },
{ { UINT64_C(23817396), UINT64_C(113541293), UINT64_C(123440835) },
{ UINT64_C(102375805), UINT64_C(133049515), UINT64_C(41509326)},
{ { UINT64_C(23817396), UINT64_C(23817396) },
{ UINT64_C(113541293), UINT64_C(113541293) },
{ UINT64_C(123440835), UINT64_C(123440835) } } },
{ { UINT64_C(2000000), UINT64_C(51642274), UINT64_C(110635130) },
{ UINT64_C(133946772), UINT64_C(153402717), UINT64_C(120380529)},
{ { UINT64_C(2000000), UINT64_C(2000000) },
{ UINT64_C(51642274), UINT64_C(51642274) },
{ UINT64_C(110635130), UINT64_C(110635130) } } },
{ { UINT64_C(174832616), UINT64_C(187609954), UINT64_C(22590510) },
{ UINT64_C(93628333), UINT64_C(86283110), UINT64_C(199160701)},
{ { UINT64_C(174832616), UINT64_C(174832616) },
{ UINT64_C(187609954), UINT64_C(187609954) },
{ UINT64_C(22590510), UINT64_C(22590510) } } },
{ { UINT64_C(137018276), UINT64_C(195056582), UINT64_C(193644384) },
{ UINT64_C(108521062), UINT64_C(28373149), UINT64_C(12285757)},
{ { UINT64_C(137018276), UINT64_C(137018276) },
{ UINT64_C(195056582), UINT64_C(195056582) },
{ UINT64_C(193644384), UINT64_C(193644384) } } },
{ { UINT64_C(56333011), UINT64_C(89077389), UINT64_C(76364445) },
{ UINT64_C(662711), UINT64_C(94837583), UINT64_C(180422589)},
{ { UINT64_C(56333011), UINT64_C(56333011) },
{ UINT64_C(89077389), UINT64_C(89077389) },
{ UINT64_C(76364445), UINT64_C(76364445) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint64x2x3_t r = simde_vld3q_dup_u64(test_vec[i].a);
simde_uint64x2x3_t expected = {
{simde_vld1q_u64(test_vec[i].r[0]), simde_vld1q_u64(test_vec[i].r[1]), simde_vld1q_u64(test_vec[i].r[2])}};
simde_test_arm_neon_assert_equal_u64x2(r.val[0], expected.val[0]);
simde_test_arm_neon_assert_equal_u64x2(r.val[1], expected.val[1]);
simde_test_arm_neon_assert_equal_u64x2(r.val[2], expected.val[2]);
}
return 0;
}
static int
test_simde_vld3_dup_p8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
simde_poly8_t a[3];
simde_poly8_t unused[3];
simde_poly8_t r[3][8];
} test_vec[] = {
{ { SIMDE_POLY8_C(135), SIMDE_POLY8_C(154), SIMDE_POLY8_C(34) },
{ SIMDE_POLY8_C(4), SIMDE_POLY8_C(55), SIMDE_POLY8_C(125)},
{ { SIMDE_POLY8_C(135), SIMDE_POLY8_C(135), SIMDE_POLY8_C(135), SIMDE_POLY8_C(135),
SIMDE_POLY8_C(135), SIMDE_POLY8_C(135), SIMDE_POLY8_C(135), SIMDE_POLY8_C(135) },
{ SIMDE_POLY8_C(154), SIMDE_POLY8_C(154), SIMDE_POLY8_C(154), SIMDE_POLY8_C(154),
SIMDE_POLY8_C(154), SIMDE_POLY8_C(154), SIMDE_POLY8_C(154), SIMDE_POLY8_C(154) },
{ SIMDE_POLY8_C(34), SIMDE_POLY8_C(34), SIMDE_POLY8_C(34), SIMDE_POLY8_C(34),
SIMDE_POLY8_C(34), SIMDE_POLY8_C(34), SIMDE_POLY8_C(34), SIMDE_POLY8_C(34) } } },
{ { SIMDE_POLY8_C(182), SIMDE_POLY8_C(2), SIMDE_POLY8_C(184) },
{ SIMDE_POLY8_C(165), SIMDE_POLY8_C(123), SIMDE_POLY8_C(191)},
{ { SIMDE_POLY8_C(182), SIMDE_POLY8_C(182), SIMDE_POLY8_C(182), SIMDE_POLY8_C(182),
SIMDE_POLY8_C(182), SIMDE_POLY8_C(182), SIMDE_POLY8_C(182), SIMDE_POLY8_C(182) },
{ SIMDE_POLY8_C(2), SIMDE_POLY8_C(2), SIMDE_POLY8_C(2), SIMDE_POLY8_C(2),
SIMDE_POLY8_C(2), SIMDE_POLY8_C(2), SIMDE_POLY8_C(2), SIMDE_POLY8_C(2) },
{ SIMDE_POLY8_C(184), SIMDE_POLY8_C(184), SIMDE_POLY8_C(184), SIMDE_POLY8_C(184),
SIMDE_POLY8_C(184), SIMDE_POLY8_C(184), SIMDE_POLY8_C(184), SIMDE_POLY8_C(184) } } },
{ { SIMDE_POLY8_C(127), SIMDE_POLY8_C(64), SIMDE_POLY8_C(31) },
{ SIMDE_POLY8_C(41), SIMDE_POLY8_C(77), SIMDE_POLY8_C(44)},
{ { SIMDE_POLY8_C(127), SIMDE_POLY8_C(127), SIMDE_POLY8_C(127), SIMDE_POLY8_C(127),
SIMDE_POLY8_C(127), SIMDE_POLY8_C(127), SIMDE_POLY8_C(127), SIMDE_POLY8_C(127) },
{ SIMDE_POLY8_C(64), SIMDE_POLY8_C(64), SIMDE_POLY8_C(64), SIMDE_POLY8_C(64),
SIMDE_POLY8_C(64), SIMDE_POLY8_C(64), SIMDE_POLY8_C(64), SIMDE_POLY8_C(64) },
{ SIMDE_POLY8_C(31), SIMDE_POLY8_C(31), SIMDE_POLY8_C(31), SIMDE_POLY8_C(31),
SIMDE_POLY8_C(31), SIMDE_POLY8_C(31), SIMDE_POLY8_C(31), SIMDE_POLY8_C(31) } } },
{ { SIMDE_POLY8_C(95), SIMDE_POLY8_C(134), SIMDE_POLY8_C(151) },
{ SIMDE_POLY8_C(30), SIMDE_POLY8_C(126), SIMDE_POLY8_C(11)},
{ { SIMDE_POLY8_C(95), SIMDE_POLY8_C(95), SIMDE_POLY8_C(95), SIMDE_POLY8_C(95),
SIMDE_POLY8_C(95), SIMDE_POLY8_C(95), SIMDE_POLY8_C(95), SIMDE_POLY8_C(95) },
{ SIMDE_POLY8_C(134), SIMDE_POLY8_C(134), SIMDE_POLY8_C(134), SIMDE_POLY8_C(134),
SIMDE_POLY8_C(134), SIMDE_POLY8_C(134), SIMDE_POLY8_C(134), SIMDE_POLY8_C(134) },
{ SIMDE_POLY8_C(151), SIMDE_POLY8_C(151), SIMDE_POLY8_C(151), SIMDE_POLY8_C(151),
SIMDE_POLY8_C(151), SIMDE_POLY8_C(151), SIMDE_POLY8_C(151), SIMDE_POLY8_C(151) } } },
{ { SIMDE_POLY8_C(198), SIMDE_POLY8_C(171), SIMDE_POLY8_C(185) },
{ SIMDE_POLY8_C(44), SIMDE_POLY8_C(68), SIMDE_POLY8_C(53)},
{ { SIMDE_POLY8_C(198), SIMDE_POLY8_C(198), SIMDE_POLY8_C(198), SIMDE_POLY8_C(198),
SIMDE_POLY8_C(198), SIMDE_POLY8_C(198), SIMDE_POLY8_C(198), SIMDE_POLY8_C(198) },
{ SIMDE_POLY8_C(171), SIMDE_POLY8_C(171), SIMDE_POLY8_C(171), SIMDE_POLY8_C(171),
SIMDE_POLY8_C(171), SIMDE_POLY8_C(171), SIMDE_POLY8_C(171), SIMDE_POLY8_C(171) },
{ SIMDE_POLY8_C(185), SIMDE_POLY8_C(185), SIMDE_POLY8_C(185), SIMDE_POLY8_C(185),
SIMDE_POLY8_C(185), SIMDE_POLY8_C(185), SIMDE_POLY8_C(185), SIMDE_POLY8_C(185) } } },
{ { SIMDE_POLY8_C(149), SIMDE_POLY8_C(156), SIMDE_POLY8_C(25) },
{ SIMDE_POLY8_C(131), SIMDE_POLY8_C(33), SIMDE_POLY8_C(82)},
{ { SIMDE_POLY8_C(149), SIMDE_POLY8_C(149), SIMDE_POLY8_C(149), SIMDE_POLY8_C(149),
SIMDE_POLY8_C(149), SIMDE_POLY8_C(149), SIMDE_POLY8_C(149), SIMDE_POLY8_C(149) },
{ SIMDE_POLY8_C(156), SIMDE_POLY8_C(156), SIMDE_POLY8_C(156), SIMDE_POLY8_C(156),
SIMDE_POLY8_C(156), SIMDE_POLY8_C(156), SIMDE_POLY8_C(156), SIMDE_POLY8_C(156) },
{ SIMDE_POLY8_C(25), SIMDE_POLY8_C(25), SIMDE_POLY8_C(25), SIMDE_POLY8_C(25),
SIMDE_POLY8_C(25), SIMDE_POLY8_C(25), SIMDE_POLY8_C(25), SIMDE_POLY8_C(25) } } },
{ { SIMDE_POLY8_C(168), SIMDE_POLY8_C(104), SIMDE_POLY8_C(156) },
{ SIMDE_POLY8_C(82), SIMDE_POLY8_C(180), SIMDE_POLY8_C(74)},
{ { SIMDE_POLY8_C(168), SIMDE_POLY8_C(168), SIMDE_POLY8_C(168), SIMDE_POLY8_C(168),
SIMDE_POLY8_C(168), SIMDE_POLY8_C(168), SIMDE_POLY8_C(168), SIMDE_POLY8_C(168) },
{ SIMDE_POLY8_C(104), SIMDE_POLY8_C(104), SIMDE_POLY8_C(104), SIMDE_POLY8_C(104),
SIMDE_POLY8_C(104), SIMDE_POLY8_C(104), SIMDE_POLY8_C(104), SIMDE_POLY8_C(104) },
{ SIMDE_POLY8_C(156), SIMDE_POLY8_C(156), SIMDE_POLY8_C(156), SIMDE_POLY8_C(156),
SIMDE_POLY8_C(156), SIMDE_POLY8_C(156), SIMDE_POLY8_C(156), SIMDE_POLY8_C(156) } } },
{ { SIMDE_POLY8_C(20), SIMDE_POLY8_C(9), SIMDE_POLY8_C(108) },
{ SIMDE_POLY8_C(197), SIMDE_POLY8_C(40), SIMDE_POLY8_C(191)},
{ { SIMDE_POLY8_C(20), SIMDE_POLY8_C(20), SIMDE_POLY8_C(20), SIMDE_POLY8_C(20),
SIMDE_POLY8_C(20), SIMDE_POLY8_C(20), SIMDE_POLY8_C(20), SIMDE_POLY8_C(20) },
{ SIMDE_POLY8_C(9), SIMDE_POLY8_C(9), SIMDE_POLY8_C(9), SIMDE_POLY8_C(9),
SIMDE_POLY8_C(9), SIMDE_POLY8_C(9), SIMDE_POLY8_C(9), SIMDE_POLY8_C(9) },
{ SIMDE_POLY8_C(108), SIMDE_POLY8_C(108), SIMDE_POLY8_C(108), SIMDE_POLY8_C(108),
SIMDE_POLY8_C(108), SIMDE_POLY8_C(108), SIMDE_POLY8_C(108), SIMDE_POLY8_C(108) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_poly8x8x3_t r = simde_vld3_dup_p8(test_vec[i].a);
simde_poly8x8x3_t expected = {
{simde_vld1_p8(test_vec[i].r[0]), simde_vld1_p8(test_vec[i].r[1]), simde_vld1_p8(test_vec[i].r[2])}};
simde_test_arm_neon_assert_equal_p8x8(r.val[0], expected.val[0]);
simde_test_arm_neon_assert_equal_p8x8(r.val[1], expected.val[1]);
simde_test_arm_neon_assert_equal_p8x8(r.val[2], expected.val[2]);
}
return 0;
#else
for (int i = 0 ; i < 4 ; i++) {
simde_poly8_t a[3];
simde_poly8_t unused[3];
simde_poly8x8x3_t r;
simde_test_codegen_random_memory(3, HEDLEY_REINTERPRET_CAST(uint8_t*, a));
simde_test_codegen_random_memory(3, HEDLEY_REINTERPRET_CAST(uint8_t*, unused));
r = simde_vld3_dup_p8(a);
// Random buffer between pointer to load and expected results to check for
// loading out of bounds.
simde_test_codegen_write_vp8(2, 3, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_codegen_write_vp8(2, 3, unused, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_p8x8x3(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vld3_dup_p16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
simde_poly16_t a[3];
simde_poly16_t unused[3];
simde_poly16_t r[3][4];
} test_vec[] = {
{ { SIMDE_POLY16_C(13377), SIMDE_POLY16_C(10805), SIMDE_POLY16_C(14630) },
{ SIMDE_POLY16_C(10222), SIMDE_POLY16_C(12690), SIMDE_POLY16_C(19072)},
{ { SIMDE_POLY16_C(13377), SIMDE_POLY16_C(13377), SIMDE_POLY16_C(13377), SIMDE_POLY16_C(13377) },
{ SIMDE_POLY16_C(10805), SIMDE_POLY16_C(10805), SIMDE_POLY16_C(10805), SIMDE_POLY16_C(10805) },
{ SIMDE_POLY16_C(14630), SIMDE_POLY16_C(14630), SIMDE_POLY16_C(14630), SIMDE_POLY16_C(14630) } } },
{ { SIMDE_POLY16_C(8093), SIMDE_POLY16_C(11570), SIMDE_POLY16_C(183) },
{ SIMDE_POLY16_C(14974), SIMDE_POLY16_C(2867), SIMDE_POLY16_C(19983)},
{ { SIMDE_POLY16_C(8093), SIMDE_POLY16_C(8093), SIMDE_POLY16_C(8093), SIMDE_POLY16_C(8093) },
{ SIMDE_POLY16_C(11570), SIMDE_POLY16_C(11570), SIMDE_POLY16_C(11570), SIMDE_POLY16_C(11570) },
{ SIMDE_POLY16_C(183), SIMDE_POLY16_C(183), SIMDE_POLY16_C(183), SIMDE_POLY16_C(183) } } },
{ { SIMDE_POLY16_C(51), SIMDE_POLY16_C(11622), SIMDE_POLY16_C(2412) },
{ SIMDE_POLY16_C(186), SIMDE_POLY16_C(13191), SIMDE_POLY16_C(7620)},
{ { SIMDE_POLY16_C(51), SIMDE_POLY16_C(51), SIMDE_POLY16_C(51), SIMDE_POLY16_C(51) },
{ SIMDE_POLY16_C(11622), SIMDE_POLY16_C(11622), SIMDE_POLY16_C(11622), SIMDE_POLY16_C(11622) },
{ SIMDE_POLY16_C(2412), SIMDE_POLY16_C(2412), SIMDE_POLY16_C(2412), SIMDE_POLY16_C(2412) } } },
{ { SIMDE_POLY16_C(1319), SIMDE_POLY16_C(3015), SIMDE_POLY16_C(17065) },
{ SIMDE_POLY16_C(2405), SIMDE_POLY16_C(6666), SIMDE_POLY16_C(16892)},
{ { SIMDE_POLY16_C(1319), SIMDE_POLY16_C(1319), SIMDE_POLY16_C(1319), SIMDE_POLY16_C(1319) },
{ SIMDE_POLY16_C(3015), SIMDE_POLY16_C(3015), SIMDE_POLY16_C(3015), SIMDE_POLY16_C(3015) },
{ SIMDE_POLY16_C(17065), SIMDE_POLY16_C(17065), SIMDE_POLY16_C(17065), SIMDE_POLY16_C(17065) } } },
{ { SIMDE_POLY16_C(5845), SIMDE_POLY16_C(17414), SIMDE_POLY16_C(9474) },
{ SIMDE_POLY16_C(17463), SIMDE_POLY16_C(1796), SIMDE_POLY16_C(5656)},
{ { SIMDE_POLY16_C(5845), SIMDE_POLY16_C(5845), SIMDE_POLY16_C(5845), SIMDE_POLY16_C(5845) },
{ SIMDE_POLY16_C(17414), SIMDE_POLY16_C(17414), SIMDE_POLY16_C(17414), SIMDE_POLY16_C(17414) },
{ SIMDE_POLY16_C(9474), SIMDE_POLY16_C(9474), SIMDE_POLY16_C(9474), SIMDE_POLY16_C(9474) } } },
{ { SIMDE_POLY16_C(4232), SIMDE_POLY16_C(1927), SIMDE_POLY16_C(15662) },
{ SIMDE_POLY16_C(4302), SIMDE_POLY16_C(2477), SIMDE_POLY16_C(16338)},
{ { SIMDE_POLY16_C(4232), SIMDE_POLY16_C(4232), SIMDE_POLY16_C(4232), SIMDE_POLY16_C(4232) },
{ SIMDE_POLY16_C(1927), SIMDE_POLY16_C(1927), SIMDE_POLY16_C(1927), SIMDE_POLY16_C(1927) },
{ SIMDE_POLY16_C(15662), SIMDE_POLY16_C(15662), SIMDE_POLY16_C(15662), SIMDE_POLY16_C(15662) } } },
{ { SIMDE_POLY16_C(2091), SIMDE_POLY16_C(9041), SIMDE_POLY16_C(5199) },
{ SIMDE_POLY16_C(2392), SIMDE_POLY16_C(11870), SIMDE_POLY16_C(18327)},
{ { SIMDE_POLY16_C(2091), SIMDE_POLY16_C(2091), SIMDE_POLY16_C(2091), SIMDE_POLY16_C(2091) },
{ SIMDE_POLY16_C(9041), SIMDE_POLY16_C(9041), SIMDE_POLY16_C(9041), SIMDE_POLY16_C(9041) },
{ SIMDE_POLY16_C(5199), SIMDE_POLY16_C(5199), SIMDE_POLY16_C(5199), SIMDE_POLY16_C(5199) } } },
{ { SIMDE_POLY16_C(9669), SIMDE_POLY16_C(11054), SIMDE_POLY16_C(16736) },
{ SIMDE_POLY16_C(8412), SIMDE_POLY16_C(8721), SIMDE_POLY16_C(13754)},
{ { SIMDE_POLY16_C(9669), SIMDE_POLY16_C(9669), SIMDE_POLY16_C(9669), SIMDE_POLY16_C(9669) },
{ SIMDE_POLY16_C(11054), SIMDE_POLY16_C(11054), SIMDE_POLY16_C(11054), SIMDE_POLY16_C(11054) },
{ SIMDE_POLY16_C(16736), SIMDE_POLY16_C(16736), SIMDE_POLY16_C(16736), SIMDE_POLY16_C(16736) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_poly16x4x3_t r = simde_vld3_dup_p16(test_vec[i].a);
simde_poly16x4x3_t expected = {
{simde_vld1_p16(test_vec[i].r[0]), simde_vld1_p16(test_vec[i].r[1]), simde_vld1_p16(test_vec[i].r[2])}};
simde_test_arm_neon_assert_equal_p16x4(r.val[0], expected.val[0]);
simde_test_arm_neon_assert_equal_p16x4(r.val[1], expected.val[1]);
simde_test_arm_neon_assert_equal_p16x4(r.val[2], expected.val[2]);
}
return 0;
#else
for (int i = 0 ; i < 4 ; i++) {
simde_poly16_t a[3];
simde_poly16_t unused[3];
simde_poly16x4x3_t r;
simde_test_codegen_random_memory(6, HEDLEY_REINTERPRET_CAST(uint8_t*, a));
simde_test_codegen_random_memory(6, HEDLEY_REINTERPRET_CAST(uint8_t*, unused));
r = simde_vld3_dup_p16(a);
// Random buffer between pointer to load and expected results to check for
// loading out of bounds.
simde_test_codegen_write_vp16(2, 3, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_codegen_write_vp16(2, 3, unused, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_p16x4x3(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vld3_dup_p64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
simde_poly64_t a[3];
simde_poly64_t unused[3];
simde_poly64_t r[3][1];
} test_vec[] = {
{ { SIMDE_POLY64_C(160975844), SIMDE_POLY64_C(153508503), SIMDE_POLY64_C(173493973) },
{ SIMDE_POLY64_C(166251921), SIMDE_POLY64_C(65830676), SIMDE_POLY64_C(97239677)},
{ { SIMDE_POLY64_C(160975844) },
{ SIMDE_POLY64_C(153508503) },
{ SIMDE_POLY64_C(173493973) } } },
{ { SIMDE_POLY64_C(187315367), SIMDE_POLY64_C(5800842), SIMDE_POLY64_C(115739498) },
{ SIMDE_POLY64_C(84653812), SIMDE_POLY64_C(120517420), SIMDE_POLY64_C(175798293)},
{ { SIMDE_POLY64_C(187315367) },
{ SIMDE_POLY64_C(5800842) },
{ SIMDE_POLY64_C(115739498) } } },
{ { SIMDE_POLY64_C(76024341), SIMDE_POLY64_C(155566333), SIMDE_POLY64_C(101038279) },
{ SIMDE_POLY64_C(46074453), SIMDE_POLY64_C(151593559), SIMDE_POLY64_C(39262253)},
{ { SIMDE_POLY64_C(76024341) },
{ SIMDE_POLY64_C(155566333) },
{ SIMDE_POLY64_C(101038279) } } },
{ { SIMDE_POLY64_C(46906477), SIMDE_POLY64_C(997782), SIMDE_POLY64_C(69721610) },
{ SIMDE_POLY64_C(31134385), SIMDE_POLY64_C(173251253), SIMDE_POLY64_C(151509065)},
{ { SIMDE_POLY64_C(46906477) },
{ SIMDE_POLY64_C(997782) },
{ SIMDE_POLY64_C(69721610) } } },
{ { SIMDE_POLY64_C(59105148), SIMDE_POLY64_C(194933961), SIMDE_POLY64_C(18072130) },
{ SIMDE_POLY64_C(67463877), SIMDE_POLY64_C(80370119), SIMDE_POLY64_C(107818223)},
{ { SIMDE_POLY64_C(59105148) },
{ SIMDE_POLY64_C(194933961) },
{ SIMDE_POLY64_C(18072130) } } },
{ { SIMDE_POLY64_C(187736185), SIMDE_POLY64_C(161160447), SIMDE_POLY64_C(24909245) },
{ SIMDE_POLY64_C(110288501), SIMDE_POLY64_C(110076399), SIMDE_POLY64_C(184478722)},
{ { SIMDE_POLY64_C(187736185) },
{ SIMDE_POLY64_C(161160447) },
{ SIMDE_POLY64_C(24909245) } } },
{ { SIMDE_POLY64_C(113683975), SIMDE_POLY64_C(71734803), SIMDE_POLY64_C(50110366) },
{ SIMDE_POLY64_C(20964634), SIMDE_POLY64_C(167646318), SIMDE_POLY64_C(171677397)},
{ { SIMDE_POLY64_C(113683975) },
{ SIMDE_POLY64_C(71734803) },
{ SIMDE_POLY64_C(50110366) } } },
{ { SIMDE_POLY64_C(5715707), SIMDE_POLY64_C(147794026), SIMDE_POLY64_C(162515415) },
{ SIMDE_POLY64_C(142055920), SIMDE_POLY64_C(10766156), SIMDE_POLY64_C(64823110)},
{ { SIMDE_POLY64_C(5715707) },
{ SIMDE_POLY64_C(147794026) },
{ SIMDE_POLY64_C(162515415) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_poly64x1x3_t r = simde_vld3_dup_p64(test_vec[i].a);
simde_poly64x1x3_t expected = {
{simde_vld1_p64(test_vec[i].r[0]), simde_vld1_p64(test_vec[i].r[1]), simde_vld1_p64(test_vec[i].r[2])}};
simde_test_arm_neon_assert_equal_p64x1(r.val[0], expected.val[0]);
simde_test_arm_neon_assert_equal_p64x1(r.val[1], expected.val[1]);
simde_test_arm_neon_assert_equal_p64x1(r.val[2], expected.val[2]);
}
return 0;
#else
for (int i = 0 ; i < 4 ; i++) {
simde_poly64_t a[3];
simde_poly64_t unused[3];
simde_poly64x1x3_t r;
simde_test_codegen_random_memory(24, HEDLEY_REINTERPRET_CAST(uint8_t*, a));
simde_test_codegen_random_memory(24, HEDLEY_REINTERPRET_CAST(uint8_t*, unused));
r = simde_vld3_dup_p64(a);
// Random buffer between pointer to load and expected results to check for
// loading out of bounds.
simde_test_codegen_write_vp64(2, 3, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_codegen_write_vp64(2, 3, unused, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_p64x1x3(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vld3q_dup_p8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
simde_poly8_t a[3];
simde_poly8_t unused[3];
simde_poly8_t r[3][16];
} test_vec[] = {
{ { SIMDE_POLY8_C(131), SIMDE_POLY8_C(170), SIMDE_POLY8_C(140) },
{ SIMDE_POLY8_C(114), SIMDE_POLY8_C(199), SIMDE_POLY8_C(32)},
{ { SIMDE_POLY8_C(131), SIMDE_POLY8_C(131), SIMDE_POLY8_C(131), SIMDE_POLY8_C(131), SIMDE_POLY8_C(131), SIMDE_POLY8_C(131), SIMDE_POLY8_C(131), SIMDE_POLY8_C(131),
SIMDE_POLY8_C(131), SIMDE_POLY8_C(131), SIMDE_POLY8_C(131), SIMDE_POLY8_C(131), SIMDE_POLY8_C(131), SIMDE_POLY8_C(131), SIMDE_POLY8_C(131), SIMDE_POLY8_C(131) },
{ SIMDE_POLY8_C(170), SIMDE_POLY8_C(170), SIMDE_POLY8_C(170), SIMDE_POLY8_C(170), SIMDE_POLY8_C(170), SIMDE_POLY8_C(170), SIMDE_POLY8_C(170), SIMDE_POLY8_C(170),
SIMDE_POLY8_C(170), SIMDE_POLY8_C(170), SIMDE_POLY8_C(170), SIMDE_POLY8_C(170), SIMDE_POLY8_C(170), SIMDE_POLY8_C(170), SIMDE_POLY8_C(170), SIMDE_POLY8_C(170) },
{ SIMDE_POLY8_C(140), SIMDE_POLY8_C(140), SIMDE_POLY8_C(140), SIMDE_POLY8_C(140), SIMDE_POLY8_C(140), SIMDE_POLY8_C(140), SIMDE_POLY8_C(140), SIMDE_POLY8_C(140),
SIMDE_POLY8_C(140), SIMDE_POLY8_C(140), SIMDE_POLY8_C(140), SIMDE_POLY8_C(140), SIMDE_POLY8_C(140), SIMDE_POLY8_C(140), SIMDE_POLY8_C(140), SIMDE_POLY8_C(140) } } },
{ { SIMDE_POLY8_C(122), SIMDE_POLY8_C(34), SIMDE_POLY8_C(152) },
{ SIMDE_POLY8_C(111), SIMDE_POLY8_C(186), SIMDE_POLY8_C(172)},
{ { SIMDE_POLY8_C(122), SIMDE_POLY8_C(122), SIMDE_POLY8_C(122), SIMDE_POLY8_C(122), SIMDE_POLY8_C(122), SIMDE_POLY8_C(122), SIMDE_POLY8_C(122), SIMDE_POLY8_C(122),
SIMDE_POLY8_C(122), SIMDE_POLY8_C(122), SIMDE_POLY8_C(122), SIMDE_POLY8_C(122), SIMDE_POLY8_C(122), SIMDE_POLY8_C(122), SIMDE_POLY8_C(122), SIMDE_POLY8_C(122) },
{ SIMDE_POLY8_C(34), SIMDE_POLY8_C(34), SIMDE_POLY8_C(34), SIMDE_POLY8_C(34), SIMDE_POLY8_C(34), SIMDE_POLY8_C(34), SIMDE_POLY8_C(34), SIMDE_POLY8_C(34),
SIMDE_POLY8_C(34), SIMDE_POLY8_C(34), SIMDE_POLY8_C(34), SIMDE_POLY8_C(34), SIMDE_POLY8_C(34), SIMDE_POLY8_C(34), SIMDE_POLY8_C(34), SIMDE_POLY8_C(34) },
{ SIMDE_POLY8_C(152), SIMDE_POLY8_C(152), SIMDE_POLY8_C(152), SIMDE_POLY8_C(152), SIMDE_POLY8_C(152), SIMDE_POLY8_C(152), SIMDE_POLY8_C(152), SIMDE_POLY8_C(152),
SIMDE_POLY8_C(152), SIMDE_POLY8_C(152), SIMDE_POLY8_C(152), SIMDE_POLY8_C(152), SIMDE_POLY8_C(152), SIMDE_POLY8_C(152), SIMDE_POLY8_C(152), SIMDE_POLY8_C(152) } } },
{ { SIMDE_POLY8_C(198), SIMDE_POLY8_C(18), SIMDE_POLY8_C(101) },
{ SIMDE_POLY8_C(91), SIMDE_POLY8_C(119), SIMDE_POLY8_C(69)},
{ { SIMDE_POLY8_C(198), SIMDE_POLY8_C(198), SIMDE_POLY8_C(198), SIMDE_POLY8_C(198), SIMDE_POLY8_C(198), SIMDE_POLY8_C(198), SIMDE_POLY8_C(198), SIMDE_POLY8_C(198),
SIMDE_POLY8_C(198), SIMDE_POLY8_C(198), SIMDE_POLY8_C(198), SIMDE_POLY8_C(198), SIMDE_POLY8_C(198), SIMDE_POLY8_C(198), SIMDE_POLY8_C(198), SIMDE_POLY8_C(198) },
{ SIMDE_POLY8_C(18), SIMDE_POLY8_C(18), SIMDE_POLY8_C(18), SIMDE_POLY8_C(18), SIMDE_POLY8_C(18), SIMDE_POLY8_C(18), SIMDE_POLY8_C(18), SIMDE_POLY8_C(18),
SIMDE_POLY8_C(18), SIMDE_POLY8_C(18), SIMDE_POLY8_C(18), SIMDE_POLY8_C(18), SIMDE_POLY8_C(18), SIMDE_POLY8_C(18), SIMDE_POLY8_C(18), SIMDE_POLY8_C(18) },
{ SIMDE_POLY8_C(101), SIMDE_POLY8_C(101), SIMDE_POLY8_C(101), SIMDE_POLY8_C(101), SIMDE_POLY8_C(101), SIMDE_POLY8_C(101), SIMDE_POLY8_C(101), SIMDE_POLY8_C(101),
SIMDE_POLY8_C(101), SIMDE_POLY8_C(101), SIMDE_POLY8_C(101), SIMDE_POLY8_C(101), SIMDE_POLY8_C(101), SIMDE_POLY8_C(101), SIMDE_POLY8_C(101), SIMDE_POLY8_C(101) } } },
{ { SIMDE_POLY8_C(148), SIMDE_POLY8_C(113), SIMDE_POLY8_C(110) },
{ SIMDE_POLY8_C(57), SIMDE_POLY8_C(103), SIMDE_POLY8_C(149)},
{ { SIMDE_POLY8_C(148), SIMDE_POLY8_C(148), SIMDE_POLY8_C(148), SIMDE_POLY8_C(148), SIMDE_POLY8_C(148), SIMDE_POLY8_C(148), SIMDE_POLY8_C(148), SIMDE_POLY8_C(148),
SIMDE_POLY8_C(148), SIMDE_POLY8_C(148), SIMDE_POLY8_C(148), SIMDE_POLY8_C(148), SIMDE_POLY8_C(148), SIMDE_POLY8_C(148), SIMDE_POLY8_C(148), SIMDE_POLY8_C(148) },
{ SIMDE_POLY8_C(113), SIMDE_POLY8_C(113), SIMDE_POLY8_C(113), SIMDE_POLY8_C(113), SIMDE_POLY8_C(113), SIMDE_POLY8_C(113), SIMDE_POLY8_C(113), SIMDE_POLY8_C(113),
SIMDE_POLY8_C(113), SIMDE_POLY8_C(113), SIMDE_POLY8_C(113), SIMDE_POLY8_C(113), SIMDE_POLY8_C(113), SIMDE_POLY8_C(113), SIMDE_POLY8_C(113), SIMDE_POLY8_C(113) },
{ SIMDE_POLY8_C(110), SIMDE_POLY8_C(110), SIMDE_POLY8_C(110), SIMDE_POLY8_C(110), SIMDE_POLY8_C(110), SIMDE_POLY8_C(110), SIMDE_POLY8_C(110), SIMDE_POLY8_C(110),
SIMDE_POLY8_C(110), SIMDE_POLY8_C(110), SIMDE_POLY8_C(110), SIMDE_POLY8_C(110), SIMDE_POLY8_C(110), SIMDE_POLY8_C(110), SIMDE_POLY8_C(110), SIMDE_POLY8_C(110) } } },
{ { SIMDE_POLY8_C(13), SIMDE_POLY8_C(140), SIMDE_POLY8_C(72) },
{ SIMDE_POLY8_C(114), SIMDE_POLY8_C(161), SIMDE_POLY8_C(131)},
{ { SIMDE_POLY8_C(13), SIMDE_POLY8_C(13), SIMDE_POLY8_C(13), SIMDE_POLY8_C(13), SIMDE_POLY8_C(13), SIMDE_POLY8_C(13), SIMDE_POLY8_C(13), SIMDE_POLY8_C(13),
SIMDE_POLY8_C(13), SIMDE_POLY8_C(13), SIMDE_POLY8_C(13), SIMDE_POLY8_C(13), SIMDE_POLY8_C(13), SIMDE_POLY8_C(13), SIMDE_POLY8_C(13), SIMDE_POLY8_C(13) },
{ SIMDE_POLY8_C(140), SIMDE_POLY8_C(140), SIMDE_POLY8_C(140), SIMDE_POLY8_C(140), SIMDE_POLY8_C(140), SIMDE_POLY8_C(140), SIMDE_POLY8_C(140), SIMDE_POLY8_C(140),
SIMDE_POLY8_C(140), SIMDE_POLY8_C(140), SIMDE_POLY8_C(140), SIMDE_POLY8_C(140), SIMDE_POLY8_C(140), SIMDE_POLY8_C(140), SIMDE_POLY8_C(140), SIMDE_POLY8_C(140) },
{ SIMDE_POLY8_C(72), SIMDE_POLY8_C(72), SIMDE_POLY8_C(72), SIMDE_POLY8_C(72), SIMDE_POLY8_C(72), SIMDE_POLY8_C(72), SIMDE_POLY8_C(72), SIMDE_POLY8_C(72),
SIMDE_POLY8_C(72), SIMDE_POLY8_C(72), SIMDE_POLY8_C(72), SIMDE_POLY8_C(72), SIMDE_POLY8_C(72), SIMDE_POLY8_C(72), SIMDE_POLY8_C(72), SIMDE_POLY8_C(72) } } },
{ { SIMDE_POLY8_C(66), SIMDE_POLY8_C(23), SIMDE_POLY8_C(149) },
{ SIMDE_POLY8_C(20), SIMDE_POLY8_C(31), SIMDE_POLY8_C(114)},
{ { SIMDE_POLY8_C(66), SIMDE_POLY8_C(66), SIMDE_POLY8_C(66), SIMDE_POLY8_C(66), SIMDE_POLY8_C(66), SIMDE_POLY8_C(66), SIMDE_POLY8_C(66), SIMDE_POLY8_C(66),
SIMDE_POLY8_C(66), SIMDE_POLY8_C(66), SIMDE_POLY8_C(66), SIMDE_POLY8_C(66), SIMDE_POLY8_C(66), SIMDE_POLY8_C(66), SIMDE_POLY8_C(66), SIMDE_POLY8_C(66) },
{ SIMDE_POLY8_C(23), SIMDE_POLY8_C(23), SIMDE_POLY8_C(23), SIMDE_POLY8_C(23), SIMDE_POLY8_C(23), SIMDE_POLY8_C(23), SIMDE_POLY8_C(23), SIMDE_POLY8_C(23),
SIMDE_POLY8_C(23), SIMDE_POLY8_C(23), SIMDE_POLY8_C(23), SIMDE_POLY8_C(23), SIMDE_POLY8_C(23), SIMDE_POLY8_C(23), SIMDE_POLY8_C(23), SIMDE_POLY8_C(23) },
{ SIMDE_POLY8_C(149), SIMDE_POLY8_C(149), SIMDE_POLY8_C(149), SIMDE_POLY8_C(149), SIMDE_POLY8_C(149), SIMDE_POLY8_C(149), SIMDE_POLY8_C(149), SIMDE_POLY8_C(149),
SIMDE_POLY8_C(149), SIMDE_POLY8_C(149), SIMDE_POLY8_C(149), SIMDE_POLY8_C(149), SIMDE_POLY8_C(149), SIMDE_POLY8_C(149), SIMDE_POLY8_C(149), SIMDE_POLY8_C(149) } } },
{ { SIMDE_POLY8_C(65), SIMDE_POLY8_C(19), SIMDE_POLY8_C(124) },
{ SIMDE_POLY8_C(31), SIMDE_POLY8_C(9), SIMDE_POLY8_C(194)},
{ { SIMDE_POLY8_C(65), SIMDE_POLY8_C(65), SIMDE_POLY8_C(65), SIMDE_POLY8_C(65), SIMDE_POLY8_C(65), SIMDE_POLY8_C(65), SIMDE_POLY8_C(65), SIMDE_POLY8_C(65),
SIMDE_POLY8_C(65), SIMDE_POLY8_C(65), SIMDE_POLY8_C(65), SIMDE_POLY8_C(65), SIMDE_POLY8_C(65), SIMDE_POLY8_C(65), SIMDE_POLY8_C(65), SIMDE_POLY8_C(65) },
{ SIMDE_POLY8_C(19), SIMDE_POLY8_C(19), SIMDE_POLY8_C(19), SIMDE_POLY8_C(19), SIMDE_POLY8_C(19), SIMDE_POLY8_C(19), SIMDE_POLY8_C(19), SIMDE_POLY8_C(19),
SIMDE_POLY8_C(19), SIMDE_POLY8_C(19), SIMDE_POLY8_C(19), SIMDE_POLY8_C(19), SIMDE_POLY8_C(19), SIMDE_POLY8_C(19), SIMDE_POLY8_C(19), SIMDE_POLY8_C(19) },
{ SIMDE_POLY8_C(124), SIMDE_POLY8_C(124), SIMDE_POLY8_C(124), SIMDE_POLY8_C(124), SIMDE_POLY8_C(124), SIMDE_POLY8_C(124), SIMDE_POLY8_C(124), SIMDE_POLY8_C(124),
SIMDE_POLY8_C(124), SIMDE_POLY8_C(124), SIMDE_POLY8_C(124), SIMDE_POLY8_C(124), SIMDE_POLY8_C(124), SIMDE_POLY8_C(124), SIMDE_POLY8_C(124), SIMDE_POLY8_C(124) } } },
{ { SIMDE_POLY8_C(72), SIMDE_POLY8_C(144), SIMDE_POLY8_C(159) },
{ SIMDE_POLY8_C(87), SIMDE_POLY8_C(134), SIMDE_POLY8_C(28)},
{ { SIMDE_POLY8_C(72), SIMDE_POLY8_C(72), SIMDE_POLY8_C(72), SIMDE_POLY8_C(72), SIMDE_POLY8_C(72), SIMDE_POLY8_C(72), SIMDE_POLY8_C(72), SIMDE_POLY8_C(72),
SIMDE_POLY8_C(72), SIMDE_POLY8_C(72), SIMDE_POLY8_C(72), SIMDE_POLY8_C(72), SIMDE_POLY8_C(72), SIMDE_POLY8_C(72), SIMDE_POLY8_C(72), SIMDE_POLY8_C(72) },
{ SIMDE_POLY8_C(144), SIMDE_POLY8_C(144), SIMDE_POLY8_C(144), SIMDE_POLY8_C(144), SIMDE_POLY8_C(144), SIMDE_POLY8_C(144), SIMDE_POLY8_C(144), SIMDE_POLY8_C(144),
SIMDE_POLY8_C(144), SIMDE_POLY8_C(144), SIMDE_POLY8_C(144), SIMDE_POLY8_C(144), SIMDE_POLY8_C(144), SIMDE_POLY8_C(144), SIMDE_POLY8_C(144), SIMDE_POLY8_C(144) },
{ SIMDE_POLY8_C(159), SIMDE_POLY8_C(159), SIMDE_POLY8_C(159), SIMDE_POLY8_C(159), SIMDE_POLY8_C(159), SIMDE_POLY8_C(159), SIMDE_POLY8_C(159), SIMDE_POLY8_C(159),
SIMDE_POLY8_C(159), SIMDE_POLY8_C(159), SIMDE_POLY8_C(159), SIMDE_POLY8_C(159), SIMDE_POLY8_C(159), SIMDE_POLY8_C(159), SIMDE_POLY8_C(159), SIMDE_POLY8_C(159) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_poly8x16x3_t r = simde_vld3q_dup_p8(test_vec[i].a);
simde_poly8x16x3_t expected = {
{simde_vld1q_p8(test_vec[i].r[0]), simde_vld1q_p8(test_vec[i].r[1]), simde_vld1q_p8(test_vec[i].r[2])}};
simde_test_arm_neon_assert_equal_p8x16(r.val[0], expected.val[0]);
simde_test_arm_neon_assert_equal_p8x16(r.val[1], expected.val[1]);
simde_test_arm_neon_assert_equal_p8x16(r.val[2], expected.val[2]);
}
return 0;
#else
for (int i = 0 ; i < 4 ; i++) {
simde_poly8_t a[3];
simde_poly8_t unused[3];
simde_poly8x16x3_t r;
simde_test_codegen_random_memory(3, HEDLEY_REINTERPRET_CAST(uint8_t*, a));
simde_test_codegen_random_memory(3, HEDLEY_REINTERPRET_CAST(uint8_t*, unused));
r = simde_vld3q_dup_p8(a);
// Random buffer between pointer to load and expected results to check for
// loading out of bounds.
simde_test_codegen_write_vp8(2, 3, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_codegen_write_vp8(2, 3, unused, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_p8x16x3(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vld3q_dup_p16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
simde_poly16_t a[3];
simde_poly16_t unused[3];
simde_poly16_t r[3][8];
} test_vec[] = {
{ { SIMDE_POLY16_C(13221), SIMDE_POLY16_C(12229), SIMDE_POLY16_C(11071) },
{ SIMDE_POLY16_C(17602), SIMDE_POLY16_C(4227), SIMDE_POLY16_C(7666)},
{ { SIMDE_POLY16_C(13221), SIMDE_POLY16_C(13221), SIMDE_POLY16_C(13221), SIMDE_POLY16_C(13221),
SIMDE_POLY16_C(13221), SIMDE_POLY16_C(13221), SIMDE_POLY16_C(13221), SIMDE_POLY16_C(13221) },
{ SIMDE_POLY16_C(12229), SIMDE_POLY16_C(12229), SIMDE_POLY16_C(12229), SIMDE_POLY16_C(12229),
SIMDE_POLY16_C(12229), SIMDE_POLY16_C(12229), SIMDE_POLY16_C(12229), SIMDE_POLY16_C(12229) },
{ SIMDE_POLY16_C(11071), SIMDE_POLY16_C(11071), SIMDE_POLY16_C(11071), SIMDE_POLY16_C(11071),
SIMDE_POLY16_C(11071), SIMDE_POLY16_C(11071), SIMDE_POLY16_C(11071), SIMDE_POLY16_C(11071) } } },
{ { SIMDE_POLY16_C(12420), SIMDE_POLY16_C(14500), SIMDE_POLY16_C(12248) },
{ SIMDE_POLY16_C(17926), SIMDE_POLY16_C(17458), SIMDE_POLY16_C(3685)},
{ { SIMDE_POLY16_C(12420), SIMDE_POLY16_C(12420), SIMDE_POLY16_C(12420), SIMDE_POLY16_C(12420),
SIMDE_POLY16_C(12420), SIMDE_POLY16_C(12420), SIMDE_POLY16_C(12420), SIMDE_POLY16_C(12420) },
{ SIMDE_POLY16_C(14500), SIMDE_POLY16_C(14500), SIMDE_POLY16_C(14500), SIMDE_POLY16_C(14500),
SIMDE_POLY16_C(14500), SIMDE_POLY16_C(14500), SIMDE_POLY16_C(14500), SIMDE_POLY16_C(14500) },
{ SIMDE_POLY16_C(12248), SIMDE_POLY16_C(12248), SIMDE_POLY16_C(12248), SIMDE_POLY16_C(12248),
SIMDE_POLY16_C(12248), SIMDE_POLY16_C(12248), SIMDE_POLY16_C(12248), SIMDE_POLY16_C(12248) } } },
{ { SIMDE_POLY16_C(8504), SIMDE_POLY16_C(3056), SIMDE_POLY16_C(15978) },
{ SIMDE_POLY16_C(11648), SIMDE_POLY16_C(2353), SIMDE_POLY16_C(16355)},
{ { SIMDE_POLY16_C(8504), SIMDE_POLY16_C(8504), SIMDE_POLY16_C(8504), SIMDE_POLY16_C(8504),
SIMDE_POLY16_C(8504), SIMDE_POLY16_C(8504), SIMDE_POLY16_C(8504), SIMDE_POLY16_C(8504) },
{ SIMDE_POLY16_C(3056), SIMDE_POLY16_C(3056), SIMDE_POLY16_C(3056), SIMDE_POLY16_C(3056),
SIMDE_POLY16_C(3056), SIMDE_POLY16_C(3056), SIMDE_POLY16_C(3056), SIMDE_POLY16_C(3056) },
{ SIMDE_POLY16_C(15978), SIMDE_POLY16_C(15978), SIMDE_POLY16_C(15978), SIMDE_POLY16_C(15978),
SIMDE_POLY16_C(15978), SIMDE_POLY16_C(15978), SIMDE_POLY16_C(15978), SIMDE_POLY16_C(15978) } } },
{ { SIMDE_POLY16_C(15523), SIMDE_POLY16_C(1359), SIMDE_POLY16_C(16502) },
{ SIMDE_POLY16_C(13928), SIMDE_POLY16_C(5794), SIMDE_POLY16_C(818)},
{ { SIMDE_POLY16_C(15523), SIMDE_POLY16_C(15523), SIMDE_POLY16_C(15523), SIMDE_POLY16_C(15523),
SIMDE_POLY16_C(15523), SIMDE_POLY16_C(15523), SIMDE_POLY16_C(15523), SIMDE_POLY16_C(15523) },
{ SIMDE_POLY16_C(1359), SIMDE_POLY16_C(1359), SIMDE_POLY16_C(1359), SIMDE_POLY16_C(1359),
SIMDE_POLY16_C(1359), SIMDE_POLY16_C(1359), SIMDE_POLY16_C(1359), SIMDE_POLY16_C(1359) },
{ SIMDE_POLY16_C(16502), SIMDE_POLY16_C(16502), SIMDE_POLY16_C(16502), SIMDE_POLY16_C(16502),
SIMDE_POLY16_C(16502), SIMDE_POLY16_C(16502), SIMDE_POLY16_C(16502), SIMDE_POLY16_C(16502) } } },
{ { SIMDE_POLY16_C(19929), SIMDE_POLY16_C(2856), SIMDE_POLY16_C(3524) },
{ SIMDE_POLY16_C(4725), SIMDE_POLY16_C(16666), SIMDE_POLY16_C(9010)},
{ { SIMDE_POLY16_C(19929), SIMDE_POLY16_C(19929), SIMDE_POLY16_C(19929), SIMDE_POLY16_C(19929),
SIMDE_POLY16_C(19929), SIMDE_POLY16_C(19929), SIMDE_POLY16_C(19929), SIMDE_POLY16_C(19929) },
{ SIMDE_POLY16_C(2856), SIMDE_POLY16_C(2856), SIMDE_POLY16_C(2856), SIMDE_POLY16_C(2856),
SIMDE_POLY16_C(2856), SIMDE_POLY16_C(2856), SIMDE_POLY16_C(2856), SIMDE_POLY16_C(2856) },
{ SIMDE_POLY16_C(3524), SIMDE_POLY16_C(3524), SIMDE_POLY16_C(3524), SIMDE_POLY16_C(3524),
SIMDE_POLY16_C(3524), SIMDE_POLY16_C(3524), SIMDE_POLY16_C(3524), SIMDE_POLY16_C(3524) } } },
{ { SIMDE_POLY16_C(1112), SIMDE_POLY16_C(8015), SIMDE_POLY16_C(4791) },
{ SIMDE_POLY16_C(18035), SIMDE_POLY16_C(7170), SIMDE_POLY16_C(3494)},
{ { SIMDE_POLY16_C(1112), SIMDE_POLY16_C(1112), SIMDE_POLY16_C(1112), SIMDE_POLY16_C(1112),
SIMDE_POLY16_C(1112), SIMDE_POLY16_C(1112), SIMDE_POLY16_C(1112), SIMDE_POLY16_C(1112) },
{ SIMDE_POLY16_C(8015), SIMDE_POLY16_C(8015), SIMDE_POLY16_C(8015), SIMDE_POLY16_C(8015),
SIMDE_POLY16_C(8015), SIMDE_POLY16_C(8015), SIMDE_POLY16_C(8015), SIMDE_POLY16_C(8015) },
{ SIMDE_POLY16_C(4791), SIMDE_POLY16_C(4791), SIMDE_POLY16_C(4791), SIMDE_POLY16_C(4791),
SIMDE_POLY16_C(4791), SIMDE_POLY16_C(4791), SIMDE_POLY16_C(4791), SIMDE_POLY16_C(4791) } } },
{ { SIMDE_POLY16_C(19750), SIMDE_POLY16_C(19409), SIMDE_POLY16_C(17275) },
{ SIMDE_POLY16_C(5089), SIMDE_POLY16_C(5163), SIMDE_POLY16_C(18594)},
{ { SIMDE_POLY16_C(19750), SIMDE_POLY16_C(19750), SIMDE_POLY16_C(19750), SIMDE_POLY16_C(19750),
SIMDE_POLY16_C(19750), SIMDE_POLY16_C(19750), SIMDE_POLY16_C(19750), SIMDE_POLY16_C(19750) },
{ SIMDE_POLY16_C(19409), SIMDE_POLY16_C(19409), SIMDE_POLY16_C(19409), SIMDE_POLY16_C(19409),
SIMDE_POLY16_C(19409), SIMDE_POLY16_C(19409), SIMDE_POLY16_C(19409), SIMDE_POLY16_C(19409) },
{ SIMDE_POLY16_C(17275), SIMDE_POLY16_C(17275), SIMDE_POLY16_C(17275), SIMDE_POLY16_C(17275),
SIMDE_POLY16_C(17275), SIMDE_POLY16_C(17275), SIMDE_POLY16_C(17275), SIMDE_POLY16_C(17275) } } },
{ { SIMDE_POLY16_C(7578), SIMDE_POLY16_C(8951), SIMDE_POLY16_C(11969) },
{ SIMDE_POLY16_C(15208), SIMDE_POLY16_C(9477), SIMDE_POLY16_C(18579)},
{ { SIMDE_POLY16_C(7578), SIMDE_POLY16_C(7578), SIMDE_POLY16_C(7578), SIMDE_POLY16_C(7578),
SIMDE_POLY16_C(7578), SIMDE_POLY16_C(7578), SIMDE_POLY16_C(7578), SIMDE_POLY16_C(7578) },
{ SIMDE_POLY16_C(8951), SIMDE_POLY16_C(8951), SIMDE_POLY16_C(8951), SIMDE_POLY16_C(8951),
SIMDE_POLY16_C(8951), SIMDE_POLY16_C(8951), SIMDE_POLY16_C(8951), SIMDE_POLY16_C(8951) },
{ SIMDE_POLY16_C(11969), SIMDE_POLY16_C(11969), SIMDE_POLY16_C(11969), SIMDE_POLY16_C(11969),
SIMDE_POLY16_C(11969), SIMDE_POLY16_C(11969), SIMDE_POLY16_C(11969), SIMDE_POLY16_C(11969) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_poly16x8x3_t r = simde_vld3q_dup_p16(test_vec[i].a);
simde_poly16x8x3_t expected = {
{simde_vld1q_p16(test_vec[i].r[0]), simde_vld1q_p16(test_vec[i].r[1]), simde_vld1q_p16(test_vec[i].r[2])}};
simde_test_arm_neon_assert_equal_p16x8(r.val[0], expected.val[0]);
simde_test_arm_neon_assert_equal_p16x8(r.val[1], expected.val[1]);
simde_test_arm_neon_assert_equal_p16x8(r.val[2], expected.val[2]);
}
return 0;
#else
for (int i = 0 ; i < 4 ; i++) {
simde_poly16_t a[3];
simde_poly16_t unused[3];
simde_poly16x8x3_t r;
simde_test_codegen_random_memory(6, HEDLEY_REINTERPRET_CAST(uint8_t*, a));
simde_test_codegen_random_memory(6, HEDLEY_REINTERPRET_CAST(uint8_t*, unused));
r = simde_vld3q_dup_p16(a);
// Random buffer between pointer to load and expected results to check for
// loading out of bounds.
simde_test_codegen_write_vp16(2, 3, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_codegen_write_vp16(2, 3, unused, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_p16x8x3(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vld3q_dup_p64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
simde_poly64_t a[3];
simde_poly64_t unused[3];
simde_poly64_t r[3][2];
} test_vec[] = {
{ { SIMDE_POLY64_C(155091681), SIMDE_POLY64_C(112589773), SIMDE_POLY64_C(63143791) },
{ SIMDE_POLY64_C(23716520), SIMDE_POLY64_C(176818970), SIMDE_POLY64_C(116173662)},
{ { SIMDE_POLY64_C(155091681), SIMDE_POLY64_C(155091681) },
{ SIMDE_POLY64_C(112589773), SIMDE_POLY64_C(112589773) },
{ SIMDE_POLY64_C(63143791), SIMDE_POLY64_C(63143791) } } },
{ { SIMDE_POLY64_C(130942524), SIMDE_POLY64_C(57780860), SIMDE_POLY64_C(31934739) },
{ SIMDE_POLY64_C(176079421), SIMDE_POLY64_C(5675018), SIMDE_POLY64_C(63494312)},
{ { SIMDE_POLY64_C(130942524), SIMDE_POLY64_C(130942524) },
{ SIMDE_POLY64_C(57780860), SIMDE_POLY64_C(57780860) },
{ SIMDE_POLY64_C(31934739), SIMDE_POLY64_C(31934739) } } },
{ { SIMDE_POLY64_C(194457642), SIMDE_POLY64_C(39554875), SIMDE_POLY64_C(15224283) },
{ SIMDE_POLY64_C(71051928), SIMDE_POLY64_C(81814738), SIMDE_POLY64_C(2283266)},
{ { SIMDE_POLY64_C(194457642), SIMDE_POLY64_C(194457642) },
{ SIMDE_POLY64_C(39554875), SIMDE_POLY64_C(39554875) },
{ SIMDE_POLY64_C(15224283), SIMDE_POLY64_C(15224283) } } },
{ { SIMDE_POLY64_C(23817396), SIMDE_POLY64_C(113541293), SIMDE_POLY64_C(123440835) },
{ SIMDE_POLY64_C(102375805), SIMDE_POLY64_C(133049515), SIMDE_POLY64_C(41509326)},
{ { SIMDE_POLY64_C(23817396), SIMDE_POLY64_C(23817396) },
{ SIMDE_POLY64_C(113541293), SIMDE_POLY64_C(113541293) },
{ SIMDE_POLY64_C(123440835), SIMDE_POLY64_C(123440835) } } },
{ { SIMDE_POLY64_C(2000000), SIMDE_POLY64_C(51642274), SIMDE_POLY64_C(110635130) },
{ SIMDE_POLY64_C(133946772), SIMDE_POLY64_C(153402717), SIMDE_POLY64_C(120380529)},
{ { SIMDE_POLY64_C(2000000), SIMDE_POLY64_C(2000000) },
{ SIMDE_POLY64_C(51642274), SIMDE_POLY64_C(51642274) },
{ SIMDE_POLY64_C(110635130), SIMDE_POLY64_C(110635130) } } },
{ { SIMDE_POLY64_C(174832616), SIMDE_POLY64_C(187609954), SIMDE_POLY64_C(22590510) },
{ SIMDE_POLY64_C(93628333), SIMDE_POLY64_C(86283110), SIMDE_POLY64_C(199160701)},
{ { SIMDE_POLY64_C(174832616), SIMDE_POLY64_C(174832616) },
{ SIMDE_POLY64_C(187609954), SIMDE_POLY64_C(187609954) },
{ SIMDE_POLY64_C(22590510), SIMDE_POLY64_C(22590510) } } },
{ { SIMDE_POLY64_C(137018276), SIMDE_POLY64_C(195056582), SIMDE_POLY64_C(193644384) },
{ SIMDE_POLY64_C(108521062), SIMDE_POLY64_C(28373149), SIMDE_POLY64_C(12285757)},
{ { SIMDE_POLY64_C(137018276), SIMDE_POLY64_C(137018276) },
{ SIMDE_POLY64_C(195056582), SIMDE_POLY64_C(195056582) },
{ SIMDE_POLY64_C(193644384), SIMDE_POLY64_C(193644384) } } },
{ { SIMDE_POLY64_C(56333011), SIMDE_POLY64_C(89077389), SIMDE_POLY64_C(76364445) },
{ SIMDE_POLY64_C(662711), SIMDE_POLY64_C(94837583), SIMDE_POLY64_C(180422589)},
{ { SIMDE_POLY64_C(56333011), SIMDE_POLY64_C(56333011) },
{ SIMDE_POLY64_C(89077389), SIMDE_POLY64_C(89077389) },
{ SIMDE_POLY64_C(76364445), SIMDE_POLY64_C(76364445) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_poly64x2x3_t r = simde_vld3q_dup_p64(test_vec[i].a);
simde_poly64x2x3_t expected = {
{simde_vld1q_p64(test_vec[i].r[0]), simde_vld1q_p64(test_vec[i].r[1]), simde_vld1q_p64(test_vec[i].r[2])}};
simde_test_arm_neon_assert_equal_p64x2(r.val[0], expected.val[0]);
simde_test_arm_neon_assert_equal_p64x2(r.val[1], expected.val[1]);
simde_test_arm_neon_assert_equal_p64x2(r.val[2], expected.val[2]);
}
return 0;
#else
for (int i = 0 ; i < 4 ; i++) {
simde_poly64_t a[3];
simde_poly64_t unused[3];
simde_poly64x2x3_t r;
simde_test_codegen_random_memory(24, HEDLEY_REINTERPRET_CAST(uint8_t*, a));
simde_test_codegen_random_memory(24, HEDLEY_REINTERPRET_CAST(uint8_t*, unused));
r = simde_vld3q_dup_p64(a);
// Random buffer between pointer to load and expected results to check for
// loading out of bounds.
simde_test_codegen_write_vp64(2, 3, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_codegen_write_vp64(2, 3, unused, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_p64x2x3(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vld3_dup_bf16 (SIMDE_MUNIT_TEST_ARGS) {
struct {
simde_bfloat16_t a[3];
simde_bfloat16_t unused[3];
simde_bfloat16_t r[3][4];
} test_vec[] = {
{ { SIMDE_BFLOAT16_VALUE(-6.58), SIMDE_BFLOAT16_VALUE(2.17), SIMDE_BFLOAT16_VALUE(3.51) },
{ SIMDE_BFLOAT16_VALUE(-28.23), SIMDE_BFLOAT16_VALUE(27.18), SIMDE_BFLOAT16_VALUE(21.06)},
{ { SIMDE_BFLOAT16_VALUE(-6.58), SIMDE_BFLOAT16_VALUE(-6.58), SIMDE_BFLOAT16_VALUE(-6.58), SIMDE_BFLOAT16_VALUE(-6.58) },
{ SIMDE_BFLOAT16_VALUE(2.17), SIMDE_BFLOAT16_VALUE(2.17), SIMDE_BFLOAT16_VALUE(2.17), SIMDE_BFLOAT16_VALUE(2.17) },
{ SIMDE_BFLOAT16_VALUE(3.51), SIMDE_BFLOAT16_VALUE(3.51), SIMDE_BFLOAT16_VALUE(3.51), SIMDE_BFLOAT16_VALUE(3.51) } } },
{ { SIMDE_BFLOAT16_VALUE(-46.99), SIMDE_BFLOAT16_VALUE(-6.72), SIMDE_BFLOAT16_VALUE(41.08) },
{ SIMDE_BFLOAT16_VALUE(-2.06), SIMDE_BFLOAT16_VALUE(-6.78), SIMDE_BFLOAT16_VALUE(36.58)},
{ { SIMDE_BFLOAT16_VALUE(-46.99), SIMDE_BFLOAT16_VALUE(-46.99), SIMDE_BFLOAT16_VALUE(-46.99), SIMDE_BFLOAT16_VALUE(-46.99) },
{ SIMDE_BFLOAT16_VALUE(-6.72), SIMDE_BFLOAT16_VALUE(-6.72), SIMDE_BFLOAT16_VALUE(-6.72), SIMDE_BFLOAT16_VALUE(-6.72) },
{ SIMDE_BFLOAT16_VALUE(41.08), SIMDE_BFLOAT16_VALUE(41.08), SIMDE_BFLOAT16_VALUE(41.08), SIMDE_BFLOAT16_VALUE(41.08) } } },
{ { SIMDE_BFLOAT16_VALUE(39.86), SIMDE_BFLOAT16_VALUE(40.77), SIMDE_BFLOAT16_VALUE(-32.22) },
{ SIMDE_BFLOAT16_VALUE(-24.94), SIMDE_BFLOAT16_VALUE(-38.80), SIMDE_BFLOAT16_VALUE(7.87)},
{ { SIMDE_BFLOAT16_VALUE(39.86), SIMDE_BFLOAT16_VALUE(39.86), SIMDE_BFLOAT16_VALUE(39.86), SIMDE_BFLOAT16_VALUE(39.86) },
{ SIMDE_BFLOAT16_VALUE(40.77), SIMDE_BFLOAT16_VALUE(40.77), SIMDE_BFLOAT16_VALUE(40.77), SIMDE_BFLOAT16_VALUE(40.77) },
{ SIMDE_BFLOAT16_VALUE(-32.22), SIMDE_BFLOAT16_VALUE(-32.22), SIMDE_BFLOAT16_VALUE(-32.22), SIMDE_BFLOAT16_VALUE(-32.22) } } },
{ { SIMDE_BFLOAT16_VALUE(3.72), SIMDE_BFLOAT16_VALUE(45.41), SIMDE_BFLOAT16_VALUE(4.48) },
{ SIMDE_BFLOAT16_VALUE(47.09), SIMDE_BFLOAT16_VALUE(-24.14), SIMDE_BFLOAT16_VALUE(-0.13)},
{ { SIMDE_BFLOAT16_VALUE(3.72), SIMDE_BFLOAT16_VALUE(3.72), SIMDE_BFLOAT16_VALUE(3.72), SIMDE_BFLOAT16_VALUE(3.72) },
{ SIMDE_BFLOAT16_VALUE(45.41), SIMDE_BFLOAT16_VALUE(45.41), SIMDE_BFLOAT16_VALUE(45.41), SIMDE_BFLOAT16_VALUE(45.41) },
{ SIMDE_BFLOAT16_VALUE(4.48), SIMDE_BFLOAT16_VALUE(4.48), SIMDE_BFLOAT16_VALUE(4.48), SIMDE_BFLOAT16_VALUE(4.48) } } },
{ { SIMDE_BFLOAT16_VALUE(-31.75), SIMDE_BFLOAT16_VALUE(20.34), SIMDE_BFLOAT16_VALUE(-29.59) },
{ SIMDE_BFLOAT16_VALUE(-11.56), SIMDE_BFLOAT16_VALUE(-7.53), SIMDE_BFLOAT16_VALUE(28.61)},
{ { SIMDE_BFLOAT16_VALUE(-31.75), SIMDE_BFLOAT16_VALUE(-31.75), SIMDE_BFLOAT16_VALUE(-31.75), SIMDE_BFLOAT16_VALUE(-31.75) },
{ SIMDE_BFLOAT16_VALUE(20.34), SIMDE_BFLOAT16_VALUE(20.34), SIMDE_BFLOAT16_VALUE(20.34), SIMDE_BFLOAT16_VALUE(20.34) },
{ SIMDE_BFLOAT16_VALUE(-29.59), SIMDE_BFLOAT16_VALUE(-29.59), SIMDE_BFLOAT16_VALUE(-29.59), SIMDE_BFLOAT16_VALUE(-29.59) } } },
{ { SIMDE_BFLOAT16_VALUE(37.05), SIMDE_BFLOAT16_VALUE(17.72), SIMDE_BFLOAT16_VALUE(-49.37) },
{ SIMDE_BFLOAT16_VALUE(-27.61), SIMDE_BFLOAT16_VALUE(-29.16), SIMDE_BFLOAT16_VALUE(2.30)},
{ { SIMDE_BFLOAT16_VALUE(37.05), SIMDE_BFLOAT16_VALUE(37.05), SIMDE_BFLOAT16_VALUE(37.05), SIMDE_BFLOAT16_VALUE(37.05) },
{ SIMDE_BFLOAT16_VALUE(17.72), SIMDE_BFLOAT16_VALUE(17.72), SIMDE_BFLOAT16_VALUE(17.72), SIMDE_BFLOAT16_VALUE(17.72) },
{ SIMDE_BFLOAT16_VALUE(-49.37), SIMDE_BFLOAT16_VALUE(-49.37), SIMDE_BFLOAT16_VALUE(-49.37), SIMDE_BFLOAT16_VALUE(-49.37) } } },
{ { SIMDE_BFLOAT16_VALUE(-49.24), SIMDE_BFLOAT16_VALUE(-2.48), SIMDE_BFLOAT16_VALUE(-45.21) },
{ SIMDE_BFLOAT16_VALUE(19.81), SIMDE_BFLOAT16_VALUE(5.79), SIMDE_BFLOAT16_VALUE(42.08)},
{ { SIMDE_BFLOAT16_VALUE(-49.24), SIMDE_BFLOAT16_VALUE(-49.24), SIMDE_BFLOAT16_VALUE(-49.24), SIMDE_BFLOAT16_VALUE(-49.24) },
{ SIMDE_BFLOAT16_VALUE(-2.48), SIMDE_BFLOAT16_VALUE(-2.48), SIMDE_BFLOAT16_VALUE(-2.48), SIMDE_BFLOAT16_VALUE(-2.48) },
{ SIMDE_BFLOAT16_VALUE(-45.21), SIMDE_BFLOAT16_VALUE(-45.21), SIMDE_BFLOAT16_VALUE(-45.21), SIMDE_BFLOAT16_VALUE(-45.21) } } },
{ { SIMDE_BFLOAT16_VALUE(26.41), SIMDE_BFLOAT16_VALUE(49.96), SIMDE_BFLOAT16_VALUE(20.11) },
{ SIMDE_BFLOAT16_VALUE(34.64), SIMDE_BFLOAT16_VALUE(-7.87), SIMDE_BFLOAT16_VALUE(-43.78)},
{ { SIMDE_BFLOAT16_VALUE(26.41), SIMDE_BFLOAT16_VALUE(26.41), SIMDE_BFLOAT16_VALUE(26.41), SIMDE_BFLOAT16_VALUE(26.41) },
{ SIMDE_BFLOAT16_VALUE(49.96), SIMDE_BFLOAT16_VALUE(49.96), SIMDE_BFLOAT16_VALUE(49.96), SIMDE_BFLOAT16_VALUE(49.96) },
{ SIMDE_BFLOAT16_VALUE(20.11), SIMDE_BFLOAT16_VALUE(20.11), SIMDE_BFLOAT16_VALUE(20.11), SIMDE_BFLOAT16_VALUE(20.11) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_bfloat16x4x3_t r = simde_vld3_dup_bf16(test_vec[i].a);
simde_bfloat16x4x3_t expected = {
{simde_vld1_bf16(test_vec[i].r[0]), simde_vld1_bf16(test_vec[i].r[1]), simde_vld1_bf16(test_vec[i].r[2])}};
simde_test_arm_neon_assert_equal_bf16x4(r.val[0], expected.val[0], INT_MAX);
simde_test_arm_neon_assert_equal_bf16x4(r.val[1], expected.val[1], INT_MAX);
simde_test_arm_neon_assert_equal_bf16x4(r.val[2], expected.val[2], INT_MAX);
}
return 0;
}
static int
test_simde_vld3q_dup_bf16 (SIMDE_MUNIT_TEST_ARGS) {
struct {
simde_bfloat16_t a[3];
simde_bfloat16_t unused[3];
simde_bfloat16_t r[3][8];
} test_vec[] = {
{ { SIMDE_BFLOAT16_VALUE(20.19), SIMDE_BFLOAT16_VALUE(16.39), SIMDE_BFLOAT16_VALUE(46.17) },
{ SIMDE_BFLOAT16_VALUE(29.32), SIMDE_BFLOAT16_VALUE(-18.79), SIMDE_BFLOAT16_VALUE(30.83)},
{ { SIMDE_BFLOAT16_VALUE(20.19), SIMDE_BFLOAT16_VALUE(20.19), SIMDE_BFLOAT16_VALUE(20.19), SIMDE_BFLOAT16_VALUE(20.19),
SIMDE_BFLOAT16_VALUE(20.19), SIMDE_BFLOAT16_VALUE(20.19), SIMDE_BFLOAT16_VALUE(20.19), SIMDE_BFLOAT16_VALUE(20.19) },
{ SIMDE_BFLOAT16_VALUE(16.39), SIMDE_BFLOAT16_VALUE(16.39), SIMDE_BFLOAT16_VALUE(16.39), SIMDE_BFLOAT16_VALUE(16.39),
SIMDE_BFLOAT16_VALUE(16.39), SIMDE_BFLOAT16_VALUE(16.39), SIMDE_BFLOAT16_VALUE(16.39), SIMDE_BFLOAT16_VALUE(16.39) },
{ SIMDE_BFLOAT16_VALUE(46.17), SIMDE_BFLOAT16_VALUE(46.17), SIMDE_BFLOAT16_VALUE(46.17), SIMDE_BFLOAT16_VALUE(46.17),
SIMDE_BFLOAT16_VALUE(46.17), SIMDE_BFLOAT16_VALUE(46.17), SIMDE_BFLOAT16_VALUE(46.17), SIMDE_BFLOAT16_VALUE(46.17) } } },
{ { SIMDE_BFLOAT16_VALUE(-48.67), SIMDE_BFLOAT16_VALUE(-21.20), SIMDE_BFLOAT16_VALUE(-45.20) },
{ SIMDE_BFLOAT16_VALUE(6.72), SIMDE_BFLOAT16_VALUE(10.70), SIMDE_BFLOAT16_VALUE(32.09)},
{ { SIMDE_BFLOAT16_VALUE(-48.67), SIMDE_BFLOAT16_VALUE(-48.67), SIMDE_BFLOAT16_VALUE(-48.67), SIMDE_BFLOAT16_VALUE(-48.67),
SIMDE_BFLOAT16_VALUE(-48.67), SIMDE_BFLOAT16_VALUE(-48.67), SIMDE_BFLOAT16_VALUE(-48.67), SIMDE_BFLOAT16_VALUE(-48.67) },
{ SIMDE_BFLOAT16_VALUE(-21.20), SIMDE_BFLOAT16_VALUE(-21.20), SIMDE_BFLOAT16_VALUE(-21.20), SIMDE_BFLOAT16_VALUE(-21.20),
SIMDE_BFLOAT16_VALUE(-21.20), SIMDE_BFLOAT16_VALUE(-21.20), SIMDE_BFLOAT16_VALUE(-21.20), SIMDE_BFLOAT16_VALUE(-21.20) },
{ SIMDE_BFLOAT16_VALUE(-45.20), SIMDE_BFLOAT16_VALUE(-45.20), SIMDE_BFLOAT16_VALUE(-45.20), SIMDE_BFLOAT16_VALUE(-45.20),
SIMDE_BFLOAT16_VALUE(-45.20), SIMDE_BFLOAT16_VALUE(-45.20), SIMDE_BFLOAT16_VALUE(-45.20), SIMDE_BFLOAT16_VALUE(-45.20) } } },
{ { SIMDE_BFLOAT16_VALUE(-29.85), SIMDE_BFLOAT16_VALUE(24.77), SIMDE_BFLOAT16_VALUE(7.75) },
{ SIMDE_BFLOAT16_VALUE(-19.50), SIMDE_BFLOAT16_VALUE(-45.53), SIMDE_BFLOAT16_VALUE(21.67)},
{ { SIMDE_BFLOAT16_VALUE(-29.85), SIMDE_BFLOAT16_VALUE(-29.85), SIMDE_BFLOAT16_VALUE(-29.85), SIMDE_BFLOAT16_VALUE(-29.85),
SIMDE_BFLOAT16_VALUE(-29.85), SIMDE_BFLOAT16_VALUE(-29.85), SIMDE_BFLOAT16_VALUE(-29.85), SIMDE_BFLOAT16_VALUE(-29.85) },
{ SIMDE_BFLOAT16_VALUE(24.77), SIMDE_BFLOAT16_VALUE(24.77), SIMDE_BFLOAT16_VALUE(24.77), SIMDE_BFLOAT16_VALUE(24.77),
SIMDE_BFLOAT16_VALUE(24.77), SIMDE_BFLOAT16_VALUE(24.77), SIMDE_BFLOAT16_VALUE(24.77), SIMDE_BFLOAT16_VALUE(24.77) },
{ SIMDE_BFLOAT16_VALUE(7.75), SIMDE_BFLOAT16_VALUE(7.75), SIMDE_BFLOAT16_VALUE(7.75), SIMDE_BFLOAT16_VALUE(7.75),
SIMDE_BFLOAT16_VALUE(7.75), SIMDE_BFLOAT16_VALUE(7.75), SIMDE_BFLOAT16_VALUE(7.75), SIMDE_BFLOAT16_VALUE(7.75) } } },
{ { SIMDE_BFLOAT16_VALUE(-4.91), SIMDE_BFLOAT16_VALUE(-25.17), SIMDE_BFLOAT16_VALUE(45.00) },
{ SIMDE_BFLOAT16_VALUE(2.89), SIMDE_BFLOAT16_VALUE(7.87), SIMDE_BFLOAT16_VALUE(24.69)},
{ { SIMDE_BFLOAT16_VALUE(-4.91), SIMDE_BFLOAT16_VALUE(-4.91), SIMDE_BFLOAT16_VALUE(-4.91), SIMDE_BFLOAT16_VALUE(-4.91),
SIMDE_BFLOAT16_VALUE(-4.91), SIMDE_BFLOAT16_VALUE(-4.91), SIMDE_BFLOAT16_VALUE(-4.91), SIMDE_BFLOAT16_VALUE(-4.91) },
{ SIMDE_BFLOAT16_VALUE(-25.17), SIMDE_BFLOAT16_VALUE(-25.17), SIMDE_BFLOAT16_VALUE(-25.17), SIMDE_BFLOAT16_VALUE(-25.17),
SIMDE_BFLOAT16_VALUE(-25.17), SIMDE_BFLOAT16_VALUE(-25.17), SIMDE_BFLOAT16_VALUE(-25.17), SIMDE_BFLOAT16_VALUE(-25.17) },
{ SIMDE_BFLOAT16_VALUE(45.00), SIMDE_BFLOAT16_VALUE(45.00), SIMDE_BFLOAT16_VALUE(45.00), SIMDE_BFLOAT16_VALUE(45.00),
SIMDE_BFLOAT16_VALUE(45.00), SIMDE_BFLOAT16_VALUE(45.00), SIMDE_BFLOAT16_VALUE(45.00), SIMDE_BFLOAT16_VALUE(45.00) } } },
{ { SIMDE_BFLOAT16_VALUE(-47.11), SIMDE_BFLOAT16_VALUE(-3.75), SIMDE_BFLOAT16_VALUE(44.40) },
{ SIMDE_BFLOAT16_VALUE(-8.68), SIMDE_BFLOAT16_VALUE(49.28), SIMDE_BFLOAT16_VALUE(49.67)},
{ { SIMDE_BFLOAT16_VALUE(-47.11), SIMDE_BFLOAT16_VALUE(-47.11), SIMDE_BFLOAT16_VALUE(-47.11), SIMDE_BFLOAT16_VALUE(-47.11),
SIMDE_BFLOAT16_VALUE(-47.11), SIMDE_BFLOAT16_VALUE(-47.11), SIMDE_BFLOAT16_VALUE(-47.11), SIMDE_BFLOAT16_VALUE(-47.11) },
{ SIMDE_BFLOAT16_VALUE(-3.75), SIMDE_BFLOAT16_VALUE(-3.75), SIMDE_BFLOAT16_VALUE(-3.75), SIMDE_BFLOAT16_VALUE(-3.75),
SIMDE_BFLOAT16_VALUE(-3.75), SIMDE_BFLOAT16_VALUE(-3.75), SIMDE_BFLOAT16_VALUE(-3.75), SIMDE_BFLOAT16_VALUE(-3.75) },
{ SIMDE_BFLOAT16_VALUE(44.40), SIMDE_BFLOAT16_VALUE(44.40), SIMDE_BFLOAT16_VALUE(44.40), SIMDE_BFLOAT16_VALUE(44.40),
SIMDE_BFLOAT16_VALUE(44.40), SIMDE_BFLOAT16_VALUE(44.40), SIMDE_BFLOAT16_VALUE(44.40), SIMDE_BFLOAT16_VALUE(44.40) } } },
{ { SIMDE_BFLOAT16_VALUE(-32.16), SIMDE_BFLOAT16_VALUE(30.51), SIMDE_BFLOAT16_VALUE(15.52) },
{ SIMDE_BFLOAT16_VALUE(24.82), SIMDE_BFLOAT16_VALUE(34.29), SIMDE_BFLOAT16_VALUE(-0.76)},
{ { SIMDE_BFLOAT16_VALUE(-32.16), SIMDE_BFLOAT16_VALUE(-32.16), SIMDE_BFLOAT16_VALUE(-32.16), SIMDE_BFLOAT16_VALUE(-32.16),
SIMDE_BFLOAT16_VALUE(-32.16), SIMDE_BFLOAT16_VALUE(-32.16), SIMDE_BFLOAT16_VALUE(-32.16), SIMDE_BFLOAT16_VALUE(-32.16) },
{ SIMDE_BFLOAT16_VALUE(30.51), SIMDE_BFLOAT16_VALUE(30.51), SIMDE_BFLOAT16_VALUE(30.51), SIMDE_BFLOAT16_VALUE(30.51),
SIMDE_BFLOAT16_VALUE(30.51), SIMDE_BFLOAT16_VALUE(30.51), SIMDE_BFLOAT16_VALUE(30.51), SIMDE_BFLOAT16_VALUE(30.51) },
{ SIMDE_BFLOAT16_VALUE(15.52), SIMDE_BFLOAT16_VALUE(15.52), SIMDE_BFLOAT16_VALUE(15.52), SIMDE_BFLOAT16_VALUE(15.52),
SIMDE_BFLOAT16_VALUE(15.52), SIMDE_BFLOAT16_VALUE(15.52), SIMDE_BFLOAT16_VALUE(15.52), SIMDE_BFLOAT16_VALUE(15.52) } } },
{ { SIMDE_BFLOAT16_VALUE(-15.98), SIMDE_BFLOAT16_VALUE(9.92), SIMDE_BFLOAT16_VALUE(-43.38) },
{ SIMDE_BFLOAT16_VALUE(3.24), SIMDE_BFLOAT16_VALUE(-29.83), SIMDE_BFLOAT16_VALUE(34.76)},
{ { SIMDE_BFLOAT16_VALUE(-15.98), SIMDE_BFLOAT16_VALUE(-15.98), SIMDE_BFLOAT16_VALUE(-15.98), SIMDE_BFLOAT16_VALUE(-15.98),
SIMDE_BFLOAT16_VALUE(-15.98), SIMDE_BFLOAT16_VALUE(-15.98), SIMDE_BFLOAT16_VALUE(-15.98), SIMDE_BFLOAT16_VALUE(-15.98) },
{ SIMDE_BFLOAT16_VALUE(9.92), SIMDE_BFLOAT16_VALUE(9.92), SIMDE_BFLOAT16_VALUE(9.92), SIMDE_BFLOAT16_VALUE(9.92),
SIMDE_BFLOAT16_VALUE(9.92), SIMDE_BFLOAT16_VALUE(9.92), SIMDE_BFLOAT16_VALUE(9.92), SIMDE_BFLOAT16_VALUE(9.92) },
{ SIMDE_BFLOAT16_VALUE(-43.38), SIMDE_BFLOAT16_VALUE(-43.38), SIMDE_BFLOAT16_VALUE(-43.38), SIMDE_BFLOAT16_VALUE(-43.38),
SIMDE_BFLOAT16_VALUE(-43.38), SIMDE_BFLOAT16_VALUE(-43.38), SIMDE_BFLOAT16_VALUE(-43.38), SIMDE_BFLOAT16_VALUE(-43.38) } } },
{ { SIMDE_BFLOAT16_VALUE(34.74), SIMDE_BFLOAT16_VALUE(3.30), SIMDE_BFLOAT16_VALUE(-43.69) },
{ SIMDE_BFLOAT16_VALUE(-47.12), SIMDE_BFLOAT16_VALUE(-48.25), SIMDE_BFLOAT16_VALUE(-34.42)},
{ { SIMDE_BFLOAT16_VALUE(34.74), SIMDE_BFLOAT16_VALUE(34.74), SIMDE_BFLOAT16_VALUE(34.74), SIMDE_BFLOAT16_VALUE(34.74),
SIMDE_BFLOAT16_VALUE(34.74), SIMDE_BFLOAT16_VALUE(34.74), SIMDE_BFLOAT16_VALUE(34.74), SIMDE_BFLOAT16_VALUE(34.74) },
{ SIMDE_BFLOAT16_VALUE(3.30), SIMDE_BFLOAT16_VALUE(3.30), SIMDE_BFLOAT16_VALUE(3.30), SIMDE_BFLOAT16_VALUE(3.30),
SIMDE_BFLOAT16_VALUE(3.30), SIMDE_BFLOAT16_VALUE(3.30), SIMDE_BFLOAT16_VALUE(3.30), SIMDE_BFLOAT16_VALUE(3.30) },
{ SIMDE_BFLOAT16_VALUE(-43.69), SIMDE_BFLOAT16_VALUE(-43.69), SIMDE_BFLOAT16_VALUE(-43.69), SIMDE_BFLOAT16_VALUE(-43.69),
SIMDE_BFLOAT16_VALUE(-43.69), SIMDE_BFLOAT16_VALUE(-43.69), SIMDE_BFLOAT16_VALUE(-43.69), SIMDE_BFLOAT16_VALUE(-43.69) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_bfloat16x8x3_t r = simde_vld3q_dup_bf16(test_vec[i].a);
simde_bfloat16x8x3_t expected = {
{simde_vld1q_bf16(test_vec[i].r[0]), simde_vld1q_bf16(test_vec[i].r[1]), simde_vld1q_bf16(test_vec[i].r[2])}};
simde_test_arm_neon_assert_equal_bf16x8(r.val[0], expected.val[0], INT_MAX);
simde_test_arm_neon_assert_equal_bf16x8(r.val[1], expected.val[1], INT_MAX);
simde_test_arm_neon_assert_equal_bf16x8(r.val[2], expected.val[2], INT_MAX);
}
return 0;
}
#endif /* !defined(SIMDE_BUG_INTEL_857088) */
SIMDE_TEST_FUNC_LIST_BEGIN
#if !defined(SIMDE_BUG_INTEL_857088)
SIMDE_TEST_FUNC_LIST_ENTRY(vld3_dup_f16)
SIMDE_TEST_FUNC_LIST_ENTRY(vld3_dup_f32)
SIMDE_TEST_FUNC_LIST_ENTRY(vld3_dup_f64)
SIMDE_TEST_FUNC_LIST_ENTRY(vld3_dup_s8)
SIMDE_TEST_FUNC_LIST_ENTRY(vld3_dup_s16)
SIMDE_TEST_FUNC_LIST_ENTRY(vld3_dup_s32)
SIMDE_TEST_FUNC_LIST_ENTRY(vld3_dup_s64)
SIMDE_TEST_FUNC_LIST_ENTRY(vld3_dup_u8)
SIMDE_TEST_FUNC_LIST_ENTRY(vld3_dup_u16)
SIMDE_TEST_FUNC_LIST_ENTRY(vld3_dup_u32)
SIMDE_TEST_FUNC_LIST_ENTRY(vld3_dup_u64)
SIMDE_TEST_FUNC_LIST_ENTRY(vld3q_dup_f16)
SIMDE_TEST_FUNC_LIST_ENTRY(vld3q_dup_f32)
SIMDE_TEST_FUNC_LIST_ENTRY(vld3q_dup_f64)
SIMDE_TEST_FUNC_LIST_ENTRY(vld3q_dup_s8)
SIMDE_TEST_FUNC_LIST_ENTRY(vld3q_dup_s16)
SIMDE_TEST_FUNC_LIST_ENTRY(vld3q_dup_s32)
SIMDE_TEST_FUNC_LIST_ENTRY(vld3q_dup_s64)
SIMDE_TEST_FUNC_LIST_ENTRY(vld3q_dup_u8)
SIMDE_TEST_FUNC_LIST_ENTRY(vld3q_dup_u16)
SIMDE_TEST_FUNC_LIST_ENTRY(vld3q_dup_u32)
SIMDE_TEST_FUNC_LIST_ENTRY(vld3q_dup_u64)
SIMDE_TEST_FUNC_LIST_ENTRY(vld3_dup_p8)
SIMDE_TEST_FUNC_LIST_ENTRY(vld3_dup_p16)
SIMDE_TEST_FUNC_LIST_ENTRY(vld3_dup_p64)
SIMDE_TEST_FUNC_LIST_ENTRY(vld3q_dup_p8)
SIMDE_TEST_FUNC_LIST_ENTRY(vld3q_dup_p16)
SIMDE_TEST_FUNC_LIST_ENTRY(vld3q_dup_p64)
SIMDE_TEST_FUNC_LIST_ENTRY(vld3_dup_bf16)
SIMDE_TEST_FUNC_LIST_ENTRY(vld3q_dup_bf16)
#endif /* !defined(SIMDE_BUG_INTEL_857088) */
SIMDE_TEST_FUNC_LIST_END
#include "test-neon-footer.h"