#define SIMDE_TEST_ARM_NEON_INSN ld2_lane
#include "test-neon.h"
#include "../../../simde/arm/neon/ld2_lane.h"
#include "../../../simde/arm/neon/ld1.h"
#include "../../../simde/arm/neon/ld2.h"
static int
test_simde_vld2_lane_s8 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
int8_t src[2][8];
int8_t buf[2];
int8_t r[2][8];
} test_vec[] = {
{ { { -INT8_C(16), INT8_C(44), -INT8_C(6), INT8_C(49),
-INT8_C(48), -INT8_C(22), INT8_C(4), INT8_C(6) },
{ -INT8_C(7), INT8_C(40), -INT8_C(17), INT8_C(15),
-INT8_C(21), -INT8_C(4), INT8_C(14), -INT8_C(25) } },
{ INT8_C(43), -INT8_C(26)},
{ { INT8_C(43), INT8_C(44), -INT8_C(6), INT8_C(49),
-INT8_C(48), -INT8_C(22), INT8_C(4), INT8_C(6) },
{ -INT8_C(26), INT8_C(40), -INT8_C(17), INT8_C(15),
-INT8_C(21), -INT8_C(4), INT8_C(14), -INT8_C(25) } } },
{ { { INT8_C(0), -INT8_C(47), INT8_C(9), INT8_C(28),
-INT8_C(8), -INT8_C(39), -INT8_C(37), INT8_C(35) },
{ INT8_C(38), INT8_C(35), INT8_C(27), -INT8_C(16),
INT8_C(14), -INT8_C(1), -INT8_C(16), INT8_C(5) } },
{ -INT8_C(48), INT8_C(10)},
{ { INT8_C(0), -INT8_C(48), INT8_C(9), INT8_C(28),
-INT8_C(8), -INT8_C(39), -INT8_C(37), INT8_C(35) },
{ INT8_C(38), INT8_C(10), INT8_C(27), -INT8_C(16),
INT8_C(14), -INT8_C(1), -INT8_C(16), INT8_C(5) } } },
{ { { -INT8_C(45), -INT8_C(48), -INT8_C(30), -INT8_C(12),
INT8_C(2), INT8_C(21), INT8_C(16), INT8_C(39) },
{ -INT8_C(3), INT8_C(30), -INT8_C(37), -INT8_C(12),
INT8_C(17), INT8_C(23), -INT8_C(41), INT8_C(18) } },
{ -INT8_C(30), -INT8_C(13)},
{ { -INT8_C(45), -INT8_C(48), -INT8_C(30), -INT8_C(12),
INT8_C(2), INT8_C(21), INT8_C(16), INT8_C(39) },
{ -INT8_C(3), INT8_C(30), -INT8_C(13), -INT8_C(12),
INT8_C(17), INT8_C(23), -INT8_C(41), INT8_C(18) } } },
{ { { -INT8_C(9), -INT8_C(39), INT8_C(49), -INT8_C(10),
-INT8_C(45), INT8_C(24), -INT8_C(17), INT8_C(30) },
{ -INT8_C(36), INT8_C(20), -INT8_C(15), -INT8_C(21),
-INT8_C(23), INT8_C(22), -INT8_C(39), -INT8_C(18) } },
{ INT8_C(13), -INT8_C(37)},
{ { -INT8_C(9), -INT8_C(39), INT8_C(49), INT8_C(13),
-INT8_C(45), INT8_C(24), -INT8_C(17), INT8_C(30) },
{ -INT8_C(36), INT8_C(20), -INT8_C(15), -INT8_C(37),
-INT8_C(23), INT8_C(22), -INT8_C(39), -INT8_C(18) } } },
{ { { INT8_C(17), INT8_C(17), -INT8_C(11), INT8_C(43),
-INT8_C(20), -INT8_C(10), INT8_C(44), INT8_C(43) },
{ INT8_C(23), -INT8_C(4), -INT8_C(32), -INT8_C(2),
-INT8_C(39), -INT8_C(1), -INT8_C(37), INT8_C(42) } },
{ -INT8_C(40), INT8_C(34)},
{ { INT8_C(17), INT8_C(17), -INT8_C(11), INT8_C(43),
-INT8_C(40), -INT8_C(10), INT8_C(44), INT8_C(43) },
{ INT8_C(23), -INT8_C(4), -INT8_C(32), -INT8_C(2),
INT8_C(34), -INT8_C(1), -INT8_C(37), INT8_C(42) } } },
{ { { INT8_C(16), INT8_C(35), -INT8_C(33), -INT8_C(19),
INT8_C(15), -INT8_C(17), INT8_C(13), -INT8_C(49) },
{ INT8_C(21), -INT8_C(24), -INT8_C(3), INT8_C(10),
-INT8_C(31), INT8_C(24), -INT8_C(46), -INT8_C(14) } },
{ -INT8_C(24), -INT8_C(3)},
{ { INT8_C(16), INT8_C(35), -INT8_C(33), -INT8_C(19),
INT8_C(15), -INT8_C(24), INT8_C(13), -INT8_C(49) },
{ INT8_C(21), -INT8_C(24), -INT8_C(3), INT8_C(10),
-INT8_C(31), -INT8_C(3), -INT8_C(46), -INT8_C(14) } } },
{ { { INT8_C(25), -INT8_C(9), -INT8_C(16), INT8_C(33),
-INT8_C(14), -INT8_C(45), INT8_C(0), -INT8_C(45) },
{ -INT8_C(40), INT8_C(36), INT8_C(38), -INT8_C(48),
-INT8_C(20), -INT8_C(22), INT8_C(1), -INT8_C(43) } },
{ -INT8_C(33), -INT8_C(50)},
{ { INT8_C(25), -INT8_C(9), -INT8_C(16), INT8_C(33),
-INT8_C(14), -INT8_C(45), -INT8_C(33), -INT8_C(45) },
{ -INT8_C(40), INT8_C(36), INT8_C(38), -INT8_C(48),
-INT8_C(20), -INT8_C(22), -INT8_C(50), -INT8_C(43) } } },
{ { { INT8_C(38), -INT8_C(16), INT8_C(32), -INT8_C(48),
INT8_C(28), -INT8_C(6), -INT8_C(48), -INT8_C(36) },
{ INT8_C(12), INT8_C(7), -INT8_C(12), -INT8_C(12),
INT8_C(33), INT8_C(28), INT8_C(26), -INT8_C(43) } },
{ -INT8_C(42), -INT8_C(7)},
{ { INT8_C(38), -INT8_C(16), INT8_C(32), -INT8_C(48),
INT8_C(28), -INT8_C(6), -INT8_C(48), -INT8_C(42) },
{ INT8_C(12), INT8_C(7), -INT8_C(12), -INT8_C(12),
INT8_C(33), INT8_C(28), INT8_C(26), -INT8_C(7) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int8x8x2_t r, src, expected;
src.val[0] = simde_vld1_s8(test_vec[i].src[0]);
src.val[1] = simde_vld1_s8(test_vec[i].src[1]);
SIMDE_CONSTIFY_8_(simde_vld2_lane_s8, r, (HEDLEY_UNREACHABLE(), r), i, test_vec[i].buf, src);
expected.val[0] = simde_vld1_s8(test_vec[i].r[0]);
expected.val[1] = simde_vld1_s8(test_vec[i].r[1]);
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]);
}
return 0;
}
static int
test_simde_vld2_lane_s16 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
int16_t src[2][4];
int16_t buf[2];
int16_t r[2][4];
} test_vec[] = {
{ { { INT16_C(124), INT16_C(412), -INT16_C(312), -INT16_C(107) },
{ INT16_C(349), INT16_C(217), INT16_C(241), INT16_C(95) } },
{ -INT16_C(275), INT16_C(317)},
{ { -INT16_C(275), INT16_C(412), -INT16_C(312), -INT16_C(107) },
{ INT16_C(317), INT16_C(217), INT16_C(241), INT16_C(95) } } },
{ { { INT16_C(378), INT16_C(448), -INT16_C(60), -INT16_C(474) },
{ INT16_C(266), -INT16_C(135), INT16_C(422), INT16_C(223) } },
{ INT16_C(297), INT16_C(5)},
{ { INT16_C(378), INT16_C(297), -INT16_C(60), -INT16_C(474) },
{ INT16_C(266), INT16_C(5), INT16_C(422), INT16_C(223) } } },
{ { { -INT16_C(197), INT16_C(3), -INT16_C(245), INT16_C(218) },
{ -INT16_C(216), -INT16_C(262), INT16_C(180), -INT16_C(60) } },
{ -INT16_C(96), INT16_C(492)},
{ { -INT16_C(197), INT16_C(3), -INT16_C(96), INT16_C(218) },
{ -INT16_C(216), -INT16_C(262), INT16_C(492), -INT16_C(60) } } },
{ { { -INT16_C(395), INT16_C(374), -INT16_C(448), -INT16_C(445) },
{ INT16_C(60), INT16_C(486), -INT16_C(283), INT16_C(298) } },
{ INT16_C(218), INT16_C(225)},
{ { -INT16_C(395), INT16_C(374), -INT16_C(448), INT16_C(218) },
{ INT16_C(60), INT16_C(486), -INT16_C(283), INT16_C(225) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int16x4x2_t r, src, expected;
src.val[0] = simde_vld1_s16(test_vec[i].src[0]);
src.val[1] = simde_vld1_s16(test_vec[i].src[1]);
SIMDE_CONSTIFY_4_(simde_vld2_lane_s16, r, (HEDLEY_UNREACHABLE(), r), i, test_vec[i].buf, src);
expected.val[0] = simde_vld1_s16(test_vec[i].r[0]);
expected.val[1] = simde_vld1_s16(test_vec[i].r[1]);
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]);
}
return 0;
}
static int
test_simde_vld2_lane_s32 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
int32_t src[2][2];
int32_t buf[2];
int32_t r[2][2];
} test_vec[] = {
{ { { -INT32_C(617), INT32_C(1303) },
{ -INT32_C(4779), -INT32_C(4756) } },
{ INT32_C(4193), -INT32_C(4032)},
{ { INT32_C(4193), INT32_C(1303) },
{ -INT32_C(4032), -INT32_C(4756) } } },
{ { { -INT32_C(1012), -INT32_C(3240) },
{ -INT32_C(3259), -INT32_C(3396) } },
{ -INT32_C(3438), -INT32_C(693)},
{ { -INT32_C(1012), -INT32_C(3438) },
{ -INT32_C(3259), -INT32_C(693) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int32x2x2_t r, src, expected;
src.val[0] = simde_vld1_s32(test_vec[i].src[0]);
src.val[1] = simde_vld1_s32(test_vec[i].src[1]);
SIMDE_CONSTIFY_2_(simde_vld2_lane_s32, r, (HEDLEY_UNREACHABLE(), r), i, test_vec[i].buf, src);
expected.val[0] = simde_vld1_s32(test_vec[i].r[0]);
expected.val[1] = simde_vld1_s32(test_vec[i].r[1]);
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]);
}
return 0;
}
static int
test_simde_vld2_lane_s64 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
int64_t src[2][1];
int64_t buf[2];
int64_t r[2][1];
} test_vec[] = {
{ { { -INT64_C(382464207) },
{ -INT64_C(391984763) } },
{ -INT64_C(283052241), INT64_C(176704794)},
{ { -INT64_C(283052241) },
{ INT64_C(176704794) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int64x1x2_t r, src, expected;
src.val[0] = simde_vld1_s64(test_vec[i].src[0]);
src.val[1] = simde_vld1_s64(test_vec[i].src[1]);
r = simde_vld2_lane_s64(test_vec[i].buf, src, 0);
expected.val[0] = simde_vld1_s64(test_vec[i].r[0]);
expected.val[1] = simde_vld1_s64(test_vec[i].r[1]);
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]);
}
return 0;
}
static int
test_simde_vld2_lane_u8 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
uint8_t src[2][8];
uint8_t buf[2];
uint8_t r[2][8];
} test_vec[] = {
{ { { UINT8_C(16), UINT8_C(44), UINT8_C(6), UINT8_C(49),
UINT8_C(48), UINT8_C(22), UINT8_C(4), UINT8_C(6) },
{ UINT8_C(7), UINT8_C(40), UINT8_C(17), UINT8_C(15),
UINT8_C(21), UINT8_C(4), UINT8_C(14), UINT8_C(25) } },
{ UINT8_C(43), UINT8_C(26)},
{ { UINT8_C(43), UINT8_C(44), UINT8_C(6), UINT8_C(49),
UINT8_C(48), UINT8_C(22), UINT8_C(4), UINT8_C(6) },
{ UINT8_C(26), UINT8_C(40), UINT8_C(17), UINT8_C(15),
UINT8_C(21), UINT8_C(4), UINT8_C(14), UINT8_C(25) } } },
{ { { UINT8_C(0), UINT8_C(47), UINT8_C(9), UINT8_C(28),
UINT8_C(8), UINT8_C(39), UINT8_C(37), UINT8_C(35) },
{ UINT8_C(38), UINT8_C(35), UINT8_C(27), UINT8_C(16),
UINT8_C(14), UINT8_C(1), UINT8_C(16), UINT8_C(5) } },
{ UINT8_C(48), UINT8_C(10)},
{ { UINT8_C(0), UINT8_C(48), UINT8_C(9), UINT8_C(28),
UINT8_C(8), UINT8_C(39), UINT8_C(37), UINT8_C(35) },
{ UINT8_C(38), UINT8_C(10), UINT8_C(27), UINT8_C(16),
UINT8_C(14), UINT8_C(1), UINT8_C(16), UINT8_C(5) } } },
{ { { UINT8_C(45), UINT8_C(48), UINT8_C(30), UINT8_C(12),
UINT8_C(2), UINT8_C(21), UINT8_C(16), UINT8_C(39) },
{ UINT8_C(3), UINT8_C(30), UINT8_C(37), UINT8_C(12),
UINT8_C(17), UINT8_C(23), UINT8_C(41), UINT8_C(18) } },
{ UINT8_C(30), UINT8_C(13)},
{ { UINT8_C(45), UINT8_C(48), UINT8_C(30), UINT8_C(12),
UINT8_C(2), UINT8_C(21), UINT8_C(16), UINT8_C(39) },
{ UINT8_C(3), UINT8_C(30), UINT8_C(13), UINT8_C(12),
UINT8_C(17), UINT8_C(23), UINT8_C(41), UINT8_C(18) } } },
{ { { UINT8_C(9), UINT8_C(39), UINT8_C(49), UINT8_C(10),
UINT8_C(45), UINT8_C(24), UINT8_C(17), UINT8_C(30) },
{ UINT8_C(36), UINT8_C(20), UINT8_C(15), UINT8_C(21),
UINT8_C(23), UINT8_C(22), UINT8_C(39), UINT8_C(18) } },
{ UINT8_C(13), UINT8_C(37)},
{ { UINT8_C(9), UINT8_C(39), UINT8_C(49), UINT8_C(13),
UINT8_C(45), UINT8_C(24), UINT8_C(17), UINT8_C(30) },
{ UINT8_C(36), UINT8_C(20), UINT8_C(15), UINT8_C(37),
UINT8_C(23), UINT8_C(22), UINT8_C(39), UINT8_C(18) } } },
{ { { UINT8_C(17), UINT8_C(17), UINT8_C(11), UINT8_C(43),
UINT8_C(20), UINT8_C(10), UINT8_C(44), UINT8_C(43) },
{ UINT8_C(23), UINT8_C(4), UINT8_C(32), UINT8_C(2),
UINT8_C(39), UINT8_C(1), UINT8_C(37), UINT8_C(42) } },
{ UINT8_C(40), UINT8_C(34)},
{ { UINT8_C(17), UINT8_C(17), UINT8_C(11), UINT8_C(43),
UINT8_C(40), UINT8_C(10), UINT8_C(44), UINT8_C(43) },
{ UINT8_C(23), UINT8_C(4), UINT8_C(32), UINT8_C(2),
UINT8_C(34), UINT8_C(1), UINT8_C(37), UINT8_C(42) } } },
{ { { UINT8_C(16), UINT8_C(35), UINT8_C(33), UINT8_C(19),
UINT8_C(15), UINT8_C(17), UINT8_C(13), UINT8_C(49) },
{ UINT8_C(21), UINT8_C(24), UINT8_C(3), UINT8_C(10),
UINT8_C(31), UINT8_C(24), UINT8_C(46), UINT8_C(14) } },
{ UINT8_C(24), UINT8_C(3)},
{ { UINT8_C(16), UINT8_C(35), UINT8_C(33), UINT8_C(19),
UINT8_C(15), UINT8_C(24), UINT8_C(13), UINT8_C(49) },
{ UINT8_C(21), UINT8_C(24), UINT8_C(3), UINT8_C(10),
UINT8_C(31), UINT8_C(3), UINT8_C(46), UINT8_C(14) } } },
{ { { UINT8_C(25), UINT8_C(9), UINT8_C(16), UINT8_C(33),
UINT8_C(14), UINT8_C(45), UINT8_C(0), UINT8_C(45) },
{ UINT8_C(40), UINT8_C(36), UINT8_C(38), UINT8_C(48),
UINT8_C(20), UINT8_C(22), UINT8_C(1), UINT8_C(43) } },
{ UINT8_C(33), UINT8_C(50)},
{ { UINT8_C(25), UINT8_C(9), UINT8_C(16), UINT8_C(33),
UINT8_C(14), UINT8_C(45), UINT8_C(33), UINT8_C(45) },
{ UINT8_C(40), UINT8_C(36), UINT8_C(38), UINT8_C(48),
UINT8_C(20), UINT8_C(22), UINT8_C(50), UINT8_C(43) } } },
{ { { UINT8_C(38), UINT8_C(16), UINT8_C(32), UINT8_C(48),
UINT8_C(28), UINT8_C(6), UINT8_C(48), UINT8_C(36) },
{ UINT8_C(12), UINT8_C(7), UINT8_C(12), UINT8_C(12),
UINT8_C(33), UINT8_C(28), UINT8_C(26), UINT8_C(43) } },
{ UINT8_C(42), UINT8_C(7)},
{ { UINT8_C(38), UINT8_C(16), UINT8_C(32), UINT8_C(48),
UINT8_C(28), UINT8_C(6), UINT8_C(48), UINT8_C(42) },
{ UINT8_C(12), UINT8_C(7), UINT8_C(12), UINT8_C(12),
UINT8_C(33), UINT8_C(28), UINT8_C(26), UINT8_C(7) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint8x8x2_t r, src, expected;
src.val[0] = simde_vld1_u8(test_vec[i].src[0]);
src.val[1] = simde_vld1_u8(test_vec[i].src[1]);
SIMDE_CONSTIFY_8_(simde_vld2_lane_u8, r, (HEDLEY_UNREACHABLE(), r), i, test_vec[i].buf, src);
expected.val[0] = simde_vld1_u8(test_vec[i].r[0]);
expected.val[1] = simde_vld1_u8(test_vec[i].r[1]);
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]);
}
return 0;
}
static int
test_simde_vld2_lane_u16 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
uint16_t src[2][4];
uint16_t buf[2];
uint16_t r[2][4];
} test_vec[] = {
{ { { UINT16_C(124), UINT16_C(412), UINT16_C(312), UINT16_C(107) },
{ UINT16_C(349), UINT16_C(217), UINT16_C(241), UINT16_C(95) } },
{ UINT16_C(275), UINT16_C(317)},
{ { UINT16_C(275), UINT16_C(412), UINT16_C(312), UINT16_C(107) },
{ UINT16_C(317), UINT16_C(217), UINT16_C(241), UINT16_C(95) } } },
{ { { UINT16_C(378), UINT16_C(448), UINT16_C(60), UINT16_C(474) },
{ UINT16_C(266), UINT16_C(135), UINT16_C(422), UINT16_C(223) } },
{ UINT16_C(297), UINT16_C(5)},
{ { UINT16_C(378), UINT16_C(297), UINT16_C(60), UINT16_C(474) },
{ UINT16_C(266), UINT16_C(5), UINT16_C(422), UINT16_C(223) } } },
{ { { UINT16_C(197), UINT16_C(3), UINT16_C(245), UINT16_C(218) },
{ UINT16_C(216), UINT16_C(262), UINT16_C(180), UINT16_C(60) } },
{ UINT16_C(96), UINT16_C(492)},
{ { UINT16_C(197), UINT16_C(3), UINT16_C(96), UINT16_C(218) },
{ UINT16_C(216), UINT16_C(262), UINT16_C(492), UINT16_C(60) } } },
{ { { UINT16_C(395), UINT16_C(374), UINT16_C(448), UINT16_C(445) },
{ UINT16_C(60), UINT16_C(486), UINT16_C(283), UINT16_C(298) } },
{ UINT16_C(218), UINT16_C(225)},
{ { UINT16_C(395), UINT16_C(374), UINT16_C(448), UINT16_C(218) },
{ UINT16_C(60), UINT16_C(486), UINT16_C(283), UINT16_C(225) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint16x4x2_t r, src, expected;
src.val[0] = simde_vld1_u16(test_vec[i].src[0]);
src.val[1] = simde_vld1_u16(test_vec[i].src[1]);
SIMDE_CONSTIFY_4_(simde_vld2_lane_u16, r, (HEDLEY_UNREACHABLE(), r), i, test_vec[i].buf, src);
expected.val[0] = simde_vld1_u16(test_vec[i].r[0]);
expected.val[1] = simde_vld1_u16(test_vec[i].r[1]);
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]);
}
return 0;
}
static int
test_simde_vld2_lane_u32 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
uint32_t src[2][2];
uint32_t buf[2];
uint32_t r[2][2];
} test_vec[] = {
{ { { UINT32_C(617), UINT32_C(1303) },
{ UINT32_C(4779), UINT32_C(4756) } },
{ UINT32_C(4193), UINT32_C(4032)},
{ { UINT32_C(4193), UINT32_C(1303) },
{ UINT32_C(4032), UINT32_C(4756) } } },
{ { { UINT32_C(1012), UINT32_C(3240) },
{ UINT32_C(3259), UINT32_C(3396) } },
{ UINT32_C(3438), UINT32_C(693)},
{ { UINT32_C(1012), UINT32_C(3438) },
{ UINT32_C(3259), UINT32_C(693) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint32x2x2_t r, src, expected;
src.val[0] = simde_vld1_u32(test_vec[i].src[0]);
src.val[1] = simde_vld1_u32(test_vec[i].src[1]);
SIMDE_CONSTIFY_2_(simde_vld2_lane_u32, r, (HEDLEY_UNREACHABLE(), r), i, test_vec[i].buf, src);
expected.val[0] = simde_vld1_u32(test_vec[i].r[0]);
expected.val[1] = simde_vld1_u32(test_vec[i].r[1]);
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]);
}
return 0;
}
static int
test_simde_vld2_lane_u64 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
uint64_t src[2][1];
uint64_t buf[2];
uint64_t r[2][1];
} test_vec[] = {
{ { { UINT64_C(382464207) },
{ UINT64_C(391984763) } },
{ UINT64_C(283052241), UINT64_C(176704794)},
{ { UINT64_C(283052241) },
{ UINT64_C(176704794) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint64x1x2_t r, src, expected;
src.val[0] = simde_vld1_u64(test_vec[i].src[0]);
src.val[1] = simde_vld1_u64(test_vec[i].src[1]);
r = simde_vld2_lane_u64(test_vec[i].buf, src, 0);
expected.val[0] = simde_vld1_u64(test_vec[i].r[0]);
expected.val[1] = simde_vld1_u64(test_vec[i].r[1]);
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]);
}
return 0;
}
static int
test_simde_vld2_lane_f16 (SIMDE_MUNIT_TEST_ARGS) {
struct {
simde_float16_t src[2][4];
simde_float16_t buf[2];
simde_float16_t r[2][4];
} test_vec[] = {
{ { { SIMDE_FLOAT16_VALUE(-45.80), SIMDE_FLOAT16_VALUE(29.77), SIMDE_FLOAT16_VALUE(44.10), SIMDE_FLOAT16_VALUE(-17.29) },
{ SIMDE_FLOAT16_VALUE(-34.30), SIMDE_FLOAT16_VALUE(-46.41), SIMDE_FLOAT16_VALUE(-43.15), SIMDE_FLOAT16_VALUE(-30.34) } },
{ SIMDE_FLOAT16_VALUE(-16.64), SIMDE_FLOAT16_VALUE(-13.70)},
{ { SIMDE_FLOAT16_VALUE(-16.64), SIMDE_FLOAT16_VALUE(29.77), SIMDE_FLOAT16_VALUE(44.10), SIMDE_FLOAT16_VALUE(-17.29) },
{ SIMDE_FLOAT16_VALUE(-13.70), SIMDE_FLOAT16_VALUE(-46.41), SIMDE_FLOAT16_VALUE(-43.15), SIMDE_FLOAT16_VALUE(-30.34) } } },
{ { { SIMDE_FLOAT16_VALUE(-31.49), SIMDE_FLOAT16_VALUE(-3.02), SIMDE_FLOAT16_VALUE(4.73), SIMDE_FLOAT16_VALUE(29.19) },
{ SIMDE_FLOAT16_VALUE(-6.51), SIMDE_FLOAT16_VALUE(-6.97), SIMDE_FLOAT16_VALUE(-24.86), SIMDE_FLOAT16_VALUE(20.04) } },
{ SIMDE_FLOAT16_VALUE(4.78), SIMDE_FLOAT16_VALUE(-24.76)},
{ { SIMDE_FLOAT16_VALUE(-31.49), SIMDE_FLOAT16_VALUE(4.78), SIMDE_FLOAT16_VALUE(4.73), SIMDE_FLOAT16_VALUE(29.19) },
{ SIMDE_FLOAT16_VALUE(-6.51), SIMDE_FLOAT16_VALUE(-24.76), SIMDE_FLOAT16_VALUE(-24.86), SIMDE_FLOAT16_VALUE(20.04) } } },
{ { { SIMDE_FLOAT16_VALUE(-33.05), SIMDE_FLOAT16_VALUE(44.60), SIMDE_FLOAT16_VALUE(44.07), SIMDE_FLOAT16_VALUE(-42.37) },
{ SIMDE_FLOAT16_VALUE(45.53), SIMDE_FLOAT16_VALUE(4.23), SIMDE_FLOAT16_VALUE(13.47), SIMDE_FLOAT16_VALUE(2.19) } },
{ SIMDE_FLOAT16_VALUE(-14.88), SIMDE_FLOAT16_VALUE(-15.37)},
{ { SIMDE_FLOAT16_VALUE(-33.05), SIMDE_FLOAT16_VALUE(44.60), SIMDE_FLOAT16_VALUE(-14.88), SIMDE_FLOAT16_VALUE(-42.37) },
{ SIMDE_FLOAT16_VALUE(45.53), SIMDE_FLOAT16_VALUE(4.23), SIMDE_FLOAT16_VALUE(-15.37), SIMDE_FLOAT16_VALUE(2.19) } } },
{ { { SIMDE_FLOAT16_VALUE(22.74), SIMDE_FLOAT16_VALUE(-1.07), SIMDE_FLOAT16_VALUE(48.37), SIMDE_FLOAT16_VALUE(26.68) },
{ SIMDE_FLOAT16_VALUE(-34.05), SIMDE_FLOAT16_VALUE(-26.07), SIMDE_FLOAT16_VALUE(-44.28), SIMDE_FLOAT16_VALUE(6.92) } },
{ SIMDE_FLOAT16_VALUE(-28.27), SIMDE_FLOAT16_VALUE(-30.31)},
{ { SIMDE_FLOAT16_VALUE(22.74), SIMDE_FLOAT16_VALUE(-1.07), SIMDE_FLOAT16_VALUE(48.37), SIMDE_FLOAT16_VALUE(-28.27) },
{ SIMDE_FLOAT16_VALUE(-34.05), SIMDE_FLOAT16_VALUE(-26.07), SIMDE_FLOAT16_VALUE(-44.28), SIMDE_FLOAT16_VALUE(-30.31) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_float16x4x2_t r, src, expected;
src.val[0] = simde_vld1_f16(test_vec[i].src[0]);
src.val[1] = simde_vld1_f16(test_vec[i].src[1]);
SIMDE_CONSTIFY_4_(simde_vld2_lane_f16, r, (HEDLEY_UNREACHABLE(), r), i, test_vec[i].buf, src);
expected.val[0] = simde_vld1_f16(test_vec[i].r[0]);
expected.val[1] = simde_vld1_f16(test_vec[i].r[1]);
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);
}
return 0;
}
static int
test_simde_vld2_lane_f32 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
simde_float32_t src[2][2];
simde_float32_t buf[2];
simde_float32_t r[2][2];
} test_vec[] = {
{ { { SIMDE_FLOAT32_C(1651.66), SIMDE_FLOAT32_C(4335.15) },
{ SIMDE_FLOAT32_C(3302.66), SIMDE_FLOAT32_C(2212.82) } },
{ SIMDE_FLOAT32_C(-293.68), SIMDE_FLOAT32_C(4822.66)},
{ { SIMDE_FLOAT32_C(-293.68), SIMDE_FLOAT32_C(4335.15) },
{ SIMDE_FLOAT32_C(4822.66), SIMDE_FLOAT32_C(2212.82) } } },
{ { { SIMDE_FLOAT32_C(-569.07), SIMDE_FLOAT32_C(1299.98) },
{ SIMDE_FLOAT32_C(2879.02), SIMDE_FLOAT32_C(4991.35) } },
{ SIMDE_FLOAT32_C(3143.46), SIMDE_FLOAT32_C(2846.67)},
{ { SIMDE_FLOAT32_C(-569.07), SIMDE_FLOAT32_C(3143.46) },
{ SIMDE_FLOAT32_C(2879.02), SIMDE_FLOAT32_C(2846.67) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_float32x2x2_t r, src, expected;
src.val[0] = simde_vld1_f32(test_vec[i].src[0]);
src.val[1] = simde_vld1_f32(test_vec[i].src[1]);
SIMDE_CONSTIFY_2_(simde_vld2_lane_f32, r, (HEDLEY_UNREACHABLE(), r), i, test_vec[i].buf, src);
expected.val[0] = simde_vld1_f32(test_vec[i].r[0]);
expected.val[1] = simde_vld1_f32(test_vec[i].r[1]);
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);
}
return 0;
}
static int
test_simde_vld2_lane_f64 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
simde_float64_t src[2][1];
simde_float64_t buf[2];
simde_float64_t r[2][1];
} test_vec[] = {
{ { { SIMDE_FLOAT64_C(-463008.81) },
{ SIMDE_FLOAT64_C(-130916.96) } },
{ SIMDE_FLOAT64_C(392863.67), SIMDE_FLOAT64_C(310874.94)},
{ { SIMDE_FLOAT64_C(392863.67) },
{ SIMDE_FLOAT64_C(310874.94) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_float64x1x2_t r, src, expected;
src.val[0] = simde_vld1_f64(test_vec[i].src[0]);
src.val[1] = simde_vld1_f64(test_vec[i].src[1]);
r = simde_vld2_lane_f64(test_vec[i].buf, src, 0);
expected.val[0] = simde_vld1_f64(test_vec[i].r[0]);
expected.val[1] = simde_vld1_f64(test_vec[i].r[1]);
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);
}
return 0;
}
static int
test_simde_vld2q_lane_s8 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
int8_t src[2][16];
int8_t buf[2];
int8_t r[2][16];
} test_vec[] = {
{ { { INT8_C(46), INT8_C(42), -INT8_C(1), INT8_C(9), -INT8_C(24), -INT8_C(23), -INT8_C(11), INT8_C(37),
INT8_C(22), INT8_C(30), INT8_C(25), INT8_C(27), -INT8_C(10), -INT8_C(26), -INT8_C(1), -INT8_C(10) },
{ INT8_C(13), INT8_C(29), -INT8_C(22), INT8_C(40), -INT8_C(48), -INT8_C(40), INT8_C(0), -INT8_C(12),
-INT8_C(18), -INT8_C(35), INT8_C(43), -INT8_C(30), -INT8_C(32), INT8_C(30), -INT8_C(21), -INT8_C(36) } },
{ -INT8_C(13), -INT8_C(15)},
{ { -INT8_C(13), INT8_C(42), -INT8_C(1), INT8_C(9), -INT8_C(24), -INT8_C(23), -INT8_C(11), INT8_C(37),
INT8_C(22), INT8_C(30), INT8_C(25), INT8_C(27), -INT8_C(10), -INT8_C(26), -INT8_C(1), -INT8_C(10) },
{ -INT8_C(15), INT8_C(29), -INT8_C(22), INT8_C(40), -INT8_C(48), -INT8_C(40), INT8_C(0), -INT8_C(12),
-INT8_C(18), -INT8_C(35), INT8_C(43), -INT8_C(30), -INT8_C(32), INT8_C(30), -INT8_C(21), -INT8_C(36) } } },
{ { { -INT8_C(20), -INT8_C(7), INT8_C(32), -INT8_C(38), INT8_C(1), -INT8_C(28), -INT8_C(5), -INT8_C(1),
-INT8_C(17), INT8_C(10), INT8_C(10), INT8_C(23), -INT8_C(26), INT8_C(1), -INT8_C(37), -INT8_C(35) },
{ INT8_C(18), -INT8_C(31), INT8_C(37), INT8_C(26), INT8_C(9), INT8_C(14), -INT8_C(17), INT8_C(38),
-INT8_C(8), -INT8_C(27), INT8_C(45), -INT8_C(15), INT8_C(0), INT8_C(36), INT8_C(1), -INT8_C(20) } },
{ -INT8_C(11), INT8_C(6)},
{ { -INT8_C(20), -INT8_C(11), INT8_C(32), -INT8_C(38), INT8_C(1), -INT8_C(28), -INT8_C(5), -INT8_C(1),
-INT8_C(17), INT8_C(10), INT8_C(10), INT8_C(23), -INT8_C(26), INT8_C(1), -INT8_C(37), -INT8_C(35) },
{ INT8_C(18), INT8_C(6), INT8_C(37), INT8_C(26), INT8_C(9), INT8_C(14), -INT8_C(17), INT8_C(38),
-INT8_C(8), -INT8_C(27), INT8_C(45), -INT8_C(15), INT8_C(0), INT8_C(36), INT8_C(1), -INT8_C(20) } } },
{ { { INT8_C(13), -INT8_C(26), -INT8_C(44), INT8_C(35), -INT8_C(42), -INT8_C(3), INT8_C(9), INT8_C(23),
INT8_C(0), -INT8_C(20), INT8_C(17), INT8_C(46), INT8_C(15), INT8_C(39), -INT8_C(26), -INT8_C(34) },
{ INT8_C(5), INT8_C(22), -INT8_C(30), INT8_C(9), INT8_C(17), -INT8_C(44), -INT8_C(46), -INT8_C(25),
-INT8_C(45), INT8_C(46), INT8_C(16), -INT8_C(6), -INT8_C(40), INT8_C(37), -INT8_C(15), -INT8_C(11) } },
{ INT8_C(25), INT8_C(25)},
{ { INT8_C(13), -INT8_C(26), INT8_C(25), INT8_C(35), -INT8_C(42), -INT8_C(3), INT8_C(9), INT8_C(23),
INT8_C(0), -INT8_C(20), INT8_C(17), INT8_C(46), INT8_C(15), INT8_C(39), -INT8_C(26), -INT8_C(34) },
{ INT8_C(5), INT8_C(22), INT8_C(25), INT8_C(9), INT8_C(17), -INT8_C(44), -INT8_C(46), -INT8_C(25),
-INT8_C(45), INT8_C(46), INT8_C(16), -INT8_C(6), -INT8_C(40), INT8_C(37), -INT8_C(15), -INT8_C(11) } } },
{ { { -INT8_C(6), -INT8_C(37), INT8_C(49), INT8_C(9), INT8_C(38), -INT8_C(40), -INT8_C(21), -INT8_C(28),
-INT8_C(2), -INT8_C(1), -INT8_C(18), INT8_C(31), -INT8_C(34), -INT8_C(2), INT8_C(23), INT8_C(35) },
{ -INT8_C(17), INT8_C(12), -INT8_C(24), -INT8_C(48), -INT8_C(30), -INT8_C(16), INT8_C(21), INT8_C(31),
INT8_C(39), INT8_C(29), INT8_C(4), -INT8_C(18), -INT8_C(47), INT8_C(15), -INT8_C(49), INT8_C(18) } },
{ -INT8_C(41), INT8_C(33)},
{ { -INT8_C(6), -INT8_C(37), INT8_C(49), -INT8_C(41), INT8_C(38), -INT8_C(40), -INT8_C(21), -INT8_C(28),
-INT8_C(2), -INT8_C(1), -INT8_C(18), INT8_C(31), -INT8_C(34), -INT8_C(2), INT8_C(23), INT8_C(35) },
{ -INT8_C(17), INT8_C(12), -INT8_C(24), INT8_C(33), -INT8_C(30), -INT8_C(16), INT8_C(21), INT8_C(31),
INT8_C(39), INT8_C(29), INT8_C(4), -INT8_C(18), -INT8_C(47), INT8_C(15), -INT8_C(49), INT8_C(18) } } },
{ { { INT8_C(10), -INT8_C(27), INT8_C(21), -INT8_C(23), -INT8_C(17), -INT8_C(42), INT8_C(24), -INT8_C(35),
-INT8_C(38), -INT8_C(3), INT8_C(29), INT8_C(41), -INT8_C(44), -INT8_C(15), -INT8_C(48), -INT8_C(26) },
{ -INT8_C(9), -INT8_C(47), -INT8_C(29), INT8_C(8), INT8_C(7), INT8_C(6), -INT8_C(26), INT8_C(9),
-INT8_C(11), -INT8_C(2), -INT8_C(6), INT8_C(22), INT8_C(34), -INT8_C(5), -INT8_C(38), -INT8_C(18) } },
{ INT8_C(21), -INT8_C(25)},
{ { INT8_C(10), -INT8_C(27), INT8_C(21), -INT8_C(23), INT8_C(21), -INT8_C(42), INT8_C(24), -INT8_C(35),
-INT8_C(38), -INT8_C(3), INT8_C(29), INT8_C(41), -INT8_C(44), -INT8_C(15), -INT8_C(48), -INT8_C(26) },
{ -INT8_C(9), -INT8_C(47), -INT8_C(29), INT8_C(8), -INT8_C(25), INT8_C(6), -INT8_C(26), INT8_C(9),
-INT8_C(11), -INT8_C(2), -INT8_C(6), INT8_C(22), INT8_C(34), -INT8_C(5), -INT8_C(38), -INT8_C(18) } } },
{ { { INT8_C(2), INT8_C(33), INT8_C(23), INT8_C(0), -INT8_C(48), INT8_C(2), INT8_C(26), INT8_C(29),
INT8_C(38), INT8_C(14), INT8_C(48), INT8_C(0), -INT8_C(44), -INT8_C(42), -INT8_C(37), INT8_C(5) },
{ INT8_C(24), INT8_C(4), INT8_C(37), INT8_C(46), INT8_C(40), INT8_C(24), INT8_C(40), -INT8_C(18),
-INT8_C(44), INT8_C(48), -INT8_C(36), INT8_C(45), INT8_C(2), INT8_C(4), -INT8_C(35), -INT8_C(9) } },
{ INT8_C(15), INT8_C(13)},
{ { INT8_C(2), INT8_C(33), INT8_C(23), INT8_C(0), -INT8_C(48), INT8_C(15), INT8_C(26), INT8_C(29),
INT8_C(38), INT8_C(14), INT8_C(48), INT8_C(0), -INT8_C(44), -INT8_C(42), -INT8_C(37), INT8_C(5) },
{ INT8_C(24), INT8_C(4), INT8_C(37), INT8_C(46), INT8_C(40), INT8_C(13), INT8_C(40), -INT8_C(18),
-INT8_C(44), INT8_C(48), -INT8_C(36), INT8_C(45), INT8_C(2), INT8_C(4), -INT8_C(35), -INT8_C(9) } } },
{ { { -INT8_C(19), INT8_C(26), -INT8_C(45), INT8_C(37), -INT8_C(27), -INT8_C(2), INT8_C(43), -INT8_C(37),
-INT8_C(26), -INT8_C(18), INT8_C(35), INT8_C(9), -INT8_C(15), INT8_C(38), -INT8_C(12), -INT8_C(35) },
{ INT8_C(9), -INT8_C(5), -INT8_C(6), -INT8_C(48), INT8_C(10), -INT8_C(7), -INT8_C(18), INT8_C(18),
-INT8_C(5), -INT8_C(48), -INT8_C(36), INT8_C(12), -INT8_C(8), INT8_C(23), INT8_C(0), -INT8_C(27) } },
{ -INT8_C(19), -INT8_C(38)},
{ { -INT8_C(19), INT8_C(26), -INT8_C(45), INT8_C(37), -INT8_C(27), -INT8_C(2), -INT8_C(19), -INT8_C(37),
-INT8_C(26), -INT8_C(18), INT8_C(35), INT8_C(9), -INT8_C(15), INT8_C(38), -INT8_C(12), -INT8_C(35) },
{ INT8_C(9), -INT8_C(5), -INT8_C(6), -INT8_C(48), INT8_C(10), -INT8_C(7), -INT8_C(38), INT8_C(18),
-INT8_C(5), -INT8_C(48), -INT8_C(36), INT8_C(12), -INT8_C(8), INT8_C(23), INT8_C(0), -INT8_C(27) } } },
{ { { INT8_C(27), INT8_C(17), -INT8_C(31), INT8_C(14), INT8_C(14), INT8_C(10), INT8_C(47), INT8_C(29),
-INT8_C(16), INT8_C(21), -INT8_C(21), -INT8_C(49), INT8_C(40), -INT8_C(7), -INT8_C(47), INT8_C(0) },
{ -INT8_C(39), -INT8_C(29), -INT8_C(1), -INT8_C(3), -INT8_C(6), INT8_C(48), INT8_C(32), -INT8_C(2),
-INT8_C(14), INT8_C(9), -INT8_C(49), -INT8_C(9), -INT8_C(7), INT8_C(24), INT8_C(42), INT8_C(39) } },
{ INT8_C(4), -INT8_C(15)},
{ { INT8_C(27), INT8_C(17), -INT8_C(31), INT8_C(14), INT8_C(14), INT8_C(10), INT8_C(47), INT8_C(4),
-INT8_C(16), INT8_C(21), -INT8_C(21), -INT8_C(49), INT8_C(40), -INT8_C(7), -INT8_C(47), INT8_C(0) },
{ -INT8_C(39), -INT8_C(29), -INT8_C(1), -INT8_C(3), -INT8_C(6), INT8_C(48), INT8_C(32), -INT8_C(15),
-INT8_C(14), INT8_C(9), -INT8_C(49), -INT8_C(9), -INT8_C(7), INT8_C(24), INT8_C(42), INT8_C(39) } } },
{ { { INT8_C(37), INT8_C(15), -INT8_C(46), INT8_C(31), -INT8_C(34), INT8_C(45), -INT8_C(14), INT8_C(4),
-INT8_C(14), INT8_C(26), INT8_C(46), INT8_C(29), INT8_C(18), INT8_C(8), -INT8_C(42), -INT8_C(46) },
{ -INT8_C(21), INT8_C(6), INT8_C(17), -INT8_C(27), -INT8_C(20), -INT8_C(32), -INT8_C(7), INT8_C(47),
-INT8_C(2), -INT8_C(20), INT8_C(26), INT8_C(18), -INT8_C(49), -INT8_C(34), -INT8_C(49), INT8_C(20) } },
{ INT8_C(35), -INT8_C(38)},
{ { INT8_C(37), INT8_C(15), -INT8_C(46), INT8_C(31), -INT8_C(34), INT8_C(45), -INT8_C(14), INT8_C(4),
INT8_C(35), INT8_C(26), INT8_C(46), INT8_C(29), INT8_C(18), INT8_C(8), -INT8_C(42), -INT8_C(46) },
{ -INT8_C(21), INT8_C(6), INT8_C(17), -INT8_C(27), -INT8_C(20), -INT8_C(32), -INT8_C(7), INT8_C(47),
-INT8_C(38), -INT8_C(20), INT8_C(26), INT8_C(18), -INT8_C(49), -INT8_C(34), -INT8_C(49), INT8_C(20) } } },
{ { { -INT8_C(3), -INT8_C(7), -INT8_C(11), INT8_C(42), -INT8_C(30), INT8_C(18), -INT8_C(19), INT8_C(10),
INT8_C(28), INT8_C(27), -INT8_C(40), INT8_C(8), -INT8_C(37), -INT8_C(45), -INT8_C(46), INT8_C(28) },
{ -INT8_C(20), -INT8_C(48), INT8_C(0), INT8_C(46), INT8_C(25), -INT8_C(39), INT8_C(0), -INT8_C(21),
INT8_C(25), INT8_C(28), -INT8_C(48), -INT8_C(12), -INT8_C(13), -INT8_C(44), -INT8_C(45), -INT8_C(26) } },
{ INT8_C(47), INT8_C(22)},
{ { -INT8_C(3), -INT8_C(7), -INT8_C(11), INT8_C(42), -INT8_C(30), INT8_C(18), -INT8_C(19), INT8_C(10),
INT8_C(28), INT8_C(47), -INT8_C(40), INT8_C(8), -INT8_C(37), -INT8_C(45), -INT8_C(46), INT8_C(28) },
{ -INT8_C(20), -INT8_C(48), INT8_C(0), INT8_C(46), INT8_C(25), -INT8_C(39), INT8_C(0), -INT8_C(21),
INT8_C(25), INT8_C(22), -INT8_C(48), -INT8_C(12), -INT8_C(13), -INT8_C(44), -INT8_C(45), -INT8_C(26) } } },
{ { { -INT8_C(3), INT8_C(35), -INT8_C(46), INT8_C(27), -INT8_C(13), INT8_C(31), -INT8_C(44), INT8_C(37),
INT8_C(46), -INT8_C(47), -INT8_C(29), INT8_C(24), INT8_C(0), INT8_C(31), -INT8_C(24), INT8_C(39) },
{ INT8_C(8), INT8_C(45), -INT8_C(22), -INT8_C(28), INT8_C(9), -INT8_C(19), -INT8_C(27), -INT8_C(1),
INT8_C(47), INT8_C(38), -INT8_C(11), -INT8_C(30), -INT8_C(18), INT8_C(13), -INT8_C(36), INT8_C(6) } },
{ INT8_C(27), INT8_C(45)},
{ { -INT8_C(3), INT8_C(35), -INT8_C(46), INT8_C(27), -INT8_C(13), INT8_C(31), -INT8_C(44), INT8_C(37),
INT8_C(46), -INT8_C(47), INT8_C(27), INT8_C(24), INT8_C(0), INT8_C(31), -INT8_C(24), INT8_C(39) },
{ INT8_C(8), INT8_C(45), -INT8_C(22), -INT8_C(28), INT8_C(9), -INT8_C(19), -INT8_C(27), -INT8_C(1),
INT8_C(47), INT8_C(38), INT8_C(45), -INT8_C(30), -INT8_C(18), INT8_C(13), -INT8_C(36), INT8_C(6) } } },
{ { { -INT8_C(27), INT8_C(22), -INT8_C(2), -INT8_C(45), -INT8_C(16), -INT8_C(20), -INT8_C(11), INT8_C(41),
INT8_C(5), INT8_C(39), INT8_C(35), INT8_C(0), -INT8_C(42), INT8_C(15), -INT8_C(7), -INT8_C(9) },
{ -INT8_C(42), INT8_C(1), INT8_C(5), -INT8_C(26), -INT8_C(17), -INT8_C(42), -INT8_C(12), INT8_C(7),
INT8_C(43), -INT8_C(27), -INT8_C(46), -INT8_C(18), -INT8_C(44), INT8_C(7), INT8_C(49), INT8_C(24) } },
{ INT8_C(14), -INT8_C(8)},
{ { -INT8_C(27), INT8_C(22), -INT8_C(2), -INT8_C(45), -INT8_C(16), -INT8_C(20), -INT8_C(11), INT8_C(41),
INT8_C(5), INT8_C(39), INT8_C(35), INT8_C(14), -INT8_C(42), INT8_C(15), -INT8_C(7), -INT8_C(9) },
{ -INT8_C(42), INT8_C(1), INT8_C(5), -INT8_C(26), -INT8_C(17), -INT8_C(42), -INT8_C(12), INT8_C(7),
INT8_C(43), -INT8_C(27), -INT8_C(46), -INT8_C(8), -INT8_C(44), INT8_C(7), INT8_C(49), INT8_C(24) } } },
{ { { INT8_C(49), -INT8_C(24), -INT8_C(24), -INT8_C(11), INT8_C(12), -INT8_C(25), INT8_C(0), INT8_C(3),
-INT8_C(10), -INT8_C(16), INT8_C(24), INT8_C(47), INT8_C(42), INT8_C(8), INT8_C(45), -INT8_C(14) },
{ INT8_C(19), INT8_C(19), INT8_C(0), -INT8_C(4), INT8_C(9), INT8_C(37), INT8_C(17), INT8_C(6),
INT8_C(16), INT8_C(49), -INT8_C(39), INT8_C(30), INT8_C(42), -INT8_C(1), INT8_C(27), INT8_C(22) } },
{ -INT8_C(14), INT8_C(8)},
{ { INT8_C(49), -INT8_C(24), -INT8_C(24), -INT8_C(11), INT8_C(12), -INT8_C(25), INT8_C(0), INT8_C(3),
-INT8_C(10), -INT8_C(16), INT8_C(24), INT8_C(47), -INT8_C(14), INT8_C(8), INT8_C(45), -INT8_C(14) },
{ INT8_C(19), INT8_C(19), INT8_C(0), -INT8_C(4), INT8_C(9), INT8_C(37), INT8_C(17), INT8_C(6),
INT8_C(16), INT8_C(49), -INT8_C(39), INT8_C(30), INT8_C(8), -INT8_C(1), INT8_C(27), INT8_C(22) } } },
{ { { -INT8_C(6), -INT8_C(22), -INT8_C(33), INT8_C(31), INT8_C(29), -INT8_C(16), INT8_C(29), INT8_C(38),
-INT8_C(25), -INT8_C(9), INT8_C(19), INT8_C(12), -INT8_C(2), -INT8_C(47), INT8_C(19), -INT8_C(47) },
{ -INT8_C(42), INT8_C(2), -INT8_C(24), INT8_C(27), -INT8_C(3), INT8_C(20), INT8_C(2), -INT8_C(20),
-INT8_C(10), -INT8_C(29), -INT8_C(37), -INT8_C(33), -INT8_C(47), -INT8_C(1), INT8_C(31), -INT8_C(4) } },
{ -INT8_C(12), -INT8_C(31)},
{ { -INT8_C(6), -INT8_C(22), -INT8_C(33), INT8_C(31), INT8_C(29), -INT8_C(16), INT8_C(29), INT8_C(38),
-INT8_C(25), -INT8_C(9), INT8_C(19), INT8_C(12), -INT8_C(2), -INT8_C(12), INT8_C(19), -INT8_C(47) },
{ -INT8_C(42), INT8_C(2), -INT8_C(24), INT8_C(27), -INT8_C(3), INT8_C(20), INT8_C(2), -INT8_C(20),
-INT8_C(10), -INT8_C(29), -INT8_C(37), -INT8_C(33), -INT8_C(47), -INT8_C(31), INT8_C(31), -INT8_C(4) } } },
{ { { -INT8_C(4), -INT8_C(34), -INT8_C(11), -INT8_C(37), -INT8_C(11), INT8_C(18), INT8_C(0), INT8_C(13),
-INT8_C(45), INT8_C(20), -INT8_C(3), INT8_C(34), -INT8_C(42), -INT8_C(2), INT8_C(17), INT8_C(0) },
{ INT8_C(43), -INT8_C(15), INT8_C(29), -INT8_C(47), INT8_C(29), INT8_C(31), INT8_C(20), INT8_C(42),
INT8_C(37), INT8_C(6), -INT8_C(39), -INT8_C(2), INT8_C(40), -INT8_C(34), INT8_C(46), INT8_C(21) } },
{ -INT8_C(1), -INT8_C(27)},
{ { -INT8_C(4), -INT8_C(34), -INT8_C(11), -INT8_C(37), -INT8_C(11), INT8_C(18), INT8_C(0), INT8_C(13),
-INT8_C(45), INT8_C(20), -INT8_C(3), INT8_C(34), -INT8_C(42), -INT8_C(2), -INT8_C(1), INT8_C(0) },
{ INT8_C(43), -INT8_C(15), INT8_C(29), -INT8_C(47), INT8_C(29), INT8_C(31), INT8_C(20), INT8_C(42),
INT8_C(37), INT8_C(6), -INT8_C(39), -INT8_C(2), INT8_C(40), -INT8_C(34), -INT8_C(27), INT8_C(21) } } },
{ { { -INT8_C(45), INT8_C(24), INT8_C(18), INT8_C(2), -INT8_C(29), INT8_C(24), -INT8_C(25), INT8_C(8),
INT8_C(2), INT8_C(10), INT8_C(15), -INT8_C(30), INT8_C(16), INT8_C(4), INT8_C(46), -INT8_C(26) },
{ -INT8_C(24), -INT8_C(33), INT8_C(14), INT8_C(42), INT8_C(12), INT8_C(0), INT8_C(14), INT8_C(30),
-INT8_C(11), -INT8_C(3), INT8_C(46), -INT8_C(16), -INT8_C(32), -INT8_C(30), -INT8_C(15), INT8_C(0) } },
{ -INT8_C(18), -INT8_C(19)},
{ { -INT8_C(45), INT8_C(24), INT8_C(18), INT8_C(2), -INT8_C(29), INT8_C(24), -INT8_C(25), INT8_C(8),
INT8_C(2), INT8_C(10), INT8_C(15), -INT8_C(30), INT8_C(16), INT8_C(4), INT8_C(46), -INT8_C(18) },
{ -INT8_C(24), -INT8_C(33), INT8_C(14), INT8_C(42), INT8_C(12), INT8_C(0), INT8_C(14), INT8_C(30),
-INT8_C(11), -INT8_C(3), INT8_C(46), -INT8_C(16), -INT8_C(32), -INT8_C(30), -INT8_C(15), -INT8_C(19) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int8x16x2_t r, src, expected;
src.val[0] = simde_vld1q_s8(test_vec[i].src[0]);
src.val[1] = simde_vld1q_s8(test_vec[i].src[1]);
SIMDE_CONSTIFY_16_(simde_vld2q_lane_s8, r, (HEDLEY_UNREACHABLE(), r), i, test_vec[i].buf, src);
expected.val[0] = simde_vld1q_s8(test_vec[i].r[0]);
expected.val[1] = simde_vld1q_s8(test_vec[i].r[1]);
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]);
}
return 0;
}
static int
test_simde_vld2q_lane_s16 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
int16_t src[2][8];
int16_t buf[2];
int16_t r[2][8];
} test_vec[] = {
{ { { INT16_C(418), INT16_C(216), INT16_C(347), INT16_C(476),
-INT16_C(360), INT16_C(143), -INT16_C(316), -INT16_C(114) },
{ INT16_C(387), -INT16_C(146), INT16_C(225), -INT16_C(190),
INT16_C(399), -INT16_C(128), INT16_C(400), INT16_C(257) } },
{ INT16_C(488), -INT16_C(232)},
{ { INT16_C(488), INT16_C(216), INT16_C(347), INT16_C(476),
-INT16_C(360), INT16_C(143), -INT16_C(316), -INT16_C(114) },
{ -INT16_C(232), -INT16_C(146), INT16_C(225), -INT16_C(190),
INT16_C(399), -INT16_C(128), INT16_C(400), INT16_C(257) } } },
{ { { -INT16_C(311), INT16_C(430), -INT16_C(36), INT16_C(399),
-INT16_C(84), INT16_C(165), INT16_C(434), -INT16_C(105) },
{ -INT16_C(449), INT16_C(455), INT16_C(390), -INT16_C(160),
INT16_C(77), INT16_C(147), INT16_C(38), INT16_C(271) } },
{ INT16_C(106), -INT16_C(427)},
{ { -INT16_C(311), INT16_C(106), -INT16_C(36), INT16_C(399),
-INT16_C(84), INT16_C(165), INT16_C(434), -INT16_C(105) },
{ -INT16_C(449), -INT16_C(427), INT16_C(390), -INT16_C(160),
INT16_C(77), INT16_C(147), INT16_C(38), INT16_C(271) } } },
{ { { INT16_C(181), -INT16_C(136), INT16_C(379), INT16_C(296),
-INT16_C(309), -INT16_C(435), -INT16_C(152), INT16_C(215) },
{ -INT16_C(379), INT16_C(147), INT16_C(345), -INT16_C(276),
INT16_C(105), -INT16_C(142), -INT16_C(485), -INT16_C(383) } },
{ -INT16_C(39), -INT16_C(212)},
{ { INT16_C(181), -INT16_C(136), -INT16_C(39), INT16_C(296),
-INT16_C(309), -INT16_C(435), -INT16_C(152), INT16_C(215) },
{ -INT16_C(379), INT16_C(147), -INT16_C(212), -INT16_C(276),
INT16_C(105), -INT16_C(142), -INT16_C(485), -INT16_C(383) } } },
{ { { INT16_C(181), -INT16_C(451), INT16_C(74), -INT16_C(26),
INT16_C(435), -INT16_C(466), INT16_C(458), -INT16_C(378) },
{ -INT16_C(292), -INT16_C(173), INT16_C(470), INT16_C(400),
-INT16_C(286), INT16_C(269), INT16_C(383), -INT16_C(317) } },
{ INT16_C(240), INT16_C(459)},
{ { INT16_C(181), -INT16_C(451), INT16_C(74), INT16_C(240),
INT16_C(435), -INT16_C(466), INT16_C(458), -INT16_C(378) },
{ -INT16_C(292), -INT16_C(173), INT16_C(470), INT16_C(459),
-INT16_C(286), INT16_C(269), INT16_C(383), -INT16_C(317) } } },
{ { { -INT16_C(377), -INT16_C(162), -INT16_C(3), -INT16_C(316),
-INT16_C(150), INT16_C(261), INT16_C(40), INT16_C(64) },
{ INT16_C(243), INT16_C(47), -INT16_C(381), -INT16_C(58),
INT16_C(290), INT16_C(64), -INT16_C(220), -INT16_C(89) } },
{ INT16_C(378), INT16_C(355)},
{ { -INT16_C(377), -INT16_C(162), -INT16_C(3), -INT16_C(316),
INT16_C(378), INT16_C(261), INT16_C(40), INT16_C(64) },
{ INT16_C(243), INT16_C(47), -INT16_C(381), -INT16_C(58),
INT16_C(355), INT16_C(64), -INT16_C(220), -INT16_C(89) } } },
{ { { -INT16_C(298), INT16_C(486), -INT16_C(96), INT16_C(132),
-INT16_C(108), INT16_C(284), INT16_C(54), INT16_C(224) },
{ INT16_C(249), -INT16_C(117), -INT16_C(26), -INT16_C(467),
-INT16_C(477), -INT16_C(25), INT16_C(300), -INT16_C(233) } },
{ -INT16_C(454), INT16_C(179)},
{ { -INT16_C(298), INT16_C(486), -INT16_C(96), INT16_C(132),
-INT16_C(108), -INT16_C(454), INT16_C(54), INT16_C(224) },
{ INT16_C(249), -INT16_C(117), -INT16_C(26), -INT16_C(467),
-INT16_C(477), INT16_C(179), INT16_C(300), -INT16_C(233) } } },
{ { { -INT16_C(15), -INT16_C(88), -INT16_C(166), INT16_C(374),
INT16_C(203), -INT16_C(81), INT16_C(316), -INT16_C(214) },
{ -INT16_C(227), INT16_C(24), -INT16_C(14), -INT16_C(100),
-INT16_C(31), INT16_C(86), INT16_C(474), -INT16_C(470) } },
{ INT16_C(325), -INT16_C(388)},
{ { -INT16_C(15), -INT16_C(88), -INT16_C(166), INT16_C(374),
INT16_C(203), -INT16_C(81), INT16_C(325), -INT16_C(214) },
{ -INT16_C(227), INT16_C(24), -INT16_C(14), -INT16_C(100),
-INT16_C(31), INT16_C(86), -INT16_C(388), -INT16_C(470) } } },
{ { { INT16_C(370), -INT16_C(25), -INT16_C(181), INT16_C(342),
INT16_C(6), -INT16_C(89), -INT16_C(30), INT16_C(425) },
{ -INT16_C(478), -INT16_C(331), INT16_C(463), INT16_C(400),
-INT16_C(469), -INT16_C(40), INT16_C(46), -INT16_C(134) } },
{ INT16_C(225), -INT16_C(7)},
{ { INT16_C(370), -INT16_C(25), -INT16_C(181), INT16_C(342),
INT16_C(6), -INT16_C(89), -INT16_C(30), INT16_C(225) },
{ -INT16_C(478), -INT16_C(331), INT16_C(463), INT16_C(400),
-INT16_C(469), -INT16_C(40), INT16_C(46), -INT16_C(7) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int16x8x2_t r, src, expected;
src.val[0] = simde_vld1q_s16(test_vec[i].src[0]);
src.val[1] = simde_vld1q_s16(test_vec[i].src[1]);
SIMDE_CONSTIFY_8_(simde_vld2q_lane_s16, r, (HEDLEY_UNREACHABLE(), r), i, test_vec[i].buf, src);
expected.val[0] = simde_vld1q_s16(test_vec[i].r[0]);
expected.val[1] = simde_vld1q_s16(test_vec[i].r[1]);
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]);
}
return 0;
}
static int
test_simde_vld2q_lane_s32 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
int32_t src[2][4];
int32_t buf[2];
int32_t r[2][4];
} test_vec[] = {
{ { { -INT32_C(224), -INT32_C(24), INT32_C(2014), INT32_C(3335) },
{ -INT32_C(4141), INT32_C(3456), -INT32_C(3311), -INT32_C(746) } },
{ -INT32_C(2149), -INT32_C(82)},
{ { -INT32_C(2149), -INT32_C(24), INT32_C(2014), INT32_C(3335) },
{ -INT32_C(82), INT32_C(3456), -INT32_C(3311), -INT32_C(746) } } },
{ { { -INT32_C(2915), -INT32_C(4196), INT32_C(1917), -INT32_C(77) },
{ -INT32_C(506), -INT32_C(4630), -INT32_C(894), INT32_C(1062) } },
{ INT32_C(121), -INT32_C(4389)},
{ { -INT32_C(2915), INT32_C(121), INT32_C(1917), -INT32_C(77) },
{ -INT32_C(506), -INT32_C(4389), -INT32_C(894), INT32_C(1062) } } },
{ { { -INT32_C(2980), INT32_C(3337), -INT32_C(2109), -INT32_C(1551) },
{ INT32_C(3126), -INT32_C(3966), INT32_C(686), INT32_C(3121) } },
{ INT32_C(3921), -INT32_C(4929)},
{ { -INT32_C(2980), INT32_C(3337), INT32_C(3921), -INT32_C(1551) },
{ INT32_C(3126), -INT32_C(3966), -INT32_C(4929), INT32_C(3121) } } },
{ { { -INT32_C(4755), INT32_C(2232), INT32_C(2970), -INT32_C(272) },
{ INT32_C(492), -INT32_C(4034), -INT32_C(412), INT32_C(1495) } },
{ INT32_C(4153), INT32_C(2365)},
{ { -INT32_C(4755), INT32_C(2232), INT32_C(2970), INT32_C(4153) },
{ INT32_C(492), -INT32_C(4034), -INT32_C(412), INT32_C(2365) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int32x4x2_t r, src, expected;
src.val[0] = simde_vld1q_s32(test_vec[i].src[0]);
src.val[1] = simde_vld1q_s32(test_vec[i].src[1]);
SIMDE_CONSTIFY_4_(simde_vld2q_lane_s32, r, (HEDLEY_UNREACHABLE(), r), i, test_vec[i].buf, src);
expected.val[0] = simde_vld1q_s32(test_vec[i].r[0]);
expected.val[1] = simde_vld1q_s32(test_vec[i].r[1]);
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]);
}
return 0;
}
static int
test_simde_vld2q_lane_s64 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
int64_t src[2][2];
int64_t buf[2];
int64_t r[2][2];
} test_vec[] = {
{ { { INT64_C(133259958), INT64_C(495309638) },
{ INT64_C(463332514), INT64_C(273508271) } },
{ INT64_C(159685885), -INT64_C(187025881)},
{ { INT64_C(159685885), INT64_C(495309638) },
{ -INT64_C(187025881), INT64_C(273508271) } } },
{ { { -INT64_C(430109367), -INT64_C(402602870) },
{ -INT64_C(309788205), -INT64_C(441710399) } },
{ -INT64_C(264334842), -INT64_C(60309831)},
{ { -INT64_C(430109367), -INT64_C(264334842) },
{ -INT64_C(309788205), -INT64_C(60309831) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int64x2x2_t r, src, expected;
src.val[0] = simde_vld1q_s64(test_vec[i].src[0]);
src.val[1] = simde_vld1q_s64(test_vec[i].src[1]);
SIMDE_CONSTIFY_2_(simde_vld2q_lane_s64, r, (HEDLEY_UNREACHABLE(), r), i, test_vec[i].buf, src);
expected.val[0] = simde_vld1q_s64(test_vec[i].r[0]);
expected.val[1] = simde_vld1q_s64(test_vec[i].r[1]);
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]);
}
return 0;
}
static int
test_simde_vld2q_lane_u8 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
uint8_t src[2][16];
uint8_t buf[2];
uint8_t r[2][16];
} test_vec[] = {
{ { { UINT8_C(46), UINT8_C(42), UINT8_C(1), UINT8_C(9), UINT8_C(24), UINT8_C(23), UINT8_C(11), UINT8_C(37),
UINT8_C(22), UINT8_C(30), UINT8_C(25), UINT8_C(27), UINT8_C(10), UINT8_C(26), UINT8_C(1), UINT8_C(10) },
{ UINT8_C(13), UINT8_C(29), UINT8_C(22), UINT8_C(40), UINT8_C(48), UINT8_C(40), UINT8_C(0), UINT8_C(12),
UINT8_C(18), UINT8_C(35), UINT8_C(43), UINT8_C(30), UINT8_C(32), UINT8_C(30), UINT8_C(21), UINT8_C(36) } },
{ UINT8_C(13), UINT8_C(15)},
{ { UINT8_C(13), UINT8_C(42), UINT8_C(1), UINT8_C(9), UINT8_C(24), UINT8_C(23), UINT8_C(11), UINT8_C(37),
UINT8_C(22), UINT8_C(30), UINT8_C(25), UINT8_C(27), UINT8_C(10), UINT8_C(26), UINT8_C(1), UINT8_C(10) },
{ UINT8_C(15), UINT8_C(29), UINT8_C(22), UINT8_C(40), UINT8_C(48), UINT8_C(40), UINT8_C(0), UINT8_C(12),
UINT8_C(18), UINT8_C(35), UINT8_C(43), UINT8_C(30), UINT8_C(32), UINT8_C(30), UINT8_C(21), UINT8_C(36) } } },
{ { { UINT8_C(20), UINT8_C(7), UINT8_C(32), UINT8_C(38), UINT8_C(1), UINT8_C(28), UINT8_C(5), UINT8_C(1),
UINT8_C(17), UINT8_C(10), UINT8_C(10), UINT8_C(23), UINT8_C(26), UINT8_C(1), UINT8_C(37), UINT8_C(35) },
{ UINT8_C(18), UINT8_C(31), UINT8_C(37), UINT8_C(26), UINT8_C(9), UINT8_C(14), UINT8_C(17), UINT8_C(38),
UINT8_C(8), UINT8_C(27), UINT8_C(45), UINT8_C(15), UINT8_C(0), UINT8_C(36), UINT8_C(1), UINT8_C(20) } },
{ UINT8_C(11), UINT8_C(6)},
{ { UINT8_C(20), UINT8_C(11), UINT8_C(32), UINT8_C(38), UINT8_C(1), UINT8_C(28), UINT8_C(5), UINT8_C(1),
UINT8_C(17), UINT8_C(10), UINT8_C(10), UINT8_C(23), UINT8_C(26), UINT8_C(1), UINT8_C(37), UINT8_C(35) },
{ UINT8_C(18), UINT8_C(6), UINT8_C(37), UINT8_C(26), UINT8_C(9), UINT8_C(14), UINT8_C(17), UINT8_C(38),
UINT8_C(8), UINT8_C(27), UINT8_C(45), UINT8_C(15), UINT8_C(0), UINT8_C(36), UINT8_C(1), UINT8_C(20) } } },
{ { { UINT8_C(13), UINT8_C(26), UINT8_C(44), UINT8_C(35), UINT8_C(42), UINT8_C(3), UINT8_C(9), UINT8_C(23),
UINT8_C(0), UINT8_C(20), UINT8_C(17), UINT8_C(46), UINT8_C(15), UINT8_C(39), UINT8_C(26), UINT8_C(34) },
{ UINT8_C(5), UINT8_C(22), UINT8_C(30), UINT8_C(9), UINT8_C(17), UINT8_C(44), UINT8_C(46), UINT8_C(25),
UINT8_C(45), UINT8_C(46), UINT8_C(16), UINT8_C(6), UINT8_C(40), UINT8_C(37), UINT8_C(15), UINT8_C(11) } },
{ UINT8_C(25), UINT8_C(25)},
{ { UINT8_C(13), UINT8_C(26), UINT8_C(25), UINT8_C(35), UINT8_C(42), UINT8_C(3), UINT8_C(9), UINT8_C(23),
UINT8_C(0), UINT8_C(20), UINT8_C(17), UINT8_C(46), UINT8_C(15), UINT8_C(39), UINT8_C(26), UINT8_C(34) },
{ UINT8_C(5), UINT8_C(22), UINT8_C(25), UINT8_C(9), UINT8_C(17), UINT8_C(44), UINT8_C(46), UINT8_C(25),
UINT8_C(45), UINT8_C(46), UINT8_C(16), UINT8_C(6), UINT8_C(40), UINT8_C(37), UINT8_C(15), UINT8_C(11) } } },
{ { { UINT8_C(6), UINT8_C(37), UINT8_C(49), UINT8_C(9), UINT8_C(38), UINT8_C(40), UINT8_C(21), UINT8_C(28),
UINT8_C(2), UINT8_C(1), UINT8_C(18), UINT8_C(31), UINT8_C(34), UINT8_C(2), UINT8_C(23), UINT8_C(35) },
{ UINT8_C(17), UINT8_C(12), UINT8_C(24), UINT8_C(48), UINT8_C(30), UINT8_C(16), UINT8_C(21), UINT8_C(31),
UINT8_C(39), UINT8_C(29), UINT8_C(4), UINT8_C(18), UINT8_C(47), UINT8_C(15), UINT8_C(49), UINT8_C(18) } },
{ UINT8_C(41), UINT8_C(33)},
{ { UINT8_C(6), UINT8_C(37), UINT8_C(49), UINT8_C(41), UINT8_C(38), UINT8_C(40), UINT8_C(21), UINT8_C(28),
UINT8_C(2), UINT8_C(1), UINT8_C(18), UINT8_C(31), UINT8_C(34), UINT8_C(2), UINT8_C(23), UINT8_C(35) },
{ UINT8_C(17), UINT8_C(12), UINT8_C(24), UINT8_C(33), UINT8_C(30), UINT8_C(16), UINT8_C(21), UINT8_C(31),
UINT8_C(39), UINT8_C(29), UINT8_C(4), UINT8_C(18), UINT8_C(47), UINT8_C(15), UINT8_C(49), UINT8_C(18) } } },
{ { { UINT8_C(10), UINT8_C(27), UINT8_C(21), UINT8_C(23), UINT8_C(17), UINT8_C(42), UINT8_C(24), UINT8_C(35),
UINT8_C(38), UINT8_C(3), UINT8_C(29), UINT8_C(41), UINT8_C(44), UINT8_C(15), UINT8_C(48), UINT8_C(26) },
{ UINT8_C(9), UINT8_C(47), UINT8_C(29), UINT8_C(8), UINT8_C(7), UINT8_C(6), UINT8_C(26), UINT8_C(9),
UINT8_C(11), UINT8_C(2), UINT8_C(6), UINT8_C(22), UINT8_C(34), UINT8_C(5), UINT8_C(38), UINT8_C(18) } },
{ UINT8_C(21), UINT8_C(25)},
{ { UINT8_C(10), UINT8_C(27), UINT8_C(21), UINT8_C(23), UINT8_C(21), UINT8_C(42), UINT8_C(24), UINT8_C(35),
UINT8_C(38), UINT8_C(3), UINT8_C(29), UINT8_C(41), UINT8_C(44), UINT8_C(15), UINT8_C(48), UINT8_C(26) },
{ UINT8_C(9), UINT8_C(47), UINT8_C(29), UINT8_C(8), UINT8_C(25), UINT8_C(6), UINT8_C(26), UINT8_C(9),
UINT8_C(11), UINT8_C(2), UINT8_C(6), UINT8_C(22), UINT8_C(34), UINT8_C(5), UINT8_C(38), UINT8_C(18) } } },
{ { { UINT8_C(2), UINT8_C(33), UINT8_C(23), UINT8_C(0), UINT8_C(48), UINT8_C(2), UINT8_C(26), UINT8_C(29),
UINT8_C(38), UINT8_C(14), UINT8_C(48), UINT8_C(0), UINT8_C(44), UINT8_C(42), UINT8_C(37), UINT8_C(5) },
{ UINT8_C(24), UINT8_C(4), UINT8_C(37), UINT8_C(46), UINT8_C(40), UINT8_C(24), UINT8_C(40), UINT8_C(18),
UINT8_C(44), UINT8_C(48), UINT8_C(36), UINT8_C(45), UINT8_C(2), UINT8_C(4), UINT8_C(35), UINT8_C(9) } },
{ UINT8_C(15), UINT8_C(13)},
{ { UINT8_C(2), UINT8_C(33), UINT8_C(23), UINT8_C(0), UINT8_C(48), UINT8_C(15), UINT8_C(26), UINT8_C(29),
UINT8_C(38), UINT8_C(14), UINT8_C(48), UINT8_C(0), UINT8_C(44), UINT8_C(42), UINT8_C(37), UINT8_C(5) },
{ UINT8_C(24), UINT8_C(4), UINT8_C(37), UINT8_C(46), UINT8_C(40), UINT8_C(13), UINT8_C(40), UINT8_C(18),
UINT8_C(44), UINT8_C(48), UINT8_C(36), UINT8_C(45), UINT8_C(2), UINT8_C(4), UINT8_C(35), UINT8_C(9) } } },
{ { { UINT8_C(19), UINT8_C(26), UINT8_C(45), UINT8_C(37), UINT8_C(27), UINT8_C(2), UINT8_C(43), UINT8_C(37),
UINT8_C(26), UINT8_C(18), UINT8_C(35), UINT8_C(9), UINT8_C(15), UINT8_C(38), UINT8_C(12), UINT8_C(35) },
{ UINT8_C(9), UINT8_C(5), UINT8_C(6), UINT8_C(48), UINT8_C(10), UINT8_C(7), UINT8_C(18), UINT8_C(18),
UINT8_C(5), UINT8_C(48), UINT8_C(36), UINT8_C(12), UINT8_C(8), UINT8_C(23), UINT8_C(0), UINT8_C(27) } },
{ UINT8_C(19), UINT8_C(38)},
{ { UINT8_C(19), UINT8_C(26), UINT8_C(45), UINT8_C(37), UINT8_C(27), UINT8_C(2), UINT8_C(19), UINT8_C(37),
UINT8_C(26), UINT8_C(18), UINT8_C(35), UINT8_C(9), UINT8_C(15), UINT8_C(38), UINT8_C(12), UINT8_C(35) },
{ UINT8_C(9), UINT8_C(5), UINT8_C(6), UINT8_C(48), UINT8_C(10), UINT8_C(7), UINT8_C(38), UINT8_C(18),
UINT8_C(5), UINT8_C(48), UINT8_C(36), UINT8_C(12), UINT8_C(8), UINT8_C(23), UINT8_C(0), UINT8_C(27) } } },
{ { { UINT8_C(27), UINT8_C(17), UINT8_C(31), UINT8_C(14), UINT8_C(14), UINT8_C(10), UINT8_C(47), UINT8_C(29),
UINT8_C(16), UINT8_C(21), UINT8_C(21), UINT8_C(49), UINT8_C(40), UINT8_C(7), UINT8_C(47), UINT8_C(0) },
{ UINT8_C(39), UINT8_C(29), UINT8_C(1), UINT8_C(3), UINT8_C(6), UINT8_C(48), UINT8_C(32), UINT8_C(2),
UINT8_C(14), UINT8_C(9), UINT8_C(49), UINT8_C(9), UINT8_C(7), UINT8_C(24), UINT8_C(42), UINT8_C(39) } },
{ UINT8_C(4), UINT8_C(15)},
{ { UINT8_C(27), UINT8_C(17), UINT8_C(31), UINT8_C(14), UINT8_C(14), UINT8_C(10), UINT8_C(47), UINT8_C(4),
UINT8_C(16), UINT8_C(21), UINT8_C(21), UINT8_C(49), UINT8_C(40), UINT8_C(7), UINT8_C(47), UINT8_C(0) },
{ UINT8_C(39), UINT8_C(29), UINT8_C(1), UINT8_C(3), UINT8_C(6), UINT8_C(48), UINT8_C(32), UINT8_C(15),
UINT8_C(14), UINT8_C(9), UINT8_C(49), UINT8_C(9), UINT8_C(7), UINT8_C(24), UINT8_C(42), UINT8_C(39) } } },
{ { { UINT8_C(37), UINT8_C(15), UINT8_C(46), UINT8_C(31), UINT8_C(34), UINT8_C(45), UINT8_C(14), UINT8_C(4),
UINT8_C(14), UINT8_C(26), UINT8_C(46), UINT8_C(29), UINT8_C(18), UINT8_C(8), UINT8_C(42), UINT8_C(46) },
{ UINT8_C(21), UINT8_C(6), UINT8_C(17), UINT8_C(27), UINT8_C(20), UINT8_C(32), UINT8_C(7), UINT8_C(47),
UINT8_C(2), UINT8_C(20), UINT8_C(26), UINT8_C(18), UINT8_C(49), UINT8_C(34), UINT8_C(49), UINT8_C(20) } },
{ UINT8_C(35), UINT8_C(38)},
{ { UINT8_C(37), UINT8_C(15), UINT8_C(46), UINT8_C(31), UINT8_C(34), UINT8_C(45), UINT8_C(14), UINT8_C(4),
UINT8_C(35), UINT8_C(26), UINT8_C(46), UINT8_C(29), UINT8_C(18), UINT8_C(8), UINT8_C(42), UINT8_C(46) },
{ UINT8_C(21), UINT8_C(6), UINT8_C(17), UINT8_C(27), UINT8_C(20), UINT8_C(32), UINT8_C(7), UINT8_C(47),
UINT8_C(38), UINT8_C(20), UINT8_C(26), UINT8_C(18), UINT8_C(49), UINT8_C(34), UINT8_C(49), UINT8_C(20) } } },
{ { { UINT8_C(3), UINT8_C(7), UINT8_C(11), UINT8_C(42), UINT8_C(30), UINT8_C(18), UINT8_C(19), UINT8_C(10),
UINT8_C(28), UINT8_C(27), UINT8_C(40), UINT8_C(8), UINT8_C(37), UINT8_C(45), UINT8_C(46), UINT8_C(28) },
{ UINT8_C(20), UINT8_C(48), UINT8_C(0), UINT8_C(46), UINT8_C(25), UINT8_C(39), UINT8_C(0), UINT8_C(21),
UINT8_C(25), UINT8_C(28), UINT8_C(48), UINT8_C(12), UINT8_C(13), UINT8_C(44), UINT8_C(45), UINT8_C(26) } },
{ UINT8_C(47), UINT8_C(22)},
{ { UINT8_C(3), UINT8_C(7), UINT8_C(11), UINT8_C(42), UINT8_C(30), UINT8_C(18), UINT8_C(19), UINT8_C(10),
UINT8_C(28), UINT8_C(47), UINT8_C(40), UINT8_C(8), UINT8_C(37), UINT8_C(45), UINT8_C(46), UINT8_C(28) },
{ UINT8_C(20), UINT8_C(48), UINT8_C(0), UINT8_C(46), UINT8_C(25), UINT8_C(39), UINT8_C(0), UINT8_C(21),
UINT8_C(25), UINT8_C(22), UINT8_C(48), UINT8_C(12), UINT8_C(13), UINT8_C(44), UINT8_C(45), UINT8_C(26) } } },
{ { { UINT8_C(3), UINT8_C(35), UINT8_C(46), UINT8_C(27), UINT8_C(13), UINT8_C(31), UINT8_C(44), UINT8_C(37),
UINT8_C(46), UINT8_C(47), UINT8_C(29), UINT8_C(24), UINT8_C(0), UINT8_C(31), UINT8_C(24), UINT8_C(39) },
{ UINT8_C(8), UINT8_C(45), UINT8_C(22), UINT8_C(28), UINT8_C(9), UINT8_C(19), UINT8_C(27), UINT8_C(1),
UINT8_C(47), UINT8_C(38), UINT8_C(11), UINT8_C(30), UINT8_C(18), UINT8_C(13), UINT8_C(36), UINT8_C(6) } },
{ UINT8_C(27), UINT8_C(45)},
{ { UINT8_C(3), UINT8_C(35), UINT8_C(46), UINT8_C(27), UINT8_C(13), UINT8_C(31), UINT8_C(44), UINT8_C(37),
UINT8_C(46), UINT8_C(47), UINT8_C(27), UINT8_C(24), UINT8_C(0), UINT8_C(31), UINT8_C(24), UINT8_C(39) },
{ UINT8_C(8), UINT8_C(45), UINT8_C(22), UINT8_C(28), UINT8_C(9), UINT8_C(19), UINT8_C(27), UINT8_C(1),
UINT8_C(47), UINT8_C(38), UINT8_C(45), UINT8_C(30), UINT8_C(18), UINT8_C(13), UINT8_C(36), UINT8_C(6) } } },
{ { { UINT8_C(27), UINT8_C(22), UINT8_C(2), UINT8_C(45), UINT8_C(16), UINT8_C(20), UINT8_C(11), UINT8_C(41),
UINT8_C(5), UINT8_C(39), UINT8_C(35), UINT8_C(0), UINT8_C(42), UINT8_C(15), UINT8_C(7), UINT8_C(9) },
{ UINT8_C(42), UINT8_C(1), UINT8_C(5), UINT8_C(26), UINT8_C(17), UINT8_C(42), UINT8_C(12), UINT8_C(7),
UINT8_C(43), UINT8_C(27), UINT8_C(46), UINT8_C(18), UINT8_C(44), UINT8_C(7), UINT8_C(49), UINT8_C(24) } },
{ UINT8_C(14), UINT8_C(8)},
{ { UINT8_C(27), UINT8_C(22), UINT8_C(2), UINT8_C(45), UINT8_C(16), UINT8_C(20), UINT8_C(11), UINT8_C(41),
UINT8_C(5), UINT8_C(39), UINT8_C(35), UINT8_C(14), UINT8_C(42), UINT8_C(15), UINT8_C(7), UINT8_C(9) },
{ UINT8_C(42), UINT8_C(1), UINT8_C(5), UINT8_C(26), UINT8_C(17), UINT8_C(42), UINT8_C(12), UINT8_C(7),
UINT8_C(43), UINT8_C(27), UINT8_C(46), UINT8_C(8), UINT8_C(44), UINT8_C(7), UINT8_C(49), UINT8_C(24) } } },
{ { { UINT8_C(49), UINT8_C(24), UINT8_C(24), UINT8_C(11), UINT8_C(12), UINT8_C(25), UINT8_C(0), UINT8_C(3),
UINT8_C(10), UINT8_C(16), UINT8_C(24), UINT8_C(47), UINT8_C(42), UINT8_C(8), UINT8_C(45), UINT8_C(14) },
{ UINT8_C(19), UINT8_C(19), UINT8_C(0), UINT8_C(4), UINT8_C(9), UINT8_C(37), UINT8_C(17), UINT8_C(6),
UINT8_C(16), UINT8_C(49), UINT8_C(39), UINT8_C(30), UINT8_C(42), UINT8_C(1), UINT8_C(27), UINT8_C(22) } },
{ UINT8_C(14), UINT8_C(8)},
{ { UINT8_C(49), UINT8_C(24), UINT8_C(24), UINT8_C(11), UINT8_C(12), UINT8_C(25), UINT8_C(0), UINT8_C(3),
UINT8_C(10), UINT8_C(16), UINT8_C(24), UINT8_C(47), UINT8_C(14), UINT8_C(8), UINT8_C(45), UINT8_C(14) },
{ UINT8_C(19), UINT8_C(19), UINT8_C(0), UINT8_C(4), UINT8_C(9), UINT8_C(37), UINT8_C(17), UINT8_C(6),
UINT8_C(16), UINT8_C(49), UINT8_C(39), UINT8_C(30), UINT8_C(8), UINT8_C(1), UINT8_C(27), UINT8_C(22) } } },
{ { { UINT8_C(6), UINT8_C(22), UINT8_C(33), UINT8_C(31), UINT8_C(29), UINT8_C(16), UINT8_C(29), UINT8_C(38),
UINT8_C(25), UINT8_C(9), UINT8_C(19), UINT8_C(12), UINT8_C(2), UINT8_C(47), UINT8_C(19), UINT8_C(47) },
{ UINT8_C(42), UINT8_C(2), UINT8_C(24), UINT8_C(27), UINT8_C(3), UINT8_C(20), UINT8_C(2), UINT8_C(20),
UINT8_C(10), UINT8_C(29), UINT8_C(37), UINT8_C(33), UINT8_C(47), UINT8_C(1), UINT8_C(31), UINT8_C(4) } },
{ UINT8_C(12), UINT8_C(31)},
{ { UINT8_C(6), UINT8_C(22), UINT8_C(33), UINT8_C(31), UINT8_C(29), UINT8_C(16), UINT8_C(29), UINT8_C(38),
UINT8_C(25), UINT8_C(9), UINT8_C(19), UINT8_C(12), UINT8_C(2), UINT8_C(12), UINT8_C(19), UINT8_C(47) },
{ UINT8_C(42), UINT8_C(2), UINT8_C(24), UINT8_C(27), UINT8_C(3), UINT8_C(20), UINT8_C(2), UINT8_C(20),
UINT8_C(10), UINT8_C(29), UINT8_C(37), UINT8_C(33), UINT8_C(47), UINT8_C(31), UINT8_C(31), UINT8_C(4) } } },
{ { { UINT8_C(4), UINT8_C(34), UINT8_C(11), UINT8_C(37), UINT8_C(11), UINT8_C(18), UINT8_C(0), UINT8_C(13),
UINT8_C(45), UINT8_C(20), UINT8_C(3), UINT8_C(34), UINT8_C(42), UINT8_C(2), UINT8_C(17), UINT8_C(0) },
{ UINT8_C(43), UINT8_C(15), UINT8_C(29), UINT8_C(47), UINT8_C(29), UINT8_C(31), UINT8_C(20), UINT8_C(42),
UINT8_C(37), UINT8_C(6), UINT8_C(39), UINT8_C(2), UINT8_C(40), UINT8_C(34), UINT8_C(46), UINT8_C(21) } },
{ UINT8_C(1), UINT8_C(27)},
{ { UINT8_C(4), UINT8_C(34), UINT8_C(11), UINT8_C(37), UINT8_C(11), UINT8_C(18), UINT8_C(0), UINT8_C(13),
UINT8_C(45), UINT8_C(20), UINT8_C(3), UINT8_C(34), UINT8_C(42), UINT8_C(2), UINT8_C(1), UINT8_C(0) },
{ UINT8_C(43), UINT8_C(15), UINT8_C(29), UINT8_C(47), UINT8_C(29), UINT8_C(31), UINT8_C(20), UINT8_C(42),
UINT8_C(37), UINT8_C(6), UINT8_C(39), UINT8_C(2), UINT8_C(40), UINT8_C(34), UINT8_C(27), UINT8_C(21) } } },
{ { { UINT8_C(45), UINT8_C(24), UINT8_C(18), UINT8_C(2), UINT8_C(29), UINT8_C(24), UINT8_C(25), UINT8_C(8),
UINT8_C(2), UINT8_C(10), UINT8_C(15), UINT8_C(30), UINT8_C(16), UINT8_C(4), UINT8_C(46), UINT8_C(26) },
{ UINT8_C(24), UINT8_C(33), UINT8_C(14), UINT8_C(42), UINT8_C(12), UINT8_C(0), UINT8_C(14), UINT8_C(30),
UINT8_C(11), UINT8_C(3), UINT8_C(46), UINT8_C(16), UINT8_C(32), UINT8_C(30), UINT8_C(15), UINT8_C(0) } },
{ UINT8_C(18), UINT8_C(19)},
{ { UINT8_C(45), UINT8_C(24), UINT8_C(18), UINT8_C(2), UINT8_C(29), UINT8_C(24), UINT8_C(25), UINT8_C(8),
UINT8_C(2), UINT8_C(10), UINT8_C(15), UINT8_C(30), UINT8_C(16), UINT8_C(4), UINT8_C(46), UINT8_C(18) },
{ UINT8_C(24), UINT8_C(33), UINT8_C(14), UINT8_C(42), UINT8_C(12), UINT8_C(0), UINT8_C(14), UINT8_C(30),
UINT8_C(11), UINT8_C(3), UINT8_C(46), UINT8_C(16), UINT8_C(32), UINT8_C(30), UINT8_C(15), UINT8_C(19) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint8x16x2_t r, src, expected;
src.val[0] = simde_vld1q_u8(test_vec[i].src[0]);
src.val[1] = simde_vld1q_u8(test_vec[i].src[1]);
SIMDE_CONSTIFY_16_(simde_vld2q_lane_u8, r, (HEDLEY_UNREACHABLE(), r), i, test_vec[i].buf, src);
expected.val[0] = simde_vld1q_u8(test_vec[i].r[0]);
expected.val[1] = simde_vld1q_u8(test_vec[i].r[1]);
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]);
}
return 0;
}
static int
test_simde_vld2q_lane_u16 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
uint16_t src[2][8];
uint16_t buf[2];
uint16_t r[2][8];
} test_vec[] = {
{ { { UINT16_C(418), UINT16_C(216), UINT16_C(347), UINT16_C(476),
UINT16_C(360), UINT16_C(143), UINT16_C(316), UINT16_C(114) },
{ UINT16_C(387), UINT16_C(146), UINT16_C(225), UINT16_C(190),
UINT16_C(399), UINT16_C(128), UINT16_C(400), UINT16_C(257) } },
{ UINT16_C(488), UINT16_C(232)},
{ { UINT16_C(488), UINT16_C(216), UINT16_C(347), UINT16_C(476),
UINT16_C(360), UINT16_C(143), UINT16_C(316), UINT16_C(114) },
{ UINT16_C(232), UINT16_C(146), UINT16_C(225), UINT16_C(190),
UINT16_C(399), UINT16_C(128), UINT16_C(400), UINT16_C(257) } } },
{ { { UINT16_C(311), UINT16_C(430), UINT16_C(36), UINT16_C(399),
UINT16_C(84), UINT16_C(165), UINT16_C(434), UINT16_C(105) },
{ UINT16_C(449), UINT16_C(455), UINT16_C(390), UINT16_C(160),
UINT16_C(77), UINT16_C(147), UINT16_C(38), UINT16_C(271) } },
{ UINT16_C(106), UINT16_C(427)},
{ { UINT16_C(311), UINT16_C(106), UINT16_C(36), UINT16_C(399),
UINT16_C(84), UINT16_C(165), UINT16_C(434), UINT16_C(105) },
{ UINT16_C(449), UINT16_C(427), UINT16_C(390), UINT16_C(160),
UINT16_C(77), UINT16_C(147), UINT16_C(38), UINT16_C(271) } } },
{ { { UINT16_C(181), UINT16_C(136), UINT16_C(379), UINT16_C(296),
UINT16_C(309), UINT16_C(435), UINT16_C(152), UINT16_C(215) },
{ UINT16_C(379), UINT16_C(147), UINT16_C(345), UINT16_C(276),
UINT16_C(105), UINT16_C(142), UINT16_C(485), UINT16_C(383) } },
{ UINT16_C(39), UINT16_C(212)},
{ { UINT16_C(181), UINT16_C(136), UINT16_C(39), UINT16_C(296),
UINT16_C(309), UINT16_C(435), UINT16_C(152), UINT16_C(215) },
{ UINT16_C(379), UINT16_C(147), UINT16_C(212), UINT16_C(276),
UINT16_C(105), UINT16_C(142), UINT16_C(485), UINT16_C(383) } } },
{ { { UINT16_C(181), UINT16_C(451), UINT16_C(74), UINT16_C(26),
UINT16_C(435), UINT16_C(466), UINT16_C(458), UINT16_C(378) },
{ UINT16_C(292), UINT16_C(173), UINT16_C(470), UINT16_C(400),
UINT16_C(286), UINT16_C(269), UINT16_C(383), UINT16_C(317) } },
{ UINT16_C(240), UINT16_C(459)},
{ { UINT16_C(181), UINT16_C(451), UINT16_C(74), UINT16_C(240),
UINT16_C(435), UINT16_C(466), UINT16_C(458), UINT16_C(378) },
{ UINT16_C(292), UINT16_C(173), UINT16_C(470), UINT16_C(459),
UINT16_C(286), UINT16_C(269), UINT16_C(383), UINT16_C(317) } } },
{ { { UINT16_C(377), UINT16_C(162), UINT16_C(3), UINT16_C(316),
UINT16_C(150), UINT16_C(261), UINT16_C(40), UINT16_C(64) },
{ UINT16_C(243), UINT16_C(47), UINT16_C(381), UINT16_C(58),
UINT16_C(290), UINT16_C(64), UINT16_C(220), UINT16_C(89) } },
{ UINT16_C(378), UINT16_C(355)},
{ { UINT16_C(377), UINT16_C(162), UINT16_C(3), UINT16_C(316),
UINT16_C(378), UINT16_C(261), UINT16_C(40), UINT16_C(64) },
{ UINT16_C(243), UINT16_C(47), UINT16_C(381), UINT16_C(58),
UINT16_C(355), UINT16_C(64), UINT16_C(220), UINT16_C(89) } } },
{ { { UINT16_C(298), UINT16_C(486), UINT16_C(96), UINT16_C(132),
UINT16_C(108), UINT16_C(284), UINT16_C(54), UINT16_C(224) },
{ UINT16_C(249), UINT16_C(117), UINT16_C(26), UINT16_C(467),
UINT16_C(477), UINT16_C(25), UINT16_C(300), UINT16_C(233) } },
{ UINT16_C(454), UINT16_C(179)},
{ { UINT16_C(298), UINT16_C(486), UINT16_C(96), UINT16_C(132),
UINT16_C(108), UINT16_C(454), UINT16_C(54), UINT16_C(224) },
{ UINT16_C(249), UINT16_C(117), UINT16_C(26), UINT16_C(467),
UINT16_C(477), UINT16_C(179), UINT16_C(300), UINT16_C(233) } } },
{ { { UINT16_C(15), UINT16_C(88), UINT16_C(166), UINT16_C(374),
UINT16_C(203), UINT16_C(81), UINT16_C(316), UINT16_C(214) },
{ UINT16_C(227), UINT16_C(24), UINT16_C(14), UINT16_C(100),
UINT16_C(31), UINT16_C(86), UINT16_C(474), UINT16_C(470) } },
{ UINT16_C(325), UINT16_C(388)},
{ { UINT16_C(15), UINT16_C(88), UINT16_C(166), UINT16_C(374),
UINT16_C(203), UINT16_C(81), UINT16_C(325), UINT16_C(214) },
{ UINT16_C(227), UINT16_C(24), UINT16_C(14), UINT16_C(100),
UINT16_C(31), UINT16_C(86), UINT16_C(388), UINT16_C(470) } } },
{ { { UINT16_C(370), UINT16_C(25), UINT16_C(181), UINT16_C(342),
UINT16_C(6), UINT16_C(89), UINT16_C(30), UINT16_C(425) },
{ UINT16_C(478), UINT16_C(331), UINT16_C(463), UINT16_C(400),
UINT16_C(469), UINT16_C(40), UINT16_C(46), UINT16_C(134) } },
{ UINT16_C(225), UINT16_C(7)},
{ { UINT16_C(370), UINT16_C(25), UINT16_C(181), UINT16_C(342),
UINT16_C(6), UINT16_C(89), UINT16_C(30), UINT16_C(225) },
{ UINT16_C(478), UINT16_C(331), UINT16_C(463), UINT16_C(400),
UINT16_C(469), UINT16_C(40), UINT16_C(46), UINT16_C(7) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint16x8x2_t r, src, expected;
src.val[0] = simde_vld1q_u16(test_vec[i].src[0]);
src.val[1] = simde_vld1q_u16(test_vec[i].src[1]);
SIMDE_CONSTIFY_8_(simde_vld2q_lane_u16, r, (HEDLEY_UNREACHABLE(), r), i, test_vec[i].buf, src);
expected.val[0] = simde_vld1q_u16(test_vec[i].r[0]);
expected.val[1] = simde_vld1q_u16(test_vec[i].r[1]);
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]);
}
return 0;
}
static int
test_simde_vld2q_lane_u32 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
uint32_t src[2][4];
uint32_t buf[2];
uint32_t r[2][4];
} test_vec[] = {
{ { { UINT32_C(224), UINT32_C(24), UINT32_C(2014), UINT32_C(3335) },
{ UINT32_C(4141), UINT32_C(3456), UINT32_C(3311), UINT32_C(746) } },
{ UINT32_C(2149), UINT32_C(82)},
{ { UINT32_C(2149), UINT32_C(24), UINT32_C(2014), UINT32_C(3335) },
{ UINT32_C(82), UINT32_C(3456), UINT32_C(3311), UINT32_C(746) } } },
{ { { UINT32_C(2915), UINT32_C(4196), UINT32_C(1917), UINT32_C(77) },
{ UINT32_C(506), UINT32_C(4630), UINT32_C(894), UINT32_C(1062) } },
{ UINT32_C(121), UINT32_C(4389)},
{ { UINT32_C(2915), UINT32_C(121), UINT32_C(1917), UINT32_C(77) },
{ UINT32_C(506), UINT32_C(4389), UINT32_C(894), UINT32_C(1062) } } },
{ { { UINT32_C(2980), UINT32_C(3337), UINT32_C(2109), UINT32_C(1551) },
{ UINT32_C(3126), UINT32_C(3966), UINT32_C(686), UINT32_C(3121) } },
{ UINT32_C(3921), UINT32_C(4929)},
{ { UINT32_C(2980), UINT32_C(3337), UINT32_C(3921), UINT32_C(1551) },
{ UINT32_C(3126), UINT32_C(3966), UINT32_C(4929), UINT32_C(3121) } } },
{ { { UINT32_C(4755), UINT32_C(2232), UINT32_C(2970), UINT32_C(272) },
{ UINT32_C(492), UINT32_C(4034), UINT32_C(412), UINT32_C(1495) } },
{ UINT32_C(4153), UINT32_C(2365)},
{ { UINT32_C(4755), UINT32_C(2232), UINT32_C(2970), UINT32_C(4153) },
{ UINT32_C(492), UINT32_C(4034), UINT32_C(412), UINT32_C(2365) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint32x4x2_t r, src, expected;
src.val[0] = simde_vld1q_u32(test_vec[i].src[0]);
src.val[1] = simde_vld1q_u32(test_vec[i].src[1]);
SIMDE_CONSTIFY_4_(simde_vld2q_lane_u32, r, (HEDLEY_UNREACHABLE(), r), i, test_vec[i].buf, src);
expected.val[0] = simde_vld1q_u32(test_vec[i].r[0]);
expected.val[1] = simde_vld1q_u32(test_vec[i].r[1]);
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]);
}
return 0;
}
static int
test_simde_vld2q_lane_u64 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
uint64_t src[2][2];
uint64_t buf[2];
uint64_t r[2][2];
} test_vec[] = {
{ { { UINT64_C(133259958), UINT64_C(495309638) },
{ UINT64_C(463332514), UINT64_C(273508271) } },
{ UINT64_C(159685885), UINT64_C(187025881)},
{ { UINT64_C(159685885), UINT64_C(495309638) },
{ UINT64_C(187025881), UINT64_C(273508271) } } },
{ { { UINT64_C(430109367), UINT64_C(402602870) },
{ UINT64_C(309788205), UINT64_C(441710399) } },
{ UINT64_C(264334842), UINT64_C(60309831)},
{ { UINT64_C(430109367), UINT64_C(264334842) },
{ UINT64_C(309788205), UINT64_C(60309831) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint64x2x2_t r, src, expected;
src.val[0] = simde_vld1q_u64(test_vec[i].src[0]);
src.val[1] = simde_vld1q_u64(test_vec[i].src[1]);
SIMDE_CONSTIFY_2_(simde_vld2q_lane_u64, r, (HEDLEY_UNREACHABLE(), r), i, test_vec[i].buf, src);
expected.val[0] = simde_vld1q_u64(test_vec[i].r[0]);
expected.val[1] = simde_vld1q_u64(test_vec[i].r[1]);
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]);
}
return 0;
}
static int
test_simde_vld2q_lane_f16 (SIMDE_MUNIT_TEST_ARGS) {
struct {
simde_float16_t src[2][8];
simde_float16_t buf[2];
simde_float16_t r[2][8];
} test_vec[] = {
{ { { SIMDE_FLOAT16_VALUE(-44.86), SIMDE_FLOAT16_VALUE(-27.30), SIMDE_FLOAT16_VALUE(-35.67), SIMDE_FLOAT16_VALUE(22.98),
SIMDE_FLOAT16_VALUE(-34.31), SIMDE_FLOAT16_VALUE(-40.87), SIMDE_FLOAT16_VALUE(-37.54), SIMDE_FLOAT16_VALUE(-11.89) },
{ SIMDE_FLOAT16_VALUE(-19.39), SIMDE_FLOAT16_VALUE(-21.84), SIMDE_FLOAT16_VALUE(-32.89), SIMDE_FLOAT16_VALUE(43.11),
SIMDE_FLOAT16_VALUE(-10.75), SIMDE_FLOAT16_VALUE(-18.47), SIMDE_FLOAT16_VALUE(14.59), SIMDE_FLOAT16_VALUE(48.79) } },
{ SIMDE_FLOAT16_VALUE(7.62), SIMDE_FLOAT16_VALUE(-49.51)},
{ { SIMDE_FLOAT16_VALUE(7.62), SIMDE_FLOAT16_VALUE(-27.30), SIMDE_FLOAT16_VALUE(-35.67), SIMDE_FLOAT16_VALUE(22.98),
SIMDE_FLOAT16_VALUE(-34.31), SIMDE_FLOAT16_VALUE(-40.87), SIMDE_FLOAT16_VALUE(-37.54), SIMDE_FLOAT16_VALUE(-11.89) },
{ SIMDE_FLOAT16_VALUE(-49.51), SIMDE_FLOAT16_VALUE(-21.84), SIMDE_FLOAT16_VALUE(-32.89), SIMDE_FLOAT16_VALUE(43.11),
SIMDE_FLOAT16_VALUE(-10.75), SIMDE_FLOAT16_VALUE(-18.47), SIMDE_FLOAT16_VALUE(14.59), SIMDE_FLOAT16_VALUE(48.79) } } },
{ { { SIMDE_FLOAT16_VALUE(-38.62), SIMDE_FLOAT16_VALUE(4.41), SIMDE_FLOAT16_VALUE(-33.69), SIMDE_FLOAT16_VALUE(-29.42),
SIMDE_FLOAT16_VALUE(-26.20), SIMDE_FLOAT16_VALUE(-37.93), SIMDE_FLOAT16_VALUE(-22.76), SIMDE_FLOAT16_VALUE(9.22) },
{ SIMDE_FLOAT16_VALUE(33.15), SIMDE_FLOAT16_VALUE(36.15), SIMDE_FLOAT16_VALUE(8.88), SIMDE_FLOAT16_VALUE(-47.77),
SIMDE_FLOAT16_VALUE(42.44), SIMDE_FLOAT16_VALUE(-2.49), SIMDE_FLOAT16_VALUE(-30.82), SIMDE_FLOAT16_VALUE(-8.07) } },
{ SIMDE_FLOAT16_VALUE(13.95), SIMDE_FLOAT16_VALUE(-11.74)},
{ { SIMDE_FLOAT16_VALUE(-38.62), SIMDE_FLOAT16_VALUE(13.95), SIMDE_FLOAT16_VALUE(-33.69), SIMDE_FLOAT16_VALUE(-29.42),
SIMDE_FLOAT16_VALUE(-26.20), SIMDE_FLOAT16_VALUE(-37.93), SIMDE_FLOAT16_VALUE(-22.76), SIMDE_FLOAT16_VALUE(9.22) },
{ SIMDE_FLOAT16_VALUE(33.15), SIMDE_FLOAT16_VALUE(-11.74), SIMDE_FLOAT16_VALUE(8.88), SIMDE_FLOAT16_VALUE(-47.77),
SIMDE_FLOAT16_VALUE(42.44), SIMDE_FLOAT16_VALUE(-2.49), SIMDE_FLOAT16_VALUE(-30.82), SIMDE_FLOAT16_VALUE(-8.07) } } },
{ { { SIMDE_FLOAT16_VALUE(20.63), SIMDE_FLOAT16_VALUE(-26.03), SIMDE_FLOAT16_VALUE(-49.03), SIMDE_FLOAT16_VALUE(-9.02),
SIMDE_FLOAT16_VALUE(-7.24), SIMDE_FLOAT16_VALUE(21.25), SIMDE_FLOAT16_VALUE(7.83), SIMDE_FLOAT16_VALUE(13.60) },
{ SIMDE_FLOAT16_VALUE(-25.60), SIMDE_FLOAT16_VALUE(-0.34), SIMDE_FLOAT16_VALUE(-14.32), SIMDE_FLOAT16_VALUE(11.44),
SIMDE_FLOAT16_VALUE(-0.16), SIMDE_FLOAT16_VALUE(44.81), SIMDE_FLOAT16_VALUE(-26.95), SIMDE_FLOAT16_VALUE(-20.70) } },
{ SIMDE_FLOAT16_VALUE(-12.06), SIMDE_FLOAT16_VALUE(-20.03)},
{ { SIMDE_FLOAT16_VALUE(20.63), SIMDE_FLOAT16_VALUE(-26.03), SIMDE_FLOAT16_VALUE(-12.06), SIMDE_FLOAT16_VALUE(-9.02),
SIMDE_FLOAT16_VALUE(-7.24), SIMDE_FLOAT16_VALUE(21.25), SIMDE_FLOAT16_VALUE(7.83), SIMDE_FLOAT16_VALUE(13.60) },
{ SIMDE_FLOAT16_VALUE(-25.60), SIMDE_FLOAT16_VALUE(-0.34), SIMDE_FLOAT16_VALUE(-20.03), SIMDE_FLOAT16_VALUE(11.44),
SIMDE_FLOAT16_VALUE(-0.16), SIMDE_FLOAT16_VALUE(44.81), SIMDE_FLOAT16_VALUE(-26.95), SIMDE_FLOAT16_VALUE(-20.70) } } },
{ { { SIMDE_FLOAT16_VALUE(-11.60), SIMDE_FLOAT16_VALUE(-14.50), SIMDE_FLOAT16_VALUE(45.43), SIMDE_FLOAT16_VALUE(40.80),
SIMDE_FLOAT16_VALUE(-19.67), SIMDE_FLOAT16_VALUE(-0.54), SIMDE_FLOAT16_VALUE(31.88), SIMDE_FLOAT16_VALUE(14.74) },
{ SIMDE_FLOAT16_VALUE(-31.78), SIMDE_FLOAT16_VALUE(8.81), SIMDE_FLOAT16_VALUE(10.59), SIMDE_FLOAT16_VALUE(6.10),
SIMDE_FLOAT16_VALUE(-25.88), SIMDE_FLOAT16_VALUE(0.90), SIMDE_FLOAT16_VALUE(45.87), SIMDE_FLOAT16_VALUE(13.51) } },
{ SIMDE_FLOAT16_VALUE(-26.80), SIMDE_FLOAT16_VALUE(13.43)},
{ { SIMDE_FLOAT16_VALUE(-11.60), SIMDE_FLOAT16_VALUE(-14.50), SIMDE_FLOAT16_VALUE(45.43), SIMDE_FLOAT16_VALUE(-26.80),
SIMDE_FLOAT16_VALUE(-19.67), SIMDE_FLOAT16_VALUE(-0.54), SIMDE_FLOAT16_VALUE(31.88), SIMDE_FLOAT16_VALUE(14.74) },
{ SIMDE_FLOAT16_VALUE(-31.78), SIMDE_FLOAT16_VALUE(8.81), SIMDE_FLOAT16_VALUE(10.59), SIMDE_FLOAT16_VALUE(13.43),
SIMDE_FLOAT16_VALUE(-25.88), SIMDE_FLOAT16_VALUE(0.90), SIMDE_FLOAT16_VALUE(45.87), SIMDE_FLOAT16_VALUE(13.51) } } },
{ { { SIMDE_FLOAT16_VALUE(33.71), SIMDE_FLOAT16_VALUE(-5.48), SIMDE_FLOAT16_VALUE(-13.87), SIMDE_FLOAT16_VALUE(2.58),
SIMDE_FLOAT16_VALUE(22.05), SIMDE_FLOAT16_VALUE(-25.14), SIMDE_FLOAT16_VALUE(32.71), SIMDE_FLOAT16_VALUE(49.78) },
{ SIMDE_FLOAT16_VALUE(-33.81), SIMDE_FLOAT16_VALUE(-37.35), SIMDE_FLOAT16_VALUE(6.37), SIMDE_FLOAT16_VALUE(42.63),
SIMDE_FLOAT16_VALUE(27.98), SIMDE_FLOAT16_VALUE(-47.79), SIMDE_FLOAT16_VALUE(0.37), SIMDE_FLOAT16_VALUE(24.16) } },
{ SIMDE_FLOAT16_VALUE(-22.12), SIMDE_FLOAT16_VALUE(22.45)},
{ { SIMDE_FLOAT16_VALUE(33.71), SIMDE_FLOAT16_VALUE(-5.48), SIMDE_FLOAT16_VALUE(-13.87), SIMDE_FLOAT16_VALUE(2.58),
SIMDE_FLOAT16_VALUE(-22.12), SIMDE_FLOAT16_VALUE(-25.14), SIMDE_FLOAT16_VALUE(32.71), SIMDE_FLOAT16_VALUE(49.78) },
{ SIMDE_FLOAT16_VALUE(-33.81), SIMDE_FLOAT16_VALUE(-37.35), SIMDE_FLOAT16_VALUE(6.37), SIMDE_FLOAT16_VALUE(42.63),
SIMDE_FLOAT16_VALUE(22.45), SIMDE_FLOAT16_VALUE(-47.79), SIMDE_FLOAT16_VALUE(0.37), SIMDE_FLOAT16_VALUE(24.16) } } },
{ { { SIMDE_FLOAT16_VALUE(35.13), SIMDE_FLOAT16_VALUE(-36.13), SIMDE_FLOAT16_VALUE(-42.60), SIMDE_FLOAT16_VALUE(-23.46),
SIMDE_FLOAT16_VALUE(-42.93), SIMDE_FLOAT16_VALUE(-21.16), SIMDE_FLOAT16_VALUE(-29.86), SIMDE_FLOAT16_VALUE(29.04) },
{ SIMDE_FLOAT16_VALUE(37.40), SIMDE_FLOAT16_VALUE(30.74), SIMDE_FLOAT16_VALUE(30.82), SIMDE_FLOAT16_VALUE(44.38),
SIMDE_FLOAT16_VALUE(-30.52), SIMDE_FLOAT16_VALUE(42.55), SIMDE_FLOAT16_VALUE(16.70), SIMDE_FLOAT16_VALUE(47.97) } },
{ SIMDE_FLOAT16_VALUE(41.68), SIMDE_FLOAT16_VALUE(12.98)},
{ { SIMDE_FLOAT16_VALUE(35.13), SIMDE_FLOAT16_VALUE(-36.13), SIMDE_FLOAT16_VALUE(-42.60), SIMDE_FLOAT16_VALUE(-23.46),
SIMDE_FLOAT16_VALUE(-42.93), SIMDE_FLOAT16_VALUE(41.68), SIMDE_FLOAT16_VALUE(-29.86), SIMDE_FLOAT16_VALUE(29.04) },
{ SIMDE_FLOAT16_VALUE(37.40), SIMDE_FLOAT16_VALUE(30.74), SIMDE_FLOAT16_VALUE(30.82), SIMDE_FLOAT16_VALUE(44.38),
SIMDE_FLOAT16_VALUE(-30.52), SIMDE_FLOAT16_VALUE(12.98), SIMDE_FLOAT16_VALUE(16.70), SIMDE_FLOAT16_VALUE(47.97) } } },
{ { { SIMDE_FLOAT16_VALUE(45.22), SIMDE_FLOAT16_VALUE(-8.00), SIMDE_FLOAT16_VALUE(-27.03), SIMDE_FLOAT16_VALUE(48.60),
SIMDE_FLOAT16_VALUE(19.87), SIMDE_FLOAT16_VALUE(-1.72), SIMDE_FLOAT16_VALUE(-45.40), SIMDE_FLOAT16_VALUE(-3.56) },
{ SIMDE_FLOAT16_VALUE(36.60), SIMDE_FLOAT16_VALUE(-32.25), SIMDE_FLOAT16_VALUE(13.01), SIMDE_FLOAT16_VALUE(-12.64),
SIMDE_FLOAT16_VALUE(22.43), SIMDE_FLOAT16_VALUE(1.87), SIMDE_FLOAT16_VALUE(-38.57), SIMDE_FLOAT16_VALUE(-24.61) } },
{ SIMDE_FLOAT16_VALUE(49.75), SIMDE_FLOAT16_VALUE(-1.23)},
{ { SIMDE_FLOAT16_VALUE(45.22), SIMDE_FLOAT16_VALUE(-8.00), SIMDE_FLOAT16_VALUE(-27.03), SIMDE_FLOAT16_VALUE(48.60),
SIMDE_FLOAT16_VALUE(19.87), SIMDE_FLOAT16_VALUE(-1.72), SIMDE_FLOAT16_VALUE(49.75), SIMDE_FLOAT16_VALUE(-3.56) },
{ SIMDE_FLOAT16_VALUE(36.60), SIMDE_FLOAT16_VALUE(-32.25), SIMDE_FLOAT16_VALUE(13.01), SIMDE_FLOAT16_VALUE(-12.64),
SIMDE_FLOAT16_VALUE(22.43), SIMDE_FLOAT16_VALUE(1.87), SIMDE_FLOAT16_VALUE(-1.23), SIMDE_FLOAT16_VALUE(-24.61) } } },
{ { { SIMDE_FLOAT16_VALUE(24.31), SIMDE_FLOAT16_VALUE(-43.53), SIMDE_FLOAT16_VALUE(20.69), SIMDE_FLOAT16_VALUE(26.28),
SIMDE_FLOAT16_VALUE(44.06), SIMDE_FLOAT16_VALUE(42.57), SIMDE_FLOAT16_VALUE(7.84), SIMDE_FLOAT16_VALUE(-4.34) },
{ SIMDE_FLOAT16_VALUE(-7.29), SIMDE_FLOAT16_VALUE(5.56), SIMDE_FLOAT16_VALUE(-20.99), SIMDE_FLOAT16_VALUE(-46.49),
SIMDE_FLOAT16_VALUE(24.87), SIMDE_FLOAT16_VALUE(40.56), SIMDE_FLOAT16_VALUE(-20.02), SIMDE_FLOAT16_VALUE(38.66) } },
{ SIMDE_FLOAT16_VALUE(17.79), SIMDE_FLOAT16_VALUE(37.56)},
{ { SIMDE_FLOAT16_VALUE(24.31), SIMDE_FLOAT16_VALUE(-43.53), SIMDE_FLOAT16_VALUE(20.69), SIMDE_FLOAT16_VALUE(26.28),
SIMDE_FLOAT16_VALUE(44.06), SIMDE_FLOAT16_VALUE(42.57), SIMDE_FLOAT16_VALUE(7.84), SIMDE_FLOAT16_VALUE(17.79) },
{ SIMDE_FLOAT16_VALUE(-7.29), SIMDE_FLOAT16_VALUE(5.56), SIMDE_FLOAT16_VALUE(-20.99), SIMDE_FLOAT16_VALUE(-46.49),
SIMDE_FLOAT16_VALUE(24.87), SIMDE_FLOAT16_VALUE(40.56), SIMDE_FLOAT16_VALUE(-20.02), SIMDE_FLOAT16_VALUE(37.56) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_float16x8x2_t r, src, expected;
src.val[0] = simde_vld1q_f16(test_vec[i].src[0]);
src.val[1] = simde_vld1q_f16(test_vec[i].src[1]);
SIMDE_CONSTIFY_8_(simde_vld2q_lane_f16, r, (HEDLEY_UNREACHABLE(), r), i, test_vec[i].buf, src);
expected.val[0] = simde_vld1q_f16(test_vec[i].r[0]);
expected.val[1] = simde_vld1q_f16(test_vec[i].r[1]);
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);
}
return 0;
}
static int
test_simde_vld2q_lane_f32 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
simde_float32_t src[2][4];
simde_float32_t buf[2];
simde_float32_t r[2][4];
} test_vec[] = {
{ { { SIMDE_FLOAT32_C(2894.40), SIMDE_FLOAT32_C(2128.37), SIMDE_FLOAT32_C(-2323.09), SIMDE_FLOAT32_C(1580.08) },
{ SIMDE_FLOAT32_C(2459.79), SIMDE_FLOAT32_C(-3713.19), SIMDE_FLOAT32_C(3258.52), SIMDE_FLOAT32_C(-1845.95) } },
{ SIMDE_FLOAT32_C(806.30), SIMDE_FLOAT32_C(3875.55)},
{ { SIMDE_FLOAT32_C(806.30), SIMDE_FLOAT32_C(2128.37), SIMDE_FLOAT32_C(-2323.09), SIMDE_FLOAT32_C(1580.08) },
{ SIMDE_FLOAT32_C(3875.55), SIMDE_FLOAT32_C(-3713.19), SIMDE_FLOAT32_C(3258.52), SIMDE_FLOAT32_C(-1845.95) } } },
{ { { SIMDE_FLOAT32_C(-827.29), SIMDE_FLOAT32_C(-188.20), SIMDE_FLOAT32_C(3036.33), SIMDE_FLOAT32_C(-2521.65) },
{ SIMDE_FLOAT32_C(1688.02), SIMDE_FLOAT32_C(-4475.05), SIMDE_FLOAT32_C(-1748.43), SIMDE_FLOAT32_C(-4757.62) } },
{ SIMDE_FLOAT32_C(3632.65), SIMDE_FLOAT32_C(4364.49)},
{ { SIMDE_FLOAT32_C(-827.29), SIMDE_FLOAT32_C(3632.65), SIMDE_FLOAT32_C(3036.33), SIMDE_FLOAT32_C(-2521.65) },
{ SIMDE_FLOAT32_C(1688.02), SIMDE_FLOAT32_C(4364.49), SIMDE_FLOAT32_C(-1748.43), SIMDE_FLOAT32_C(-4757.62) } } },
{ { { SIMDE_FLOAT32_C(-1210.04), SIMDE_FLOAT32_C(-1519.92), SIMDE_FLOAT32_C(-362.73), SIMDE_FLOAT32_C(-1943.77) },
{ SIMDE_FLOAT32_C(-3218.48), SIMDE_FLOAT32_C(3093.08), SIMDE_FLOAT32_C(1976.08), SIMDE_FLOAT32_C(3235.56) } },
{ SIMDE_FLOAT32_C(91.16), SIMDE_FLOAT32_C(-1366.95)},
{ { SIMDE_FLOAT32_C(-1210.04), SIMDE_FLOAT32_C(-1519.92), SIMDE_FLOAT32_C(91.16), SIMDE_FLOAT32_C(-1943.77) },
{ SIMDE_FLOAT32_C(-3218.48), SIMDE_FLOAT32_C(3093.08), SIMDE_FLOAT32_C(-1366.95), SIMDE_FLOAT32_C(3235.56) } } },
{ { { SIMDE_FLOAT32_C(1155.21), SIMDE_FLOAT32_C(2979.92), SIMDE_FLOAT32_C(3342.26), SIMDE_FLOAT32_C(2850.18) },
{ SIMDE_FLOAT32_C(-1185.46), SIMDE_FLOAT32_C(1494.90), SIMDE_FLOAT32_C(3871.56), SIMDE_FLOAT32_C(4240.34) } },
{ SIMDE_FLOAT32_C(4082.13), SIMDE_FLOAT32_C(479.75)},
{ { SIMDE_FLOAT32_C(1155.21), SIMDE_FLOAT32_C(2979.92), SIMDE_FLOAT32_C(3342.26), SIMDE_FLOAT32_C(4082.13) },
{ SIMDE_FLOAT32_C(-1185.46), SIMDE_FLOAT32_C(1494.90), SIMDE_FLOAT32_C(3871.56), SIMDE_FLOAT32_C(479.75) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_float32x4x2_t r, src, expected;
src.val[0] = simde_vld1q_f32(test_vec[i].src[0]);
src.val[1] = simde_vld1q_f32(test_vec[i].src[1]);
SIMDE_CONSTIFY_4_(simde_vld2q_lane_f32, r, (HEDLEY_UNREACHABLE(), r), i, test_vec[i].buf, src);
expected.val[0] = simde_vld1q_f32(test_vec[i].r[0]);
expected.val[1] = simde_vld1q_f32(test_vec[i].r[1]);
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);
}
return 0;
}
static int
test_simde_vld2q_lane_f64 (SIMDE_MUNIT_TEST_ARGS) {
static const struct {
simde_float64_t src[2][2];
simde_float64_t buf[2];
simde_float64_t r[2][2];
} test_vec[] = {
{ { { SIMDE_FLOAT64_C(-441230.65), SIMDE_FLOAT64_C(460847.11) },
{ SIMDE_FLOAT64_C(178930.01), SIMDE_FLOAT64_C(325559.94) } },
{ SIMDE_FLOAT64_C(244879.30), SIMDE_FLOAT64_C(-169707.98)},
{ { SIMDE_FLOAT64_C(244879.30), SIMDE_FLOAT64_C(460847.11) },
{ SIMDE_FLOAT64_C(-169707.98), SIMDE_FLOAT64_C(325559.94) } } },
{ { { SIMDE_FLOAT64_C(-157130.88), SIMDE_FLOAT64_C(-243630.90) },
{ SIMDE_FLOAT64_C(173252.82), SIMDE_FLOAT64_C(96002.40) } },
{ SIMDE_FLOAT64_C(429185.16), SIMDE_FLOAT64_C(-474490.37)},
{ { SIMDE_FLOAT64_C(-157130.88), SIMDE_FLOAT64_C(429185.16) },
{ SIMDE_FLOAT64_C(173252.82), SIMDE_FLOAT64_C(-474490.37) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_float64x2x2_t r, src, expected;
src.val[0] = simde_vld1q_f64(test_vec[i].src[0]);
src.val[1] = simde_vld1q_f64(test_vec[i].src[1]);
SIMDE_CONSTIFY_2_(simde_vld2q_lane_f64, r, (HEDLEY_UNREACHABLE(), r), i, test_vec[i].buf, src);
expected.val[0] = simde_vld1q_f64(test_vec[i].r[0]);
expected.val[1] = simde_vld1q_f64(test_vec[i].r[1]);
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);
}
return 0;
}
static int
test_simde_vld2_lane_p8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
simde_poly8_t src[2][8];
simde_poly8_t buf[2];
simde_poly8_t r[2][8];
} test_vec[] = {
{ { { SIMDE_POLY8_C(16), SIMDE_POLY8_C(44), SIMDE_POLY8_C(6), SIMDE_POLY8_C(49),
SIMDE_POLY8_C(48), SIMDE_POLY8_C(22), SIMDE_POLY8_C(4), SIMDE_POLY8_C(6) },
{ SIMDE_POLY8_C(7), SIMDE_POLY8_C(40), SIMDE_POLY8_C(17), SIMDE_POLY8_C(15),
SIMDE_POLY8_C(21), SIMDE_POLY8_C(4), SIMDE_POLY8_C(14), SIMDE_POLY8_C(25) } },
{ SIMDE_POLY8_C(43), SIMDE_POLY8_C(26)},
{ { SIMDE_POLY8_C(43), SIMDE_POLY8_C(44), SIMDE_POLY8_C(6), SIMDE_POLY8_C(49),
SIMDE_POLY8_C(48), SIMDE_POLY8_C(22), SIMDE_POLY8_C(4), SIMDE_POLY8_C(6) },
{ SIMDE_POLY8_C(26), SIMDE_POLY8_C(40), SIMDE_POLY8_C(17), SIMDE_POLY8_C(15),
SIMDE_POLY8_C(21), SIMDE_POLY8_C(4), SIMDE_POLY8_C(14), SIMDE_POLY8_C(25) } } },
{ { { SIMDE_POLY8_C(0), SIMDE_POLY8_C(47), SIMDE_POLY8_C(9), SIMDE_POLY8_C(28),
SIMDE_POLY8_C(8), SIMDE_POLY8_C(39), SIMDE_POLY8_C(37), SIMDE_POLY8_C(35) },
{ SIMDE_POLY8_C(38), SIMDE_POLY8_C(35), SIMDE_POLY8_C(27), SIMDE_POLY8_C(16),
SIMDE_POLY8_C(14), SIMDE_POLY8_C(1), SIMDE_POLY8_C(16), SIMDE_POLY8_C(5) } },
{ SIMDE_POLY8_C(48), SIMDE_POLY8_C(10)},
{ { SIMDE_POLY8_C(0), SIMDE_POLY8_C(48), SIMDE_POLY8_C(9), SIMDE_POLY8_C(28),
SIMDE_POLY8_C(8), SIMDE_POLY8_C(39), SIMDE_POLY8_C(37), SIMDE_POLY8_C(35) },
{ SIMDE_POLY8_C(38), SIMDE_POLY8_C(10), SIMDE_POLY8_C(27), SIMDE_POLY8_C(16),
SIMDE_POLY8_C(14), SIMDE_POLY8_C(1), SIMDE_POLY8_C(16), SIMDE_POLY8_C(5) } } },
{ { { SIMDE_POLY8_C(45), SIMDE_POLY8_C(48), SIMDE_POLY8_C(30), SIMDE_POLY8_C(12),
SIMDE_POLY8_C(2), SIMDE_POLY8_C(21), SIMDE_POLY8_C(16), SIMDE_POLY8_C(39) },
{ SIMDE_POLY8_C(3), SIMDE_POLY8_C(30), SIMDE_POLY8_C(37), SIMDE_POLY8_C(12),
SIMDE_POLY8_C(17), SIMDE_POLY8_C(23), SIMDE_POLY8_C(41), SIMDE_POLY8_C(18) } },
{ SIMDE_POLY8_C(30), SIMDE_POLY8_C(13)},
{ { SIMDE_POLY8_C(45), SIMDE_POLY8_C(48), SIMDE_POLY8_C(30), SIMDE_POLY8_C(12),
SIMDE_POLY8_C(2), SIMDE_POLY8_C(21), SIMDE_POLY8_C(16), SIMDE_POLY8_C(39) },
{ SIMDE_POLY8_C(3), SIMDE_POLY8_C(30), SIMDE_POLY8_C(13), SIMDE_POLY8_C(12),
SIMDE_POLY8_C(17), SIMDE_POLY8_C(23), SIMDE_POLY8_C(41), SIMDE_POLY8_C(18) } } },
{ { { SIMDE_POLY8_C(9), SIMDE_POLY8_C(39), SIMDE_POLY8_C(49), SIMDE_POLY8_C(10),
SIMDE_POLY8_C(45), SIMDE_POLY8_C(24), SIMDE_POLY8_C(17), SIMDE_POLY8_C(30) },
{ SIMDE_POLY8_C(36), SIMDE_POLY8_C(20), SIMDE_POLY8_C(15), SIMDE_POLY8_C(21),
SIMDE_POLY8_C(23), SIMDE_POLY8_C(22), SIMDE_POLY8_C(39), SIMDE_POLY8_C(18) } },
{ SIMDE_POLY8_C(13), SIMDE_POLY8_C(37)},
{ { SIMDE_POLY8_C(9), SIMDE_POLY8_C(39), SIMDE_POLY8_C(49), SIMDE_POLY8_C(13),
SIMDE_POLY8_C(45), SIMDE_POLY8_C(24), SIMDE_POLY8_C(17), SIMDE_POLY8_C(30) },
{ SIMDE_POLY8_C(36), SIMDE_POLY8_C(20), SIMDE_POLY8_C(15), SIMDE_POLY8_C(37),
SIMDE_POLY8_C(23), SIMDE_POLY8_C(22), SIMDE_POLY8_C(39), SIMDE_POLY8_C(18) } } },
{ { { SIMDE_POLY8_C(17), SIMDE_POLY8_C(17), SIMDE_POLY8_C(11), SIMDE_POLY8_C(43),
SIMDE_POLY8_C(20), SIMDE_POLY8_C(10), SIMDE_POLY8_C(44), SIMDE_POLY8_C(43) },
{ SIMDE_POLY8_C(23), SIMDE_POLY8_C(4), SIMDE_POLY8_C(32), SIMDE_POLY8_C(2),
SIMDE_POLY8_C(39), SIMDE_POLY8_C(1), SIMDE_POLY8_C(37), SIMDE_POLY8_C(42) } },
{ SIMDE_POLY8_C(40), SIMDE_POLY8_C(34)},
{ { SIMDE_POLY8_C(17), SIMDE_POLY8_C(17), SIMDE_POLY8_C(11), SIMDE_POLY8_C(43),
SIMDE_POLY8_C(40), SIMDE_POLY8_C(10), SIMDE_POLY8_C(44), SIMDE_POLY8_C(43) },
{ SIMDE_POLY8_C(23), SIMDE_POLY8_C(4), SIMDE_POLY8_C(32), SIMDE_POLY8_C(2),
SIMDE_POLY8_C(34), SIMDE_POLY8_C(1), SIMDE_POLY8_C(37), SIMDE_POLY8_C(42) } } },
{ { { SIMDE_POLY8_C(16), SIMDE_POLY8_C(35), SIMDE_POLY8_C(33), SIMDE_POLY8_C(19),
SIMDE_POLY8_C(15), SIMDE_POLY8_C(17), SIMDE_POLY8_C(13), SIMDE_POLY8_C(49) },
{ SIMDE_POLY8_C(21), SIMDE_POLY8_C(24), SIMDE_POLY8_C(3), SIMDE_POLY8_C(10),
SIMDE_POLY8_C(31), SIMDE_POLY8_C(24), SIMDE_POLY8_C(46), SIMDE_POLY8_C(14) } },
{ SIMDE_POLY8_C(24), SIMDE_POLY8_C(3)},
{ { SIMDE_POLY8_C(16), SIMDE_POLY8_C(35), SIMDE_POLY8_C(33), SIMDE_POLY8_C(19),
SIMDE_POLY8_C(15), SIMDE_POLY8_C(24), SIMDE_POLY8_C(13), SIMDE_POLY8_C(49) },
{ SIMDE_POLY8_C(21), SIMDE_POLY8_C(24), SIMDE_POLY8_C(3), SIMDE_POLY8_C(10),
SIMDE_POLY8_C(31), SIMDE_POLY8_C(3), SIMDE_POLY8_C(46), SIMDE_POLY8_C(14) } } },
{ { { SIMDE_POLY8_C(25), SIMDE_POLY8_C(9), SIMDE_POLY8_C(16), SIMDE_POLY8_C(33),
SIMDE_POLY8_C(14), SIMDE_POLY8_C(45), SIMDE_POLY8_C(0), SIMDE_POLY8_C(45) },
{ SIMDE_POLY8_C(40), SIMDE_POLY8_C(36), SIMDE_POLY8_C(38), SIMDE_POLY8_C(48),
SIMDE_POLY8_C(20), SIMDE_POLY8_C(22), SIMDE_POLY8_C(1), SIMDE_POLY8_C(43) } },
{ SIMDE_POLY8_C(33), SIMDE_POLY8_C(50)},
{ { SIMDE_POLY8_C(25), SIMDE_POLY8_C(9), SIMDE_POLY8_C(16), SIMDE_POLY8_C(33),
SIMDE_POLY8_C(14), SIMDE_POLY8_C(45), SIMDE_POLY8_C(33), SIMDE_POLY8_C(45) },
{ SIMDE_POLY8_C(40), SIMDE_POLY8_C(36), SIMDE_POLY8_C(38), SIMDE_POLY8_C(48),
SIMDE_POLY8_C(20), SIMDE_POLY8_C(22), SIMDE_POLY8_C(50), SIMDE_POLY8_C(43) } } },
{ { { SIMDE_POLY8_C(38), SIMDE_POLY8_C(16), SIMDE_POLY8_C(32), SIMDE_POLY8_C(48),
SIMDE_POLY8_C(28), SIMDE_POLY8_C(6), SIMDE_POLY8_C(48), SIMDE_POLY8_C(36) },
{ SIMDE_POLY8_C(12), SIMDE_POLY8_C(7), SIMDE_POLY8_C(12), SIMDE_POLY8_C(12),
SIMDE_POLY8_C(33), SIMDE_POLY8_C(28), SIMDE_POLY8_C(26), SIMDE_POLY8_C(43) } },
{ SIMDE_POLY8_C(42), SIMDE_POLY8_C(7)},
{ { SIMDE_POLY8_C(38), SIMDE_POLY8_C(16), SIMDE_POLY8_C(32), SIMDE_POLY8_C(48),
SIMDE_POLY8_C(28), SIMDE_POLY8_C(6), SIMDE_POLY8_C(48), SIMDE_POLY8_C(42) },
{ SIMDE_POLY8_C(12), SIMDE_POLY8_C(7), SIMDE_POLY8_C(12), SIMDE_POLY8_C(12),
SIMDE_POLY8_C(33), SIMDE_POLY8_C(28), SIMDE_POLY8_C(26), SIMDE_POLY8_C(7) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_poly8x8x2_t r, src, expected;
src.val[0] = simde_vld1_p8(test_vec[i].src[0]);
src.val[1] = simde_vld1_p8(test_vec[i].src[1]);
SIMDE_CONSTIFY_8_(simde_vld2_lane_p8, r, (HEDLEY_UNREACHABLE(), r), i, test_vec[i].buf, src);
expected.val[0] = simde_vld1_p8(test_vec[i].r[0]);
expected.val[1] = simde_vld1_p8(test_vec[i].r[1]);
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]);
}
return 0;
#else
for (int i = 0 ; i < 8 ; i++) {
simde_poly8x8x2_t src = simde_test_arm_neon_random_p8x8x2();
simde_poly8_t buf[2];
simde_poly8x8x2_t r;
simde_test_arm_neon_write_p8x8x2(2, src, SIMDE_TEST_VEC_POS_FIRST);
simde_test_codegen_random_memory(2, HEDLEY_REINTERPRET_CAST(uint8_t*, buf));
simde_test_codegen_write_vp8(2, 2, buf, SIMDE_TEST_VEC_POS_MIDDLE);
SIMDE_CONSTIFY_8_(simde_vld2_lane_p8, r, (HEDLEY_UNREACHABLE(), r), i, buf, src);
simde_test_arm_neon_write_p8x8x2(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vld2_lane_p16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
simde_poly16_t src[2][4];
simde_poly16_t buf[2];
simde_poly16_t r[2][4];
} test_vec[] = {
{ { { SIMDE_POLY16_C(124), SIMDE_POLY16_C(412), SIMDE_POLY16_C(312), SIMDE_POLY16_C(107) },
{ SIMDE_POLY16_C(349), SIMDE_POLY16_C(217), SIMDE_POLY16_C(241), SIMDE_POLY16_C(95) } },
{ SIMDE_POLY16_C(275), SIMDE_POLY16_C(317)},
{ { SIMDE_POLY16_C(275), SIMDE_POLY16_C(412), SIMDE_POLY16_C(312), SIMDE_POLY16_C(107) },
{ SIMDE_POLY16_C(317), SIMDE_POLY16_C(217), SIMDE_POLY16_C(241), SIMDE_POLY16_C(95) } } },
{ { { SIMDE_POLY16_C(378), SIMDE_POLY16_C(448), SIMDE_POLY16_C(60), SIMDE_POLY16_C(474) },
{ SIMDE_POLY16_C(266), SIMDE_POLY16_C(135), SIMDE_POLY16_C(422), SIMDE_POLY16_C(223) } },
{ SIMDE_POLY16_C(297), SIMDE_POLY16_C(5)},
{ { SIMDE_POLY16_C(378), SIMDE_POLY16_C(297), SIMDE_POLY16_C(60), SIMDE_POLY16_C(474) },
{ SIMDE_POLY16_C(266), SIMDE_POLY16_C(5), SIMDE_POLY16_C(422), SIMDE_POLY16_C(223) } } },
{ { { SIMDE_POLY16_C(197), SIMDE_POLY16_C(3), SIMDE_POLY16_C(245), SIMDE_POLY16_C(218) },
{ SIMDE_POLY16_C(216), SIMDE_POLY16_C(262), SIMDE_POLY16_C(180), SIMDE_POLY16_C(60) } },
{ SIMDE_POLY16_C(96), SIMDE_POLY16_C(492)},
{ { SIMDE_POLY16_C(197), SIMDE_POLY16_C(3), SIMDE_POLY16_C(96), SIMDE_POLY16_C(218) },
{ SIMDE_POLY16_C(216), SIMDE_POLY16_C(262), SIMDE_POLY16_C(492), SIMDE_POLY16_C(60) } } },
{ { { SIMDE_POLY16_C(395), SIMDE_POLY16_C(374), SIMDE_POLY16_C(448), SIMDE_POLY16_C(445) },
{ SIMDE_POLY16_C(60), SIMDE_POLY16_C(486), SIMDE_POLY16_C(283), SIMDE_POLY16_C(298) } },
{ SIMDE_POLY16_C(218), SIMDE_POLY16_C(225)},
{ { SIMDE_POLY16_C(395), SIMDE_POLY16_C(374), SIMDE_POLY16_C(448), SIMDE_POLY16_C(218) },
{ SIMDE_POLY16_C(60), SIMDE_POLY16_C(486), SIMDE_POLY16_C(283), SIMDE_POLY16_C(225) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_poly16x4x2_t r, src, expected;
src.val[0] = simde_vld1_p16(test_vec[i].src[0]);
src.val[1] = simde_vld1_p16(test_vec[i].src[1]);
SIMDE_CONSTIFY_4_(simde_vld2_lane_p16, r, (HEDLEY_UNREACHABLE(), r), i, test_vec[i].buf, src);
expected.val[0] = simde_vld1_p16(test_vec[i].r[0]);
expected.val[1] = simde_vld1_p16(test_vec[i].r[1]);
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]);
}
return 0;
#else
for (int i = 0 ; i < 4 ; i++) {
simde_poly16x4x2_t src = simde_test_arm_neon_random_p16x4x2();
simde_poly16_t buf[2];
simde_poly16x4x2_t r;
simde_test_arm_neon_write_p16x4x2(2, src, SIMDE_TEST_VEC_POS_FIRST);
simde_test_codegen_random_memory(4, HEDLEY_REINTERPRET_CAST(uint8_t*, buf));
simde_test_codegen_write_vp16(2, 2, buf, SIMDE_TEST_VEC_POS_MIDDLE);
SIMDE_CONSTIFY_4_(simde_vld2_lane_p16, r, (HEDLEY_UNREACHABLE(), r), i, buf, src);
simde_test_arm_neon_write_p16x4x2(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vld2_lane_p64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
simde_poly64_t src[2][1];
simde_poly64_t buf[2];
simde_poly64_t r[2][1];
} test_vec[] = {
{ { { SIMDE_POLY64_C(382464207) },
{ SIMDE_POLY64_C(391984763) } },
{ SIMDE_POLY64_C(283052241), SIMDE_POLY64_C(176704794)},
{ { SIMDE_POLY64_C(283052241) },
{ SIMDE_POLY64_C(176704794) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_poly64x1x2_t r, src, expected;
src.val[0] = simde_vld1_p64(test_vec[i].src[0]);
src.val[1] = simde_vld1_p64(test_vec[i].src[1]);
r = simde_vld2_lane_p64(test_vec[i].buf, src, 0);
expected.val[0] = simde_vld1_p64(test_vec[i].r[0]);
expected.val[1] = simde_vld1_p64(test_vec[i].r[1]);
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]);
}
return 0;
#else
for (int i = 0 ; i < 4 ; i++) {
simde_poly64x1x2_t src = simde_test_arm_neon_random_p64x1x2();
simde_poly64_t buf[2];
simde_poly64x1x2_t r;
simde_test_arm_neon_write_p64x1x2(2, src, SIMDE_TEST_VEC_POS_FIRST);
simde_test_codegen_random_memory(16, HEDLEY_REINTERPRET_CAST(uint8_t*, buf));
simde_test_codegen_write_vp64(2, 2, buf, SIMDE_TEST_VEC_POS_MIDDLE);
r = simde_vld2_lane_p64(buf, src, 0);
simde_test_arm_neon_write_p64x1x2(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vld2q_lane_p8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
simde_poly8_t src[2][16];
simde_poly8_t buf[2];
simde_poly8_t r[2][16];
} test_vec[] = {
{ { { SIMDE_POLY8_C(46), SIMDE_POLY8_C(42), SIMDE_POLY8_C(1), SIMDE_POLY8_C(9), SIMDE_POLY8_C(24), SIMDE_POLY8_C(23), SIMDE_POLY8_C(11), SIMDE_POLY8_C(37),
SIMDE_POLY8_C(22), SIMDE_POLY8_C(30), SIMDE_POLY8_C(25), SIMDE_POLY8_C(27), SIMDE_POLY8_C(10), SIMDE_POLY8_C(26), SIMDE_POLY8_C(1), SIMDE_POLY8_C(10) },
{ SIMDE_POLY8_C(13), SIMDE_POLY8_C(29), SIMDE_POLY8_C(22), SIMDE_POLY8_C(40), SIMDE_POLY8_C(48), SIMDE_POLY8_C(40), SIMDE_POLY8_C(0), SIMDE_POLY8_C(12),
SIMDE_POLY8_C(18), SIMDE_POLY8_C(35), SIMDE_POLY8_C(43), SIMDE_POLY8_C(30), SIMDE_POLY8_C(32), SIMDE_POLY8_C(30), SIMDE_POLY8_C(21), SIMDE_POLY8_C(36) } },
{ SIMDE_POLY8_C(13), SIMDE_POLY8_C(15)},
{ { SIMDE_POLY8_C(13), SIMDE_POLY8_C(42), SIMDE_POLY8_C(1), SIMDE_POLY8_C(9), SIMDE_POLY8_C(24), SIMDE_POLY8_C(23), SIMDE_POLY8_C(11), SIMDE_POLY8_C(37),
SIMDE_POLY8_C(22), SIMDE_POLY8_C(30), SIMDE_POLY8_C(25), SIMDE_POLY8_C(27), SIMDE_POLY8_C(10), SIMDE_POLY8_C(26), SIMDE_POLY8_C(1), SIMDE_POLY8_C(10) },
{ SIMDE_POLY8_C(15), SIMDE_POLY8_C(29), SIMDE_POLY8_C(22), SIMDE_POLY8_C(40), SIMDE_POLY8_C(48), SIMDE_POLY8_C(40), SIMDE_POLY8_C(0), SIMDE_POLY8_C(12),
SIMDE_POLY8_C(18), SIMDE_POLY8_C(35), SIMDE_POLY8_C(43), SIMDE_POLY8_C(30), SIMDE_POLY8_C(32), SIMDE_POLY8_C(30), SIMDE_POLY8_C(21), SIMDE_POLY8_C(36) } } },
{ { { SIMDE_POLY8_C(20), SIMDE_POLY8_C(7), SIMDE_POLY8_C(32), SIMDE_POLY8_C(38), SIMDE_POLY8_C(1), SIMDE_POLY8_C(28), SIMDE_POLY8_C(5), SIMDE_POLY8_C(1),
SIMDE_POLY8_C(17), SIMDE_POLY8_C(10), SIMDE_POLY8_C(10), SIMDE_POLY8_C(23), SIMDE_POLY8_C(26), SIMDE_POLY8_C(1), SIMDE_POLY8_C(37), SIMDE_POLY8_C(35) },
{ SIMDE_POLY8_C(18), SIMDE_POLY8_C(31), SIMDE_POLY8_C(37), SIMDE_POLY8_C(26), SIMDE_POLY8_C(9), SIMDE_POLY8_C(14), SIMDE_POLY8_C(17), SIMDE_POLY8_C(38),
SIMDE_POLY8_C(8), SIMDE_POLY8_C(27), SIMDE_POLY8_C(45), SIMDE_POLY8_C(15), SIMDE_POLY8_C(0), SIMDE_POLY8_C(36), SIMDE_POLY8_C(1), SIMDE_POLY8_C(20) } },
{ SIMDE_POLY8_C(11), SIMDE_POLY8_C(6)},
{ { SIMDE_POLY8_C(20), SIMDE_POLY8_C(11), SIMDE_POLY8_C(32), SIMDE_POLY8_C(38), SIMDE_POLY8_C(1), SIMDE_POLY8_C(28), SIMDE_POLY8_C(5), SIMDE_POLY8_C(1),
SIMDE_POLY8_C(17), SIMDE_POLY8_C(10), SIMDE_POLY8_C(10), SIMDE_POLY8_C(23), SIMDE_POLY8_C(26), SIMDE_POLY8_C(1), SIMDE_POLY8_C(37), SIMDE_POLY8_C(35) },
{ SIMDE_POLY8_C(18), SIMDE_POLY8_C(6), SIMDE_POLY8_C(37), SIMDE_POLY8_C(26), SIMDE_POLY8_C(9), SIMDE_POLY8_C(14), SIMDE_POLY8_C(17), SIMDE_POLY8_C(38),
SIMDE_POLY8_C(8), SIMDE_POLY8_C(27), SIMDE_POLY8_C(45), SIMDE_POLY8_C(15), SIMDE_POLY8_C(0), SIMDE_POLY8_C(36), SIMDE_POLY8_C(1), SIMDE_POLY8_C(20) } } },
{ { { SIMDE_POLY8_C(13), SIMDE_POLY8_C(26), SIMDE_POLY8_C(44), SIMDE_POLY8_C(35), SIMDE_POLY8_C(42), SIMDE_POLY8_C(3), SIMDE_POLY8_C(9), SIMDE_POLY8_C(23),
SIMDE_POLY8_C(0), SIMDE_POLY8_C(20), SIMDE_POLY8_C(17), SIMDE_POLY8_C(46), SIMDE_POLY8_C(15), SIMDE_POLY8_C(39), SIMDE_POLY8_C(26), SIMDE_POLY8_C(34) },
{ SIMDE_POLY8_C(5), SIMDE_POLY8_C(22), SIMDE_POLY8_C(30), SIMDE_POLY8_C(9), SIMDE_POLY8_C(17), SIMDE_POLY8_C(44), SIMDE_POLY8_C(46), SIMDE_POLY8_C(25),
SIMDE_POLY8_C(45), SIMDE_POLY8_C(46), SIMDE_POLY8_C(16), SIMDE_POLY8_C(6), SIMDE_POLY8_C(40), SIMDE_POLY8_C(37), SIMDE_POLY8_C(15), SIMDE_POLY8_C(11) } },
{ SIMDE_POLY8_C(25), SIMDE_POLY8_C(25)},
{ { SIMDE_POLY8_C(13), SIMDE_POLY8_C(26), SIMDE_POLY8_C(25), SIMDE_POLY8_C(35), SIMDE_POLY8_C(42), SIMDE_POLY8_C(3), SIMDE_POLY8_C(9), SIMDE_POLY8_C(23),
SIMDE_POLY8_C(0), SIMDE_POLY8_C(20), SIMDE_POLY8_C(17), SIMDE_POLY8_C(46), SIMDE_POLY8_C(15), SIMDE_POLY8_C(39), SIMDE_POLY8_C(26), SIMDE_POLY8_C(34) },
{ SIMDE_POLY8_C(5), SIMDE_POLY8_C(22), SIMDE_POLY8_C(25), SIMDE_POLY8_C(9), SIMDE_POLY8_C(17), SIMDE_POLY8_C(44), SIMDE_POLY8_C(46), SIMDE_POLY8_C(25),
SIMDE_POLY8_C(45), SIMDE_POLY8_C(46), SIMDE_POLY8_C(16), SIMDE_POLY8_C(6), SIMDE_POLY8_C(40), SIMDE_POLY8_C(37), SIMDE_POLY8_C(15), SIMDE_POLY8_C(11) } } },
{ { { SIMDE_POLY8_C(6), SIMDE_POLY8_C(37), SIMDE_POLY8_C(49), SIMDE_POLY8_C(9), SIMDE_POLY8_C(38), SIMDE_POLY8_C(40), SIMDE_POLY8_C(21), SIMDE_POLY8_C(28),
SIMDE_POLY8_C(2), SIMDE_POLY8_C(1), SIMDE_POLY8_C(18), SIMDE_POLY8_C(31), SIMDE_POLY8_C(34), SIMDE_POLY8_C(2), SIMDE_POLY8_C(23), SIMDE_POLY8_C(35) },
{ SIMDE_POLY8_C(17), SIMDE_POLY8_C(12), SIMDE_POLY8_C(24), SIMDE_POLY8_C(48), SIMDE_POLY8_C(30), SIMDE_POLY8_C(16), SIMDE_POLY8_C(21), SIMDE_POLY8_C(31),
SIMDE_POLY8_C(39), SIMDE_POLY8_C(29), SIMDE_POLY8_C(4), SIMDE_POLY8_C(18), SIMDE_POLY8_C(47), SIMDE_POLY8_C(15), SIMDE_POLY8_C(49), SIMDE_POLY8_C(18) } },
{ SIMDE_POLY8_C(41), SIMDE_POLY8_C(33)},
{ { SIMDE_POLY8_C(6), SIMDE_POLY8_C(37), SIMDE_POLY8_C(49), SIMDE_POLY8_C(41), SIMDE_POLY8_C(38), SIMDE_POLY8_C(40), SIMDE_POLY8_C(21), SIMDE_POLY8_C(28),
SIMDE_POLY8_C(2), SIMDE_POLY8_C(1), SIMDE_POLY8_C(18), SIMDE_POLY8_C(31), SIMDE_POLY8_C(34), SIMDE_POLY8_C(2), SIMDE_POLY8_C(23), SIMDE_POLY8_C(35) },
{ SIMDE_POLY8_C(17), SIMDE_POLY8_C(12), SIMDE_POLY8_C(24), SIMDE_POLY8_C(33), SIMDE_POLY8_C(30), SIMDE_POLY8_C(16), SIMDE_POLY8_C(21), SIMDE_POLY8_C(31),
SIMDE_POLY8_C(39), SIMDE_POLY8_C(29), SIMDE_POLY8_C(4), SIMDE_POLY8_C(18), SIMDE_POLY8_C(47), SIMDE_POLY8_C(15), SIMDE_POLY8_C(49), SIMDE_POLY8_C(18) } } },
{ { { SIMDE_POLY8_C(10), SIMDE_POLY8_C(27), SIMDE_POLY8_C(21), SIMDE_POLY8_C(23), SIMDE_POLY8_C(17), SIMDE_POLY8_C(42), SIMDE_POLY8_C(24), SIMDE_POLY8_C(35),
SIMDE_POLY8_C(38), SIMDE_POLY8_C(3), SIMDE_POLY8_C(29), SIMDE_POLY8_C(41), SIMDE_POLY8_C(44), SIMDE_POLY8_C(15), SIMDE_POLY8_C(48), SIMDE_POLY8_C(26) },
{ SIMDE_POLY8_C(9), SIMDE_POLY8_C(47), SIMDE_POLY8_C(29), SIMDE_POLY8_C(8), SIMDE_POLY8_C(7), SIMDE_POLY8_C(6), SIMDE_POLY8_C(26), SIMDE_POLY8_C(9),
SIMDE_POLY8_C(11), SIMDE_POLY8_C(2), SIMDE_POLY8_C(6), SIMDE_POLY8_C(22), SIMDE_POLY8_C(34), SIMDE_POLY8_C(5), SIMDE_POLY8_C(38), SIMDE_POLY8_C(18) } },
{ SIMDE_POLY8_C(21), SIMDE_POLY8_C(25)},
{ { SIMDE_POLY8_C(10), SIMDE_POLY8_C(27), SIMDE_POLY8_C(21), SIMDE_POLY8_C(23), SIMDE_POLY8_C(21), SIMDE_POLY8_C(42), SIMDE_POLY8_C(24), SIMDE_POLY8_C(35),
SIMDE_POLY8_C(38), SIMDE_POLY8_C(3), SIMDE_POLY8_C(29), SIMDE_POLY8_C(41), SIMDE_POLY8_C(44), SIMDE_POLY8_C(15), SIMDE_POLY8_C(48), SIMDE_POLY8_C(26) },
{ SIMDE_POLY8_C(9), SIMDE_POLY8_C(47), SIMDE_POLY8_C(29), SIMDE_POLY8_C(8), SIMDE_POLY8_C(25), SIMDE_POLY8_C(6), SIMDE_POLY8_C(26), SIMDE_POLY8_C(9),
SIMDE_POLY8_C(11), SIMDE_POLY8_C(2), SIMDE_POLY8_C(6), SIMDE_POLY8_C(22), SIMDE_POLY8_C(34), SIMDE_POLY8_C(5), SIMDE_POLY8_C(38), SIMDE_POLY8_C(18) } } },
{ { { SIMDE_POLY8_C(2), SIMDE_POLY8_C(33), SIMDE_POLY8_C(23), SIMDE_POLY8_C(0), SIMDE_POLY8_C(48), SIMDE_POLY8_C(2), SIMDE_POLY8_C(26), SIMDE_POLY8_C(29),
SIMDE_POLY8_C(38), SIMDE_POLY8_C(14), SIMDE_POLY8_C(48), SIMDE_POLY8_C(0), SIMDE_POLY8_C(44), SIMDE_POLY8_C(42), SIMDE_POLY8_C(37), SIMDE_POLY8_C(5) },
{ SIMDE_POLY8_C(24), SIMDE_POLY8_C(4), SIMDE_POLY8_C(37), SIMDE_POLY8_C(46), SIMDE_POLY8_C(40), SIMDE_POLY8_C(24), SIMDE_POLY8_C(40), SIMDE_POLY8_C(18),
SIMDE_POLY8_C(44), SIMDE_POLY8_C(48), SIMDE_POLY8_C(36), SIMDE_POLY8_C(45), SIMDE_POLY8_C(2), SIMDE_POLY8_C(4), SIMDE_POLY8_C(35), SIMDE_POLY8_C(9) } },
{ SIMDE_POLY8_C(15), SIMDE_POLY8_C(13)},
{ { SIMDE_POLY8_C(2), SIMDE_POLY8_C(33), SIMDE_POLY8_C(23), SIMDE_POLY8_C(0), SIMDE_POLY8_C(48), SIMDE_POLY8_C(15), SIMDE_POLY8_C(26), SIMDE_POLY8_C(29),
SIMDE_POLY8_C(38), SIMDE_POLY8_C(14), SIMDE_POLY8_C(48), SIMDE_POLY8_C(0), SIMDE_POLY8_C(44), SIMDE_POLY8_C(42), SIMDE_POLY8_C(37), SIMDE_POLY8_C(5) },
{ SIMDE_POLY8_C(24), SIMDE_POLY8_C(4), SIMDE_POLY8_C(37), SIMDE_POLY8_C(46), SIMDE_POLY8_C(40), SIMDE_POLY8_C(13), SIMDE_POLY8_C(40), SIMDE_POLY8_C(18),
SIMDE_POLY8_C(44), SIMDE_POLY8_C(48), SIMDE_POLY8_C(36), SIMDE_POLY8_C(45), SIMDE_POLY8_C(2), SIMDE_POLY8_C(4), SIMDE_POLY8_C(35), SIMDE_POLY8_C(9) } } },
{ { { SIMDE_POLY8_C(19), SIMDE_POLY8_C(26), SIMDE_POLY8_C(45), SIMDE_POLY8_C(37), SIMDE_POLY8_C(27), SIMDE_POLY8_C(2), SIMDE_POLY8_C(43), SIMDE_POLY8_C(37),
SIMDE_POLY8_C(26), SIMDE_POLY8_C(18), SIMDE_POLY8_C(35), SIMDE_POLY8_C(9), SIMDE_POLY8_C(15), SIMDE_POLY8_C(38), SIMDE_POLY8_C(12), SIMDE_POLY8_C(35) },
{ SIMDE_POLY8_C(9), SIMDE_POLY8_C(5), SIMDE_POLY8_C(6), SIMDE_POLY8_C(48), SIMDE_POLY8_C(10), SIMDE_POLY8_C(7), SIMDE_POLY8_C(18), SIMDE_POLY8_C(18),
SIMDE_POLY8_C(5), SIMDE_POLY8_C(48), SIMDE_POLY8_C(36), SIMDE_POLY8_C(12), SIMDE_POLY8_C(8), SIMDE_POLY8_C(23), SIMDE_POLY8_C(0), SIMDE_POLY8_C(27) } },
{ SIMDE_POLY8_C(19), SIMDE_POLY8_C(38)},
{ { SIMDE_POLY8_C(19), SIMDE_POLY8_C(26), SIMDE_POLY8_C(45), SIMDE_POLY8_C(37), SIMDE_POLY8_C(27), SIMDE_POLY8_C(2), SIMDE_POLY8_C(19), SIMDE_POLY8_C(37),
SIMDE_POLY8_C(26), SIMDE_POLY8_C(18), SIMDE_POLY8_C(35), SIMDE_POLY8_C(9), SIMDE_POLY8_C(15), SIMDE_POLY8_C(38), SIMDE_POLY8_C(12), SIMDE_POLY8_C(35) },
{ SIMDE_POLY8_C(9), SIMDE_POLY8_C(5), SIMDE_POLY8_C(6), SIMDE_POLY8_C(48), SIMDE_POLY8_C(10), SIMDE_POLY8_C(7), SIMDE_POLY8_C(38), SIMDE_POLY8_C(18),
SIMDE_POLY8_C(5), SIMDE_POLY8_C(48), SIMDE_POLY8_C(36), SIMDE_POLY8_C(12), SIMDE_POLY8_C(8), SIMDE_POLY8_C(23), SIMDE_POLY8_C(0), SIMDE_POLY8_C(27) } } },
{ { { SIMDE_POLY8_C(27), SIMDE_POLY8_C(17), SIMDE_POLY8_C(31), SIMDE_POLY8_C(14), SIMDE_POLY8_C(14), SIMDE_POLY8_C(10), SIMDE_POLY8_C(47), SIMDE_POLY8_C(29),
SIMDE_POLY8_C(16), SIMDE_POLY8_C(21), SIMDE_POLY8_C(21), SIMDE_POLY8_C(49), SIMDE_POLY8_C(40), SIMDE_POLY8_C(7), SIMDE_POLY8_C(47), SIMDE_POLY8_C(0) },
{ SIMDE_POLY8_C(39), SIMDE_POLY8_C(29), SIMDE_POLY8_C(1), SIMDE_POLY8_C(3), SIMDE_POLY8_C(6), SIMDE_POLY8_C(48), SIMDE_POLY8_C(32), SIMDE_POLY8_C(2),
SIMDE_POLY8_C(14), SIMDE_POLY8_C(9), SIMDE_POLY8_C(49), SIMDE_POLY8_C(9), SIMDE_POLY8_C(7), SIMDE_POLY8_C(24), SIMDE_POLY8_C(42), SIMDE_POLY8_C(39) } },
{ SIMDE_POLY8_C(4), SIMDE_POLY8_C(15)},
{ { SIMDE_POLY8_C(27), SIMDE_POLY8_C(17), SIMDE_POLY8_C(31), SIMDE_POLY8_C(14), SIMDE_POLY8_C(14), SIMDE_POLY8_C(10), SIMDE_POLY8_C(47), SIMDE_POLY8_C(4),
SIMDE_POLY8_C(16), SIMDE_POLY8_C(21), SIMDE_POLY8_C(21), SIMDE_POLY8_C(49), SIMDE_POLY8_C(40), SIMDE_POLY8_C(7), SIMDE_POLY8_C(47), SIMDE_POLY8_C(0) },
{ SIMDE_POLY8_C(39), SIMDE_POLY8_C(29), SIMDE_POLY8_C(1), SIMDE_POLY8_C(3), SIMDE_POLY8_C(6), SIMDE_POLY8_C(48), SIMDE_POLY8_C(32), SIMDE_POLY8_C(15),
SIMDE_POLY8_C(14), SIMDE_POLY8_C(9), SIMDE_POLY8_C(49), SIMDE_POLY8_C(9), SIMDE_POLY8_C(7), SIMDE_POLY8_C(24), SIMDE_POLY8_C(42), SIMDE_POLY8_C(39) } } },
{ { { SIMDE_POLY8_C(37), SIMDE_POLY8_C(15), SIMDE_POLY8_C(46), SIMDE_POLY8_C(31), SIMDE_POLY8_C(34), SIMDE_POLY8_C(45), SIMDE_POLY8_C(14), SIMDE_POLY8_C(4),
SIMDE_POLY8_C(14), SIMDE_POLY8_C(26), SIMDE_POLY8_C(46), SIMDE_POLY8_C(29), SIMDE_POLY8_C(18), SIMDE_POLY8_C(8), SIMDE_POLY8_C(42), SIMDE_POLY8_C(46) },
{ SIMDE_POLY8_C(21), SIMDE_POLY8_C(6), SIMDE_POLY8_C(17), SIMDE_POLY8_C(27), SIMDE_POLY8_C(20), SIMDE_POLY8_C(32), SIMDE_POLY8_C(7), SIMDE_POLY8_C(47),
SIMDE_POLY8_C(2), SIMDE_POLY8_C(20), SIMDE_POLY8_C(26), SIMDE_POLY8_C(18), SIMDE_POLY8_C(49), SIMDE_POLY8_C(34), SIMDE_POLY8_C(49), SIMDE_POLY8_C(20) } },
{ SIMDE_POLY8_C(35), SIMDE_POLY8_C(38)},
{ { SIMDE_POLY8_C(37), SIMDE_POLY8_C(15), SIMDE_POLY8_C(46), SIMDE_POLY8_C(31), SIMDE_POLY8_C(34), SIMDE_POLY8_C(45), SIMDE_POLY8_C(14), SIMDE_POLY8_C(4),
SIMDE_POLY8_C(35), SIMDE_POLY8_C(26), SIMDE_POLY8_C(46), SIMDE_POLY8_C(29), SIMDE_POLY8_C(18), SIMDE_POLY8_C(8), SIMDE_POLY8_C(42), SIMDE_POLY8_C(46) },
{ SIMDE_POLY8_C(21), SIMDE_POLY8_C(6), SIMDE_POLY8_C(17), SIMDE_POLY8_C(27), SIMDE_POLY8_C(20), SIMDE_POLY8_C(32), SIMDE_POLY8_C(7), SIMDE_POLY8_C(47),
SIMDE_POLY8_C(38), SIMDE_POLY8_C(20), SIMDE_POLY8_C(26), SIMDE_POLY8_C(18), SIMDE_POLY8_C(49), SIMDE_POLY8_C(34), SIMDE_POLY8_C(49), SIMDE_POLY8_C(20) } } },
{ { { SIMDE_POLY8_C(3), SIMDE_POLY8_C(7), SIMDE_POLY8_C(11), SIMDE_POLY8_C(42), SIMDE_POLY8_C(30), SIMDE_POLY8_C(18), SIMDE_POLY8_C(19), SIMDE_POLY8_C(10),
SIMDE_POLY8_C(28), SIMDE_POLY8_C(27), SIMDE_POLY8_C(40), SIMDE_POLY8_C(8), SIMDE_POLY8_C(37), SIMDE_POLY8_C(45), SIMDE_POLY8_C(46), SIMDE_POLY8_C(28) },
{ SIMDE_POLY8_C(20), SIMDE_POLY8_C(48), SIMDE_POLY8_C(0), SIMDE_POLY8_C(46), SIMDE_POLY8_C(25), SIMDE_POLY8_C(39), SIMDE_POLY8_C(0), SIMDE_POLY8_C(21),
SIMDE_POLY8_C(25), SIMDE_POLY8_C(28), SIMDE_POLY8_C(48), SIMDE_POLY8_C(12), SIMDE_POLY8_C(13), SIMDE_POLY8_C(44), SIMDE_POLY8_C(45), SIMDE_POLY8_C(26) } },
{ SIMDE_POLY8_C(47), SIMDE_POLY8_C(22)},
{ { SIMDE_POLY8_C(3), SIMDE_POLY8_C(7), SIMDE_POLY8_C(11), SIMDE_POLY8_C(42), SIMDE_POLY8_C(30), SIMDE_POLY8_C(18), SIMDE_POLY8_C(19), SIMDE_POLY8_C(10),
SIMDE_POLY8_C(28), SIMDE_POLY8_C(47), SIMDE_POLY8_C(40), SIMDE_POLY8_C(8), SIMDE_POLY8_C(37), SIMDE_POLY8_C(45), SIMDE_POLY8_C(46), SIMDE_POLY8_C(28) },
{ SIMDE_POLY8_C(20), SIMDE_POLY8_C(48), SIMDE_POLY8_C(0), SIMDE_POLY8_C(46), SIMDE_POLY8_C(25), SIMDE_POLY8_C(39), SIMDE_POLY8_C(0), SIMDE_POLY8_C(21),
SIMDE_POLY8_C(25), SIMDE_POLY8_C(22), SIMDE_POLY8_C(48), SIMDE_POLY8_C(12), SIMDE_POLY8_C(13), SIMDE_POLY8_C(44), SIMDE_POLY8_C(45), SIMDE_POLY8_C(26) } } },
{ { { SIMDE_POLY8_C(3), SIMDE_POLY8_C(35), SIMDE_POLY8_C(46), SIMDE_POLY8_C(27), SIMDE_POLY8_C(13), SIMDE_POLY8_C(31), SIMDE_POLY8_C(44), SIMDE_POLY8_C(37),
SIMDE_POLY8_C(46), SIMDE_POLY8_C(47), SIMDE_POLY8_C(29), SIMDE_POLY8_C(24), SIMDE_POLY8_C(0), SIMDE_POLY8_C(31), SIMDE_POLY8_C(24), SIMDE_POLY8_C(39) },
{ SIMDE_POLY8_C(8), SIMDE_POLY8_C(45), SIMDE_POLY8_C(22), SIMDE_POLY8_C(28), SIMDE_POLY8_C(9), SIMDE_POLY8_C(19), SIMDE_POLY8_C(27), SIMDE_POLY8_C(1),
SIMDE_POLY8_C(47), SIMDE_POLY8_C(38), SIMDE_POLY8_C(11), SIMDE_POLY8_C(30), SIMDE_POLY8_C(18), SIMDE_POLY8_C(13), SIMDE_POLY8_C(36), SIMDE_POLY8_C(6) } },
{ SIMDE_POLY8_C(27), SIMDE_POLY8_C(45)},
{ { SIMDE_POLY8_C(3), SIMDE_POLY8_C(35), SIMDE_POLY8_C(46), SIMDE_POLY8_C(27), SIMDE_POLY8_C(13), SIMDE_POLY8_C(31), SIMDE_POLY8_C(44), SIMDE_POLY8_C(37),
SIMDE_POLY8_C(46), SIMDE_POLY8_C(47), SIMDE_POLY8_C(27), SIMDE_POLY8_C(24), SIMDE_POLY8_C(0), SIMDE_POLY8_C(31), SIMDE_POLY8_C(24), SIMDE_POLY8_C(39) },
{ SIMDE_POLY8_C(8), SIMDE_POLY8_C(45), SIMDE_POLY8_C(22), SIMDE_POLY8_C(28), SIMDE_POLY8_C(9), SIMDE_POLY8_C(19), SIMDE_POLY8_C(27), SIMDE_POLY8_C(1),
SIMDE_POLY8_C(47), SIMDE_POLY8_C(38), SIMDE_POLY8_C(45), SIMDE_POLY8_C(30), SIMDE_POLY8_C(18), SIMDE_POLY8_C(13), SIMDE_POLY8_C(36), SIMDE_POLY8_C(6) } } },
{ { { SIMDE_POLY8_C(27), SIMDE_POLY8_C(22), SIMDE_POLY8_C(2), SIMDE_POLY8_C(45), SIMDE_POLY8_C(16), SIMDE_POLY8_C(20), SIMDE_POLY8_C(11), SIMDE_POLY8_C(41),
SIMDE_POLY8_C(5), SIMDE_POLY8_C(39), SIMDE_POLY8_C(35), SIMDE_POLY8_C(0), SIMDE_POLY8_C(42), SIMDE_POLY8_C(15), SIMDE_POLY8_C(7), SIMDE_POLY8_C(9) },
{ SIMDE_POLY8_C(42), SIMDE_POLY8_C(1), SIMDE_POLY8_C(5), SIMDE_POLY8_C(26), SIMDE_POLY8_C(17), SIMDE_POLY8_C(42), SIMDE_POLY8_C(12), SIMDE_POLY8_C(7),
SIMDE_POLY8_C(43), SIMDE_POLY8_C(27), SIMDE_POLY8_C(46), SIMDE_POLY8_C(18), SIMDE_POLY8_C(44), SIMDE_POLY8_C(7), SIMDE_POLY8_C(49), SIMDE_POLY8_C(24) } },
{ SIMDE_POLY8_C(14), SIMDE_POLY8_C(8)},
{ { SIMDE_POLY8_C(27), SIMDE_POLY8_C(22), SIMDE_POLY8_C(2), SIMDE_POLY8_C(45), SIMDE_POLY8_C(16), SIMDE_POLY8_C(20), SIMDE_POLY8_C(11), SIMDE_POLY8_C(41),
SIMDE_POLY8_C(5), SIMDE_POLY8_C(39), SIMDE_POLY8_C(35), SIMDE_POLY8_C(14), SIMDE_POLY8_C(42), SIMDE_POLY8_C(15), SIMDE_POLY8_C(7), SIMDE_POLY8_C(9) },
{ SIMDE_POLY8_C(42), SIMDE_POLY8_C(1), SIMDE_POLY8_C(5), SIMDE_POLY8_C(26), SIMDE_POLY8_C(17), SIMDE_POLY8_C(42), SIMDE_POLY8_C(12), SIMDE_POLY8_C(7),
SIMDE_POLY8_C(43), SIMDE_POLY8_C(27), SIMDE_POLY8_C(46), SIMDE_POLY8_C(8), SIMDE_POLY8_C(44), SIMDE_POLY8_C(7), SIMDE_POLY8_C(49), SIMDE_POLY8_C(24) } } },
{ { { SIMDE_POLY8_C(49), SIMDE_POLY8_C(24), SIMDE_POLY8_C(24), SIMDE_POLY8_C(11), SIMDE_POLY8_C(12), SIMDE_POLY8_C(25), SIMDE_POLY8_C(0), SIMDE_POLY8_C(3),
SIMDE_POLY8_C(10), SIMDE_POLY8_C(16), SIMDE_POLY8_C(24), SIMDE_POLY8_C(47), SIMDE_POLY8_C(42), SIMDE_POLY8_C(8), SIMDE_POLY8_C(45), SIMDE_POLY8_C(14) },
{ SIMDE_POLY8_C(19), SIMDE_POLY8_C(19), SIMDE_POLY8_C(0), SIMDE_POLY8_C(4), SIMDE_POLY8_C(9), SIMDE_POLY8_C(37), SIMDE_POLY8_C(17), SIMDE_POLY8_C(6),
SIMDE_POLY8_C(16), SIMDE_POLY8_C(49), SIMDE_POLY8_C(39), SIMDE_POLY8_C(30), SIMDE_POLY8_C(42), SIMDE_POLY8_C(1), SIMDE_POLY8_C(27), SIMDE_POLY8_C(22) } },
{ SIMDE_POLY8_C(14), SIMDE_POLY8_C(8)},
{ { SIMDE_POLY8_C(49), SIMDE_POLY8_C(24), SIMDE_POLY8_C(24), SIMDE_POLY8_C(11), SIMDE_POLY8_C(12), SIMDE_POLY8_C(25), SIMDE_POLY8_C(0), SIMDE_POLY8_C(3),
SIMDE_POLY8_C(10), SIMDE_POLY8_C(16), SIMDE_POLY8_C(24), SIMDE_POLY8_C(47), SIMDE_POLY8_C(14), SIMDE_POLY8_C(8), SIMDE_POLY8_C(45), SIMDE_POLY8_C(14) },
{ SIMDE_POLY8_C(19), SIMDE_POLY8_C(19), SIMDE_POLY8_C(0), SIMDE_POLY8_C(4), SIMDE_POLY8_C(9), SIMDE_POLY8_C(37), SIMDE_POLY8_C(17), SIMDE_POLY8_C(6),
SIMDE_POLY8_C(16), SIMDE_POLY8_C(49), SIMDE_POLY8_C(39), SIMDE_POLY8_C(30), SIMDE_POLY8_C(8), SIMDE_POLY8_C(1), SIMDE_POLY8_C(27), SIMDE_POLY8_C(22) } } },
{ { { SIMDE_POLY8_C(6), SIMDE_POLY8_C(22), SIMDE_POLY8_C(33), SIMDE_POLY8_C(31), SIMDE_POLY8_C(29), SIMDE_POLY8_C(16), SIMDE_POLY8_C(29), SIMDE_POLY8_C(38),
SIMDE_POLY8_C(25), SIMDE_POLY8_C(9), SIMDE_POLY8_C(19), SIMDE_POLY8_C(12), SIMDE_POLY8_C(2), SIMDE_POLY8_C(47), SIMDE_POLY8_C(19), SIMDE_POLY8_C(47) },
{ SIMDE_POLY8_C(42), SIMDE_POLY8_C(2), SIMDE_POLY8_C(24), SIMDE_POLY8_C(27), SIMDE_POLY8_C(3), SIMDE_POLY8_C(20), SIMDE_POLY8_C(2), SIMDE_POLY8_C(20),
SIMDE_POLY8_C(10), SIMDE_POLY8_C(29), SIMDE_POLY8_C(37), SIMDE_POLY8_C(33), SIMDE_POLY8_C(47), SIMDE_POLY8_C(1), SIMDE_POLY8_C(31), SIMDE_POLY8_C(4) } },
{ SIMDE_POLY8_C(12), SIMDE_POLY8_C(31)},
{ { SIMDE_POLY8_C(6), SIMDE_POLY8_C(22), SIMDE_POLY8_C(33), SIMDE_POLY8_C(31), SIMDE_POLY8_C(29), SIMDE_POLY8_C(16), SIMDE_POLY8_C(29), SIMDE_POLY8_C(38),
SIMDE_POLY8_C(25), SIMDE_POLY8_C(9), SIMDE_POLY8_C(19), SIMDE_POLY8_C(12), SIMDE_POLY8_C(2), SIMDE_POLY8_C(12), SIMDE_POLY8_C(19), SIMDE_POLY8_C(47) },
{ SIMDE_POLY8_C(42), SIMDE_POLY8_C(2), SIMDE_POLY8_C(24), SIMDE_POLY8_C(27), SIMDE_POLY8_C(3), SIMDE_POLY8_C(20), SIMDE_POLY8_C(2), SIMDE_POLY8_C(20),
SIMDE_POLY8_C(10), SIMDE_POLY8_C(29), SIMDE_POLY8_C(37), SIMDE_POLY8_C(33), SIMDE_POLY8_C(47), SIMDE_POLY8_C(31), SIMDE_POLY8_C(31), SIMDE_POLY8_C(4) } } },
{ { { SIMDE_POLY8_C(4), SIMDE_POLY8_C(34), SIMDE_POLY8_C(11), SIMDE_POLY8_C(37), SIMDE_POLY8_C(11), SIMDE_POLY8_C(18), SIMDE_POLY8_C(0), SIMDE_POLY8_C(13),
SIMDE_POLY8_C(45), SIMDE_POLY8_C(20), SIMDE_POLY8_C(3), SIMDE_POLY8_C(34), SIMDE_POLY8_C(42), SIMDE_POLY8_C(2), SIMDE_POLY8_C(17), SIMDE_POLY8_C(0) },
{ SIMDE_POLY8_C(43), SIMDE_POLY8_C(15), SIMDE_POLY8_C(29), SIMDE_POLY8_C(47), SIMDE_POLY8_C(29), SIMDE_POLY8_C(31), SIMDE_POLY8_C(20), SIMDE_POLY8_C(42),
SIMDE_POLY8_C(37), SIMDE_POLY8_C(6), SIMDE_POLY8_C(39), SIMDE_POLY8_C(2), SIMDE_POLY8_C(40), SIMDE_POLY8_C(34), SIMDE_POLY8_C(46), SIMDE_POLY8_C(21) } },
{ SIMDE_POLY8_C(1), SIMDE_POLY8_C(27)},
{ { SIMDE_POLY8_C(4), SIMDE_POLY8_C(34), SIMDE_POLY8_C(11), SIMDE_POLY8_C(37), SIMDE_POLY8_C(11), SIMDE_POLY8_C(18), SIMDE_POLY8_C(0), SIMDE_POLY8_C(13),
SIMDE_POLY8_C(45), SIMDE_POLY8_C(20), SIMDE_POLY8_C(3), SIMDE_POLY8_C(34), SIMDE_POLY8_C(42), SIMDE_POLY8_C(2), SIMDE_POLY8_C(1), SIMDE_POLY8_C(0) },
{ SIMDE_POLY8_C(43), SIMDE_POLY8_C(15), SIMDE_POLY8_C(29), SIMDE_POLY8_C(47), SIMDE_POLY8_C(29), SIMDE_POLY8_C(31), SIMDE_POLY8_C(20), SIMDE_POLY8_C(42),
SIMDE_POLY8_C(37), SIMDE_POLY8_C(6), SIMDE_POLY8_C(39), SIMDE_POLY8_C(2), SIMDE_POLY8_C(40), SIMDE_POLY8_C(34), SIMDE_POLY8_C(27), SIMDE_POLY8_C(21) } } },
{ { { SIMDE_POLY8_C(45), SIMDE_POLY8_C(24), SIMDE_POLY8_C(18), SIMDE_POLY8_C(2), SIMDE_POLY8_C(29), SIMDE_POLY8_C(24), SIMDE_POLY8_C(25), SIMDE_POLY8_C(8),
SIMDE_POLY8_C(2), SIMDE_POLY8_C(10), SIMDE_POLY8_C(15), SIMDE_POLY8_C(30), SIMDE_POLY8_C(16), SIMDE_POLY8_C(4), SIMDE_POLY8_C(46), SIMDE_POLY8_C(26) },
{ SIMDE_POLY8_C(24), SIMDE_POLY8_C(33), SIMDE_POLY8_C(14), SIMDE_POLY8_C(42), SIMDE_POLY8_C(12), SIMDE_POLY8_C(0), SIMDE_POLY8_C(14), SIMDE_POLY8_C(30),
SIMDE_POLY8_C(11), SIMDE_POLY8_C(3), SIMDE_POLY8_C(46), SIMDE_POLY8_C(16), SIMDE_POLY8_C(32), SIMDE_POLY8_C(30), SIMDE_POLY8_C(15), SIMDE_POLY8_C(0) } },
{ SIMDE_POLY8_C(18), SIMDE_POLY8_C(19)},
{ { SIMDE_POLY8_C(45), SIMDE_POLY8_C(24), SIMDE_POLY8_C(18), SIMDE_POLY8_C(2), SIMDE_POLY8_C(29), SIMDE_POLY8_C(24), SIMDE_POLY8_C(25), SIMDE_POLY8_C(8),
SIMDE_POLY8_C(2), SIMDE_POLY8_C(10), SIMDE_POLY8_C(15), SIMDE_POLY8_C(30), SIMDE_POLY8_C(16), SIMDE_POLY8_C(4), SIMDE_POLY8_C(46), SIMDE_POLY8_C(18) },
{ SIMDE_POLY8_C(24), SIMDE_POLY8_C(33), SIMDE_POLY8_C(14), SIMDE_POLY8_C(42), SIMDE_POLY8_C(12), SIMDE_POLY8_C(0), SIMDE_POLY8_C(14), SIMDE_POLY8_C(30),
SIMDE_POLY8_C(11), SIMDE_POLY8_C(3), SIMDE_POLY8_C(46), SIMDE_POLY8_C(16), SIMDE_POLY8_C(32), SIMDE_POLY8_C(30), SIMDE_POLY8_C(15), SIMDE_POLY8_C(19) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_poly8x16x2_t r, src, expected;
src.val[0] = simde_vld1q_p8(test_vec[i].src[0]);
src.val[1] = simde_vld1q_p8(test_vec[i].src[1]);
SIMDE_CONSTIFY_16_(simde_vld2q_lane_p8, r, (HEDLEY_UNREACHABLE(), r), i, test_vec[i].buf, src);
expected.val[0] = simde_vld1q_p8(test_vec[i].r[0]);
expected.val[1] = simde_vld1q_p8(test_vec[i].r[1]);
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]);
}
return 0;
#else
for (int i = 0 ; i < 16 ; i++) {
simde_poly8x16x2_t src = simde_test_arm_neon_random_p8x16x2();
simde_poly8_t buf[2];
simde_poly8x16x2_t r;
simde_test_arm_neon_write_p8x16x2(2, src, SIMDE_TEST_VEC_POS_FIRST);
simde_test_codegen_random_memory(2, HEDLEY_REINTERPRET_CAST(uint8_t*, buf));
simde_test_codegen_write_vp8(2, 2, buf, SIMDE_TEST_VEC_POS_MIDDLE);
SIMDE_CONSTIFY_16_(simde_vld2q_lane_p8, r, (HEDLEY_UNREACHABLE(), r), i, buf, src);
simde_test_arm_neon_write_p8x16x2(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vld2q_lane_p16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
simde_poly16_t src[2][8];
simde_poly16_t buf[2];
simde_poly16_t r[2][8];
} test_vec[] = {
{ { { SIMDE_POLY16_C(418), SIMDE_POLY16_C(216), SIMDE_POLY16_C(347), SIMDE_POLY16_C(476),
SIMDE_POLY16_C(360), SIMDE_POLY16_C(143), SIMDE_POLY16_C(316), SIMDE_POLY16_C(114) },
{ SIMDE_POLY16_C(387), SIMDE_POLY16_C(146), SIMDE_POLY16_C(225), SIMDE_POLY16_C(190),
SIMDE_POLY16_C(399), SIMDE_POLY16_C(128), SIMDE_POLY16_C(400), SIMDE_POLY16_C(257) } },
{ SIMDE_POLY16_C(488), SIMDE_POLY16_C(232)},
{ { SIMDE_POLY16_C(488), SIMDE_POLY16_C(216), SIMDE_POLY16_C(347), SIMDE_POLY16_C(476),
SIMDE_POLY16_C(360), SIMDE_POLY16_C(143), SIMDE_POLY16_C(316), SIMDE_POLY16_C(114) },
{ SIMDE_POLY16_C(232), SIMDE_POLY16_C(146), SIMDE_POLY16_C(225), SIMDE_POLY16_C(190),
SIMDE_POLY16_C(399), SIMDE_POLY16_C(128), SIMDE_POLY16_C(400), SIMDE_POLY16_C(257) } } },
{ { { SIMDE_POLY16_C(311), SIMDE_POLY16_C(430), SIMDE_POLY16_C(36), SIMDE_POLY16_C(399),
SIMDE_POLY16_C(84), SIMDE_POLY16_C(165), SIMDE_POLY16_C(434), SIMDE_POLY16_C(105) },
{ SIMDE_POLY16_C(449), SIMDE_POLY16_C(455), SIMDE_POLY16_C(390), SIMDE_POLY16_C(160),
SIMDE_POLY16_C(77), SIMDE_POLY16_C(147), SIMDE_POLY16_C(38), SIMDE_POLY16_C(271) } },
{ SIMDE_POLY16_C(106), SIMDE_POLY16_C(427)},
{ { SIMDE_POLY16_C(311), SIMDE_POLY16_C(106), SIMDE_POLY16_C(36), SIMDE_POLY16_C(399),
SIMDE_POLY16_C(84), SIMDE_POLY16_C(165), SIMDE_POLY16_C(434), SIMDE_POLY16_C(105) },
{ SIMDE_POLY16_C(449), SIMDE_POLY16_C(427), SIMDE_POLY16_C(390), SIMDE_POLY16_C(160),
SIMDE_POLY16_C(77), SIMDE_POLY16_C(147), SIMDE_POLY16_C(38), SIMDE_POLY16_C(271) } } },
{ { { SIMDE_POLY16_C(181), SIMDE_POLY16_C(136), SIMDE_POLY16_C(379), SIMDE_POLY16_C(296),
SIMDE_POLY16_C(309), SIMDE_POLY16_C(435), SIMDE_POLY16_C(152), SIMDE_POLY16_C(215) },
{ SIMDE_POLY16_C(379), SIMDE_POLY16_C(147), SIMDE_POLY16_C(345), SIMDE_POLY16_C(276),
SIMDE_POLY16_C(105), SIMDE_POLY16_C(142), SIMDE_POLY16_C(485), SIMDE_POLY16_C(383) } },
{ SIMDE_POLY16_C(39), SIMDE_POLY16_C(212)},
{ { SIMDE_POLY16_C(181), SIMDE_POLY16_C(136), SIMDE_POLY16_C(39), SIMDE_POLY16_C(296),
SIMDE_POLY16_C(309), SIMDE_POLY16_C(435), SIMDE_POLY16_C(152), SIMDE_POLY16_C(215) },
{ SIMDE_POLY16_C(379), SIMDE_POLY16_C(147), SIMDE_POLY16_C(212), SIMDE_POLY16_C(276),
SIMDE_POLY16_C(105), SIMDE_POLY16_C(142), SIMDE_POLY16_C(485), SIMDE_POLY16_C(383) } } },
{ { { SIMDE_POLY16_C(181), SIMDE_POLY16_C(451), SIMDE_POLY16_C(74), SIMDE_POLY16_C(26),
SIMDE_POLY16_C(435), SIMDE_POLY16_C(466), SIMDE_POLY16_C(458), SIMDE_POLY16_C(378) },
{ SIMDE_POLY16_C(292), SIMDE_POLY16_C(173), SIMDE_POLY16_C(470), SIMDE_POLY16_C(400),
SIMDE_POLY16_C(286), SIMDE_POLY16_C(269), SIMDE_POLY16_C(383), SIMDE_POLY16_C(317) } },
{ SIMDE_POLY16_C(240), SIMDE_POLY16_C(459)},
{ { SIMDE_POLY16_C(181), SIMDE_POLY16_C(451), SIMDE_POLY16_C(74), SIMDE_POLY16_C(240),
SIMDE_POLY16_C(435), SIMDE_POLY16_C(466), SIMDE_POLY16_C(458), SIMDE_POLY16_C(378) },
{ SIMDE_POLY16_C(292), SIMDE_POLY16_C(173), SIMDE_POLY16_C(470), SIMDE_POLY16_C(459),
SIMDE_POLY16_C(286), SIMDE_POLY16_C(269), SIMDE_POLY16_C(383), SIMDE_POLY16_C(317) } } },
{ { { SIMDE_POLY16_C(377), SIMDE_POLY16_C(162), SIMDE_POLY16_C(3), SIMDE_POLY16_C(316),
SIMDE_POLY16_C(150), SIMDE_POLY16_C(261), SIMDE_POLY16_C(40), SIMDE_POLY16_C(64) },
{ SIMDE_POLY16_C(243), SIMDE_POLY16_C(47), SIMDE_POLY16_C(381), SIMDE_POLY16_C(58),
SIMDE_POLY16_C(290), SIMDE_POLY16_C(64), SIMDE_POLY16_C(220), SIMDE_POLY16_C(89) } },
{ SIMDE_POLY16_C(378), SIMDE_POLY16_C(355)},
{ { SIMDE_POLY16_C(377), SIMDE_POLY16_C(162), SIMDE_POLY16_C(3), SIMDE_POLY16_C(316),
SIMDE_POLY16_C(378), SIMDE_POLY16_C(261), SIMDE_POLY16_C(40), SIMDE_POLY16_C(64) },
{ SIMDE_POLY16_C(243), SIMDE_POLY16_C(47), SIMDE_POLY16_C(381), SIMDE_POLY16_C(58),
SIMDE_POLY16_C(355), SIMDE_POLY16_C(64), SIMDE_POLY16_C(220), SIMDE_POLY16_C(89) } } },
{ { { SIMDE_POLY16_C(298), SIMDE_POLY16_C(486), SIMDE_POLY16_C(96), SIMDE_POLY16_C(132),
SIMDE_POLY16_C(108), SIMDE_POLY16_C(284), SIMDE_POLY16_C(54), SIMDE_POLY16_C(224) },
{ SIMDE_POLY16_C(249), SIMDE_POLY16_C(117), SIMDE_POLY16_C(26), SIMDE_POLY16_C(467),
SIMDE_POLY16_C(477), SIMDE_POLY16_C(25), SIMDE_POLY16_C(300), SIMDE_POLY16_C(233) } },
{ SIMDE_POLY16_C(454), SIMDE_POLY16_C(179)},
{ { SIMDE_POLY16_C(298), SIMDE_POLY16_C(486), SIMDE_POLY16_C(96), SIMDE_POLY16_C(132),
SIMDE_POLY16_C(108), SIMDE_POLY16_C(454), SIMDE_POLY16_C(54), SIMDE_POLY16_C(224) },
{ SIMDE_POLY16_C(249), SIMDE_POLY16_C(117), SIMDE_POLY16_C(26), SIMDE_POLY16_C(467),
SIMDE_POLY16_C(477), SIMDE_POLY16_C(179), SIMDE_POLY16_C(300), SIMDE_POLY16_C(233) } } },
{ { { SIMDE_POLY16_C(15), SIMDE_POLY16_C(88), SIMDE_POLY16_C(166), SIMDE_POLY16_C(374),
SIMDE_POLY16_C(203), SIMDE_POLY16_C(81), SIMDE_POLY16_C(316), SIMDE_POLY16_C(214) },
{ SIMDE_POLY16_C(227), SIMDE_POLY16_C(24), SIMDE_POLY16_C(14), SIMDE_POLY16_C(100),
SIMDE_POLY16_C(31), SIMDE_POLY16_C(86), SIMDE_POLY16_C(474), SIMDE_POLY16_C(470) } },
{ SIMDE_POLY16_C(325), SIMDE_POLY16_C(388)},
{ { SIMDE_POLY16_C(15), SIMDE_POLY16_C(88), SIMDE_POLY16_C(166), SIMDE_POLY16_C(374),
SIMDE_POLY16_C(203), SIMDE_POLY16_C(81), SIMDE_POLY16_C(325), SIMDE_POLY16_C(214) },
{ SIMDE_POLY16_C(227), SIMDE_POLY16_C(24), SIMDE_POLY16_C(14), SIMDE_POLY16_C(100),
SIMDE_POLY16_C(31), SIMDE_POLY16_C(86), SIMDE_POLY16_C(388), SIMDE_POLY16_C(470) } } },
{ { { SIMDE_POLY16_C(370), SIMDE_POLY16_C(25), SIMDE_POLY16_C(181), SIMDE_POLY16_C(342),
SIMDE_POLY16_C(6), SIMDE_POLY16_C(89), SIMDE_POLY16_C(30), SIMDE_POLY16_C(425) },
{ SIMDE_POLY16_C(478), SIMDE_POLY16_C(331), SIMDE_POLY16_C(463), SIMDE_POLY16_C(400),
SIMDE_POLY16_C(469), SIMDE_POLY16_C(40), SIMDE_POLY16_C(46), SIMDE_POLY16_C(134) } },
{ SIMDE_POLY16_C(225), SIMDE_POLY16_C(7)},
{ { SIMDE_POLY16_C(370), SIMDE_POLY16_C(25), SIMDE_POLY16_C(181), SIMDE_POLY16_C(342),
SIMDE_POLY16_C(6), SIMDE_POLY16_C(89), SIMDE_POLY16_C(30), SIMDE_POLY16_C(225) },
{ SIMDE_POLY16_C(478), SIMDE_POLY16_C(331), SIMDE_POLY16_C(463), SIMDE_POLY16_C(400),
SIMDE_POLY16_C(469), SIMDE_POLY16_C(40), SIMDE_POLY16_C(46), SIMDE_POLY16_C(7) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_poly16x8x2_t r, src, expected;
src.val[0] = simde_vld1q_p16(test_vec[i].src[0]);
src.val[1] = simde_vld1q_p16(test_vec[i].src[1]);
SIMDE_CONSTIFY_8_(simde_vld2q_lane_p16, r, (HEDLEY_UNREACHABLE(), r), i, test_vec[i].buf, src);
expected.val[0] = simde_vld1q_p16(test_vec[i].r[0]);
expected.val[1] = simde_vld1q_p16(test_vec[i].r[1]);
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]);
}
return 0;
#else
for (int i = 0 ; i < 8 ; i++) {
simde_poly16x8x2_t src = simde_test_arm_neon_random_p16x8x2();
simde_poly16_t buf[2];
simde_poly16x8x2_t r;
simde_test_arm_neon_write_p16x8x2(2, src, SIMDE_TEST_VEC_POS_FIRST);
simde_test_codegen_random_memory(4, HEDLEY_REINTERPRET_CAST(uint8_t*, buf));
simde_test_codegen_write_vp16(2, 2, buf, SIMDE_TEST_VEC_POS_MIDDLE);
SIMDE_CONSTIFY_8_(simde_vld2q_lane_p16, r, (HEDLEY_UNREACHABLE(), r), i, buf, src);
simde_test_arm_neon_write_p16x8x2(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vld2q_lane_p64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
simde_poly64_t src[2][2];
simde_poly64_t buf[2];
simde_poly64_t r[2][2];
} test_vec[] = {
{ { { SIMDE_POLY64_C(133259958), SIMDE_POLY64_C(495309638) },
{ SIMDE_POLY64_C(463332514), SIMDE_POLY64_C(273508271) } },
{ SIMDE_POLY64_C(159685885), SIMDE_POLY64_C(187025881)},
{ { SIMDE_POLY64_C(159685885), SIMDE_POLY64_C(495309638) },
{ SIMDE_POLY64_C(187025881), SIMDE_POLY64_C(273508271) } } },
{ { { SIMDE_POLY64_C(430109367), SIMDE_POLY64_C(402602870) },
{ SIMDE_POLY64_C(309788205), SIMDE_POLY64_C(441710399) } },
{ SIMDE_POLY64_C(264334842), SIMDE_POLY64_C(60309831)},
{ { SIMDE_POLY64_C(430109367), SIMDE_POLY64_C(264334842) },
{ SIMDE_POLY64_C(309788205), SIMDE_POLY64_C(60309831) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_poly64x2x2_t r, src, expected;
src.val[0] = simde_vld1q_p64(test_vec[i].src[0]);
src.val[1] = simde_vld1q_p64(test_vec[i].src[1]);
SIMDE_CONSTIFY_2_(simde_vld2q_lane_p64, r, (HEDLEY_UNREACHABLE(), r), i, test_vec[i].buf, src);
expected.val[0] = simde_vld1q_p64(test_vec[i].r[0]);
expected.val[1] = simde_vld1q_p64(test_vec[i].r[1]);
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]);
}
return 0;
#else
for (int i = 0 ; i < 2 ; i++) {
simde_poly64x2x2_t src = simde_test_arm_neon_random_p64x2x2();
simde_poly64_t buf[2];
simde_poly64x2x2_t r;
simde_test_arm_neon_write_p64x2x2(2, src, SIMDE_TEST_VEC_POS_FIRST);
simde_test_codegen_random_memory(16, HEDLEY_REINTERPRET_CAST(uint8_t*, buf));
simde_test_codegen_write_vp64(2, 2, buf, SIMDE_TEST_VEC_POS_MIDDLE);
SIMDE_CONSTIFY_2_(simde_vld2q_lane_p64, r, (HEDLEY_UNREACHABLE(), r), i, buf, src);
simde_test_arm_neon_write_p64x2x2(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vld2_lane_bf16 (SIMDE_MUNIT_TEST_ARGS) {
struct {
simde_bfloat16_t src[2][4];
simde_bfloat16_t buf[2];
simde_bfloat16_t r[2][4];
} test_vec[] = {
{ { { SIMDE_BFLOAT16_VALUE(-45.80), SIMDE_BFLOAT16_VALUE(29.77), SIMDE_BFLOAT16_VALUE(44.10), SIMDE_BFLOAT16_VALUE(-17.29) },
{ SIMDE_BFLOAT16_VALUE(-34.30), SIMDE_BFLOAT16_VALUE(-46.41), SIMDE_BFLOAT16_VALUE(-43.15), SIMDE_BFLOAT16_VALUE(-30.34) } },
{ SIMDE_BFLOAT16_VALUE(-16.64), SIMDE_BFLOAT16_VALUE(-13.70)},
{ { SIMDE_BFLOAT16_VALUE(-16.64), SIMDE_BFLOAT16_VALUE(29.77), SIMDE_BFLOAT16_VALUE(44.10), SIMDE_BFLOAT16_VALUE(-17.29) },
{ SIMDE_BFLOAT16_VALUE(-13.70), SIMDE_BFLOAT16_VALUE(-46.41), SIMDE_BFLOAT16_VALUE(-43.15), SIMDE_BFLOAT16_VALUE(-30.34) } } },
{ { { SIMDE_BFLOAT16_VALUE(-31.49), SIMDE_BFLOAT16_VALUE(-3.02), SIMDE_BFLOAT16_VALUE(4.73), SIMDE_BFLOAT16_VALUE(29.19) },
{ SIMDE_BFLOAT16_VALUE(-6.51), SIMDE_BFLOAT16_VALUE(-6.97), SIMDE_BFLOAT16_VALUE(-24.86), SIMDE_BFLOAT16_VALUE(20.04) } },
{ SIMDE_BFLOAT16_VALUE(4.78), SIMDE_BFLOAT16_VALUE(-24.76)},
{ { SIMDE_BFLOAT16_VALUE(-31.49), SIMDE_BFLOAT16_VALUE(4.78), SIMDE_BFLOAT16_VALUE(4.73), SIMDE_BFLOAT16_VALUE(29.19) },
{ SIMDE_BFLOAT16_VALUE(-6.51), SIMDE_BFLOAT16_VALUE(-24.76), SIMDE_BFLOAT16_VALUE(-24.86), SIMDE_BFLOAT16_VALUE(20.04) } } },
{ { { SIMDE_BFLOAT16_VALUE(-33.05), SIMDE_BFLOAT16_VALUE(44.60), SIMDE_BFLOAT16_VALUE(44.07), SIMDE_BFLOAT16_VALUE(-42.37) },
{ SIMDE_BFLOAT16_VALUE(45.53), SIMDE_BFLOAT16_VALUE(4.23), SIMDE_BFLOAT16_VALUE(13.47), SIMDE_BFLOAT16_VALUE(2.19) } },
{ SIMDE_BFLOAT16_VALUE(-14.88), SIMDE_BFLOAT16_VALUE(-15.37)},
{ { SIMDE_BFLOAT16_VALUE(-33.05), SIMDE_BFLOAT16_VALUE(44.60), SIMDE_BFLOAT16_VALUE(-14.88), SIMDE_BFLOAT16_VALUE(-42.37) },
{ SIMDE_BFLOAT16_VALUE(45.53), SIMDE_BFLOAT16_VALUE(4.23), SIMDE_BFLOAT16_VALUE(-15.37), SIMDE_BFLOAT16_VALUE(2.19) } } },
{ { { SIMDE_BFLOAT16_VALUE(22.74), SIMDE_BFLOAT16_VALUE(-1.07), SIMDE_BFLOAT16_VALUE(48.37), SIMDE_BFLOAT16_VALUE(26.68) },
{ SIMDE_BFLOAT16_VALUE(-34.05), SIMDE_BFLOAT16_VALUE(-26.07), SIMDE_BFLOAT16_VALUE(-44.28), SIMDE_BFLOAT16_VALUE(6.92) } },
{ SIMDE_BFLOAT16_VALUE(-28.27), SIMDE_BFLOAT16_VALUE(-30.31)},
{ { SIMDE_BFLOAT16_VALUE(22.74), SIMDE_BFLOAT16_VALUE(-1.07), SIMDE_BFLOAT16_VALUE(48.37), SIMDE_BFLOAT16_VALUE(-28.27) },
{ SIMDE_BFLOAT16_VALUE(-34.05), SIMDE_BFLOAT16_VALUE(-26.07), SIMDE_BFLOAT16_VALUE(-44.28), SIMDE_BFLOAT16_VALUE(-30.31) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_bfloat16x4x2_t r, src, expected;
src.val[0] = simde_vld1_bf16(test_vec[i].src[0]);
src.val[1] = simde_vld1_bf16(test_vec[i].src[1]);
SIMDE_CONSTIFY_4_(simde_vld2_lane_bf16, r, (HEDLEY_UNREACHABLE(), r), i, test_vec[i].buf, src);
expected.val[0] = simde_vld1_bf16(test_vec[i].r[0]);
expected.val[1] = simde_vld1_bf16(test_vec[i].r[1]);
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);
}
return 0;
}
static int
test_simde_vld2q_lane_bf16 (SIMDE_MUNIT_TEST_ARGS) {
struct {
simde_bfloat16_t src[2][8];
simde_bfloat16_t buf[2];
simde_bfloat16_t r[2][8];
} test_vec[] = {
{ { { SIMDE_BFLOAT16_VALUE(-44.86), SIMDE_BFLOAT16_VALUE(-27.30), SIMDE_BFLOAT16_VALUE(-35.67), SIMDE_BFLOAT16_VALUE(22.98),
SIMDE_BFLOAT16_VALUE(-34.31), SIMDE_BFLOAT16_VALUE(-40.87), SIMDE_BFLOAT16_VALUE(-37.54), SIMDE_BFLOAT16_VALUE(-11.89) },
{ SIMDE_BFLOAT16_VALUE(-19.39), SIMDE_BFLOAT16_VALUE(-21.84), SIMDE_BFLOAT16_VALUE(-32.89), SIMDE_BFLOAT16_VALUE(43.11),
SIMDE_BFLOAT16_VALUE(-10.75), SIMDE_BFLOAT16_VALUE(-18.47), SIMDE_BFLOAT16_VALUE(14.59), SIMDE_BFLOAT16_VALUE(48.79) } },
{ SIMDE_BFLOAT16_VALUE(7.62), SIMDE_BFLOAT16_VALUE(-49.51)},
{ { SIMDE_BFLOAT16_VALUE(7.62), SIMDE_BFLOAT16_VALUE(-27.30), SIMDE_BFLOAT16_VALUE(-35.67), SIMDE_BFLOAT16_VALUE(22.98),
SIMDE_BFLOAT16_VALUE(-34.31), SIMDE_BFLOAT16_VALUE(-40.87), SIMDE_BFLOAT16_VALUE(-37.54), SIMDE_BFLOAT16_VALUE(-11.89) },
{ SIMDE_BFLOAT16_VALUE(-49.51), SIMDE_BFLOAT16_VALUE(-21.84), SIMDE_BFLOAT16_VALUE(-32.89), SIMDE_BFLOAT16_VALUE(43.11),
SIMDE_BFLOAT16_VALUE(-10.75), SIMDE_BFLOAT16_VALUE(-18.47), SIMDE_BFLOAT16_VALUE(14.59), SIMDE_BFLOAT16_VALUE(48.79) } } },
{ { { SIMDE_BFLOAT16_VALUE(-38.62), SIMDE_BFLOAT16_VALUE(4.41), SIMDE_BFLOAT16_VALUE(-33.69), SIMDE_BFLOAT16_VALUE(-29.42),
SIMDE_BFLOAT16_VALUE(-26.20), SIMDE_BFLOAT16_VALUE(-37.93), SIMDE_BFLOAT16_VALUE(-22.76), SIMDE_BFLOAT16_VALUE(9.22) },
{ SIMDE_BFLOAT16_VALUE(33.15), SIMDE_BFLOAT16_VALUE(36.15), SIMDE_BFLOAT16_VALUE(8.88), SIMDE_BFLOAT16_VALUE(-47.77),
SIMDE_BFLOAT16_VALUE(42.44), SIMDE_BFLOAT16_VALUE(-2.49), SIMDE_BFLOAT16_VALUE(-30.82), SIMDE_BFLOAT16_VALUE(-8.07) } },
{ SIMDE_BFLOAT16_VALUE(13.95), SIMDE_BFLOAT16_VALUE(-11.74)},
{ { SIMDE_BFLOAT16_VALUE(-38.62), SIMDE_BFLOAT16_VALUE(13.95), SIMDE_BFLOAT16_VALUE(-33.69), SIMDE_BFLOAT16_VALUE(-29.42),
SIMDE_BFLOAT16_VALUE(-26.20), SIMDE_BFLOAT16_VALUE(-37.93), SIMDE_BFLOAT16_VALUE(-22.76), SIMDE_BFLOAT16_VALUE(9.22) },
{ SIMDE_BFLOAT16_VALUE(33.15), SIMDE_BFLOAT16_VALUE(-11.74), SIMDE_BFLOAT16_VALUE(8.88), SIMDE_BFLOAT16_VALUE(-47.77),
SIMDE_BFLOAT16_VALUE(42.44), SIMDE_BFLOAT16_VALUE(-2.49), SIMDE_BFLOAT16_VALUE(-30.82), SIMDE_BFLOAT16_VALUE(-8.07) } } },
{ { { SIMDE_BFLOAT16_VALUE(20.63), SIMDE_BFLOAT16_VALUE(-26.03), SIMDE_BFLOAT16_VALUE(-49.03), SIMDE_BFLOAT16_VALUE(-9.02),
SIMDE_BFLOAT16_VALUE(-7.24), SIMDE_BFLOAT16_VALUE(21.25), SIMDE_BFLOAT16_VALUE(7.83), SIMDE_BFLOAT16_VALUE(13.60) },
{ SIMDE_BFLOAT16_VALUE(-25.60), SIMDE_BFLOAT16_VALUE(-0.34), SIMDE_BFLOAT16_VALUE(-14.32), SIMDE_BFLOAT16_VALUE(11.44),
SIMDE_BFLOAT16_VALUE(-0.16), SIMDE_BFLOAT16_VALUE(44.81), SIMDE_BFLOAT16_VALUE(-26.95), SIMDE_BFLOAT16_VALUE(-20.70) } },
{ SIMDE_BFLOAT16_VALUE(-12.06), SIMDE_BFLOAT16_VALUE(-20.03)},
{ { SIMDE_BFLOAT16_VALUE(20.63), SIMDE_BFLOAT16_VALUE(-26.03), SIMDE_BFLOAT16_VALUE(-12.06), SIMDE_BFLOAT16_VALUE(-9.02),
SIMDE_BFLOAT16_VALUE(-7.24), SIMDE_BFLOAT16_VALUE(21.25), SIMDE_BFLOAT16_VALUE(7.83), SIMDE_BFLOAT16_VALUE(13.60) },
{ SIMDE_BFLOAT16_VALUE(-25.60), SIMDE_BFLOAT16_VALUE(-0.34), SIMDE_BFLOAT16_VALUE(-20.03), SIMDE_BFLOAT16_VALUE(11.44),
SIMDE_BFLOAT16_VALUE(-0.16), SIMDE_BFLOAT16_VALUE(44.81), SIMDE_BFLOAT16_VALUE(-26.95), SIMDE_BFLOAT16_VALUE(-20.70) } } },
{ { { SIMDE_BFLOAT16_VALUE(-11.60), SIMDE_BFLOAT16_VALUE(-14.50), SIMDE_BFLOAT16_VALUE(45.43), SIMDE_BFLOAT16_VALUE(40.80),
SIMDE_BFLOAT16_VALUE(-19.67), SIMDE_BFLOAT16_VALUE(-0.54), SIMDE_BFLOAT16_VALUE(31.88), SIMDE_BFLOAT16_VALUE(14.74) },
{ SIMDE_BFLOAT16_VALUE(-31.78), SIMDE_BFLOAT16_VALUE(8.81), SIMDE_BFLOAT16_VALUE(10.59), SIMDE_BFLOAT16_VALUE(6.10),
SIMDE_BFLOAT16_VALUE(-25.88), SIMDE_BFLOAT16_VALUE(0.90), SIMDE_BFLOAT16_VALUE(45.87), SIMDE_BFLOAT16_VALUE(13.51) } },
{ SIMDE_BFLOAT16_VALUE(-26.80), SIMDE_BFLOAT16_VALUE(13.43)},
{ { SIMDE_BFLOAT16_VALUE(-11.60), SIMDE_BFLOAT16_VALUE(-14.50), SIMDE_BFLOAT16_VALUE(45.43), SIMDE_BFLOAT16_VALUE(-26.80),
SIMDE_BFLOAT16_VALUE(-19.67), SIMDE_BFLOAT16_VALUE(-0.54), SIMDE_BFLOAT16_VALUE(31.88), SIMDE_BFLOAT16_VALUE(14.74) },
{ SIMDE_BFLOAT16_VALUE(-31.78), SIMDE_BFLOAT16_VALUE(8.81), SIMDE_BFLOAT16_VALUE(10.59), SIMDE_BFLOAT16_VALUE(13.43),
SIMDE_BFLOAT16_VALUE(-25.88), SIMDE_BFLOAT16_VALUE(0.90), SIMDE_BFLOAT16_VALUE(45.87), SIMDE_BFLOAT16_VALUE(13.51) } } },
{ { { SIMDE_BFLOAT16_VALUE(33.71), SIMDE_BFLOAT16_VALUE(-5.48), SIMDE_BFLOAT16_VALUE(-13.87), SIMDE_BFLOAT16_VALUE(2.58),
SIMDE_BFLOAT16_VALUE(22.05), SIMDE_BFLOAT16_VALUE(-25.14), SIMDE_BFLOAT16_VALUE(32.71), SIMDE_BFLOAT16_VALUE(49.78) },
{ SIMDE_BFLOAT16_VALUE(-33.81), SIMDE_BFLOAT16_VALUE(-37.35), SIMDE_BFLOAT16_VALUE(6.37), SIMDE_BFLOAT16_VALUE(42.63),
SIMDE_BFLOAT16_VALUE(27.98), SIMDE_BFLOAT16_VALUE(-47.79), SIMDE_BFLOAT16_VALUE(0.37), SIMDE_BFLOAT16_VALUE(24.16) } },
{ SIMDE_BFLOAT16_VALUE(-22.12), SIMDE_BFLOAT16_VALUE(22.45)},
{ { SIMDE_BFLOAT16_VALUE(33.71), SIMDE_BFLOAT16_VALUE(-5.48), SIMDE_BFLOAT16_VALUE(-13.87), SIMDE_BFLOAT16_VALUE(2.58),
SIMDE_BFLOAT16_VALUE(-22.12), SIMDE_BFLOAT16_VALUE(-25.14), SIMDE_BFLOAT16_VALUE(32.71), SIMDE_BFLOAT16_VALUE(49.78) },
{ SIMDE_BFLOAT16_VALUE(-33.81), SIMDE_BFLOAT16_VALUE(-37.35), SIMDE_BFLOAT16_VALUE(6.37), SIMDE_BFLOAT16_VALUE(42.63),
SIMDE_BFLOAT16_VALUE(22.45), SIMDE_BFLOAT16_VALUE(-47.79), SIMDE_BFLOAT16_VALUE(0.37), SIMDE_BFLOAT16_VALUE(24.16) } } },
{ { { SIMDE_BFLOAT16_VALUE(35.13), SIMDE_BFLOAT16_VALUE(-36.13), SIMDE_BFLOAT16_VALUE(-42.60), SIMDE_BFLOAT16_VALUE(-23.46),
SIMDE_BFLOAT16_VALUE(-42.93), SIMDE_BFLOAT16_VALUE(-21.16), SIMDE_BFLOAT16_VALUE(-29.86), SIMDE_BFLOAT16_VALUE(29.04) },
{ SIMDE_BFLOAT16_VALUE(37.40), SIMDE_BFLOAT16_VALUE(30.74), SIMDE_BFLOAT16_VALUE(30.82), SIMDE_BFLOAT16_VALUE(44.38),
SIMDE_BFLOAT16_VALUE(-30.52), SIMDE_BFLOAT16_VALUE(42.55), SIMDE_BFLOAT16_VALUE(16.70), SIMDE_BFLOAT16_VALUE(47.97) } },
{ SIMDE_BFLOAT16_VALUE(41.68), SIMDE_BFLOAT16_VALUE(12.98)},
{ { SIMDE_BFLOAT16_VALUE(35.13), SIMDE_BFLOAT16_VALUE(-36.13), SIMDE_BFLOAT16_VALUE(-42.60), SIMDE_BFLOAT16_VALUE(-23.46),
SIMDE_BFLOAT16_VALUE(-42.93), SIMDE_BFLOAT16_VALUE(41.68), SIMDE_BFLOAT16_VALUE(-29.86), SIMDE_BFLOAT16_VALUE(29.04) },
{ SIMDE_BFLOAT16_VALUE(37.40), SIMDE_BFLOAT16_VALUE(30.74), SIMDE_BFLOAT16_VALUE(30.82), SIMDE_BFLOAT16_VALUE(44.38),
SIMDE_BFLOAT16_VALUE(-30.52), SIMDE_BFLOAT16_VALUE(12.98), SIMDE_BFLOAT16_VALUE(16.70), SIMDE_BFLOAT16_VALUE(47.97) } } },
{ { { SIMDE_BFLOAT16_VALUE(45.22), SIMDE_BFLOAT16_VALUE(-8.00), SIMDE_BFLOAT16_VALUE(-27.03), SIMDE_BFLOAT16_VALUE(48.60),
SIMDE_BFLOAT16_VALUE(19.87), SIMDE_BFLOAT16_VALUE(-1.72), SIMDE_BFLOAT16_VALUE(-45.40), SIMDE_BFLOAT16_VALUE(-3.56) },
{ SIMDE_BFLOAT16_VALUE(36.60), SIMDE_BFLOAT16_VALUE(-32.25), SIMDE_BFLOAT16_VALUE(13.01), SIMDE_BFLOAT16_VALUE(-12.64),
SIMDE_BFLOAT16_VALUE(22.43), SIMDE_BFLOAT16_VALUE(1.87), SIMDE_BFLOAT16_VALUE(-38.57), SIMDE_BFLOAT16_VALUE(-24.61) } },
{ SIMDE_BFLOAT16_VALUE(49.75), SIMDE_BFLOAT16_VALUE(-1.23)},
{ { SIMDE_BFLOAT16_VALUE(45.22), SIMDE_BFLOAT16_VALUE(-8.00), SIMDE_BFLOAT16_VALUE(-27.03), SIMDE_BFLOAT16_VALUE(48.60),
SIMDE_BFLOAT16_VALUE(19.87), SIMDE_BFLOAT16_VALUE(-1.72), SIMDE_BFLOAT16_VALUE(49.75), SIMDE_BFLOAT16_VALUE(-3.56) },
{ SIMDE_BFLOAT16_VALUE(36.60), SIMDE_BFLOAT16_VALUE(-32.25), SIMDE_BFLOAT16_VALUE(13.01), SIMDE_BFLOAT16_VALUE(-12.64),
SIMDE_BFLOAT16_VALUE(22.43), SIMDE_BFLOAT16_VALUE(1.87), SIMDE_BFLOAT16_VALUE(-1.23), SIMDE_BFLOAT16_VALUE(-24.61) } } },
{ { { SIMDE_BFLOAT16_VALUE(24.31), SIMDE_BFLOAT16_VALUE(-43.53), SIMDE_BFLOAT16_VALUE(20.69), SIMDE_BFLOAT16_VALUE(26.28),
SIMDE_BFLOAT16_VALUE(44.06), SIMDE_BFLOAT16_VALUE(42.57), SIMDE_BFLOAT16_VALUE(7.84), SIMDE_BFLOAT16_VALUE(-4.34) },
{ SIMDE_BFLOAT16_VALUE(-7.29), SIMDE_BFLOAT16_VALUE(5.56), SIMDE_BFLOAT16_VALUE(-20.99), SIMDE_BFLOAT16_VALUE(-46.49),
SIMDE_BFLOAT16_VALUE(24.87), SIMDE_BFLOAT16_VALUE(40.56), SIMDE_BFLOAT16_VALUE(-20.02), SIMDE_BFLOAT16_VALUE(38.66) } },
{ SIMDE_BFLOAT16_VALUE(17.79), SIMDE_BFLOAT16_VALUE(37.56)},
{ { SIMDE_BFLOAT16_VALUE(24.31), SIMDE_BFLOAT16_VALUE(-43.53), SIMDE_BFLOAT16_VALUE(20.69), SIMDE_BFLOAT16_VALUE(26.28),
SIMDE_BFLOAT16_VALUE(44.06), SIMDE_BFLOAT16_VALUE(42.57), SIMDE_BFLOAT16_VALUE(7.84), SIMDE_BFLOAT16_VALUE(17.79) },
{ SIMDE_BFLOAT16_VALUE(-7.29), SIMDE_BFLOAT16_VALUE(5.56), SIMDE_BFLOAT16_VALUE(-20.99), SIMDE_BFLOAT16_VALUE(-46.49),
SIMDE_BFLOAT16_VALUE(24.87), SIMDE_BFLOAT16_VALUE(40.56), SIMDE_BFLOAT16_VALUE(-20.02), SIMDE_BFLOAT16_VALUE(37.56) } } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_bfloat16x8x2_t r, src, expected;
src.val[0] = simde_vld1q_bf16(test_vec[i].src[0]);
src.val[1] = simde_vld1q_bf16(test_vec[i].src[1]);
SIMDE_CONSTIFY_8_(simde_vld2q_lane_bf16, r, (HEDLEY_UNREACHABLE(), r), i, test_vec[i].buf, src);
expected.val[0] = simde_vld1q_bf16(test_vec[i].r[0]);
expected.val[1] = simde_vld1q_bf16(test_vec[i].r[1]);
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);
}
return 0;
}
SIMDE_TEST_FUNC_LIST_BEGIN
SIMDE_TEST_FUNC_LIST_ENTRY(vld2_lane_s8)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2_lane_s16)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2_lane_s32)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2_lane_s64)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2_lane_u8)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2_lane_u16)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2_lane_u32)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2_lane_u64)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2_lane_f16)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2_lane_f32)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2_lane_f64)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2q_lane_s8)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2q_lane_s16)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2q_lane_s32)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2q_lane_s64)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2q_lane_u8)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2q_lane_u16)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2q_lane_u32)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2q_lane_u64)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2q_lane_f16)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2q_lane_f32)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2q_lane_f64)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2_lane_p8)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2_lane_p16)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2_lane_p64)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2q_lane_p8)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2q_lane_p16)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2q_lane_p64)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2_lane_bf16)
SIMDE_TEST_FUNC_LIST_ENTRY(vld2q_lane_bf16)
SIMDE_TEST_FUNC_LIST_END
#include "test-neon-footer.h"