#define SIMDE_TEST_ARM_NEON_INSN ld3_lane #include "test-neon.h" #include "../../../simde/arm/neon/ld3_lane.h" #include "../../../simde/arm/neon/ld1.h" #include "../../../simde/arm/neon/ld3.h" static int test_simde_vld3_lane_s8 (SIMDE_MUNIT_TEST_ARGS) { static const struct { int8_t src[3][8]; int8_t buf[3]; int8_t r[3][8]; } test_vec[] = { { { { -INT8_C(17), -INT8_C(27), -INT8_C(24), -INT8_C(29), INT8_C(45), -INT8_C(6), INT8_C(34), INT8_C(10) }, { INT8_C(15), -INT8_C(6), -INT8_C(6), -INT8_C(34), INT8_C(47), -INT8_C(6), -INT8_C(24), INT8_C(49) }, { INT8_C(32), -INT8_C(18), -INT8_C(20), -INT8_C(33), INT8_C(12), -INT8_C(21), INT8_C(2), INT8_C(28) } }, { -INT8_C(9), -INT8_C(28), -INT8_C(19)}, { { -INT8_C(9), -INT8_C(27), -INT8_C(24), -INT8_C(29), INT8_C(45), -INT8_C(6), INT8_C(34), INT8_C(10) }, { -INT8_C(28), -INT8_C(6), -INT8_C(6), -INT8_C(34), INT8_C(47), -INT8_C(6), -INT8_C(24), INT8_C(49) }, { -INT8_C(19), -INT8_C(18), -INT8_C(20), -INT8_C(33), INT8_C(12), -INT8_C(21), INT8_C(2), INT8_C(28) } } }, { { { INT8_C(33), -INT8_C(24), INT8_C(12), -INT8_C(5), -INT8_C(4), INT8_C(9), INT8_C(28), -INT8_C(40) }, { -INT8_C(25), -INT8_C(46), -INT8_C(36), -INT8_C(31), -INT8_C(43), INT8_C(0), -INT8_C(20), -INT8_C(12) }, { INT8_C(49), -INT8_C(13), -INT8_C(21), -INT8_C(19), -INT8_C(42), INT8_C(4), INT8_C(13), INT8_C(29) } }, { INT8_C(46), INT8_C(40), -INT8_C(35)}, { { INT8_C(33), INT8_C(46), INT8_C(12), -INT8_C(5), -INT8_C(4), INT8_C(9), INT8_C(28), -INT8_C(40) }, { -INT8_C(25), INT8_C(40), -INT8_C(36), -INT8_C(31), -INT8_C(43), INT8_C(0), -INT8_C(20), -INT8_C(12) }, { INT8_C(49), -INT8_C(35), -INT8_C(21), -INT8_C(19), -INT8_C(42), INT8_C(4), INT8_C(13), INT8_C(29) } } }, { { { -INT8_C(27), INT8_C(37), -INT8_C(43), -INT8_C(32), -INT8_C(3), INT8_C(33), -INT8_C(33), -INT8_C(40) }, { INT8_C(34), INT8_C(6), -INT8_C(20), -INT8_C(40), -INT8_C(34), -INT8_C(45), -INT8_C(44), INT8_C(38) }, { INT8_C(3), INT8_C(26), INT8_C(30), INT8_C(6), -INT8_C(3), -INT8_C(2), -INT8_C(40), -INT8_C(5) } }, { INT8_C(16), INT8_C(31), INT8_C(26)}, { { -INT8_C(27), INT8_C(37), INT8_C(16), -INT8_C(32), -INT8_C(3), INT8_C(33), -INT8_C(33), -INT8_C(40) }, { INT8_C(34), INT8_C(6), INT8_C(31), -INT8_C(40), -INT8_C(34), -INT8_C(45), -INT8_C(44), INT8_C(38) }, { INT8_C(3), INT8_C(26), INT8_C(26), INT8_C(6), -INT8_C(3), -INT8_C(2), -INT8_C(40), -INT8_C(5) } } }, { { { INT8_C(10), INT8_C(35), -INT8_C(11), -INT8_C(33), -INT8_C(4), -INT8_C(40), -INT8_C(41), INT8_C(1) }, { -INT8_C(21), -INT8_C(47), -INT8_C(4), -INT8_C(34), INT8_C(19), -INT8_C(3), -INT8_C(44), INT8_C(33) }, { -INT8_C(7), INT8_C(0), INT8_C(1), INT8_C(17), -INT8_C(20), -INT8_C(4), -INT8_C(6), INT8_C(0) } }, { INT8_C(34), -INT8_C(2), -INT8_C(40)}, { { INT8_C(10), INT8_C(35), -INT8_C(11), INT8_C(34), -INT8_C(4), -INT8_C(40), -INT8_C(41), INT8_C(1) }, { -INT8_C(21), -INT8_C(47), -INT8_C(4), -INT8_C(2), INT8_C(19), -INT8_C(3), -INT8_C(44), INT8_C(33) }, { -INT8_C(7), INT8_C(0), INT8_C(1), -INT8_C(40), -INT8_C(20), -INT8_C(4), -INT8_C(6), INT8_C(0) } } }, { { { -INT8_C(12), INT8_C(32), -INT8_C(3), INT8_C(11), INT8_C(0), INT8_C(1), INT8_C(1), -INT8_C(2) }, { INT8_C(6), -INT8_C(22), -INT8_C(37), -INT8_C(9), INT8_C(0), INT8_C(43), INT8_C(37), -INT8_C(31) }, { -INT8_C(33), -INT8_C(18), INT8_C(20), -INT8_C(34), INT8_C(49), -INT8_C(23), INT8_C(10), -INT8_C(44) } }, { -INT8_C(38), -INT8_C(42), -INT8_C(3)}, { { -INT8_C(12), INT8_C(32), -INT8_C(3), INT8_C(11), -INT8_C(38), INT8_C(1), INT8_C(1), -INT8_C(2) }, { INT8_C(6), -INT8_C(22), -INT8_C(37), -INT8_C(9), -INT8_C(42), INT8_C(43), INT8_C(37), -INT8_C(31) }, { -INT8_C(33), -INT8_C(18), INT8_C(20), -INT8_C(34), -INT8_C(3), -INT8_C(23), INT8_C(10), -INT8_C(44) } } }, { { { -INT8_C(33), -INT8_C(1), -INT8_C(12), -INT8_C(11), INT8_C(22), INT8_C(9), -INT8_C(46), -INT8_C(47) }, { INT8_C(11), INT8_C(4), INT8_C(6), INT8_C(27), INT8_C(47), -INT8_C(17), -INT8_C(44), -INT8_C(20) }, { INT8_C(42), INT8_C(16), -INT8_C(25), -INT8_C(48), -INT8_C(20), -INT8_C(32), INT8_C(29), INT8_C(28) } }, { -INT8_C(20), INT8_C(0), -INT8_C(3)}, { { -INT8_C(33), -INT8_C(1), -INT8_C(12), -INT8_C(11), INT8_C(22), -INT8_C(20), -INT8_C(46), -INT8_C(47) }, { INT8_C(11), INT8_C(4), INT8_C(6), INT8_C(27), INT8_C(47), INT8_C(0), -INT8_C(44), -INT8_C(20) }, { INT8_C(42), INT8_C(16), -INT8_C(25), -INT8_C(48), -INT8_C(20), -INT8_C(3), INT8_C(29), INT8_C(28) } } }, { { { INT8_C(11), -INT8_C(5), INT8_C(3), -INT8_C(28), INT8_C(37), INT8_C(25), INT8_C(16), INT8_C(13) }, { INT8_C(24), -INT8_C(39), -INT8_C(4), -INT8_C(13), INT8_C(49), -INT8_C(3), INT8_C(25), INT8_C(9) }, { -INT8_C(48), INT8_C(8), INT8_C(12), -INT8_C(4), INT8_C(0), -INT8_C(7), -INT8_C(14), INT8_C(20) } }, { -INT8_C(25), INT8_C(1), INT8_C(11)}, { { INT8_C(11), -INT8_C(5), INT8_C(3), -INT8_C(28), INT8_C(37), INT8_C(25), -INT8_C(25), INT8_C(13) }, { INT8_C(24), -INT8_C(39), -INT8_C(4), -INT8_C(13), INT8_C(49), -INT8_C(3), INT8_C(1), INT8_C(9) }, { -INT8_C(48), INT8_C(8), INT8_C(12), -INT8_C(4), INT8_C(0), -INT8_C(7), INT8_C(11), INT8_C(20) } } }, { { { INT8_C(22), -INT8_C(26), INT8_C(11), -INT8_C(25), INT8_C(7), INT8_C(29), INT8_C(35), -INT8_C(33) }, { -INT8_C(21), INT8_C(33), INT8_C(0), -INT8_C(39), -INT8_C(43), INT8_C(28), INT8_C(31), -INT8_C(10) }, { -INT8_C(17), INT8_C(14), -INT8_C(41), INT8_C(30), INT8_C(37), INT8_C(32), -INT8_C(7), -INT8_C(4) } }, { -INT8_C(30), -INT8_C(48), INT8_C(17)}, { { INT8_C(22), -INT8_C(26), INT8_C(11), -INT8_C(25), INT8_C(7), INT8_C(29), INT8_C(35), -INT8_C(30) }, { -INT8_C(21), INT8_C(33), INT8_C(0), -INT8_C(39), -INT8_C(43), INT8_C(28), INT8_C(31), -INT8_C(48) }, { -INT8_C(17), INT8_C(14), -INT8_C(41), INT8_C(30), INT8_C(37), INT8_C(32), -INT8_C(7), INT8_C(17) } } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_int8x8x3_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]); src.val[2] = simde_vld1_s8(test_vec[i].src[2]); SIMDE_CONSTIFY_8_(simde_vld3_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]); expected.val[2] = simde_vld1_s8(test_vec[i].r[2]); simde_test_arm_neon_assert_equal_i8x8(r.val[0], expected.val[0]); simde_test_arm_neon_assert_equal_i8x8(r.val[1], expected.val[1]); simde_test_arm_neon_assert_equal_i8x8(r.val[2], expected.val[2]); } return 0; } static int test_simde_vld3_lane_s16 (SIMDE_MUNIT_TEST_ARGS) { static const struct { int16_t src[3][4]; int16_t buf[3]; int16_t r[3][4]; } test_vec[] = { { { { INT16_C(2717), INT16_C(575), INT16_C(4902), INT16_C(2261) }, { INT16_C(1233), INT16_C(4720), -INT16_C(4726), INT16_C(4438) }, { -INT16_C(4256), -INT16_C(1119), INT16_C(3307), -INT16_C(1818) } }, { INT16_C(986), -INT16_C(4050), -INT16_C(1206)}, { { INT16_C(986), INT16_C(575), INT16_C(4902), INT16_C(2261) }, { -INT16_C(4050), INT16_C(4720), -INT16_C(4726), INT16_C(4438) }, { -INT16_C(1206), -INT16_C(1119), INT16_C(3307), -INT16_C(1818) } } }, { { { -INT16_C(82), INT16_C(3569), -INT16_C(3685), -INT16_C(2988) }, { INT16_C(2597), INT16_C(868), INT16_C(1723), INT16_C(2628) }, { INT16_C(905), -INT16_C(2883), -INT16_C(1731), -INT16_C(2362) } }, { INT16_C(4882), INT16_C(4746), -INT16_C(2975)}, { { -INT16_C(82), INT16_C(4882), -INT16_C(3685), -INT16_C(2988) }, { INT16_C(2597), INT16_C(4746), INT16_C(1723), INT16_C(2628) }, { INT16_C(905), -INT16_C(2975), -INT16_C(1731), -INT16_C(2362) } } }, { { { -INT16_C(1293), -INT16_C(551), -INT16_C(1223), INT16_C(4017) }, { INT16_C(1594), INT16_C(1517), INT16_C(2534), INT16_C(2808) }, { INT16_C(415), INT16_C(2904), INT16_C(1958), INT16_C(961) } }, { -INT16_C(3918), INT16_C(1301), INT16_C(150)}, { { -INT16_C(1293), -INT16_C(551), -INT16_C(3918), INT16_C(4017) }, { INT16_C(1594), INT16_C(1517), INT16_C(1301), INT16_C(2808) }, { INT16_C(415), INT16_C(2904), INT16_C(150), INT16_C(961) } } }, { { { -INT16_C(2100), INT16_C(2262), -INT16_C(3223), -INT16_C(3872) }, { -INT16_C(2926), -INT16_C(109), -INT16_C(4620), INT16_C(4053) }, { INT16_C(3674), INT16_C(2439), INT16_C(4543), -INT16_C(996) } }, { INT16_C(4138), INT16_C(3789), -INT16_C(566)}, { { -INT16_C(2100), INT16_C(2262), -INT16_C(3223), INT16_C(4138) }, { -INT16_C(2926), -INT16_C(109), -INT16_C(4620), INT16_C(3789) }, { INT16_C(3674), INT16_C(2439), INT16_C(4543), -INT16_C(566) } } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_int16x4x3_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]); src.val[2] = simde_vld1_s16(test_vec[i].src[2]); SIMDE_CONSTIFY_4_(simde_vld3_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]); expected.val[2] = simde_vld1_s16(test_vec[i].r[2]); simde_test_arm_neon_assert_equal_i16x4(r.val[0], expected.val[0]); simde_test_arm_neon_assert_equal_i16x4(r.val[1], expected.val[1]); simde_test_arm_neon_assert_equal_i16x4(r.val[2], expected.val[2]); } return 0; } static int test_simde_vld3_lane_s32 (SIMDE_MUNIT_TEST_ARGS) { static const struct { int32_t src[3][2]; int32_t buf[3]; int32_t r[3][2]; } test_vec[] = { { { { -INT32_C(386983), -INT32_C(217954) }, { INT32_C(344519), -INT32_C(251850) }, { -INT32_C(126242), INT32_C(117859) } }, { INT32_C(83246), INT32_C(273121), INT32_C(59814)}, { { INT32_C(83246), -INT32_C(217954) }, { INT32_C(273121), -INT32_C(251850) }, { INT32_C(59814), INT32_C(117859) } } }, { { { -INT32_C(177200), INT32_C(336643) }, { INT32_C(240336), -INT32_C(324844) }, { -INT32_C(254120), -INT32_C(345522) } }, { INT32_C(488920), -INT32_C(470183), -INT32_C(90512)}, { { -INT32_C(177200), INT32_C(488920) }, { INT32_C(240336), -INT32_C(470183) }, { -INT32_C(254120), -INT32_C(90512) } } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_int32x2x3_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]); src.val[2] = simde_vld1_s32(test_vec[i].src[2]); SIMDE_CONSTIFY_2_(simde_vld3_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]); expected.val[2] = simde_vld1_s32(test_vec[i].r[2]); simde_test_arm_neon_assert_equal_i32x2(r.val[0], expected.val[0]); simde_test_arm_neon_assert_equal_i32x2(r.val[1], expected.val[1]); simde_test_arm_neon_assert_equal_i32x2(r.val[2], expected.val[2]); } return 0; } static int test_simde_vld3_lane_s64 (SIMDE_MUNIT_TEST_ARGS) { static const struct { int64_t src[3][1]; int64_t buf[3]; int64_t r[3][1]; } test_vec[] = { { { { -INT64_C(41604193) }, { -INT64_C(22070552) }, { INT64_C(139589) } }, { -INT64_C(18919378), -INT64_C(10176256), INT64_C(1594941)}, { { -INT64_C(18919378) }, { -INT64_C(10176256) }, { INT64_C(1594941) } } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_int64x1x3_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]); src.val[2] = simde_vld1_s64(test_vec[i].src[2]); r = simde_vld3_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]); expected.val[2] = simde_vld1_s64(test_vec[i].r[2]); simde_test_arm_neon_assert_equal_i64x1(r.val[0], expected.val[0]); simde_test_arm_neon_assert_equal_i64x1(r.val[1], expected.val[1]); simde_test_arm_neon_assert_equal_i64x1(r.val[2], expected.val[2]); } return 0; } static int test_simde_vld3_lane_u8 (SIMDE_MUNIT_TEST_ARGS) { static const struct { uint8_t src[3][8]; uint8_t buf[3]; uint8_t r[3][8]; } test_vec[] = { { { { UINT8_C(75), UINT8_C(35), UINT8_C(26), UINT8_C(54), UINT8_C(1), UINT8_C(45), UINT8_C(13), UINT8_C(16) }, { UINT8_C(71), UINT8_C(47), UINT8_C(17), UINT8_C(80), UINT8_C(66), UINT8_C(34), UINT8_C(97), UINT8_C(20) }, { UINT8_C(41), UINT8_C(28), UINT8_C(70), UINT8_C(58), UINT8_C(81), UINT8_C(47), UINT8_C(7), UINT8_C(80) } }, { UINT8_C(92), UINT8_C(95), UINT8_C(50)}, { { UINT8_C(92), UINT8_C(35), UINT8_C(26), UINT8_C(54), UINT8_C(1), UINT8_C(45), UINT8_C(13), UINT8_C(16) }, { UINT8_C(95), UINT8_C(47), UINT8_C(17), UINT8_C(80), UINT8_C(66), UINT8_C(34), UINT8_C(97), UINT8_C(20) }, { UINT8_C(50), UINT8_C(28), UINT8_C(70), UINT8_C(58), UINT8_C(81), UINT8_C(47), UINT8_C(7), UINT8_C(80) } } }, { { { UINT8_C(42), UINT8_C(96), UINT8_C(15), UINT8_C(5), UINT8_C(54), UINT8_C(1), UINT8_C(68), UINT8_C(93) }, { UINT8_C(5), UINT8_C(62), UINT8_C(9), UINT8_C(30), UINT8_C(18), UINT8_C(45), UINT8_C(2), UINT8_C(28) }, { UINT8_C(65), UINT8_C(82), UINT8_C(30), UINT8_C(37), UINT8_C(18), UINT8_C(53), UINT8_C(59), UINT8_C(73) } }, { UINT8_C(45), UINT8_C(63), UINT8_C(47)}, { { UINT8_C(42), UINT8_C(45), UINT8_C(15), UINT8_C(5), UINT8_C(54), UINT8_C(1), UINT8_C(68), UINT8_C(93) }, { UINT8_C(5), UINT8_C(63), UINT8_C(9), UINT8_C(30), UINT8_C(18), UINT8_C(45), UINT8_C(2), UINT8_C(28) }, { UINT8_C(65), UINT8_C(47), UINT8_C(30), UINT8_C(37), UINT8_C(18), UINT8_C(53), UINT8_C(59), UINT8_C(73) } } }, { { { UINT8_C(5), UINT8_C(76), UINT8_C(80), UINT8_C(97), UINT8_C(33), UINT8_C(72), UINT8_C(43), UINT8_C(79) }, { UINT8_C(75), UINT8_C(82), UINT8_C(0), UINT8_C(67), UINT8_C(37), UINT8_C(5), UINT8_C(72), UINT8_C(27) }, { UINT8_C(1), UINT8_C(63), UINT8_C(20), UINT8_C(19), UINT8_C(83), UINT8_C(8), UINT8_C(44), UINT8_C(57) } }, { UINT8_C(63), UINT8_C(85), UINT8_C(98)}, { { UINT8_C(5), UINT8_C(76), UINT8_C(63), UINT8_C(97), UINT8_C(33), UINT8_C(72), UINT8_C(43), UINT8_C(79) }, { UINT8_C(75), UINT8_C(82), UINT8_C(85), UINT8_C(67), UINT8_C(37), UINT8_C(5), UINT8_C(72), UINT8_C(27) }, { UINT8_C(1), UINT8_C(63), UINT8_C(98), UINT8_C(19), UINT8_C(83), UINT8_C(8), UINT8_C(44), UINT8_C(57) } } }, { { { UINT8_C(72), UINT8_C(56), UINT8_C(65), UINT8_C(46), UINT8_C(4), UINT8_C(16), UINT8_C(78), UINT8_C(1) }, { UINT8_C(18), UINT8_C(48), UINT8_C(95), UINT8_C(22), UINT8_C(70), UINT8_C(44), UINT8_C(38), UINT8_C(3) }, { UINT8_C(23), UINT8_C(7), UINT8_C(81), UINT8_C(1), UINT8_C(25), UINT8_C(17), UINT8_C(17), UINT8_C(41) } }, { UINT8_C(60), UINT8_C(43), UINT8_C(32)}, { { UINT8_C(72), UINT8_C(56), UINT8_C(65), UINT8_C(60), UINT8_C(4), UINT8_C(16), UINT8_C(78), UINT8_C(1) }, { UINT8_C(18), UINT8_C(48), UINT8_C(95), UINT8_C(43), UINT8_C(70), UINT8_C(44), UINT8_C(38), UINT8_C(3) }, { UINT8_C(23), UINT8_C(7), UINT8_C(81), UINT8_C(32), UINT8_C(25), UINT8_C(17), UINT8_C(17), UINT8_C(41) } } }, { { { UINT8_C(90), UINT8_C(17), UINT8_C(65), UINT8_C(25), UINT8_C(72), UINT8_C(23), UINT8_C(54), UINT8_C(47) }, { UINT8_C(59), UINT8_C(82), UINT8_C(35), UINT8_C(91), UINT8_C(46), UINT8_C(26), UINT8_C(40), UINT8_C(79) }, { UINT8_C(73), UINT8_C(71), UINT8_C(80), UINT8_C(13), UINT8_C(88), UINT8_C(62), UINT8_C(41), UINT8_C(0) } }, { UINT8_C(86), UINT8_C(2), UINT8_C(23)}, { { UINT8_C(90), UINT8_C(17), UINT8_C(65), UINT8_C(25), UINT8_C(86), UINT8_C(23), UINT8_C(54), UINT8_C(47) }, { UINT8_C(59), UINT8_C(82), UINT8_C(35), UINT8_C(91), UINT8_C(2), UINT8_C(26), UINT8_C(40), UINT8_C(79) }, { UINT8_C(73), UINT8_C(71), UINT8_C(80), UINT8_C(13), UINT8_C(23), UINT8_C(62), UINT8_C(41), UINT8_C(0) } } }, { { { UINT8_C(9), UINT8_C(4), UINT8_C(48), UINT8_C(49), UINT8_C(13), UINT8_C(76), UINT8_C(28), UINT8_C(38) }, { UINT8_C(80), UINT8_C(15), UINT8_C(59), UINT8_C(29), UINT8_C(83), UINT8_C(69), UINT8_C(55), UINT8_C(2) }, { UINT8_C(12), UINT8_C(53), UINT8_C(98), UINT8_C(65), UINT8_C(68), UINT8_C(99), UINT8_C(58), UINT8_C(18) } }, { UINT8_C(49), UINT8_C(77), UINT8_C(71)}, { { UINT8_C(9), UINT8_C(4), UINT8_C(48), UINT8_C(49), UINT8_C(13), UINT8_C(49), UINT8_C(28), UINT8_C(38) }, { UINT8_C(80), UINT8_C(15), UINT8_C(59), UINT8_C(29), UINT8_C(83), UINT8_C(77), UINT8_C(55), UINT8_C(2) }, { UINT8_C(12), UINT8_C(53), UINT8_C(98), UINT8_C(65), UINT8_C(68), UINT8_C(71), UINT8_C(58), UINT8_C(18) } } }, { { { UINT8_C(21), UINT8_C(55), UINT8_C(12), UINT8_C(49), UINT8_C(97), UINT8_C(12), UINT8_C(16), UINT8_C(51) }, { UINT8_C(90), UINT8_C(34), UINT8_C(48), UINT8_C(61), UINT8_C(90), UINT8_C(4), UINT8_C(74), UINT8_C(53) }, { UINT8_C(44), UINT8_C(38), UINT8_C(5), UINT8_C(81), UINT8_C(71), UINT8_C(12), UINT8_C(0), UINT8_C(21) } }, { UINT8_C(61), UINT8_C(40), UINT8_C(87)}, { { UINT8_C(21), UINT8_C(55), UINT8_C(12), UINT8_C(49), UINT8_C(97), UINT8_C(12), UINT8_C(61), UINT8_C(51) }, { UINT8_C(90), UINT8_C(34), UINT8_C(48), UINT8_C(61), UINT8_C(90), UINT8_C(4), UINT8_C(40), UINT8_C(53) }, { UINT8_C(44), UINT8_C(38), UINT8_C(5), UINT8_C(81), UINT8_C(71), UINT8_C(12), UINT8_C(87), UINT8_C(21) } } }, { { { UINT8_C(95), UINT8_C(70), UINT8_C(79), UINT8_C(1), UINT8_C(27), UINT8_C(95), UINT8_C(83), UINT8_C(31) }, { UINT8_C(45), UINT8_C(24), UINT8_C(38), UINT8_C(76), UINT8_C(85), UINT8_C(61), UINT8_C(59), UINT8_C(71) }, { UINT8_C(7), UINT8_C(7), UINT8_C(22), UINT8_C(38), UINT8_C(73), UINT8_C(72), UINT8_C(79), UINT8_C(43) } }, { UINT8_C(9), UINT8_C(96), UINT8_C(17)}, { { UINT8_C(95), UINT8_C(70), UINT8_C(79), UINT8_C(1), UINT8_C(27), UINT8_C(95), UINT8_C(83), UINT8_C(9) }, { UINT8_C(45), UINT8_C(24), UINT8_C(38), UINT8_C(76), UINT8_C(85), UINT8_C(61), UINT8_C(59), UINT8_C(96) }, { UINT8_C(7), UINT8_C(7), UINT8_C(22), UINT8_C(38), UINT8_C(73), UINT8_C(72), UINT8_C(79), UINT8_C(17) } } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_uint8x8x3_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]); src.val[2] = simde_vld1_u8(test_vec[i].src[2]); SIMDE_CONSTIFY_8_(simde_vld3_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]); expected.val[2] = simde_vld1_u8(test_vec[i].r[2]); simde_test_arm_neon_assert_equal_u8x8(r.val[0], expected.val[0]); simde_test_arm_neon_assert_equal_u8x8(r.val[1], expected.val[1]); simde_test_arm_neon_assert_equal_u8x8(r.val[2], expected.val[2]); } return 0; } static int test_simde_vld3_lane_u16 (SIMDE_MUNIT_TEST_ARGS) { static const struct { uint16_t src[3][4]; uint16_t buf[3]; uint16_t r[3][4]; } test_vec[] = { { { { UINT16_C(6015), UINT16_C(2114), UINT16_C(9985), UINT16_C(6732) }, { UINT16_C(8774), UINT16_C(5943), UINT16_C(9952), UINT16_C(6251) }, { UINT16_C(7677), UINT16_C(4431), UINT16_C(8936), UINT16_C(5217) } }, { UINT16_C(6123), UINT16_C(8122), UINT16_C(6028)}, { { UINT16_C(6123), UINT16_C(2114), UINT16_C(9985), UINT16_C(6732) }, { UINT16_C(8122), UINT16_C(5943), UINT16_C(9952), UINT16_C(6251) }, { UINT16_C(6028), UINT16_C(4431), UINT16_C(8936), UINT16_C(5217) } } }, { { { UINT16_C(1502), UINT16_C(4900), UINT16_C(3595), UINT16_C(5262) }, { UINT16_C(8144), UINT16_C(1060), UINT16_C(6932), UINT16_C(5912) }, { UINT16_C(6252), UINT16_C(4564), UINT16_C(7952), UINT16_C(4773) } }, { UINT16_C(8849), UINT16_C(6285), UINT16_C(845)}, { { UINT16_C(1502), UINT16_C(8849), UINT16_C(3595), UINT16_C(5262) }, { UINT16_C(8144), UINT16_C(6285), UINT16_C(6932), UINT16_C(5912) }, { UINT16_C(6252), UINT16_C(845), UINT16_C(7952), UINT16_C(4773) } } }, { { { UINT16_C(8789), UINT16_C(6109), UINT16_C(2590), UINT16_C(503) }, { UINT16_C(5135), UINT16_C(1328), UINT16_C(5106), UINT16_C(3566) }, { UINT16_C(6125), UINT16_C(5630), UINT16_C(1661), UINT16_C(5502) } }, { UINT16_C(7329), UINT16_C(958), UINT16_C(9522)}, { { UINT16_C(8789), UINT16_C(6109), UINT16_C(7329), UINT16_C(503) }, { UINT16_C(5135), UINT16_C(1328), UINT16_C(958), UINT16_C(3566) }, { UINT16_C(6125), UINT16_C(5630), UINT16_C(9522), UINT16_C(5502) } } }, { { { UINT16_C(237), UINT16_C(4662), UINT16_C(2239), UINT16_C(7486) }, { UINT16_C(9269), UINT16_C(4261), UINT16_C(1015), UINT16_C(4021) }, { UINT16_C(8255), UINT16_C(239), UINT16_C(9693), UINT16_C(2843) } }, { UINT16_C(2785), UINT16_C(9518), UINT16_C(5622)}, { { UINT16_C(237), UINT16_C(4662), UINT16_C(2239), UINT16_C(2785) }, { UINT16_C(9269), UINT16_C(4261), UINT16_C(1015), UINT16_C(9518) }, { UINT16_C(8255), UINT16_C(239), UINT16_C(9693), UINT16_C(5622) } } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_uint16x4x3_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]); src.val[2] = simde_vld1_u16(test_vec[i].src[2]); SIMDE_CONSTIFY_4_(simde_vld3_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]); expected.val[2] = simde_vld1_u16(test_vec[i].r[2]); simde_test_arm_neon_assert_equal_u16x4(r.val[0], expected.val[0]); simde_test_arm_neon_assert_equal_u16x4(r.val[1], expected.val[1]); simde_test_arm_neon_assert_equal_u16x4(r.val[2], expected.val[2]); } return 0; } static int test_simde_vld3_lane_u32 (SIMDE_MUNIT_TEST_ARGS) { static const struct { uint32_t src[3][2]; uint32_t buf[3]; uint32_t r[3][2]; } test_vec[] = { { { { UINT32_C(649331), UINT32_C(837601) }, { UINT32_C(485878), UINT32_C(933696) }, { UINT32_C(256110), UINT32_C(394676) } }, { UINT32_C(547466), UINT32_C(729971), UINT32_C(327258)}, { { UINT32_C(547466), UINT32_C(837601) }, { UINT32_C(729971), UINT32_C(933696) }, { UINT32_C(327258), UINT32_C(394676) } } }, { { { UINT32_C(296079), UINT32_C(480957) }, { UINT32_C(878808), UINT32_C(469556) }, { UINT32_C(544354), UINT32_C(170596) } }, { UINT32_C(663329), UINT32_C(622760), UINT32_C(266353)}, { { UINT32_C(296079), UINT32_C(663329) }, { UINT32_C(878808), UINT32_C(622760) }, { UINT32_C(544354), UINT32_C(266353) } } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_uint32x2x3_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]); src.val[2] = simde_vld1_u32(test_vec[i].src[2]); SIMDE_CONSTIFY_2_(simde_vld3_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]); expected.val[2] = simde_vld1_u32(test_vec[i].r[2]); simde_test_arm_neon_assert_equal_u32x2(r.val[0], expected.val[0]); simde_test_arm_neon_assert_equal_u32x2(r.val[1], expected.val[1]); simde_test_arm_neon_assert_equal_u32x2(r.val[2], expected.val[2]); } return 0; } static int test_simde_vld3_lane_u64 (SIMDE_MUNIT_TEST_ARGS) { static const struct { uint64_t src[3][1]; uint64_t buf[3]; uint64_t r[3][1]; } test_vec[] = { { { { UINT64_C(54243463) }, { UINT64_C(32138549) }, { UINT64_C(65147451) } }, { UINT64_C(36001229), UINT64_C(4492888), UINT64_C(79288036)}, { { UINT64_C(36001229) }, { UINT64_C(4492888) }, { UINT64_C(79288036) } } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_uint64x1x3_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]); src.val[2] = simde_vld1_u64(test_vec[i].src[2]); r = simde_vld3_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]); expected.val[2] = simde_vld1_u64(test_vec[i].r[2]); simde_test_arm_neon_assert_equal_u64x1(r.val[0], expected.val[0]); simde_test_arm_neon_assert_equal_u64x1(r.val[1], expected.val[1]); simde_test_arm_neon_assert_equal_u64x1(r.val[2], expected.val[2]); } return 0; } static int test_simde_vld3_lane_f16 (SIMDE_MUNIT_TEST_ARGS) { struct { simde_float16_t src[3][4]; simde_float16_t buf[3]; simde_float16_t r[3][4]; } test_vec[] = { { { { SIMDE_FLOAT16_VALUE(-38.09), SIMDE_FLOAT16_VALUE(39.56), SIMDE_FLOAT16_VALUE(12.85), SIMDE_FLOAT16_VALUE(-6.63) }, { SIMDE_FLOAT16_VALUE(-41.59), SIMDE_FLOAT16_VALUE(46.59), SIMDE_FLOAT16_VALUE(22.79), SIMDE_FLOAT16_VALUE(-13.35) }, { SIMDE_FLOAT16_VALUE(25.23), SIMDE_FLOAT16_VALUE(-26.59), SIMDE_FLOAT16_VALUE(19.00), SIMDE_FLOAT16_VALUE(-16.99) } }, { SIMDE_FLOAT16_VALUE(6.58), SIMDE_FLOAT16_VALUE(-23.21), SIMDE_FLOAT16_VALUE(-16.75)}, { { SIMDE_FLOAT16_VALUE(6.58), SIMDE_FLOAT16_VALUE(39.56), SIMDE_FLOAT16_VALUE(12.85), SIMDE_FLOAT16_VALUE(-6.63) }, { SIMDE_FLOAT16_VALUE(-23.21), SIMDE_FLOAT16_VALUE(46.59), SIMDE_FLOAT16_VALUE(22.79), SIMDE_FLOAT16_VALUE(-13.35) }, { SIMDE_FLOAT16_VALUE(-16.75), SIMDE_FLOAT16_VALUE(-26.59), SIMDE_FLOAT16_VALUE(19.00), SIMDE_FLOAT16_VALUE(-16.99) } } }, { { { SIMDE_FLOAT16_VALUE(-31.46), SIMDE_FLOAT16_VALUE(30.50), SIMDE_FLOAT16_VALUE(-31.78), SIMDE_FLOAT16_VALUE(47.74) }, { SIMDE_FLOAT16_VALUE(33.97), SIMDE_FLOAT16_VALUE(37.16), SIMDE_FLOAT16_VALUE(27.13), SIMDE_FLOAT16_VALUE(-28.58) }, { SIMDE_FLOAT16_VALUE(-7.95), SIMDE_FLOAT16_VALUE(-26.73), SIMDE_FLOAT16_VALUE(17.08), SIMDE_FLOAT16_VALUE(39.81) } }, { SIMDE_FLOAT16_VALUE(-28.19), SIMDE_FLOAT16_VALUE(29.28), SIMDE_FLOAT16_VALUE(-1.21)}, { { SIMDE_FLOAT16_VALUE(-31.46), SIMDE_FLOAT16_VALUE(-28.19), SIMDE_FLOAT16_VALUE(-31.78), SIMDE_FLOAT16_VALUE(47.74) }, { SIMDE_FLOAT16_VALUE(33.97), SIMDE_FLOAT16_VALUE(29.28), SIMDE_FLOAT16_VALUE(27.13), SIMDE_FLOAT16_VALUE(-28.58) }, { SIMDE_FLOAT16_VALUE(-7.95), SIMDE_FLOAT16_VALUE(-1.21), SIMDE_FLOAT16_VALUE(17.08), SIMDE_FLOAT16_VALUE(39.81) } } }, { { { SIMDE_FLOAT16_VALUE(42.99), SIMDE_FLOAT16_VALUE(-22.57), SIMDE_FLOAT16_VALUE(-7.51), SIMDE_FLOAT16_VALUE(-37.37) }, { SIMDE_FLOAT16_VALUE(15.49), SIMDE_FLOAT16_VALUE(-14.01), SIMDE_FLOAT16_VALUE(30.43), SIMDE_FLOAT16_VALUE(-22.10) }, { SIMDE_FLOAT16_VALUE(-17.08), SIMDE_FLOAT16_VALUE(28.40), SIMDE_FLOAT16_VALUE(-3.15), SIMDE_FLOAT16_VALUE(-9.72) } }, { SIMDE_FLOAT16_VALUE(37.03), SIMDE_FLOAT16_VALUE(-46.18), SIMDE_FLOAT16_VALUE(30.55)}, { { SIMDE_FLOAT16_VALUE(42.99), SIMDE_FLOAT16_VALUE(-22.57), SIMDE_FLOAT16_VALUE(37.03), SIMDE_FLOAT16_VALUE(-37.37) }, { SIMDE_FLOAT16_VALUE(15.49), SIMDE_FLOAT16_VALUE(-14.01), SIMDE_FLOAT16_VALUE(-46.18), SIMDE_FLOAT16_VALUE(-22.10) }, { SIMDE_FLOAT16_VALUE(-17.08), SIMDE_FLOAT16_VALUE(28.40), SIMDE_FLOAT16_VALUE(30.55), SIMDE_FLOAT16_VALUE(-9.72) } } }, { { { SIMDE_FLOAT16_VALUE(-27.48), SIMDE_FLOAT16_VALUE(13.58), SIMDE_FLOAT16_VALUE(-24.04), SIMDE_FLOAT16_VALUE(4.66) }, { SIMDE_FLOAT16_VALUE(29.23), SIMDE_FLOAT16_VALUE(31.79), SIMDE_FLOAT16_VALUE(-45.75), SIMDE_FLOAT16_VALUE(38.47) }, { SIMDE_FLOAT16_VALUE(-41.39), SIMDE_FLOAT16_VALUE(-33.55), SIMDE_FLOAT16_VALUE(-46.68), SIMDE_FLOAT16_VALUE(19.26) } }, { SIMDE_FLOAT16_VALUE(39.57), SIMDE_FLOAT16_VALUE(-22.13), SIMDE_FLOAT16_VALUE(6.04)}, { { SIMDE_FLOAT16_VALUE(-27.48), SIMDE_FLOAT16_VALUE(13.58), SIMDE_FLOAT16_VALUE(-24.04), SIMDE_FLOAT16_VALUE(39.57) }, { SIMDE_FLOAT16_VALUE(29.23), SIMDE_FLOAT16_VALUE(31.79), SIMDE_FLOAT16_VALUE(-45.75), SIMDE_FLOAT16_VALUE(-22.13) }, { SIMDE_FLOAT16_VALUE(-41.39), SIMDE_FLOAT16_VALUE(-33.55), SIMDE_FLOAT16_VALUE(-46.68), SIMDE_FLOAT16_VALUE(6.04) } } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_float16x4x3_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]); src.val[2] = simde_vld1_f16(test_vec[i].src[2]); SIMDE_CONSTIFY_4_(simde_vld3_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]); expected.val[2] = simde_vld1_f16(test_vec[i].r[2]); simde_test_arm_neon_assert_equal_f16x4(r.val[0], expected.val[0], INT_MAX); simde_test_arm_neon_assert_equal_f16x4(r.val[1], expected.val[1], INT_MAX); simde_test_arm_neon_assert_equal_f16x4(r.val[2], expected.val[2], INT_MAX); } return 0; } static int test_simde_vld3_lane_f32 (SIMDE_MUNIT_TEST_ARGS) { static const struct { simde_float32_t src[3][2]; simde_float32_t buf[3]; simde_float32_t r[3][2]; } test_vec[] = { { { { SIMDE_FLOAT32_C(-3815.63), SIMDE_FLOAT32_C(-1707.02) }, { SIMDE_FLOAT32_C(1574.07), SIMDE_FLOAT32_C(887.99) }, { SIMDE_FLOAT32_C(2512.31), SIMDE_FLOAT32_C(4889.59) } }, { SIMDE_FLOAT32_C(-215.06), SIMDE_FLOAT32_C(-3372.22), SIMDE_FLOAT32_C(-242.19)}, { { SIMDE_FLOAT32_C(-215.06), SIMDE_FLOAT32_C(-1707.02) }, { SIMDE_FLOAT32_C(-3372.22), SIMDE_FLOAT32_C(887.99) }, { SIMDE_FLOAT32_C(-242.19), SIMDE_FLOAT32_C(4889.59) } } }, { { { SIMDE_FLOAT32_C(-514.65), SIMDE_FLOAT32_C(3958.55) }, { SIMDE_FLOAT32_C(-1426.95), SIMDE_FLOAT32_C(1871.07) }, { SIMDE_FLOAT32_C(-3767.33), SIMDE_FLOAT32_C(2972.99) } }, { SIMDE_FLOAT32_C(-2565.02), SIMDE_FLOAT32_C(-4895.28), SIMDE_FLOAT32_C(2142.44)}, { { SIMDE_FLOAT32_C(-514.65), SIMDE_FLOAT32_C(-2565.02) }, { SIMDE_FLOAT32_C(-1426.95), SIMDE_FLOAT32_C(-4895.28) }, { SIMDE_FLOAT32_C(-3767.33), SIMDE_FLOAT32_C(2142.44) } } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_float32x2x3_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]); src.val[2] = simde_vld1_f32(test_vec[i].src[2]); SIMDE_CONSTIFY_2_(simde_vld3_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]); expected.val[2] = simde_vld1_f32(test_vec[i].r[2]); simde_test_arm_neon_assert_equal_f32x2(r.val[0], expected.val[0], INT_MAX); simde_test_arm_neon_assert_equal_f32x2(r.val[1], expected.val[1], INT_MAX); simde_test_arm_neon_assert_equal_f32x2(r.val[2], expected.val[2], INT_MAX); } return 0; } static int test_simde_vld3_lane_f64 (SIMDE_MUNIT_TEST_ARGS) { static const struct { simde_float64_t src[3][1]; simde_float64_t buf[3]; simde_float64_t r[3][1]; } test_vec[] = { { { { SIMDE_FLOAT64_C(-227977.76) }, { SIMDE_FLOAT64_C(-358189.91) }, { SIMDE_FLOAT64_C(329725.67) } }, { SIMDE_FLOAT64_C(-308263.36), SIMDE_FLOAT64_C(134133.66), SIMDE_FLOAT64_C(344837.21)}, { { SIMDE_FLOAT64_C(-308263.36) }, { SIMDE_FLOAT64_C(134133.66) }, { SIMDE_FLOAT64_C(344837.21) } } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_float64x1x3_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]); src.val[2] = simde_vld1_f64(test_vec[i].src[2]); r = simde_vld3_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]); expected.val[2] = simde_vld1_f64(test_vec[i].r[2]); simde_test_arm_neon_assert_equal_f64x1(r.val[0], expected.val[0], INT_MAX); simde_test_arm_neon_assert_equal_f64x1(r.val[1], expected.val[1], INT_MAX); simde_test_arm_neon_assert_equal_f64x1(r.val[2], expected.val[2], INT_MAX); } return 0; } static int test_simde_vld3q_lane_s8 (SIMDE_MUNIT_TEST_ARGS) { static const struct { int8_t src[3][16]; int8_t buf[3]; int8_t r[3][16]; } test_vec[] = { { { { -INT8_C(28), -INT8_C(13), -INT8_C(35), INT8_C(39), -INT8_C(35), INT8_C(35), -INT8_C(17), INT8_C(11), INT8_C(40), -INT8_C(11), -INT8_C(11), INT8_C(24), INT8_C(42), INT8_C(33), INT8_C(15), -INT8_C(30) }, { -INT8_C(10), -INT8_C(12), INT8_C(18), -INT8_C(9), INT8_C(27), -INT8_C(30), -INT8_C(28), INT8_C(43), INT8_C(13), -INT8_C(3), INT8_C(33), INT8_C(34), INT8_C(27), INT8_C(9), -INT8_C(23), INT8_C(48) }, { -INT8_C(7), -INT8_C(13), INT8_C(19), INT8_C(4), INT8_C(17), -INT8_C(17), -INT8_C(10), -INT8_C(24), INT8_C(6), INT8_C(1), INT8_C(22), -INT8_C(47), -INT8_C(47), INT8_C(0), INT8_C(13), INT8_C(5) } }, { -INT8_C(31), -INT8_C(4), INT8_C(11)}, { { -INT8_C(31), -INT8_C(13), -INT8_C(35), INT8_C(39), -INT8_C(35), INT8_C(35), -INT8_C(17), INT8_C(11), INT8_C(40), -INT8_C(11), -INT8_C(11), INT8_C(24), INT8_C(42), INT8_C(33), INT8_C(15), -INT8_C(30) }, { -INT8_C(4), -INT8_C(12), INT8_C(18), -INT8_C(9), INT8_C(27), -INT8_C(30), -INT8_C(28), INT8_C(43), INT8_C(13), -INT8_C(3), INT8_C(33), INT8_C(34), INT8_C(27), INT8_C(9), -INT8_C(23), INT8_C(48) }, { INT8_C(11), -INT8_C(13), INT8_C(19), INT8_C(4), INT8_C(17), -INT8_C(17), -INT8_C(10), -INT8_C(24), INT8_C(6), INT8_C(1), INT8_C(22), -INT8_C(47), -INT8_C(47), INT8_C(0), INT8_C(13), INT8_C(5) } } }, { { { -INT8_C(30), INT8_C(25), -INT8_C(8), -INT8_C(18), INT8_C(19), INT8_C(15), INT8_C(31), -INT8_C(19), -INT8_C(2), -INT8_C(45), INT8_C(24), -INT8_C(25), -INT8_C(20), INT8_C(34), INT8_C(37), INT8_C(38) }, { INT8_C(2), -INT8_C(4), -INT8_C(49), INT8_C(44), -INT8_C(26), INT8_C(24), -INT8_C(40), INT8_C(3), -INT8_C(38), INT8_C(5), INT8_C(45), -INT8_C(4), -INT8_C(21), -INT8_C(40), INT8_C(49), -INT8_C(33) }, { -INT8_C(42), INT8_C(29), -INT8_C(24), INT8_C(16), INT8_C(25), INT8_C(4), INT8_C(13), -INT8_C(24), INT8_C(10), -INT8_C(25), INT8_C(13), -INT8_C(3), INT8_C(36), -INT8_C(44), -INT8_C(1), -INT8_C(33) } }, { INT8_C(46), INT8_C(42), -INT8_C(17)}, { { -INT8_C(30), INT8_C(46), -INT8_C(8), -INT8_C(18), INT8_C(19), INT8_C(15), INT8_C(31), -INT8_C(19), -INT8_C(2), -INT8_C(45), INT8_C(24), -INT8_C(25), -INT8_C(20), INT8_C(34), INT8_C(37), INT8_C(38) }, { INT8_C(2), INT8_C(42), -INT8_C(49), INT8_C(44), -INT8_C(26), INT8_C(24), -INT8_C(40), INT8_C(3), -INT8_C(38), INT8_C(5), INT8_C(45), -INT8_C(4), -INT8_C(21), -INT8_C(40), INT8_C(49), -INT8_C(33) }, { -INT8_C(42), -INT8_C(17), -INT8_C(24), INT8_C(16), INT8_C(25), INT8_C(4), INT8_C(13), -INT8_C(24), INT8_C(10), -INT8_C(25), INT8_C(13), -INT8_C(3), INT8_C(36), -INT8_C(44), -INT8_C(1), -INT8_C(33) } } }, { { { INT8_C(15), -INT8_C(42), -INT8_C(16), INT8_C(46), -INT8_C(23), INT8_C(33), -INT8_C(21), -INT8_C(49), INT8_C(5), INT8_C(47), INT8_C(42), INT8_C(19), -INT8_C(24), -INT8_C(13), -INT8_C(36), -INT8_C(34) }, { -INT8_C(48), INT8_C(19), INT8_C(41), INT8_C(8), INT8_C(14), -INT8_C(1), -INT8_C(48), INT8_C(31), INT8_C(40), -INT8_C(3), INT8_C(9), -INT8_C(21), INT8_C(21), -INT8_C(3), INT8_C(2), -INT8_C(47) }, { INT8_C(24), INT8_C(8), -INT8_C(1), INT8_C(37), INT8_C(18), INT8_C(37), -INT8_C(27), INT8_C(40), -INT8_C(42), INT8_C(42), -INT8_C(30), INT8_C(0), INT8_C(45), -INT8_C(6), INT8_C(39), INT8_C(45) } }, { INT8_C(23), INT8_C(20), -INT8_C(12)}, { { INT8_C(15), -INT8_C(42), INT8_C(23), INT8_C(46), -INT8_C(23), INT8_C(33), -INT8_C(21), -INT8_C(49), INT8_C(5), INT8_C(47), INT8_C(42), INT8_C(19), -INT8_C(24), -INT8_C(13), -INT8_C(36), -INT8_C(34) }, { -INT8_C(48), INT8_C(19), INT8_C(20), INT8_C(8), INT8_C(14), -INT8_C(1), -INT8_C(48), INT8_C(31), INT8_C(40), -INT8_C(3), INT8_C(9), -INT8_C(21), INT8_C(21), -INT8_C(3), INT8_C(2), -INT8_C(47) }, { INT8_C(24), INT8_C(8), -INT8_C(12), INT8_C(37), INT8_C(18), INT8_C(37), -INT8_C(27), INT8_C(40), -INT8_C(42), INT8_C(42), -INT8_C(30), INT8_C(0), INT8_C(45), -INT8_C(6), INT8_C(39), INT8_C(45) } } }, { { { -INT8_C(4), INT8_C(24), INT8_C(10), -INT8_C(19), INT8_C(44), INT8_C(1), INT8_C(1), INT8_C(13), -INT8_C(19), INT8_C(8), -INT8_C(47), INT8_C(45), INT8_C(21), -INT8_C(16), -INT8_C(46), -INT8_C(32) }, { INT8_C(5), INT8_C(10), -INT8_C(16), -INT8_C(23), -INT8_C(15), INT8_C(39), INT8_C(1), INT8_C(48), INT8_C(17), -INT8_C(13), INT8_C(35), INT8_C(11), INT8_C(32), INT8_C(15), INT8_C(11), -INT8_C(25) }, { -INT8_C(11), INT8_C(29), -INT8_C(23), INT8_C(17), -INT8_C(31), INT8_C(40), INT8_C(34), INT8_C(13), INT8_C(11), -INT8_C(48), INT8_C(18), INT8_C(19), -INT8_C(21), INT8_C(31), -INT8_C(42), -INT8_C(14) } }, { -INT8_C(26), INT8_C(0), INT8_C(4)}, { { -INT8_C(4), INT8_C(24), INT8_C(10), -INT8_C(26), INT8_C(44), INT8_C(1), INT8_C(1), INT8_C(13), -INT8_C(19), INT8_C(8), -INT8_C(47), INT8_C(45), INT8_C(21), -INT8_C(16), -INT8_C(46), -INT8_C(32) }, { INT8_C(5), INT8_C(10), -INT8_C(16), INT8_C(0), -INT8_C(15), INT8_C(39), INT8_C(1), INT8_C(48), INT8_C(17), -INT8_C(13), INT8_C(35), INT8_C(11), INT8_C(32), INT8_C(15), INT8_C(11), -INT8_C(25) }, { -INT8_C(11), INT8_C(29), -INT8_C(23), INT8_C(4), -INT8_C(31), INT8_C(40), INT8_C(34), INT8_C(13), INT8_C(11), -INT8_C(48), INT8_C(18), INT8_C(19), -INT8_C(21), INT8_C(31), -INT8_C(42), -INT8_C(14) } } }, { { { INT8_C(44), INT8_C(25), -INT8_C(6), INT8_C(45), INT8_C(14), -INT8_C(38), -INT8_C(31), INT8_C(21), INT8_C(8), INT8_C(36), -INT8_C(2), -INT8_C(13), INT8_C(16), INT8_C(12), -INT8_C(23), INT8_C(34) }, { INT8_C(43), INT8_C(24), INT8_C(19), -INT8_C(35), INT8_C(16), INT8_C(10), INT8_C(29), INT8_C(26), INT8_C(36), -INT8_C(27), INT8_C(47), INT8_C(32), INT8_C(6), -INT8_C(29), INT8_C(30), -INT8_C(30) }, { -INT8_C(5), -INT8_C(41), INT8_C(19), INT8_C(6), INT8_C(10), INT8_C(11), INT8_C(17), INT8_C(24), -INT8_C(24), INT8_C(26), INT8_C(35), INT8_C(17), -INT8_C(12), -INT8_C(38), -INT8_C(22), -INT8_C(30) } }, { INT8_C(31), -INT8_C(38), INT8_C(8)}, { { INT8_C(44), INT8_C(25), -INT8_C(6), INT8_C(45), INT8_C(31), -INT8_C(38), -INT8_C(31), INT8_C(21), INT8_C(8), INT8_C(36), -INT8_C(2), -INT8_C(13), INT8_C(16), INT8_C(12), -INT8_C(23), INT8_C(34) }, { INT8_C(43), INT8_C(24), INT8_C(19), -INT8_C(35), -INT8_C(38), INT8_C(10), INT8_C(29), INT8_C(26), INT8_C(36), -INT8_C(27), INT8_C(47), INT8_C(32), INT8_C(6), -INT8_C(29), INT8_C(30), -INT8_C(30) }, { -INT8_C(5), -INT8_C(41), INT8_C(19), INT8_C(6), INT8_C(8), INT8_C(11), INT8_C(17), INT8_C(24), -INT8_C(24), INT8_C(26), INT8_C(35), INT8_C(17), -INT8_C(12), -INT8_C(38), -INT8_C(22), -INT8_C(30) } } }, { { { -INT8_C(29), -INT8_C(16), INT8_C(26), INT8_C(17), INT8_C(2), -INT8_C(4), INT8_C(3), -INT8_C(28), INT8_C(0), INT8_C(15), INT8_C(44), -INT8_C(43), -INT8_C(1), INT8_C(11), -INT8_C(5), INT8_C(2) }, { INT8_C(19), -INT8_C(26), -INT8_C(39), INT8_C(43), INT8_C(10), INT8_C(18), -INT8_C(32), INT8_C(42), -INT8_C(30), -INT8_C(1), -INT8_C(1), INT8_C(22), -INT8_C(34), -INT8_C(11), -INT8_C(40), INT8_C(47) }, { INT8_C(5), INT8_C(36), INT8_C(0), -INT8_C(6), -INT8_C(46), -INT8_C(23), -INT8_C(48), INT8_C(6), INT8_C(45), -INT8_C(35), INT8_C(49), INT8_C(19), -INT8_C(32), -INT8_C(32), -INT8_C(44), -INT8_C(5) } }, { -INT8_C(45), INT8_C(0), INT8_C(44)}, { { -INT8_C(29), -INT8_C(16), INT8_C(26), INT8_C(17), INT8_C(2), -INT8_C(45), INT8_C(3), -INT8_C(28), INT8_C(0), INT8_C(15), INT8_C(44), -INT8_C(43), -INT8_C(1), INT8_C(11), -INT8_C(5), INT8_C(2) }, { INT8_C(19), -INT8_C(26), -INT8_C(39), INT8_C(43), INT8_C(10), INT8_C(0), -INT8_C(32), INT8_C(42), -INT8_C(30), -INT8_C(1), -INT8_C(1), INT8_C(22), -INT8_C(34), -INT8_C(11), -INT8_C(40), INT8_C(47) }, { INT8_C(5), INT8_C(36), INT8_C(0), -INT8_C(6), -INT8_C(46), INT8_C(44), -INT8_C(48), INT8_C(6), INT8_C(45), -INT8_C(35), INT8_C(49), INT8_C(19), -INT8_C(32), -INT8_C(32), -INT8_C(44), -INT8_C(5) } } }, { { { -INT8_C(22), -INT8_C(22), INT8_C(14), INT8_C(5), -INT8_C(3), -INT8_C(5), INT8_C(22), -INT8_C(29), -INT8_C(21), -INT8_C(5), INT8_C(21), -INT8_C(5), INT8_C(6), INT8_C(36), INT8_C(29), -INT8_C(23) }, { INT8_C(43), -INT8_C(25), INT8_C(21), -INT8_C(25), -INT8_C(18), INT8_C(38), -INT8_C(31), -INT8_C(7), INT8_C(25), INT8_C(7), INT8_C(39), -INT8_C(35), -INT8_C(2), INT8_C(22), -INT8_C(46), -INT8_C(7) }, { -INT8_C(49), -INT8_C(16), INT8_C(34), INT8_C(43), INT8_C(38), -INT8_C(5), -INT8_C(8), INT8_C(0), INT8_C(3), -INT8_C(19), INT8_C(48), INT8_C(42), INT8_C(25), INT8_C(5), INT8_C(25), INT8_C(17) } }, { INT8_C(2), INT8_C(43), INT8_C(12)}, { { -INT8_C(22), -INT8_C(22), INT8_C(14), INT8_C(5), -INT8_C(3), -INT8_C(5), INT8_C(2), -INT8_C(29), -INT8_C(21), -INT8_C(5), INT8_C(21), -INT8_C(5), INT8_C(6), INT8_C(36), INT8_C(29), -INT8_C(23) }, { INT8_C(43), -INT8_C(25), INT8_C(21), -INT8_C(25), -INT8_C(18), INT8_C(38), INT8_C(43), -INT8_C(7), INT8_C(25), INT8_C(7), INT8_C(39), -INT8_C(35), -INT8_C(2), INT8_C(22), -INT8_C(46), -INT8_C(7) }, { -INT8_C(49), -INT8_C(16), INT8_C(34), INT8_C(43), INT8_C(38), -INT8_C(5), INT8_C(12), INT8_C(0), INT8_C(3), -INT8_C(19), INT8_C(48), INT8_C(42), INT8_C(25), INT8_C(5), INT8_C(25), INT8_C(17) } } }, { { { -INT8_C(24), INT8_C(26), -INT8_C(29), -INT8_C(11), INT8_C(49), -INT8_C(23), -INT8_C(40), -INT8_C(12), -INT8_C(26), INT8_C(39), -INT8_C(8), INT8_C(5), INT8_C(11), INT8_C(35), -INT8_C(35), -INT8_C(21) }, { INT8_C(43), INT8_C(15), INT8_C(44), -INT8_C(25), -INT8_C(35), -INT8_C(16), -INT8_C(6), INT8_C(6), INT8_C(27), -INT8_C(17), -INT8_C(21), INT8_C(22), INT8_C(8), INT8_C(35), INT8_C(10), INT8_C(18) }, { -INT8_C(21), INT8_C(7), INT8_C(41), -INT8_C(40), INT8_C(22), -INT8_C(13), -INT8_C(7), -INT8_C(16), INT8_C(30), INT8_C(48), INT8_C(10), INT8_C(30), -INT8_C(9), INT8_C(43), -INT8_C(16), INT8_C(39) } }, { -INT8_C(4), INT8_C(38), INT8_C(2)}, { { -INT8_C(24), INT8_C(26), -INT8_C(29), -INT8_C(11), INT8_C(49), -INT8_C(23), -INT8_C(40), -INT8_C(4), -INT8_C(26), INT8_C(39), -INT8_C(8), INT8_C(5), INT8_C(11), INT8_C(35), -INT8_C(35), -INT8_C(21) }, { INT8_C(43), INT8_C(15), INT8_C(44), -INT8_C(25), -INT8_C(35), -INT8_C(16), -INT8_C(6), INT8_C(38), INT8_C(27), -INT8_C(17), -INT8_C(21), INT8_C(22), INT8_C(8), INT8_C(35), INT8_C(10), INT8_C(18) }, { -INT8_C(21), INT8_C(7), INT8_C(41), -INT8_C(40), INT8_C(22), -INT8_C(13), -INT8_C(7), INT8_C(2), INT8_C(30), INT8_C(48), INT8_C(10), INT8_C(30), -INT8_C(9), INT8_C(43), -INT8_C(16), INT8_C(39) } } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_int8x16x3_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]); src.val[2] = simde_vld1q_s8(test_vec[i].src[2]); SIMDE_CONSTIFY_16_(simde_vld3q_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]); expected.val[2] = simde_vld1q_s8(test_vec[i].r[2]); simde_test_arm_neon_assert_equal_i8x16(r.val[0], expected.val[0]); simde_test_arm_neon_assert_equal_i8x16(r.val[1], expected.val[1]); simde_test_arm_neon_assert_equal_i8x16(r.val[2], expected.val[2]); } return 0; } static int test_simde_vld3q_lane_s16 (SIMDE_MUNIT_TEST_ARGS) { static const struct { int16_t src[3][8]; int16_t buf[3]; int16_t r[3][8]; } test_vec[] = { { { { -INT16_C(2544), -INT16_C(4642), INT16_C(1229), -INT16_C(3331), INT16_C(1420), INT16_C(2297), -INT16_C(3685), -INT16_C(1960) }, { -INT16_C(1002), -INT16_C(55), INT16_C(253), -INT16_C(3175), INT16_C(4758), -INT16_C(663), INT16_C(4619), -INT16_C(514) }, { INT16_C(361), INT16_C(2026), INT16_C(1410), -INT16_C(931), INT16_C(2343), -INT16_C(2337), INT16_C(1862), -INT16_C(4072) } }, { INT16_C(3171), INT16_C(4950), -INT16_C(4704)}, { { INT16_C(3171), -INT16_C(4642), INT16_C(1229), -INT16_C(3331), INT16_C(1420), INT16_C(2297), -INT16_C(3685), -INT16_C(1960) }, { INT16_C(4950), -INT16_C(55), INT16_C(253), -INT16_C(3175), INT16_C(4758), -INT16_C(663), INT16_C(4619), -INT16_C(514) }, { -INT16_C(4704), INT16_C(2026), INT16_C(1410), -INT16_C(931), INT16_C(2343), -INT16_C(2337), INT16_C(1862), -INT16_C(4072) } } }, { { { -INT16_C(2056), -INT16_C(2346), INT16_C(48), -INT16_C(1513), -INT16_C(1284), -INT16_C(2465), INT16_C(2451), INT16_C(3724) }, { -INT16_C(2631), -INT16_C(2352), -INT16_C(4669), -INT16_C(3875), -INT16_C(1356), INT16_C(4686), -INT16_C(1134), INT16_C(4680) }, { INT16_C(829), -INT16_C(3778), -INT16_C(1514), INT16_C(3181), INT16_C(233), -INT16_C(285), -INT16_C(2967), INT16_C(4139) } }, { -INT16_C(761), INT16_C(4943), INT16_C(3163)}, { { -INT16_C(2056), -INT16_C(761), INT16_C(48), -INT16_C(1513), -INT16_C(1284), -INT16_C(2465), INT16_C(2451), INT16_C(3724) }, { -INT16_C(2631), INT16_C(4943), -INT16_C(4669), -INT16_C(3875), -INT16_C(1356), INT16_C(4686), -INT16_C(1134), INT16_C(4680) }, { INT16_C(829), INT16_C(3163), -INT16_C(1514), INT16_C(3181), INT16_C(233), -INT16_C(285), -INT16_C(2967), INT16_C(4139) } } }, { { { -INT16_C(532), -INT16_C(2343), INT16_C(4528), -INT16_C(3432), INT16_C(2221), INT16_C(3807), -INT16_C(1256), -INT16_C(366) }, { -INT16_C(3053), -INT16_C(2035), INT16_C(4749), -INT16_C(876), -INT16_C(3988), -INT16_C(2478), -INT16_C(160), INT16_C(1331) }, { -INT16_C(4671), -INT16_C(1438), INT16_C(756), -INT16_C(652), -INT16_C(4517), -INT16_C(1746), INT16_C(849), INT16_C(1421) } }, { -INT16_C(1857), INT16_C(1429), -INT16_C(481)}, { { -INT16_C(532), -INT16_C(2343), -INT16_C(1857), -INT16_C(3432), INT16_C(2221), INT16_C(3807), -INT16_C(1256), -INT16_C(366) }, { -INT16_C(3053), -INT16_C(2035), INT16_C(1429), -INT16_C(876), -INT16_C(3988), -INT16_C(2478), -INT16_C(160), INT16_C(1331) }, { -INT16_C(4671), -INT16_C(1438), -INT16_C(481), -INT16_C(652), -INT16_C(4517), -INT16_C(1746), INT16_C(849), INT16_C(1421) } } }, { { { -INT16_C(3293), INT16_C(1799), -INT16_C(2614), INT16_C(2645), INT16_C(154), INT16_C(1399), INT16_C(894), INT16_C(1463) }, { -INT16_C(714), INT16_C(3903), -INT16_C(87), -INT16_C(1409), INT16_C(4155), -INT16_C(3942), -INT16_C(3803), -INT16_C(3385) }, { INT16_C(3632), -INT16_C(4465), INT16_C(4972), INT16_C(2353), -INT16_C(554), -INT16_C(4589), -INT16_C(1038), -INT16_C(3827) } }, { INT16_C(795), -INT16_C(3260), -INT16_C(2863)}, { { -INT16_C(3293), INT16_C(1799), -INT16_C(2614), INT16_C(795), INT16_C(154), INT16_C(1399), INT16_C(894), INT16_C(1463) }, { -INT16_C(714), INT16_C(3903), -INT16_C(87), -INT16_C(3260), INT16_C(4155), -INT16_C(3942), -INT16_C(3803), -INT16_C(3385) }, { INT16_C(3632), -INT16_C(4465), INT16_C(4972), -INT16_C(2863), -INT16_C(554), -INT16_C(4589), -INT16_C(1038), -INT16_C(3827) } } }, { { { INT16_C(4874), INT16_C(1787), INT16_C(3061), INT16_C(1342), -INT16_C(4591), -INT16_C(1421), INT16_C(1230), INT16_C(3115) }, { INT16_C(2715), INT16_C(2686), -INT16_C(4982), -INT16_C(4201), INT16_C(1874), -INT16_C(349), INT16_C(3167), INT16_C(1853) }, { -INT16_C(599), INT16_C(3177), INT16_C(2976), INT16_C(440), -INT16_C(4614), INT16_C(3956), -INT16_C(1913), INT16_C(3599) } }, { INT16_C(2739), INT16_C(4689), -INT16_C(4528)}, { { INT16_C(4874), INT16_C(1787), INT16_C(3061), INT16_C(1342), INT16_C(2739), -INT16_C(1421), INT16_C(1230), INT16_C(3115) }, { INT16_C(2715), INT16_C(2686), -INT16_C(4982), -INT16_C(4201), INT16_C(4689), -INT16_C(349), INT16_C(3167), INT16_C(1853) }, { -INT16_C(599), INT16_C(3177), INT16_C(2976), INT16_C(440), -INT16_C(4528), INT16_C(3956), -INT16_C(1913), INT16_C(3599) } } }, { { { INT16_C(2333), -INT16_C(4220), -INT16_C(156), INT16_C(2999), -INT16_C(756), INT16_C(1397), INT16_C(3426), INT16_C(1946) }, { -INT16_C(377), -INT16_C(773), -INT16_C(181), INT16_C(4655), INT16_C(577), INT16_C(2152), INT16_C(1822), INT16_C(1387) }, { INT16_C(1673), -INT16_C(1590), INT16_C(2338), -INT16_C(4018), INT16_C(3127), INT16_C(1790), INT16_C(444), INT16_C(1571) } }, { INT16_C(4725), -INT16_C(3008), INT16_C(3862)}, { { INT16_C(2333), -INT16_C(4220), -INT16_C(156), INT16_C(2999), -INT16_C(756), INT16_C(4725), INT16_C(3426), INT16_C(1946) }, { -INT16_C(377), -INT16_C(773), -INT16_C(181), INT16_C(4655), INT16_C(577), -INT16_C(3008), INT16_C(1822), INT16_C(1387) }, { INT16_C(1673), -INT16_C(1590), INT16_C(2338), -INT16_C(4018), INT16_C(3127), INT16_C(3862), INT16_C(444), INT16_C(1571) } } }, { { { -INT16_C(1060), -INT16_C(75), INT16_C(3183), INT16_C(4253), -INT16_C(1840), INT16_C(4704), -INT16_C(629), INT16_C(3253) }, { -INT16_C(34), -INT16_C(4041), -INT16_C(1971), -INT16_C(895), INT16_C(1253), -INT16_C(1347), -INT16_C(4546), INT16_C(3931) }, { -INT16_C(149), -INT16_C(4817), -INT16_C(2596), -INT16_C(3858), INT16_C(2456), -INT16_C(2586), -INT16_C(2889), INT16_C(134) } }, { -INT16_C(4708), INT16_C(933), -INT16_C(3647)}, { { -INT16_C(1060), -INT16_C(75), INT16_C(3183), INT16_C(4253), -INT16_C(1840), INT16_C(4704), -INT16_C(4708), INT16_C(3253) }, { -INT16_C(34), -INT16_C(4041), -INT16_C(1971), -INT16_C(895), INT16_C(1253), -INT16_C(1347), INT16_C(933), INT16_C(3931) }, { -INT16_C(149), -INT16_C(4817), -INT16_C(2596), -INT16_C(3858), INT16_C(2456), -INT16_C(2586), -INT16_C(3647), INT16_C(134) } } }, { { { INT16_C(3916), -INT16_C(4828), INT16_C(1552), INT16_C(4046), -INT16_C(1748), INT16_C(4595), -INT16_C(3476), -INT16_C(3084) }, { INT16_C(3756), -INT16_C(3946), INT16_C(4017), -INT16_C(676), INT16_C(2556), INT16_C(1106), INT16_C(2577), INT16_C(782) }, { -INT16_C(2936), -INT16_C(4886), -INT16_C(4608), -INT16_C(46), INT16_C(2459), INT16_C(348), INT16_C(3567), INT16_C(1859) } }, { -INT16_C(521), INT16_C(4002), -INT16_C(2389)}, { { INT16_C(3916), -INT16_C(4828), INT16_C(1552), INT16_C(4046), -INT16_C(1748), INT16_C(4595), -INT16_C(3476), -INT16_C(521) }, { INT16_C(3756), -INT16_C(3946), INT16_C(4017), -INT16_C(676), INT16_C(2556), INT16_C(1106), INT16_C(2577), INT16_C(4002) }, { -INT16_C(2936), -INT16_C(4886), -INT16_C(4608), -INT16_C(46), INT16_C(2459), INT16_C(348), INT16_C(3567), -INT16_C(2389) } } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_int16x8x3_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]); src.val[2] = simde_vld1q_s16(test_vec[i].src[2]); SIMDE_CONSTIFY_8_(simde_vld3q_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]); expected.val[2] = simde_vld1q_s16(test_vec[i].r[2]); simde_test_arm_neon_assert_equal_i16x8(r.val[0], expected.val[0]); simde_test_arm_neon_assert_equal_i16x8(r.val[1], expected.val[1]); simde_test_arm_neon_assert_equal_i16x8(r.val[2], expected.val[2]); } return 0; } static int test_simde_vld3q_lane_s32 (SIMDE_MUNIT_TEST_ARGS) { static const struct { int32_t src[3][4]; int32_t buf[3]; int32_t r[3][4]; } test_vec[] = { { { { -INT32_C(274313), INT32_C(237242), -INT32_C(282304), INT32_C(204638) }, { -INT32_C(80161), INT32_C(113801), INT32_C(414489), INT32_C(260239) }, { INT32_C(164558), INT32_C(347080), INT32_C(456851), -INT32_C(190728) } }, { -INT32_C(339723), INT32_C(150385), INT32_C(492259)}, { { -INT32_C(339723), INT32_C(237242), -INT32_C(282304), INT32_C(204638) }, { INT32_C(150385), INT32_C(113801), INT32_C(414489), INT32_C(260239) }, { INT32_C(492259), INT32_C(347080), INT32_C(456851), -INT32_C(190728) } } }, { { { -INT32_C(255470), -INT32_C(494394), -INT32_C(176874), -INT32_C(178296) }, { -INT32_C(495850), INT32_C(428070), -INT32_C(145411), INT32_C(161255) }, { INT32_C(169), -INT32_C(335586), INT32_C(344582), INT32_C(177465) } }, { -INT32_C(76592), INT32_C(117895), -INT32_C(41174)}, { { -INT32_C(255470), -INT32_C(76592), -INT32_C(176874), -INT32_C(178296) }, { -INT32_C(495850), INT32_C(117895), -INT32_C(145411), INT32_C(161255) }, { INT32_C(169), -INT32_C(41174), INT32_C(344582), INT32_C(177465) } } }, { { { INT32_C(8460), -INT32_C(282882), INT32_C(334033), -INT32_C(249990) }, { -INT32_C(299308), INT32_C(281874), -INT32_C(265183), INT32_C(45063) }, { INT32_C(414608), INT32_C(338741), -INT32_C(193727), -INT32_C(266929) } }, { INT32_C(94121), INT32_C(392450), INT32_C(344631)}, { { INT32_C(8460), -INT32_C(282882), INT32_C(94121), -INT32_C(249990) }, { -INT32_C(299308), INT32_C(281874), INT32_C(392450), INT32_C(45063) }, { INT32_C(414608), INT32_C(338741), INT32_C(344631), -INT32_C(266929) } } }, { { { -INT32_C(358516), -INT32_C(140139), INT32_C(6751), INT32_C(99765) }, { INT32_C(264528), INT32_C(267803), INT32_C(261941), INT32_C(401620) }, { -INT32_C(63290), INT32_C(145380), INT32_C(381541), -INT32_C(1568) } }, { -INT32_C(327720), INT32_C(173528), INT32_C(6300)}, { { -INT32_C(358516), -INT32_C(140139), INT32_C(6751), -INT32_C(327720) }, { INT32_C(264528), INT32_C(267803), INT32_C(261941), INT32_C(173528) }, { -INT32_C(63290), INT32_C(145380), INT32_C(381541), INT32_C(6300) } } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_int32x4x3_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]); src.val[2] = simde_vld1q_s32(test_vec[i].src[2]); SIMDE_CONSTIFY_4_(simde_vld3q_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]); expected.val[2] = simde_vld1q_s32(test_vec[i].r[2]); simde_test_arm_neon_assert_equal_i32x4(r.val[0], expected.val[0]); simde_test_arm_neon_assert_equal_i32x4(r.val[1], expected.val[1]); simde_test_arm_neon_assert_equal_i32x4(r.val[2], expected.val[2]); } return 0; } static int test_simde_vld3q_lane_s64 (SIMDE_MUNIT_TEST_ARGS) { static const struct { int64_t src[3][2]; int64_t buf[3]; int64_t r[3][2]; } test_vec[] = { { { { INT64_C(46945790), -INT64_C(17840845) }, { INT64_C(28832924), INT64_C(18337985) }, { INT64_C(31005442), INT64_C(4032821) } }, { -INT64_C(17614845), INT64_C(34213434), INT64_C(47541946)}, { { -INT64_C(17614845), -INT64_C(17840845) }, { INT64_C(34213434), INT64_C(18337985) }, { INT64_C(47541946), INT64_C(4032821) } } }, { { { INT64_C(19812609), -INT64_C(9082080) }, { -INT64_C(48294834), -INT64_C(38787891) }, { -INT64_C(12827943), INT64_C(18336010) } }, { -INT64_C(35893385), INT64_C(29217445), -INT64_C(9625128)}, { { INT64_C(19812609), -INT64_C(35893385) }, { -INT64_C(48294834), INT64_C(29217445) }, { -INT64_C(12827943), -INT64_C(9625128) } } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_int64x2x3_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]); src.val[2] = simde_vld1q_s64(test_vec[i].src[2]); SIMDE_CONSTIFY_2_(simde_vld3q_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]); expected.val[2] = simde_vld1q_s64(test_vec[i].r[2]); simde_test_arm_neon_assert_equal_i64x2(r.val[0], expected.val[0]); simde_test_arm_neon_assert_equal_i64x2(r.val[1], expected.val[1]); simde_test_arm_neon_assert_equal_i64x2(r.val[2], expected.val[2]); } return 0; } static int test_simde_vld3q_lane_u8 (SIMDE_MUNIT_TEST_ARGS) { static const struct { uint8_t src[3][16]; uint8_t buf[3]; uint8_t r[3][16]; } test_vec[] = { { { { UINT8_C(97), UINT8_C(34), UINT8_C(43), UINT8_C(79), UINT8_C(40), UINT8_C(28), UINT8_C(65), UINT8_C(74), UINT8_C(9), UINT8_C(3), UINT8_C(91), UINT8_C(11), UINT8_C(64), UINT8_C(46), UINT8_C(68), UINT8_C(53) }, { UINT8_C(42), UINT8_C(29), UINT8_C(58), UINT8_C(95), UINT8_C(50), UINT8_C(75), UINT8_C(26), UINT8_C(66), UINT8_C(71), UINT8_C(45), UINT8_C(14), UINT8_C(13), UINT8_C(88), UINT8_C(66), UINT8_C(0), UINT8_C(95) }, { UINT8_C(86), UINT8_C(19), UINT8_C(63), UINT8_C(41), UINT8_C(94), UINT8_C(31), UINT8_C(1), UINT8_C(67), UINT8_C(85), UINT8_C(10), UINT8_C(21), UINT8_C(61), UINT8_C(99), UINT8_C(54), UINT8_C(88), UINT8_C(96) } }, { UINT8_C(74), UINT8_C(52), UINT8_C(78)}, { { UINT8_C(74), UINT8_C(34), UINT8_C(43), UINT8_C(79), UINT8_C(40), UINT8_C(28), UINT8_C(65), UINT8_C(74), UINT8_C(9), UINT8_C(3), UINT8_C(91), UINT8_C(11), UINT8_C(64), UINT8_C(46), UINT8_C(68), UINT8_C(53) }, { UINT8_C(52), UINT8_C(29), UINT8_C(58), UINT8_C(95), UINT8_C(50), UINT8_C(75), UINT8_C(26), UINT8_C(66), UINT8_C(71), UINT8_C(45), UINT8_C(14), UINT8_C(13), UINT8_C(88), UINT8_C(66), UINT8_C(0), UINT8_C(95) }, { UINT8_C(78), UINT8_C(19), UINT8_C(63), UINT8_C(41), UINT8_C(94), UINT8_C(31), UINT8_C(1), UINT8_C(67), UINT8_C(85), UINT8_C(10), UINT8_C(21), UINT8_C(61), UINT8_C(99), UINT8_C(54), UINT8_C(88), UINT8_C(96) } } }, { { { UINT8_C(9), UINT8_C(1), UINT8_C(56), UINT8_C(58), UINT8_C(80), UINT8_C(56), UINT8_C(18), UINT8_C(35), UINT8_C(9), UINT8_C(71), UINT8_C(43), UINT8_C(36), UINT8_C(32), UINT8_C(11), UINT8_C(67), UINT8_C(53) }, { UINT8_C(6), UINT8_C(75), UINT8_C(57), UINT8_C(21), UINT8_C(70), UINT8_C(8), UINT8_C(57), UINT8_C(52), UINT8_C(52), UINT8_C(0), UINT8_C(40), UINT8_C(87), UINT8_C(92), UINT8_C(18), UINT8_C(24), UINT8_C(32) }, { UINT8_C(33), UINT8_C(9), UINT8_C(18), UINT8_C(75), UINT8_C(35), UINT8_C(76), UINT8_C(99), UINT8_C(66), UINT8_C(40), UINT8_C(47), UINT8_C(2), UINT8_C(94), UINT8_C(66), UINT8_C(80), UINT8_C(73), UINT8_C(10) } }, { UINT8_C(68), UINT8_C(58), UINT8_C(68)}, { { UINT8_C(9), UINT8_C(68), UINT8_C(56), UINT8_C(58), UINT8_C(80), UINT8_C(56), UINT8_C(18), UINT8_C(35), UINT8_C(9), UINT8_C(71), UINT8_C(43), UINT8_C(36), UINT8_C(32), UINT8_C(11), UINT8_C(67), UINT8_C(53) }, { UINT8_C(6), UINT8_C(58), UINT8_C(57), UINT8_C(21), UINT8_C(70), UINT8_C(8), UINT8_C(57), UINT8_C(52), UINT8_C(52), UINT8_C(0), UINT8_C(40), UINT8_C(87), UINT8_C(92), UINT8_C(18), UINT8_C(24), UINT8_C(32) }, { UINT8_C(33), UINT8_C(68), UINT8_C(18), UINT8_C(75), UINT8_C(35), UINT8_C(76), UINT8_C(99), UINT8_C(66), UINT8_C(40), UINT8_C(47), UINT8_C(2), UINT8_C(94), UINT8_C(66), UINT8_C(80), UINT8_C(73), UINT8_C(10) } } }, { { { UINT8_C(50), UINT8_C(10), UINT8_C(1), UINT8_C(90), UINT8_C(50), UINT8_C(47), UINT8_C(86), UINT8_C(81), UINT8_C(61), UINT8_C(7), UINT8_C(95), UINT8_C(60), UINT8_C(48), UINT8_C(8), UINT8_C(31), UINT8_C(91) }, { UINT8_C(73), UINT8_C(83), UINT8_C(76), UINT8_C(91), UINT8_C(19), UINT8_C(85), UINT8_C(38), UINT8_C(82), UINT8_C(27), UINT8_C(82), UINT8_C(46), UINT8_C(65), UINT8_C(68), UINT8_C(68), UINT8_C(33), UINT8_C(1) }, { UINT8_C(47), UINT8_C(15), UINT8_C(55), UINT8_C(34), UINT8_C(74), UINT8_C(43), UINT8_C(84), UINT8_C(10), UINT8_C(28), UINT8_C(68), UINT8_C(63), UINT8_C(97), UINT8_C(77), UINT8_C(44), UINT8_C(2), UINT8_C(12) } }, { UINT8_C(36), UINT8_C(31), UINT8_C(75)}, { { UINT8_C(50), UINT8_C(10), UINT8_C(36), UINT8_C(90), UINT8_C(50), UINT8_C(47), UINT8_C(86), UINT8_C(81), UINT8_C(61), UINT8_C(7), UINT8_C(95), UINT8_C(60), UINT8_C(48), UINT8_C(8), UINT8_C(31), UINT8_C(91) }, { UINT8_C(73), UINT8_C(83), UINT8_C(31), UINT8_C(91), UINT8_C(19), UINT8_C(85), UINT8_C(38), UINT8_C(82), UINT8_C(27), UINT8_C(82), UINT8_C(46), UINT8_C(65), UINT8_C(68), UINT8_C(68), UINT8_C(33), UINT8_C(1) }, { UINT8_C(47), UINT8_C(15), UINT8_C(75), UINT8_C(34), UINT8_C(74), UINT8_C(43), UINT8_C(84), UINT8_C(10), UINT8_C(28), UINT8_C(68), UINT8_C(63), UINT8_C(97), UINT8_C(77), UINT8_C(44), UINT8_C(2), UINT8_C(12) } } }, { { { UINT8_C(47), UINT8_C(52), UINT8_C(57), UINT8_C(40), UINT8_C(37), UINT8_C(25), UINT8_C(31), UINT8_C(34), UINT8_C(59), UINT8_C(77), UINT8_C(97), UINT8_C(42), UINT8_C(81), UINT8_C(31), UINT8_C(72), UINT8_C(79) }, { UINT8_C(34), UINT8_C(27), UINT8_C(19), UINT8_C(64), UINT8_C(15), UINT8_C(17), UINT8_C(15), UINT8_C(47), UINT8_C(63), UINT8_C(27), UINT8_C(7), UINT8_C(9), UINT8_C(63), UINT8_C(44), UINT8_C(81), UINT8_C(91) }, { UINT8_C(54), UINT8_C(66), UINT8_C(39), UINT8_C(9), UINT8_C(19), UINT8_C(4), UINT8_C(56), UINT8_C(13), UINT8_C(45), UINT8_C(91), UINT8_C(74), UINT8_C(85), UINT8_C(70), UINT8_C(79), UINT8_C(65), UINT8_C(66) } }, { UINT8_C(92), UINT8_C(78), UINT8_C(33)}, { { UINT8_C(47), UINT8_C(52), UINT8_C(57), UINT8_C(92), UINT8_C(37), UINT8_C(25), UINT8_C(31), UINT8_C(34), UINT8_C(59), UINT8_C(77), UINT8_C(97), UINT8_C(42), UINT8_C(81), UINT8_C(31), UINT8_C(72), UINT8_C(79) }, { UINT8_C(34), UINT8_C(27), UINT8_C(19), UINT8_C(78), UINT8_C(15), UINT8_C(17), UINT8_C(15), UINT8_C(47), UINT8_C(63), UINT8_C(27), UINT8_C(7), UINT8_C(9), UINT8_C(63), UINT8_C(44), UINT8_C(81), UINT8_C(91) }, { UINT8_C(54), UINT8_C(66), UINT8_C(39), UINT8_C(33), UINT8_C(19), UINT8_C(4), UINT8_C(56), UINT8_C(13), UINT8_C(45), UINT8_C(91), UINT8_C(74), UINT8_C(85), UINT8_C(70), UINT8_C(79), UINT8_C(65), UINT8_C(66) } } }, { { { UINT8_C(41), UINT8_C(0), UINT8_C(13), UINT8_C(21), UINT8_C(14), UINT8_C(99), UINT8_C(7), UINT8_C(41), UINT8_C(65), UINT8_C(42), UINT8_C(70), UINT8_C(7), UINT8_C(31), UINT8_C(6), UINT8_C(57), UINT8_C(25) }, { UINT8_C(89), UINT8_C(11), UINT8_C(40), UINT8_C(22), UINT8_C(75), UINT8_C(80), UINT8_C(72), UINT8_C(0), UINT8_C(12), UINT8_C(0), UINT8_C(29), UINT8_C(77), UINT8_C(83), UINT8_C(2), UINT8_C(22), UINT8_C(53) }, { UINT8_C(82), UINT8_C(8), UINT8_C(33), UINT8_C(81), UINT8_C(96), UINT8_C(37), UINT8_C(91), UINT8_C(76), UINT8_C(39), UINT8_C(58), UINT8_C(73), UINT8_C(97), UINT8_C(11), UINT8_C(15), UINT8_C(21), UINT8_C(99) } }, { UINT8_C(96), UINT8_C(62), UINT8_C(14)}, { { UINT8_C(41), UINT8_C(0), UINT8_C(13), UINT8_C(21), UINT8_C(96), UINT8_C(99), UINT8_C(7), UINT8_C(41), UINT8_C(65), UINT8_C(42), UINT8_C(70), UINT8_C(7), UINT8_C(31), UINT8_C(6), UINT8_C(57), UINT8_C(25) }, { UINT8_C(89), UINT8_C(11), UINT8_C(40), UINT8_C(22), UINT8_C(62), UINT8_C(80), UINT8_C(72), UINT8_C(0), UINT8_C(12), UINT8_C(0), UINT8_C(29), UINT8_C(77), UINT8_C(83), UINT8_C(2), UINT8_C(22), UINT8_C(53) }, { UINT8_C(82), UINT8_C(8), UINT8_C(33), UINT8_C(81), UINT8_C(14), UINT8_C(37), UINT8_C(91), UINT8_C(76), UINT8_C(39), UINT8_C(58), UINT8_C(73), UINT8_C(97), UINT8_C(11), UINT8_C(15), UINT8_C(21), UINT8_C(99) } } }, { { { UINT8_C(20), UINT8_C(41), UINT8_C(29), UINT8_C(44), UINT8_C(67), UINT8_C(37), UINT8_C(87), UINT8_C(42), UINT8_C(73), UINT8_C(62), UINT8_C(94), UINT8_C(35), UINT8_C(12), UINT8_C(53), UINT8_C(34), UINT8_C(89) }, { UINT8_C(64), UINT8_C(49), UINT8_C(36), UINT8_C(14), UINT8_C(32), UINT8_C(10), UINT8_C(2), UINT8_C(82), UINT8_C(64), UINT8_C(73), UINT8_C(51), UINT8_C(96), UINT8_C(23), UINT8_C(75), UINT8_C(27), UINT8_C(25) }, { UINT8_C(24), UINT8_C(87), UINT8_C(35), UINT8_C(68), UINT8_C(68), UINT8_C(9), UINT8_C(10), UINT8_C(17), UINT8_C(20), UINT8_C(88), UINT8_C(79), UINT8_C(13), UINT8_C(53), UINT8_C(99), UINT8_C(83), UINT8_C(9) } }, { UINT8_C(87), UINT8_C(65), UINT8_C(37)}, { { UINT8_C(20), UINT8_C(41), UINT8_C(29), UINT8_C(44), UINT8_C(67), UINT8_C(87), UINT8_C(87), UINT8_C(42), UINT8_C(73), UINT8_C(62), UINT8_C(94), UINT8_C(35), UINT8_C(12), UINT8_C(53), UINT8_C(34), UINT8_C(89) }, { UINT8_C(64), UINT8_C(49), UINT8_C(36), UINT8_C(14), UINT8_C(32), UINT8_C(65), UINT8_C(2), UINT8_C(82), UINT8_C(64), UINT8_C(73), UINT8_C(51), UINT8_C(96), UINT8_C(23), UINT8_C(75), UINT8_C(27), UINT8_C(25) }, { UINT8_C(24), UINT8_C(87), UINT8_C(35), UINT8_C(68), UINT8_C(68), UINT8_C(37), UINT8_C(10), UINT8_C(17), UINT8_C(20), UINT8_C(88), UINT8_C(79), UINT8_C(13), UINT8_C(53), UINT8_C(99), UINT8_C(83), UINT8_C(9) } } }, { { { UINT8_C(98), UINT8_C(75), UINT8_C(1), UINT8_C(3), UINT8_C(9), UINT8_C(61), UINT8_C(91), UINT8_C(69), UINT8_C(75), UINT8_C(22), UINT8_C(77), UINT8_C(29), UINT8_C(2), UINT8_C(8), UINT8_C(96), UINT8_C(52) }, { UINT8_C(35), UINT8_C(65), UINT8_C(32), UINT8_C(16), UINT8_C(62), UINT8_C(3), UINT8_C(91), UINT8_C(38), UINT8_C(42), UINT8_C(23), UINT8_C(81), UINT8_C(61), UINT8_C(28), UINT8_C(1), UINT8_C(5), UINT8_C(84) }, { UINT8_C(45), UINT8_C(87), UINT8_C(52), UINT8_C(74), UINT8_C(83), UINT8_C(48), UINT8_C(17), UINT8_C(96), UINT8_C(48), UINT8_C(82), UINT8_C(56), UINT8_C(23), UINT8_C(23), UINT8_C(52), UINT8_C(69), UINT8_C(57) } }, { UINT8_C(89), UINT8_C(29), UINT8_C(27)}, { { UINT8_C(98), UINT8_C(75), UINT8_C(1), UINT8_C(3), UINT8_C(9), UINT8_C(61), UINT8_C(89), UINT8_C(69), UINT8_C(75), UINT8_C(22), UINT8_C(77), UINT8_C(29), UINT8_C(2), UINT8_C(8), UINT8_C(96), UINT8_C(52) }, { UINT8_C(35), UINT8_C(65), UINT8_C(32), UINT8_C(16), UINT8_C(62), UINT8_C(3), UINT8_C(29), UINT8_C(38), UINT8_C(42), UINT8_C(23), UINT8_C(81), UINT8_C(61), UINT8_C(28), UINT8_C(1), UINT8_C(5), UINT8_C(84) }, { UINT8_C(45), UINT8_C(87), UINT8_C(52), UINT8_C(74), UINT8_C(83), UINT8_C(48), UINT8_C(27), UINT8_C(96), UINT8_C(48), UINT8_C(82), UINT8_C(56), UINT8_C(23), UINT8_C(23), UINT8_C(52), UINT8_C(69), UINT8_C(57) } } }, { { { UINT8_C(46), UINT8_C(86), UINT8_C(19), UINT8_C(68), UINT8_C(15), UINT8_C(80), UINT8_C(55), UINT8_C(26), UINT8_C(13), UINT8_C(91), UINT8_C(5), UINT8_C(36), UINT8_C(91), UINT8_C(27), UINT8_C(80), UINT8_C(74) }, { UINT8_C(88), UINT8_C(47), UINT8_C(36), UINT8_C(33), UINT8_C(37), UINT8_C(91), UINT8_C(41), UINT8_C(63), UINT8_C(23), UINT8_C(98), UINT8_C(80), UINT8_C(12), UINT8_C(64), UINT8_C(50), UINT8_C(92), UINT8_C(11) }, { UINT8_C(99), UINT8_C(57), UINT8_C(22), UINT8_C(30), UINT8_C(57), UINT8_C(84), UINT8_C(43), UINT8_C(39), UINT8_C(54), UINT8_C(15), UINT8_C(21), UINT8_C(38), UINT8_C(13), UINT8_C(93), UINT8_C(96), UINT8_C(10) } }, { UINT8_C(75), UINT8_C(42), UINT8_C(8)}, { { UINT8_C(46), UINT8_C(86), UINT8_C(19), UINT8_C(68), UINT8_C(15), UINT8_C(80), UINT8_C(55), UINT8_C(75), UINT8_C(13), UINT8_C(91), UINT8_C(5), UINT8_C(36), UINT8_C(91), UINT8_C(27), UINT8_C(80), UINT8_C(74) }, { UINT8_C(88), UINT8_C(47), UINT8_C(36), UINT8_C(33), UINT8_C(37), UINT8_C(91), UINT8_C(41), UINT8_C(42), UINT8_C(23), UINT8_C(98), UINT8_C(80), UINT8_C(12), UINT8_C(64), UINT8_C(50), UINT8_C(92), UINT8_C(11) }, { UINT8_C(99), UINT8_C(57), UINT8_C(22), UINT8_C(30), UINT8_C(57), UINT8_C(84), UINT8_C(43), UINT8_C(8), UINT8_C(54), UINT8_C(15), UINT8_C(21), UINT8_C(38), UINT8_C(13), UINT8_C(93), UINT8_C(96), UINT8_C(10) } } }, { { { UINT8_C(24), UINT8_C(21), UINT8_C(44), UINT8_C(24), UINT8_C(42), UINT8_C(32), UINT8_C(52), UINT8_C(88), UINT8_C(75), UINT8_C(41), UINT8_C(31), UINT8_C(71), UINT8_C(42), UINT8_C(21), UINT8_C(95), UINT8_C(29) }, { UINT8_C(0), UINT8_C(81), UINT8_C(30), UINT8_C(11), UINT8_C(14), UINT8_C(31), UINT8_C(47), UINT8_C(21), UINT8_C(76), UINT8_C(47), UINT8_C(72), UINT8_C(10), UINT8_C(59), UINT8_C(86), UINT8_C(58), UINT8_C(86) }, { UINT8_C(90), UINT8_C(32), UINT8_C(67), UINT8_C(12), UINT8_C(21), UINT8_C(76), UINT8_C(45), UINT8_C(14), UINT8_C(82), UINT8_C(96), UINT8_C(68), UINT8_C(15), UINT8_C(37), UINT8_C(65), UINT8_C(18), UINT8_C(49) } }, { UINT8_C(84), UINT8_C(83), UINT8_C(21)}, { { UINT8_C(24), UINT8_C(21), UINT8_C(44), UINT8_C(24), UINT8_C(42), UINT8_C(32), UINT8_C(52), UINT8_C(88), UINT8_C(84), UINT8_C(41), UINT8_C(31), UINT8_C(71), UINT8_C(42), UINT8_C(21), UINT8_C(95), UINT8_C(29) }, { UINT8_C(0), UINT8_C(81), UINT8_C(30), UINT8_C(11), UINT8_C(14), UINT8_C(31), UINT8_C(47), UINT8_C(21), UINT8_C(83), UINT8_C(47), UINT8_C(72), UINT8_C(10), UINT8_C(59), UINT8_C(86), UINT8_C(58), UINT8_C(86) }, { UINT8_C(90), UINT8_C(32), UINT8_C(67), UINT8_C(12), UINT8_C(21), UINT8_C(76), UINT8_C(45), UINT8_C(14), UINT8_C(21), UINT8_C(96), UINT8_C(68), UINT8_C(15), UINT8_C(37), UINT8_C(65), UINT8_C(18), UINT8_C(49) } } }, { { { UINT8_C(22), UINT8_C(62), UINT8_C(79), UINT8_C(5), UINT8_C(54), UINT8_C(45), UINT8_C(83), UINT8_C(98), UINT8_C(60), UINT8_C(61), UINT8_C(81), UINT8_C(62), UINT8_C(94), UINT8_C(14), UINT8_C(98), UINT8_C(22) }, { UINT8_C(78), UINT8_C(87), UINT8_C(48), UINT8_C(29), UINT8_C(52), UINT8_C(86), UINT8_C(71), UINT8_C(13), UINT8_C(20), UINT8_C(11), UINT8_C(89), UINT8_C(3), UINT8_C(5), UINT8_C(93), UINT8_C(48), UINT8_C(27) }, { UINT8_C(24), UINT8_C(21), UINT8_C(99), UINT8_C(53), UINT8_C(65), UINT8_C(75), UINT8_C(5), UINT8_C(72), UINT8_C(8), UINT8_C(35), UINT8_C(7), UINT8_C(49), UINT8_C(6), UINT8_C(75), UINT8_C(51), UINT8_C(60) } }, { UINT8_C(20), UINT8_C(32), UINT8_C(53)}, { { UINT8_C(22), UINT8_C(62), UINT8_C(79), UINT8_C(5), UINT8_C(54), UINT8_C(45), UINT8_C(83), UINT8_C(98), UINT8_C(60), UINT8_C(20), UINT8_C(81), UINT8_C(62), UINT8_C(94), UINT8_C(14), UINT8_C(98), UINT8_C(22) }, { UINT8_C(78), UINT8_C(87), UINT8_C(48), UINT8_C(29), UINT8_C(52), UINT8_C(86), UINT8_C(71), UINT8_C(13), UINT8_C(20), UINT8_C(32), UINT8_C(89), UINT8_C(3), UINT8_C(5), UINT8_C(93), UINT8_C(48), UINT8_C(27) }, { UINT8_C(24), UINT8_C(21), UINT8_C(99), UINT8_C(53), UINT8_C(65), UINT8_C(75), UINT8_C(5), UINT8_C(72), UINT8_C(8), UINT8_C(53), UINT8_C(7), UINT8_C(49), UINT8_C(6), UINT8_C(75), UINT8_C(51), UINT8_C(60) } } }, { { { UINT8_C(17), UINT8_C(92), UINT8_C(0), UINT8_C(91), UINT8_C(29), UINT8_C(86), UINT8_C(77), UINT8_C(36), UINT8_C(8), UINT8_C(86), UINT8_C(69), UINT8_C(6), UINT8_C(35), UINT8_C(48), UINT8_C(92), UINT8_C(63) }, { UINT8_C(69), UINT8_C(16), UINT8_C(3), UINT8_C(40), UINT8_C(43), UINT8_C(9), UINT8_C(40), UINT8_C(29), UINT8_C(43), UINT8_C(7), UINT8_C(58), UINT8_C(77), UINT8_C(6), UINT8_C(96), UINT8_C(81), UINT8_C(97) }, { UINT8_C(45), UINT8_C(34), UINT8_C(19), UINT8_C(92), UINT8_C(4), UINT8_C(72), UINT8_C(78), UINT8_C(30), UINT8_C(15), UINT8_C(12), UINT8_C(37), UINT8_C(53), UINT8_C(85), UINT8_C(88), UINT8_C(0), UINT8_C(40) } }, { UINT8_C(63), UINT8_C(11), UINT8_C(19)}, { { UINT8_C(17), UINT8_C(92), UINT8_C(0), UINT8_C(91), UINT8_C(29), UINT8_C(86), UINT8_C(77), UINT8_C(36), UINT8_C(8), UINT8_C(86), UINT8_C(63), UINT8_C(6), UINT8_C(35), UINT8_C(48), UINT8_C(92), UINT8_C(63) }, { UINT8_C(69), UINT8_C(16), UINT8_C(3), UINT8_C(40), UINT8_C(43), UINT8_C(9), UINT8_C(40), UINT8_C(29), UINT8_C(43), UINT8_C(7), UINT8_C(11), UINT8_C(77), UINT8_C(6), UINT8_C(96), UINT8_C(81), UINT8_C(97) }, { UINT8_C(45), UINT8_C(34), UINT8_C(19), UINT8_C(92), UINT8_C(4), UINT8_C(72), UINT8_C(78), UINT8_C(30), UINT8_C(15), UINT8_C(12), UINT8_C(19), UINT8_C(53), UINT8_C(85), UINT8_C(88), UINT8_C(0), UINT8_C(40) } } }, { { { UINT8_C(97), UINT8_C(65), UINT8_C(44), UINT8_C(86), UINT8_C(8), UINT8_C(17), UINT8_C(68), UINT8_C(90), UINT8_C(28), UINT8_C(50), UINT8_C(29), UINT8_C(7), UINT8_C(32), UINT8_C(0), UINT8_C(49), UINT8_C(9) }, { UINT8_C(41), UINT8_C(53), UINT8_C(62), UINT8_C(71), UINT8_C(16), UINT8_C(15), UINT8_C(13), UINT8_C(88), UINT8_C(68), UINT8_C(9), UINT8_C(29), UINT8_C(6), UINT8_C(22), UINT8_C(32), UINT8_C(28), UINT8_C(73) }, { UINT8_C(90), UINT8_C(12), UINT8_C(95), UINT8_C(43), UINT8_C(28), UINT8_C(11), UINT8_C(77), UINT8_C(24), UINT8_C(28), UINT8_C(66), UINT8_C(7), UINT8_C(48), UINT8_C(73), UINT8_C(66), UINT8_C(41), UINT8_C(26) } }, { UINT8_C(54), UINT8_C(15), UINT8_C(78)}, { { UINT8_C(97), UINT8_C(65), UINT8_C(44), UINT8_C(86), UINT8_C(8), UINT8_C(17), UINT8_C(68), UINT8_C(90), UINT8_C(28), UINT8_C(50), UINT8_C(29), UINT8_C(54), UINT8_C(32), UINT8_C(0), UINT8_C(49), UINT8_C(9) }, { UINT8_C(41), UINT8_C(53), UINT8_C(62), UINT8_C(71), UINT8_C(16), UINT8_C(15), UINT8_C(13), UINT8_C(88), UINT8_C(68), UINT8_C(9), UINT8_C(29), UINT8_C(15), UINT8_C(22), UINT8_C(32), UINT8_C(28), UINT8_C(73) }, { UINT8_C(90), UINT8_C(12), UINT8_C(95), UINT8_C(43), UINT8_C(28), UINT8_C(11), UINT8_C(77), UINT8_C(24), UINT8_C(28), UINT8_C(66), UINT8_C(7), UINT8_C(78), UINT8_C(73), UINT8_C(66), UINT8_C(41), UINT8_C(26) } } }, { { { UINT8_C(68), UINT8_C(0), UINT8_C(37), UINT8_C(9), UINT8_C(36), UINT8_C(20), UINT8_C(51), UINT8_C(43), UINT8_C(38), UINT8_C(58), UINT8_C(45), UINT8_C(25), UINT8_C(28), UINT8_C(58), UINT8_C(54), UINT8_C(47) }, { UINT8_C(95), UINT8_C(96), UINT8_C(83), UINT8_C(40), UINT8_C(74), UINT8_C(12), UINT8_C(25), UINT8_C(32), UINT8_C(23), UINT8_C(42), UINT8_C(57), UINT8_C(39), UINT8_C(36), UINT8_C(42), UINT8_C(21), UINT8_C(54) }, { UINT8_C(49), UINT8_C(37), UINT8_C(30), UINT8_C(78), UINT8_C(55), UINT8_C(40), UINT8_C(46), UINT8_C(82), UINT8_C(55), UINT8_C(76), UINT8_C(19), UINT8_C(6), UINT8_C(60), UINT8_C(52), UINT8_C(70), UINT8_C(78) } }, { UINT8_C(39), UINT8_C(16), UINT8_C(18)}, { { UINT8_C(68), UINT8_C(0), UINT8_C(37), UINT8_C(9), UINT8_C(36), UINT8_C(20), UINT8_C(51), UINT8_C(43), UINT8_C(38), UINT8_C(58), UINT8_C(45), UINT8_C(25), UINT8_C(39), UINT8_C(58), UINT8_C(54), UINT8_C(47) }, { UINT8_C(95), UINT8_C(96), UINT8_C(83), UINT8_C(40), UINT8_C(74), UINT8_C(12), UINT8_C(25), UINT8_C(32), UINT8_C(23), UINT8_C(42), UINT8_C(57), UINT8_C(39), UINT8_C(16), UINT8_C(42), UINT8_C(21), UINT8_C(54) }, { UINT8_C(49), UINT8_C(37), UINT8_C(30), UINT8_C(78), UINT8_C(55), UINT8_C(40), UINT8_C(46), UINT8_C(82), UINT8_C(55), UINT8_C(76), UINT8_C(19), UINT8_C(6), UINT8_C(18), UINT8_C(52), UINT8_C(70), UINT8_C(78) } } }, { { { UINT8_C(20), UINT8_C(75), UINT8_C(35), UINT8_C(24), UINT8_C(60), UINT8_C(21), UINT8_C(67), UINT8_C(1), UINT8_C(23), UINT8_C(57), UINT8_C(40), UINT8_C(31), UINT8_C(71), UINT8_C(21), UINT8_C(41), UINT8_C(71) }, { UINT8_C(3), UINT8_C(21), UINT8_C(89), UINT8_C(29), UINT8_C(51), UINT8_C(99), UINT8_C(90), UINT8_C(35), UINT8_C(30), UINT8_C(34), UINT8_C(67), UINT8_C(84), UINT8_C(79), UINT8_C(58), UINT8_C(39), UINT8_C(41) }, { UINT8_C(0), UINT8_C(68), UINT8_C(73), UINT8_C(59), UINT8_C(44), UINT8_C(83), UINT8_C(41), UINT8_C(72), UINT8_C(54), UINT8_C(29), UINT8_C(52), UINT8_C(51), UINT8_C(25), UINT8_C(25), UINT8_C(13), UINT8_C(15) } }, { UINT8_C(13), UINT8_C(84), UINT8_C(69)}, { { UINT8_C(20), UINT8_C(75), UINT8_C(35), UINT8_C(24), UINT8_C(60), UINT8_C(21), UINT8_C(67), UINT8_C(1), UINT8_C(23), UINT8_C(57), UINT8_C(40), UINT8_C(31), UINT8_C(71), UINT8_C(13), UINT8_C(41), UINT8_C(71) }, { UINT8_C(3), UINT8_C(21), UINT8_C(89), UINT8_C(29), UINT8_C(51), UINT8_C(99), UINT8_C(90), UINT8_C(35), UINT8_C(30), UINT8_C(34), UINT8_C(67), UINT8_C(84), UINT8_C(79), UINT8_C(84), UINT8_C(39), UINT8_C(41) }, { UINT8_C(0), UINT8_C(68), UINT8_C(73), UINT8_C(59), UINT8_C(44), UINT8_C(83), UINT8_C(41), UINT8_C(72), UINT8_C(54), UINT8_C(29), UINT8_C(52), UINT8_C(51), UINT8_C(25), UINT8_C(69), UINT8_C(13), UINT8_C(15) } } }, { { { UINT8_C(78), UINT8_C(80), UINT8_C(8), UINT8_C(85), UINT8_C(17), UINT8_C(53), UINT8_C(88), UINT8_C(87), UINT8_C(32), UINT8_C(29), UINT8_C(69), UINT8_C(78), UINT8_C(28), UINT8_C(38), UINT8_C(52), UINT8_C(24) }, { UINT8_C(64), UINT8_C(96), UINT8_C(34), UINT8_C(25), UINT8_C(46), UINT8_C(80), UINT8_C(65), UINT8_C(84), UINT8_C(71), UINT8_C(36), UINT8_C(9), UINT8_C(67), UINT8_C(75), UINT8_C(57), UINT8_C(24), UINT8_C(69) }, { UINT8_C(77), UINT8_C(59), UINT8_C(66), UINT8_C(82), UINT8_C(84), UINT8_C(12), UINT8_C(12), UINT8_C(87), UINT8_C(76), UINT8_C(40), UINT8_C(86), UINT8_C(5), UINT8_C(88), UINT8_C(47), UINT8_C(15), UINT8_C(68) } }, { UINT8_C(57), UINT8_C(4), UINT8_C(6)}, { { UINT8_C(78), UINT8_C(80), UINT8_C(8), UINT8_C(85), UINT8_C(17), UINT8_C(53), UINT8_C(88), UINT8_C(87), UINT8_C(32), UINT8_C(29), UINT8_C(69), UINT8_C(78), UINT8_C(28), UINT8_C(38), UINT8_C(57), UINT8_C(24) }, { UINT8_C(64), UINT8_C(96), UINT8_C(34), UINT8_C(25), UINT8_C(46), UINT8_C(80), UINT8_C(65), UINT8_C(84), UINT8_C(71), UINT8_C(36), UINT8_C(9), UINT8_C(67), UINT8_C(75), UINT8_C(57), UINT8_C(4), UINT8_C(69) }, { UINT8_C(77), UINT8_C(59), UINT8_C(66), UINT8_C(82), UINT8_C(84), UINT8_C(12), UINT8_C(12), UINT8_C(87), UINT8_C(76), UINT8_C(40), UINT8_C(86), UINT8_C(5), UINT8_C(88), UINT8_C(47), UINT8_C(6), UINT8_C(68) } } }, { { { UINT8_C(10), UINT8_C(53), UINT8_C(42), UINT8_C(50), UINT8_C(80), UINT8_C(86), UINT8_C(65), UINT8_C(9), UINT8_C(64), UINT8_C(65), UINT8_C(83), UINT8_C(30), UINT8_C(10), UINT8_C(44), UINT8_C(49), UINT8_C(37) }, { UINT8_C(31), UINT8_C(51), UINT8_C(22), UINT8_C(60), UINT8_C(49), UINT8_C(93), UINT8_C(32), UINT8_C(99), UINT8_C(7), UINT8_C(29), UINT8_C(87), UINT8_C(97), UINT8_C(99), UINT8_C(4), UINT8_C(60), UINT8_C(5) }, { UINT8_C(4), UINT8_C(70), UINT8_C(12), UINT8_C(81), UINT8_C(94), UINT8_C(77), UINT8_C(86), UINT8_C(97), UINT8_C(2), UINT8_C(78), UINT8_C(86), UINT8_C(4), UINT8_C(45), UINT8_C(33), UINT8_C(66), UINT8_C(9) } }, { UINT8_C(6), UINT8_C(72), UINT8_C(66)}, { { UINT8_C(10), UINT8_C(53), UINT8_C(42), UINT8_C(50), UINT8_C(80), UINT8_C(86), UINT8_C(65), UINT8_C(9), UINT8_C(64), UINT8_C(65), UINT8_C(83), UINT8_C(30), UINT8_C(10), UINT8_C(44), UINT8_C(49), UINT8_C(6) }, { UINT8_C(31), UINT8_C(51), UINT8_C(22), UINT8_C(60), UINT8_C(49), UINT8_C(93), UINT8_C(32), UINT8_C(99), UINT8_C(7), UINT8_C(29), UINT8_C(87), UINT8_C(97), UINT8_C(99), UINT8_C(4), UINT8_C(60), UINT8_C(72) }, { UINT8_C(4), UINT8_C(70), UINT8_C(12), UINT8_C(81), UINT8_C(94), UINT8_C(77), UINT8_C(86), UINT8_C(97), UINT8_C(2), UINT8_C(78), UINT8_C(86), UINT8_C(4), UINT8_C(45), UINT8_C(33), UINT8_C(66), UINT8_C(66) } } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_uint8x16x3_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]); src.val[2] = simde_vld1q_u8(test_vec[i].src[2]); SIMDE_CONSTIFY_16_(simde_vld3q_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]); expected.val[2] = simde_vld1q_u8(test_vec[i].r[2]); simde_test_arm_neon_assert_equal_u8x16(r.val[0], expected.val[0]); simde_test_arm_neon_assert_equal_u8x16(r.val[1], expected.val[1]); simde_test_arm_neon_assert_equal_u8x16(r.val[2], expected.val[2]); } return 0; } static int test_simde_vld3q_lane_u16 (SIMDE_MUNIT_TEST_ARGS) { static const struct { uint16_t src[3][8]; uint16_t buf[3]; uint16_t r[3][8]; } test_vec[] = { { { { UINT16_C(2878), UINT16_C(9122), UINT16_C(7556), UINT16_C(7857), UINT16_C(958), UINT16_C(7812), UINT16_C(2259), UINT16_C(582) }, { UINT16_C(5578), UINT16_C(9333), UINT16_C(1655), UINT16_C(9009), UINT16_C(596), UINT16_C(8223), UINT16_C(5654), UINT16_C(3297) }, { UINT16_C(5817), UINT16_C(7331), UINT16_C(8798), UINT16_C(172), UINT16_C(1106), UINT16_C(371), UINT16_C(9285), UINT16_C(5940) } }, { UINT16_C(9267), UINT16_C(2616), UINT16_C(7110)}, { { UINT16_C(9267), UINT16_C(9122), UINT16_C(7556), UINT16_C(7857), UINT16_C(958), UINT16_C(7812), UINT16_C(2259), UINT16_C(582) }, { UINT16_C(2616), UINT16_C(9333), UINT16_C(1655), UINT16_C(9009), UINT16_C(596), UINT16_C(8223), UINT16_C(5654), UINT16_C(3297) }, { UINT16_C(7110), UINT16_C(7331), UINT16_C(8798), UINT16_C(172), UINT16_C(1106), UINT16_C(371), UINT16_C(9285), UINT16_C(5940) } } }, { { { UINT16_C(2435), UINT16_C(4626), UINT16_C(4142), UINT16_C(3387), UINT16_C(6479), UINT16_C(7643), UINT16_C(5193), UINT16_C(3942) }, { UINT16_C(3016), UINT16_C(1407), UINT16_C(8271), UINT16_C(4950), UINT16_C(1775), UINT16_C(4681), UINT16_C(737), UINT16_C(7429) }, { UINT16_C(7279), UINT16_C(9658), UINT16_C(8142), UINT16_C(2112), UINT16_C(4555), UINT16_C(469), UINT16_C(1007), UINT16_C(2148) } }, { UINT16_C(4650), UINT16_C(9800), UINT16_C(2863)}, { { UINT16_C(2435), UINT16_C(4650), UINT16_C(4142), UINT16_C(3387), UINT16_C(6479), UINT16_C(7643), UINT16_C(5193), UINT16_C(3942) }, { UINT16_C(3016), UINT16_C(9800), UINT16_C(8271), UINT16_C(4950), UINT16_C(1775), UINT16_C(4681), UINT16_C(737), UINT16_C(7429) }, { UINT16_C(7279), UINT16_C(2863), UINT16_C(8142), UINT16_C(2112), UINT16_C(4555), UINT16_C(469), UINT16_C(1007), UINT16_C(2148) } } }, { { { UINT16_C(3842), UINT16_C(9560), UINT16_C(4451), UINT16_C(3039), UINT16_C(1396), UINT16_C(7094), UINT16_C(9151), UINT16_C(328) }, { UINT16_C(3222), UINT16_C(3639), UINT16_C(4981), UINT16_C(4084), UINT16_C(4213), UINT16_C(6807), UINT16_C(5985), UINT16_C(3640) }, { UINT16_C(5867), UINT16_C(7377), UINT16_C(7519), UINT16_C(4002), UINT16_C(4302), UINT16_C(897), UINT16_C(4387), UINT16_C(6837) } }, { UINT16_C(5729), UINT16_C(6854), UINT16_C(829)}, { { UINT16_C(3842), UINT16_C(9560), UINT16_C(5729), UINT16_C(3039), UINT16_C(1396), UINT16_C(7094), UINT16_C(9151), UINT16_C(328) }, { UINT16_C(3222), UINT16_C(3639), UINT16_C(6854), UINT16_C(4084), UINT16_C(4213), UINT16_C(6807), UINT16_C(5985), UINT16_C(3640) }, { UINT16_C(5867), UINT16_C(7377), UINT16_C(829), UINT16_C(4002), UINT16_C(4302), UINT16_C(897), UINT16_C(4387), UINT16_C(6837) } } }, { { { UINT16_C(7563), UINT16_C(2164), UINT16_C(8586), UINT16_C(1245), UINT16_C(9300), UINT16_C(1489), UINT16_C(7158), UINT16_C(4863) }, { UINT16_C(1424), UINT16_C(4247), UINT16_C(5640), UINT16_C(6608), UINT16_C(5989), UINT16_C(3578), UINT16_C(742), UINT16_C(1885) }, { UINT16_C(5512), UINT16_C(3861), UINT16_C(6631), UINT16_C(2430), UINT16_C(2806), UINT16_C(1789), UINT16_C(8536), UINT16_C(1442) } }, { UINT16_C(321), UINT16_C(9802), UINT16_C(8592)}, { { UINT16_C(7563), UINT16_C(2164), UINT16_C(8586), UINT16_C(321), UINT16_C(9300), UINT16_C(1489), UINT16_C(7158), UINT16_C(4863) }, { UINT16_C(1424), UINT16_C(4247), UINT16_C(5640), UINT16_C(9802), UINT16_C(5989), UINT16_C(3578), UINT16_C(742), UINT16_C(1885) }, { UINT16_C(5512), UINT16_C(3861), UINT16_C(6631), UINT16_C(8592), UINT16_C(2806), UINT16_C(1789), UINT16_C(8536), UINT16_C(1442) } } }, { { { UINT16_C(846), UINT16_C(2844), UINT16_C(4543), UINT16_C(5042), UINT16_C(9059), UINT16_C(789), UINT16_C(9345), UINT16_C(8528) }, { UINT16_C(5245), UINT16_C(4972), UINT16_C(9392), UINT16_C(6785), UINT16_C(6982), UINT16_C(1587), UINT16_C(9547), UINT16_C(806) }, { UINT16_C(2535), UINT16_C(912), UINT16_C(7134), UINT16_C(1939), UINT16_C(226), UINT16_C(4171), UINT16_C(756), UINT16_C(7958) } }, { UINT16_C(9975), UINT16_C(6402), UINT16_C(5394)}, { { UINT16_C(846), UINT16_C(2844), UINT16_C(4543), UINT16_C(5042), UINT16_C(9975), UINT16_C(789), UINT16_C(9345), UINT16_C(8528) }, { UINT16_C(5245), UINT16_C(4972), UINT16_C(9392), UINT16_C(6785), UINT16_C(6402), UINT16_C(1587), UINT16_C(9547), UINT16_C(806) }, { UINT16_C(2535), UINT16_C(912), UINT16_C(7134), UINT16_C(1939), UINT16_C(5394), UINT16_C(4171), UINT16_C(756), UINT16_C(7958) } } }, { { { UINT16_C(5491), UINT16_C(9037), UINT16_C(2121), UINT16_C(3027), UINT16_C(9896), UINT16_C(3828), UINT16_C(4925), UINT16_C(6295) }, { UINT16_C(4330), UINT16_C(4964), UINT16_C(3055), UINT16_C(2853), UINT16_C(5505), UINT16_C(2630), UINT16_C(7217), UINT16_C(9453) }, { UINT16_C(9293), UINT16_C(8272), UINT16_C(4351), UINT16_C(7481), UINT16_C(2380), UINT16_C(1671), UINT16_C(9975), UINT16_C(6647) } }, { UINT16_C(2220), UINT16_C(9744), UINT16_C(8641)}, { { UINT16_C(5491), UINT16_C(9037), UINT16_C(2121), UINT16_C(3027), UINT16_C(9896), UINT16_C(2220), UINT16_C(4925), UINT16_C(6295) }, { UINT16_C(4330), UINT16_C(4964), UINT16_C(3055), UINT16_C(2853), UINT16_C(5505), UINT16_C(9744), UINT16_C(7217), UINT16_C(9453) }, { UINT16_C(9293), UINT16_C(8272), UINT16_C(4351), UINT16_C(7481), UINT16_C(2380), UINT16_C(8641), UINT16_C(9975), UINT16_C(6647) } } }, { { { UINT16_C(9694), UINT16_C(2965), UINT16_C(2860), UINT16_C(3217), UINT16_C(905), UINT16_C(1382), UINT16_C(2539), UINT16_C(2136) }, { UINT16_C(9340), UINT16_C(8057), UINT16_C(2560), UINT16_C(2780), UINT16_C(9091), UINT16_C(341), UINT16_C(2559), UINT16_C(5566) }, { UINT16_C(5464), UINT16_C(8934), UINT16_C(8459), UINT16_C(5838), UINT16_C(5847), UINT16_C(9085), UINT16_C(7113), UINT16_C(1453) } }, { UINT16_C(9231), UINT16_C(1160), UINT16_C(1750)}, { { UINT16_C(9694), UINT16_C(2965), UINT16_C(2860), UINT16_C(3217), UINT16_C(905), UINT16_C(1382), UINT16_C(9231), UINT16_C(2136) }, { UINT16_C(9340), UINT16_C(8057), UINT16_C(2560), UINT16_C(2780), UINT16_C(9091), UINT16_C(341), UINT16_C(1160), UINT16_C(5566) }, { UINT16_C(5464), UINT16_C(8934), UINT16_C(8459), UINT16_C(5838), UINT16_C(5847), UINT16_C(9085), UINT16_C(1750), UINT16_C(1453) } } }, { { { UINT16_C(4299), UINT16_C(2575), UINT16_C(1738), UINT16_C(2713), UINT16_C(3823), UINT16_C(2897), UINT16_C(4868), UINT16_C(3272) }, { UINT16_C(1451), UINT16_C(4038), UINT16_C(5588), UINT16_C(8951), UINT16_C(8365), UINT16_C(7112), UINT16_C(7225), UINT16_C(5057) }, { UINT16_C(1287), UINT16_C(8547), UINT16_C(3369), UINT16_C(2472), UINT16_C(2063), UINT16_C(1405), UINT16_C(3647), UINT16_C(1463) } }, { UINT16_C(6301), UINT16_C(8922), UINT16_C(8856)}, { { UINT16_C(4299), UINT16_C(2575), UINT16_C(1738), UINT16_C(2713), UINT16_C(3823), UINT16_C(2897), UINT16_C(4868), UINT16_C(6301) }, { UINT16_C(1451), UINT16_C(4038), UINT16_C(5588), UINT16_C(8951), UINT16_C(8365), UINT16_C(7112), UINT16_C(7225), UINT16_C(8922) }, { UINT16_C(1287), UINT16_C(8547), UINT16_C(3369), UINT16_C(2472), UINT16_C(2063), UINT16_C(1405), UINT16_C(3647), UINT16_C(8856) } } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_uint16x8x3_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]); src.val[2] = simde_vld1q_u16(test_vec[i].src[2]); SIMDE_CONSTIFY_8_(simde_vld3q_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]); expected.val[2] = simde_vld1q_u16(test_vec[i].r[2]); simde_test_arm_neon_assert_equal_u16x8(r.val[0], expected.val[0]); simde_test_arm_neon_assert_equal_u16x8(r.val[1], expected.val[1]); simde_test_arm_neon_assert_equal_u16x8(r.val[2], expected.val[2]); } return 0; } static int test_simde_vld3q_lane_u32 (SIMDE_MUNIT_TEST_ARGS) { static const struct { uint32_t src[3][4]; uint32_t buf[3]; uint32_t r[3][4]; } test_vec[] = { { { { UINT32_C(959147), UINT32_C(94730), UINT32_C(265123), UINT32_C(263205) }, { UINT32_C(327934), UINT32_C(818462), UINT32_C(254631), UINT32_C(86194) }, { UINT32_C(686652), UINT32_C(235562), UINT32_C(658626), UINT32_C(197485) } }, { UINT32_C(762356), UINT32_C(737061), UINT32_C(61171)}, { { UINT32_C(762356), UINT32_C(94730), UINT32_C(265123), UINT32_C(263205) }, { UINT32_C(737061), UINT32_C(818462), UINT32_C(254631), UINT32_C(86194) }, { UINT32_C(61171), UINT32_C(235562), UINT32_C(658626), UINT32_C(197485) } } }, { { { UINT32_C(702078), UINT32_C(591841), UINT32_C(292142), UINT32_C(285089) }, { UINT32_C(587049), UINT32_C(158254), UINT32_C(152477), UINT32_C(801436) }, { UINT32_C(770450), UINT32_C(89829), UINT32_C(318188), UINT32_C(152245) } }, { UINT32_C(632310), UINT32_C(338180), UINT32_C(842631)}, { { UINT32_C(702078), UINT32_C(632310), UINT32_C(292142), UINT32_C(285089) }, { UINT32_C(587049), UINT32_C(338180), UINT32_C(152477), UINT32_C(801436) }, { UINT32_C(770450), UINT32_C(842631), UINT32_C(318188), UINT32_C(152245) } } }, { { { UINT32_C(845723), UINT32_C(174450), UINT32_C(865498), UINT32_C(926110) }, { UINT32_C(981718), UINT32_C(813344), UINT32_C(735780), UINT32_C(959418) }, { UINT32_C(814557), UINT32_C(573143), UINT32_C(702063), UINT32_C(80851) } }, { UINT32_C(353668), UINT32_C(149751), UINT32_C(602863)}, { { UINT32_C(845723), UINT32_C(174450), UINT32_C(353668), UINT32_C(926110) }, { UINT32_C(981718), UINT32_C(813344), UINT32_C(149751), UINT32_C(959418) }, { UINT32_C(814557), UINT32_C(573143), UINT32_C(602863), UINT32_C(80851) } } }, { { { UINT32_C(306861), UINT32_C(942100), UINT32_C(490421), UINT32_C(582143) }, { UINT32_C(266515), UINT32_C(182890), UINT32_C(927663), UINT32_C(939410) }, { UINT32_C(876199), UINT32_C(921600), UINT32_C(507718), UINT32_C(447676) } }, { UINT32_C(769107), UINT32_C(184326), UINT32_C(759585)}, { { UINT32_C(306861), UINT32_C(942100), UINT32_C(490421), UINT32_C(769107) }, { UINT32_C(266515), UINT32_C(182890), UINT32_C(927663), UINT32_C(184326) }, { UINT32_C(876199), UINT32_C(921600), UINT32_C(507718), UINT32_C(759585) } } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_uint32x4x3_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]); src.val[2] = simde_vld1q_u32(test_vec[i].src[2]); SIMDE_CONSTIFY_4_(simde_vld3q_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]); expected.val[2] = simde_vld1q_u32(test_vec[i].r[2]); simde_test_arm_neon_assert_equal_u32x4(r.val[0], expected.val[0]); simde_test_arm_neon_assert_equal_u32x4(r.val[1], expected.val[1]); simde_test_arm_neon_assert_equal_u32x4(r.val[2], expected.val[2]); } return 0; } static int test_simde_vld3q_lane_u64 (SIMDE_MUNIT_TEST_ARGS) { static const struct { uint64_t src[3][2]; uint64_t buf[3]; uint64_t r[3][2]; } test_vec[] = { { { { UINT64_C(56952904), UINT64_C(35256781) }, { UINT64_C(89718407), UINT64_C(12358219) }, { UINT64_C(61792069), UINT64_C(55919668) } }, { UINT64_C(95716616), UINT64_C(80066973), UINT64_C(46886750)}, { { UINT64_C(95716616), UINT64_C(35256781) }, { UINT64_C(80066973), UINT64_C(12358219) }, { UINT64_C(46886750), UINT64_C(55919668) } } }, { { { UINT64_C(95308677), UINT64_C(34498022) }, { UINT64_C(67254093), UINT64_C(94380501) }, { UINT64_C(77927395), UINT64_C(69899674) } }, { UINT64_C(50242963), UINT64_C(81401259), UINT64_C(34813265)}, { { UINT64_C(95308677), UINT64_C(50242963) }, { UINT64_C(67254093), UINT64_C(81401259) }, { UINT64_C(77927395), UINT64_C(34813265) } } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_uint64x2x3_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]); src.val[2] = simde_vld1q_u64(test_vec[i].src[2]); SIMDE_CONSTIFY_2_(simde_vld3q_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]); expected.val[2] = simde_vld1q_u64(test_vec[i].r[2]); simde_test_arm_neon_assert_equal_u64x2(r.val[0], expected.val[0]); simde_test_arm_neon_assert_equal_u64x2(r.val[1], expected.val[1]); simde_test_arm_neon_assert_equal_u64x2(r.val[2], expected.val[2]); } return 0; } static int test_simde_vld3q_lane_f16 (SIMDE_MUNIT_TEST_ARGS) { struct { simde_float16_t src[3][8]; simde_float16_t buf[3]; simde_float16_t r[3][8]; } test_vec[] = { { { { SIMDE_FLOAT16_VALUE(25.81), SIMDE_FLOAT16_VALUE(32.75), SIMDE_FLOAT16_VALUE(23.73), SIMDE_FLOAT16_VALUE(-45.72), SIMDE_FLOAT16_VALUE(21.87), SIMDE_FLOAT16_VALUE(8.97), SIMDE_FLOAT16_VALUE(-15.67), SIMDE_FLOAT16_VALUE(26.89) }, { SIMDE_FLOAT16_VALUE(16.63), SIMDE_FLOAT16_VALUE(6.70), SIMDE_FLOAT16_VALUE(26.16), SIMDE_FLOAT16_VALUE(-0.53), SIMDE_FLOAT16_VALUE(-39.38), SIMDE_FLOAT16_VALUE(-30.03), SIMDE_FLOAT16_VALUE(33.53), SIMDE_FLOAT16_VALUE(-5.08) }, { SIMDE_FLOAT16_VALUE(24.18), SIMDE_FLOAT16_VALUE(-0.77), SIMDE_FLOAT16_VALUE(-38.76), SIMDE_FLOAT16_VALUE(23.74), SIMDE_FLOAT16_VALUE(-37.79), SIMDE_FLOAT16_VALUE(-12.87), SIMDE_FLOAT16_VALUE(35.22), SIMDE_FLOAT16_VALUE(18.82) } }, { SIMDE_FLOAT16_VALUE(18.75), SIMDE_FLOAT16_VALUE(-19.33), SIMDE_FLOAT16_VALUE(-8.32)}, { { SIMDE_FLOAT16_VALUE(18.75), SIMDE_FLOAT16_VALUE(32.75), SIMDE_FLOAT16_VALUE(23.73), SIMDE_FLOAT16_VALUE(-45.72), SIMDE_FLOAT16_VALUE(21.87), SIMDE_FLOAT16_VALUE(8.97), SIMDE_FLOAT16_VALUE(-15.67), SIMDE_FLOAT16_VALUE(26.89) }, { SIMDE_FLOAT16_VALUE(-19.33), SIMDE_FLOAT16_VALUE(6.70), SIMDE_FLOAT16_VALUE(26.16), SIMDE_FLOAT16_VALUE(-0.53), SIMDE_FLOAT16_VALUE(-39.38), SIMDE_FLOAT16_VALUE(-30.03), SIMDE_FLOAT16_VALUE(33.53), SIMDE_FLOAT16_VALUE(-5.08) }, { SIMDE_FLOAT16_VALUE(-8.32), SIMDE_FLOAT16_VALUE(-0.77), SIMDE_FLOAT16_VALUE(-38.76), SIMDE_FLOAT16_VALUE(23.74), SIMDE_FLOAT16_VALUE(-37.79), SIMDE_FLOAT16_VALUE(-12.87), SIMDE_FLOAT16_VALUE(35.22), SIMDE_FLOAT16_VALUE(18.82) } } }, { { { SIMDE_FLOAT16_VALUE(-21.87), SIMDE_FLOAT16_VALUE(-23.46), SIMDE_FLOAT16_VALUE(43.50), SIMDE_FLOAT16_VALUE(-42.37), SIMDE_FLOAT16_VALUE(38.96), SIMDE_FLOAT16_VALUE(-39.73), SIMDE_FLOAT16_VALUE(1.99), SIMDE_FLOAT16_VALUE(13.47) }, { SIMDE_FLOAT16_VALUE(-21.30), SIMDE_FLOAT16_VALUE(31.71), SIMDE_FLOAT16_VALUE(43.14), SIMDE_FLOAT16_VALUE(6.05), SIMDE_FLOAT16_VALUE(-9.36), SIMDE_FLOAT16_VALUE(31.44), SIMDE_FLOAT16_VALUE(-1.40), SIMDE_FLOAT16_VALUE(-46.83) }, { SIMDE_FLOAT16_VALUE(22.32), SIMDE_FLOAT16_VALUE(-30.37), SIMDE_FLOAT16_VALUE(-16.31), SIMDE_FLOAT16_VALUE(48.67), SIMDE_FLOAT16_VALUE(-32.26), SIMDE_FLOAT16_VALUE(-43.03), SIMDE_FLOAT16_VALUE(-31.49), SIMDE_FLOAT16_VALUE(-29.73) } }, { SIMDE_FLOAT16_VALUE(-19.96), SIMDE_FLOAT16_VALUE(16.11), SIMDE_FLOAT16_VALUE(15.29)}, { { SIMDE_FLOAT16_VALUE(-21.87), SIMDE_FLOAT16_VALUE(-19.96), SIMDE_FLOAT16_VALUE(43.50), SIMDE_FLOAT16_VALUE(-42.37), SIMDE_FLOAT16_VALUE(38.96), SIMDE_FLOAT16_VALUE(-39.73), SIMDE_FLOAT16_VALUE(1.99), SIMDE_FLOAT16_VALUE(13.47) }, { SIMDE_FLOAT16_VALUE(-21.30), SIMDE_FLOAT16_VALUE(16.11), SIMDE_FLOAT16_VALUE(43.14), SIMDE_FLOAT16_VALUE(6.05), SIMDE_FLOAT16_VALUE(-9.36), SIMDE_FLOAT16_VALUE(31.44), SIMDE_FLOAT16_VALUE(-1.40), SIMDE_FLOAT16_VALUE(-46.83) }, { SIMDE_FLOAT16_VALUE(22.32), SIMDE_FLOAT16_VALUE(15.29), SIMDE_FLOAT16_VALUE(-16.31), SIMDE_FLOAT16_VALUE(48.67), SIMDE_FLOAT16_VALUE(-32.26), SIMDE_FLOAT16_VALUE(-43.03), SIMDE_FLOAT16_VALUE(-31.49), SIMDE_FLOAT16_VALUE(-29.73) } } }, { { { SIMDE_FLOAT16_VALUE(22.99), SIMDE_FLOAT16_VALUE(19.29), SIMDE_FLOAT16_VALUE(-46.27), SIMDE_FLOAT16_VALUE(-49.21), SIMDE_FLOAT16_VALUE(48.55), SIMDE_FLOAT16_VALUE(49.51), SIMDE_FLOAT16_VALUE(1.68), SIMDE_FLOAT16_VALUE(4.07) }, { SIMDE_FLOAT16_VALUE(-8.20), SIMDE_FLOAT16_VALUE(5.11), SIMDE_FLOAT16_VALUE(17.40), SIMDE_FLOAT16_VALUE(-3.87), SIMDE_FLOAT16_VALUE(-20.55), SIMDE_FLOAT16_VALUE(19.44), SIMDE_FLOAT16_VALUE(-49.04), SIMDE_FLOAT16_VALUE(-1.42) }, { SIMDE_FLOAT16_VALUE(22.33), SIMDE_FLOAT16_VALUE(-45.53), SIMDE_FLOAT16_VALUE(-33.31), SIMDE_FLOAT16_VALUE(-20.16), SIMDE_FLOAT16_VALUE(-39.51), SIMDE_FLOAT16_VALUE(-20.23), SIMDE_FLOAT16_VALUE(-41.96), SIMDE_FLOAT16_VALUE(-27.75) } }, { SIMDE_FLOAT16_VALUE(21.67), SIMDE_FLOAT16_VALUE(-1.62), SIMDE_FLOAT16_VALUE(47.29)}, { { SIMDE_FLOAT16_VALUE(22.99), SIMDE_FLOAT16_VALUE(19.29), SIMDE_FLOAT16_VALUE(21.67), SIMDE_FLOAT16_VALUE(-49.21), SIMDE_FLOAT16_VALUE(48.55), SIMDE_FLOAT16_VALUE(49.51), SIMDE_FLOAT16_VALUE(1.68), SIMDE_FLOAT16_VALUE(4.07) }, { SIMDE_FLOAT16_VALUE(-8.20), SIMDE_FLOAT16_VALUE(5.11), SIMDE_FLOAT16_VALUE(-1.62), SIMDE_FLOAT16_VALUE(-3.87), SIMDE_FLOAT16_VALUE(-20.55), SIMDE_FLOAT16_VALUE(19.44), SIMDE_FLOAT16_VALUE(-49.04), SIMDE_FLOAT16_VALUE(-1.42) }, { SIMDE_FLOAT16_VALUE(22.33), SIMDE_FLOAT16_VALUE(-45.53), SIMDE_FLOAT16_VALUE(47.29), SIMDE_FLOAT16_VALUE(-20.16), SIMDE_FLOAT16_VALUE(-39.51), SIMDE_FLOAT16_VALUE(-20.23), SIMDE_FLOAT16_VALUE(-41.96), SIMDE_FLOAT16_VALUE(-27.75) } } }, { { { SIMDE_FLOAT16_VALUE(-13.98), SIMDE_FLOAT16_VALUE(-15.40), SIMDE_FLOAT16_VALUE(-41.40), SIMDE_FLOAT16_VALUE(-11.10), SIMDE_FLOAT16_VALUE(-0.98), SIMDE_FLOAT16_VALUE(20.30), SIMDE_FLOAT16_VALUE(-21.19), SIMDE_FLOAT16_VALUE(32.22) }, { SIMDE_FLOAT16_VALUE(-29.71), SIMDE_FLOAT16_VALUE(-33.61), SIMDE_FLOAT16_VALUE(-34.96), SIMDE_FLOAT16_VALUE(22.05), SIMDE_FLOAT16_VALUE(-46.85), SIMDE_FLOAT16_VALUE(49.18), SIMDE_FLOAT16_VALUE(29.80), SIMDE_FLOAT16_VALUE(15.12) }, { SIMDE_FLOAT16_VALUE(-48.25), SIMDE_FLOAT16_VALUE(20.21), SIMDE_FLOAT16_VALUE(30.89), SIMDE_FLOAT16_VALUE(-8.00), SIMDE_FLOAT16_VALUE(47.59), SIMDE_FLOAT16_VALUE(-33.30), SIMDE_FLOAT16_VALUE(-17.17), SIMDE_FLOAT16_VALUE(15.96) } }, { SIMDE_FLOAT16_VALUE(-22.71), SIMDE_FLOAT16_VALUE(18.03), SIMDE_FLOAT16_VALUE(-12.62)}, { { SIMDE_FLOAT16_VALUE(-13.98), SIMDE_FLOAT16_VALUE(-15.40), SIMDE_FLOAT16_VALUE(-41.40), SIMDE_FLOAT16_VALUE(-22.71), SIMDE_FLOAT16_VALUE(-0.98), SIMDE_FLOAT16_VALUE(20.30), SIMDE_FLOAT16_VALUE(-21.19), SIMDE_FLOAT16_VALUE(32.22) }, { SIMDE_FLOAT16_VALUE(-29.71), SIMDE_FLOAT16_VALUE(-33.61), SIMDE_FLOAT16_VALUE(-34.96), SIMDE_FLOAT16_VALUE(18.03), SIMDE_FLOAT16_VALUE(-46.85), SIMDE_FLOAT16_VALUE(49.18), SIMDE_FLOAT16_VALUE(29.80), SIMDE_FLOAT16_VALUE(15.12) }, { SIMDE_FLOAT16_VALUE(-48.25), SIMDE_FLOAT16_VALUE(20.21), SIMDE_FLOAT16_VALUE(30.89), SIMDE_FLOAT16_VALUE(-12.62), SIMDE_FLOAT16_VALUE(47.59), SIMDE_FLOAT16_VALUE(-33.30), SIMDE_FLOAT16_VALUE(-17.17), SIMDE_FLOAT16_VALUE(15.96) } } }, { { { SIMDE_FLOAT16_VALUE(-33.16), SIMDE_FLOAT16_VALUE(41.77), SIMDE_FLOAT16_VALUE(0.37), SIMDE_FLOAT16_VALUE(49.97), SIMDE_FLOAT16_VALUE(41.81), SIMDE_FLOAT16_VALUE(-38.26), SIMDE_FLOAT16_VALUE(36.03), SIMDE_FLOAT16_VALUE(-6.12) }, { SIMDE_FLOAT16_VALUE(45.98), SIMDE_FLOAT16_VALUE(33.57), SIMDE_FLOAT16_VALUE(4.26), SIMDE_FLOAT16_VALUE(19.87), SIMDE_FLOAT16_VALUE(6.49), SIMDE_FLOAT16_VALUE(3.23), SIMDE_FLOAT16_VALUE(17.28), SIMDE_FLOAT16_VALUE(-0.70) }, { SIMDE_FLOAT16_VALUE(-45.21), SIMDE_FLOAT16_VALUE(10.70), SIMDE_FLOAT16_VALUE(-30.89), SIMDE_FLOAT16_VALUE(17.48), SIMDE_FLOAT16_VALUE(-18.12), SIMDE_FLOAT16_VALUE(-36.32), SIMDE_FLOAT16_VALUE(12.70), SIMDE_FLOAT16_VALUE(-9.89) } }, { SIMDE_FLOAT16_VALUE(19.50), SIMDE_FLOAT16_VALUE(43.23), SIMDE_FLOAT16_VALUE(-34.14)}, { { SIMDE_FLOAT16_VALUE(-33.16), SIMDE_FLOAT16_VALUE(41.77), SIMDE_FLOAT16_VALUE(0.37), SIMDE_FLOAT16_VALUE(49.97), SIMDE_FLOAT16_VALUE(19.50), SIMDE_FLOAT16_VALUE(-38.26), SIMDE_FLOAT16_VALUE(36.03), SIMDE_FLOAT16_VALUE(-6.12) }, { SIMDE_FLOAT16_VALUE(45.98), SIMDE_FLOAT16_VALUE(33.57), SIMDE_FLOAT16_VALUE(4.26), SIMDE_FLOAT16_VALUE(19.87), SIMDE_FLOAT16_VALUE(43.23), SIMDE_FLOAT16_VALUE(3.23), SIMDE_FLOAT16_VALUE(17.28), SIMDE_FLOAT16_VALUE(-0.70) }, { SIMDE_FLOAT16_VALUE(-45.21), SIMDE_FLOAT16_VALUE(10.70), SIMDE_FLOAT16_VALUE(-30.89), SIMDE_FLOAT16_VALUE(17.48), SIMDE_FLOAT16_VALUE(-34.14), SIMDE_FLOAT16_VALUE(-36.32), SIMDE_FLOAT16_VALUE(12.70), SIMDE_FLOAT16_VALUE(-9.89) } } }, { { { SIMDE_FLOAT16_VALUE(34.35), SIMDE_FLOAT16_VALUE(45.11), SIMDE_FLOAT16_VALUE(-17.38), SIMDE_FLOAT16_VALUE(32.13), SIMDE_FLOAT16_VALUE(-19.58), SIMDE_FLOAT16_VALUE(-5.73), SIMDE_FLOAT16_VALUE(-14.12), SIMDE_FLOAT16_VALUE(-0.42) }, { SIMDE_FLOAT16_VALUE(-17.04), SIMDE_FLOAT16_VALUE(40.80), SIMDE_FLOAT16_VALUE(-45.80), SIMDE_FLOAT16_VALUE(37.28), SIMDE_FLOAT16_VALUE(35.24), SIMDE_FLOAT16_VALUE(40.83), SIMDE_FLOAT16_VALUE(41.86), SIMDE_FLOAT16_VALUE(16.76) }, { SIMDE_FLOAT16_VALUE(44.82), SIMDE_FLOAT16_VALUE(44.21), SIMDE_FLOAT16_VALUE(-16.87), SIMDE_FLOAT16_VALUE(28.04), SIMDE_FLOAT16_VALUE(12.42), SIMDE_FLOAT16_VALUE(-24.77), SIMDE_FLOAT16_VALUE(-2.03), SIMDE_FLOAT16_VALUE(6.16) } }, { SIMDE_FLOAT16_VALUE(24.51), SIMDE_FLOAT16_VALUE(-14.45), SIMDE_FLOAT16_VALUE(-29.20)}, { { SIMDE_FLOAT16_VALUE(34.35), SIMDE_FLOAT16_VALUE(45.11), SIMDE_FLOAT16_VALUE(-17.38), SIMDE_FLOAT16_VALUE(32.13), SIMDE_FLOAT16_VALUE(-19.58), SIMDE_FLOAT16_VALUE(24.51), SIMDE_FLOAT16_VALUE(-14.12), SIMDE_FLOAT16_VALUE(-0.42) }, { SIMDE_FLOAT16_VALUE(-17.04), SIMDE_FLOAT16_VALUE(40.80), SIMDE_FLOAT16_VALUE(-45.80), SIMDE_FLOAT16_VALUE(37.28), SIMDE_FLOAT16_VALUE(35.24), SIMDE_FLOAT16_VALUE(-14.45), SIMDE_FLOAT16_VALUE(41.86), SIMDE_FLOAT16_VALUE(16.76) }, { SIMDE_FLOAT16_VALUE(44.82), SIMDE_FLOAT16_VALUE(44.21), SIMDE_FLOAT16_VALUE(-16.87), SIMDE_FLOAT16_VALUE(28.04), SIMDE_FLOAT16_VALUE(12.42), SIMDE_FLOAT16_VALUE(-29.20), SIMDE_FLOAT16_VALUE(-2.03), SIMDE_FLOAT16_VALUE(6.16) } } }, { { { SIMDE_FLOAT16_VALUE(-19.86), SIMDE_FLOAT16_VALUE(-49.12), SIMDE_FLOAT16_VALUE(-43.11), SIMDE_FLOAT16_VALUE(6.61), SIMDE_FLOAT16_VALUE(-14.42), SIMDE_FLOAT16_VALUE(-26.68), SIMDE_FLOAT16_VALUE(-14.21), SIMDE_FLOAT16_VALUE(-19.62) }, { SIMDE_FLOAT16_VALUE(2.80), SIMDE_FLOAT16_VALUE(21.66), SIMDE_FLOAT16_VALUE(-36.49), SIMDE_FLOAT16_VALUE(-15.12), SIMDE_FLOAT16_VALUE(-49.41), SIMDE_FLOAT16_VALUE(-26.19), SIMDE_FLOAT16_VALUE(-24.23), SIMDE_FLOAT16_VALUE(36.09) }, { SIMDE_FLOAT16_VALUE(10.26), SIMDE_FLOAT16_VALUE(31.20), SIMDE_FLOAT16_VALUE(-42.59), SIMDE_FLOAT16_VALUE(22.36), SIMDE_FLOAT16_VALUE(-1.95), SIMDE_FLOAT16_VALUE(-8.53), SIMDE_FLOAT16_VALUE(37.02), SIMDE_FLOAT16_VALUE(-47.32) } }, { SIMDE_FLOAT16_VALUE(-2.66), SIMDE_FLOAT16_VALUE(-28.19), SIMDE_FLOAT16_VALUE(-49.39)}, { { SIMDE_FLOAT16_VALUE(-19.86), SIMDE_FLOAT16_VALUE(-49.12), SIMDE_FLOAT16_VALUE(-43.11), SIMDE_FLOAT16_VALUE(6.61), SIMDE_FLOAT16_VALUE(-14.42), SIMDE_FLOAT16_VALUE(-26.68), SIMDE_FLOAT16_VALUE(-2.66), SIMDE_FLOAT16_VALUE(-19.62) }, { SIMDE_FLOAT16_VALUE(2.80), SIMDE_FLOAT16_VALUE(21.66), SIMDE_FLOAT16_VALUE(-36.49), SIMDE_FLOAT16_VALUE(-15.12), SIMDE_FLOAT16_VALUE(-49.41), SIMDE_FLOAT16_VALUE(-26.19), SIMDE_FLOAT16_VALUE(-28.19), SIMDE_FLOAT16_VALUE(36.09) }, { SIMDE_FLOAT16_VALUE(10.26), SIMDE_FLOAT16_VALUE(31.20), SIMDE_FLOAT16_VALUE(-42.59), SIMDE_FLOAT16_VALUE(22.36), SIMDE_FLOAT16_VALUE(-1.95), SIMDE_FLOAT16_VALUE(-8.53), SIMDE_FLOAT16_VALUE(-49.39), SIMDE_FLOAT16_VALUE(-47.32) } } }, { { { SIMDE_FLOAT16_VALUE(0.30), SIMDE_FLOAT16_VALUE(6.73), SIMDE_FLOAT16_VALUE(-6.28), SIMDE_FLOAT16_VALUE(35.22), SIMDE_FLOAT16_VALUE(-5.78), SIMDE_FLOAT16_VALUE(-32.42), SIMDE_FLOAT16_VALUE(-25.16), SIMDE_FLOAT16_VALUE(14.50) }, { SIMDE_FLOAT16_VALUE(9.20), SIMDE_FLOAT16_VALUE(15.26), SIMDE_FLOAT16_VALUE(14.27), SIMDE_FLOAT16_VALUE(24.06), SIMDE_FLOAT16_VALUE(9.76), SIMDE_FLOAT16_VALUE(-32.84), SIMDE_FLOAT16_VALUE(23.54), SIMDE_FLOAT16_VALUE(-38.60) }, { SIMDE_FLOAT16_VALUE(-2.89), SIMDE_FLOAT16_VALUE(-12.52), SIMDE_FLOAT16_VALUE(-24.22), SIMDE_FLOAT16_VALUE(45.18), SIMDE_FLOAT16_VALUE(-49.48), SIMDE_FLOAT16_VALUE(-38.06), SIMDE_FLOAT16_VALUE(0.89), SIMDE_FLOAT16_VALUE(-2.25) } }, { SIMDE_FLOAT16_VALUE(2.18), SIMDE_FLOAT16_VALUE(35.99), SIMDE_FLOAT16_VALUE(26.18)}, { { SIMDE_FLOAT16_VALUE(0.30), SIMDE_FLOAT16_VALUE(6.73), SIMDE_FLOAT16_VALUE(-6.28), SIMDE_FLOAT16_VALUE(35.22), SIMDE_FLOAT16_VALUE(-5.78), SIMDE_FLOAT16_VALUE(-32.42), SIMDE_FLOAT16_VALUE(-25.16), SIMDE_FLOAT16_VALUE(2.18) }, { SIMDE_FLOAT16_VALUE(9.20), SIMDE_FLOAT16_VALUE(15.26), SIMDE_FLOAT16_VALUE(14.27), SIMDE_FLOAT16_VALUE(24.06), SIMDE_FLOAT16_VALUE(9.76), SIMDE_FLOAT16_VALUE(-32.84), SIMDE_FLOAT16_VALUE(23.54), SIMDE_FLOAT16_VALUE(35.99) }, { SIMDE_FLOAT16_VALUE(-2.89), SIMDE_FLOAT16_VALUE(-12.52), SIMDE_FLOAT16_VALUE(-24.22), SIMDE_FLOAT16_VALUE(45.18), SIMDE_FLOAT16_VALUE(-49.48), SIMDE_FLOAT16_VALUE(-38.06), SIMDE_FLOAT16_VALUE(0.89), SIMDE_FLOAT16_VALUE(26.18) } } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_float16x8x3_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]); src.val[2] = simde_vld1q_f16(test_vec[i].src[2]); SIMDE_CONSTIFY_8_(simde_vld3q_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]); expected.val[2] = simde_vld1q_f16(test_vec[i].r[2]); simde_test_arm_neon_assert_equal_f16x8(r.val[0], expected.val[0], INT_MAX); simde_test_arm_neon_assert_equal_f16x8(r.val[1], expected.val[1], INT_MAX); simde_test_arm_neon_assert_equal_f16x8(r.val[2], expected.val[2], INT_MAX); } return 0; } static int test_simde_vld3q_lane_f32 (SIMDE_MUNIT_TEST_ARGS) { static const struct { simde_float32_t src[3][4]; simde_float32_t buf[3]; simde_float32_t r[3][4]; } test_vec[] = { { { { SIMDE_FLOAT32_C(1442.30), SIMDE_FLOAT32_C(446.63), SIMDE_FLOAT32_C(2243.75), SIMDE_FLOAT32_C(-2499.62) }, { SIMDE_FLOAT32_C(-1210.23), SIMDE_FLOAT32_C(1076.44), SIMDE_FLOAT32_C(304.40), SIMDE_FLOAT32_C(4898.02) }, { SIMDE_FLOAT32_C(-4476.84), SIMDE_FLOAT32_C(808.69), SIMDE_FLOAT32_C(-1468.41), SIMDE_FLOAT32_C(4180.77) } }, { SIMDE_FLOAT32_C(1068.72), SIMDE_FLOAT32_C(-3535.90), SIMDE_FLOAT32_C(-2034.07)}, { { SIMDE_FLOAT32_C(1068.72), SIMDE_FLOAT32_C(446.63), SIMDE_FLOAT32_C(2243.75), SIMDE_FLOAT32_C(-2499.62) }, { SIMDE_FLOAT32_C(-3535.90), SIMDE_FLOAT32_C(1076.44), SIMDE_FLOAT32_C(304.40), SIMDE_FLOAT32_C(4898.02) }, { SIMDE_FLOAT32_C(-2034.07), SIMDE_FLOAT32_C(808.69), SIMDE_FLOAT32_C(-1468.41), SIMDE_FLOAT32_C(4180.77) } } }, { { { SIMDE_FLOAT32_C(2644.49), SIMDE_FLOAT32_C(4971.83), SIMDE_FLOAT32_C(861.80), SIMDE_FLOAT32_C(3165.61) }, { SIMDE_FLOAT32_C(981.55), SIMDE_FLOAT32_C(4193.07), SIMDE_FLOAT32_C(4921.81), SIMDE_FLOAT32_C(-254.58) }, { SIMDE_FLOAT32_C(-1820.81), SIMDE_FLOAT32_C(-2716.98), SIMDE_FLOAT32_C(-4407.29), SIMDE_FLOAT32_C(3037.96) } }, { SIMDE_FLOAT32_C(1589.12), SIMDE_FLOAT32_C(-3745.39), SIMDE_FLOAT32_C(-1432.03)}, { { SIMDE_FLOAT32_C(2644.49), SIMDE_FLOAT32_C(1589.12), SIMDE_FLOAT32_C(861.80), SIMDE_FLOAT32_C(3165.61) }, { SIMDE_FLOAT32_C(981.55), SIMDE_FLOAT32_C(-3745.39), SIMDE_FLOAT32_C(4921.81), SIMDE_FLOAT32_C(-254.58) }, { SIMDE_FLOAT32_C(-1820.81), SIMDE_FLOAT32_C(-1432.03), SIMDE_FLOAT32_C(-4407.29), SIMDE_FLOAT32_C(3037.96) } } }, { { { SIMDE_FLOAT32_C(103.78), SIMDE_FLOAT32_C(4622.34), SIMDE_FLOAT32_C(2752.48), SIMDE_FLOAT32_C(-1587.27) }, { SIMDE_FLOAT32_C(-3510.64), SIMDE_FLOAT32_C(-3612.38), SIMDE_FLOAT32_C(-3439.33), SIMDE_FLOAT32_C(3770.62) }, { SIMDE_FLOAT32_C(-2761.21), SIMDE_FLOAT32_C(4309.89), SIMDE_FLOAT32_C(-1652.27), SIMDE_FLOAT32_C(-3021.97) } }, { SIMDE_FLOAT32_C(3900.94), SIMDE_FLOAT32_C(3824.24), SIMDE_FLOAT32_C(4471.20)}, { { SIMDE_FLOAT32_C(103.78), SIMDE_FLOAT32_C(4622.34), SIMDE_FLOAT32_C(3900.94), SIMDE_FLOAT32_C(-1587.27) }, { SIMDE_FLOAT32_C(-3510.64), SIMDE_FLOAT32_C(-3612.38), SIMDE_FLOAT32_C(3824.24), SIMDE_FLOAT32_C(3770.62) }, { SIMDE_FLOAT32_C(-2761.21), SIMDE_FLOAT32_C(4309.89), SIMDE_FLOAT32_C(4471.20), SIMDE_FLOAT32_C(-3021.97) } } }, { { { SIMDE_FLOAT32_C(4335.85), SIMDE_FLOAT32_C(-509.93), SIMDE_FLOAT32_C(3599.27), SIMDE_FLOAT32_C(3192.52) }, { SIMDE_FLOAT32_C(3953.94), SIMDE_FLOAT32_C(-3940.66), SIMDE_FLOAT32_C(-0.37), SIMDE_FLOAT32_C(-529.08) }, { SIMDE_FLOAT32_C(3260.04), SIMDE_FLOAT32_C(1545.62), SIMDE_FLOAT32_C(-1906.87), SIMDE_FLOAT32_C(3771.80) } }, { SIMDE_FLOAT32_C(2065.71), SIMDE_FLOAT32_C(1441.87), SIMDE_FLOAT32_C(-3831.46)}, { { SIMDE_FLOAT32_C(4335.85), SIMDE_FLOAT32_C(-509.93), SIMDE_FLOAT32_C(3599.27), SIMDE_FLOAT32_C(2065.71) }, { SIMDE_FLOAT32_C(3953.94), SIMDE_FLOAT32_C(-3940.66), SIMDE_FLOAT32_C(-0.37), SIMDE_FLOAT32_C(1441.87) }, { SIMDE_FLOAT32_C(3260.04), SIMDE_FLOAT32_C(1545.62), SIMDE_FLOAT32_C(-1906.87), SIMDE_FLOAT32_C(-3831.46) } } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_float32x4x3_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]); src.val[2] = simde_vld1q_f32(test_vec[i].src[2]); SIMDE_CONSTIFY_4_(simde_vld3q_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]); expected.val[2] = simde_vld1q_f32(test_vec[i].r[2]); simde_test_arm_neon_assert_equal_f32x4(r.val[0], expected.val[0], INT_MAX); simde_test_arm_neon_assert_equal_f32x4(r.val[1], expected.val[1], INT_MAX); simde_test_arm_neon_assert_equal_f32x4(r.val[2], expected.val[2], INT_MAX); } return 0; } static int test_simde_vld3q_lane_f64 (SIMDE_MUNIT_TEST_ARGS) { static const struct { simde_float64_t src[3][2]; simde_float64_t buf[3]; simde_float64_t r[3][2]; } test_vec[] = { { { { SIMDE_FLOAT64_C(332972.58), SIMDE_FLOAT64_C(-165510.51) }, { SIMDE_FLOAT64_C(473205.46), SIMDE_FLOAT64_C(-167720.34) }, { SIMDE_FLOAT64_C(203052.58), SIMDE_FLOAT64_C(-475421.32) } }, { SIMDE_FLOAT64_C(-417188.68), SIMDE_FLOAT64_C(-109291.82), SIMDE_FLOAT64_C(-140556.76)}, { { SIMDE_FLOAT64_C(-417188.68), SIMDE_FLOAT64_C(-165510.51) }, { SIMDE_FLOAT64_C(-109291.82), SIMDE_FLOAT64_C(-167720.34) }, { SIMDE_FLOAT64_C(-140556.76), SIMDE_FLOAT64_C(-475421.32) } } }, { { { SIMDE_FLOAT64_C(-480339.81), SIMDE_FLOAT64_C(-50482.68) }, { SIMDE_FLOAT64_C(214690.23), SIMDE_FLOAT64_C(242650.32) }, { SIMDE_FLOAT64_C(-234163.45), SIMDE_FLOAT64_C(-301439.99) } }, { SIMDE_FLOAT64_C(-402905.00), SIMDE_FLOAT64_C(-486035.94), SIMDE_FLOAT64_C(491188.01)}, { { SIMDE_FLOAT64_C(-480339.81), SIMDE_FLOAT64_C(-402905.00) }, { SIMDE_FLOAT64_C(214690.23), SIMDE_FLOAT64_C(-486035.94) }, { SIMDE_FLOAT64_C(-234163.45), SIMDE_FLOAT64_C(491188.01) } } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_float64x2x3_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]); src.val[2] = simde_vld1q_f64(test_vec[i].src[2]); SIMDE_CONSTIFY_2_(simde_vld3q_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]); expected.val[2] = simde_vld1q_f64(test_vec[i].r[2]); simde_test_arm_neon_assert_equal_f64x2(r.val[0], expected.val[0], INT_MAX); simde_test_arm_neon_assert_equal_f64x2(r.val[1], expected.val[1], INT_MAX); simde_test_arm_neon_assert_equal_f64x2(r.val[2], expected.val[2], INT_MAX); } return 0; } static int test_simde_vld3_lane_p8 (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { simde_poly8_t src[3][8]; simde_poly8_t buf[3]; simde_poly8_t r[3][8]; } test_vec[] = { { { { SIMDE_POLY8_C(75), SIMDE_POLY8_C(35), SIMDE_POLY8_C(26), SIMDE_POLY8_C(54), SIMDE_POLY8_C(1), SIMDE_POLY8_C(45), SIMDE_POLY8_C(13), SIMDE_POLY8_C(16) }, { SIMDE_POLY8_C(71), SIMDE_POLY8_C(47), SIMDE_POLY8_C(17), SIMDE_POLY8_C(80), SIMDE_POLY8_C(66), SIMDE_POLY8_C(34), SIMDE_POLY8_C(97), SIMDE_POLY8_C(20) }, { SIMDE_POLY8_C(41), SIMDE_POLY8_C(28), SIMDE_POLY8_C(70), SIMDE_POLY8_C(58), SIMDE_POLY8_C(81), SIMDE_POLY8_C(47), SIMDE_POLY8_C(7), SIMDE_POLY8_C(80) } }, { SIMDE_POLY8_C(92), SIMDE_POLY8_C(95), SIMDE_POLY8_C(50)}, { { SIMDE_POLY8_C(92), SIMDE_POLY8_C(35), SIMDE_POLY8_C(26), SIMDE_POLY8_C(54), SIMDE_POLY8_C(1), SIMDE_POLY8_C(45), SIMDE_POLY8_C(13), SIMDE_POLY8_C(16) }, { SIMDE_POLY8_C(95), SIMDE_POLY8_C(47), SIMDE_POLY8_C(17), SIMDE_POLY8_C(80), SIMDE_POLY8_C(66), SIMDE_POLY8_C(34), SIMDE_POLY8_C(97), SIMDE_POLY8_C(20) }, { SIMDE_POLY8_C(50), SIMDE_POLY8_C(28), SIMDE_POLY8_C(70), SIMDE_POLY8_C(58), SIMDE_POLY8_C(81), SIMDE_POLY8_C(47), SIMDE_POLY8_C(7), SIMDE_POLY8_C(80) } } }, { { { SIMDE_POLY8_C(42), SIMDE_POLY8_C(96), SIMDE_POLY8_C(15), SIMDE_POLY8_C(5), SIMDE_POLY8_C(54), SIMDE_POLY8_C(1), SIMDE_POLY8_C(68), SIMDE_POLY8_C(93) }, { SIMDE_POLY8_C(5), SIMDE_POLY8_C(62), SIMDE_POLY8_C(9), SIMDE_POLY8_C(30), SIMDE_POLY8_C(18), SIMDE_POLY8_C(45), SIMDE_POLY8_C(2), SIMDE_POLY8_C(28) }, { SIMDE_POLY8_C(65), SIMDE_POLY8_C(82), SIMDE_POLY8_C(30), SIMDE_POLY8_C(37), SIMDE_POLY8_C(18), SIMDE_POLY8_C(53), SIMDE_POLY8_C(59), SIMDE_POLY8_C(73) } }, { SIMDE_POLY8_C(45), SIMDE_POLY8_C(63), SIMDE_POLY8_C(47)}, { { SIMDE_POLY8_C(42), SIMDE_POLY8_C(45), SIMDE_POLY8_C(15), SIMDE_POLY8_C(5), SIMDE_POLY8_C(54), SIMDE_POLY8_C(1), SIMDE_POLY8_C(68), SIMDE_POLY8_C(93) }, { SIMDE_POLY8_C(5), SIMDE_POLY8_C(63), SIMDE_POLY8_C(9), SIMDE_POLY8_C(30), SIMDE_POLY8_C(18), SIMDE_POLY8_C(45), SIMDE_POLY8_C(2), SIMDE_POLY8_C(28) }, { SIMDE_POLY8_C(65), SIMDE_POLY8_C(47), SIMDE_POLY8_C(30), SIMDE_POLY8_C(37), SIMDE_POLY8_C(18), SIMDE_POLY8_C(53), SIMDE_POLY8_C(59), SIMDE_POLY8_C(73) } } }, { { { SIMDE_POLY8_C(5), SIMDE_POLY8_C(76), SIMDE_POLY8_C(80), SIMDE_POLY8_C(97), SIMDE_POLY8_C(33), SIMDE_POLY8_C(72), SIMDE_POLY8_C(43), SIMDE_POLY8_C(79) }, { SIMDE_POLY8_C(75), SIMDE_POLY8_C(82), SIMDE_POLY8_C(0), SIMDE_POLY8_C(67), SIMDE_POLY8_C(37), SIMDE_POLY8_C(5), SIMDE_POLY8_C(72), SIMDE_POLY8_C(27) }, { SIMDE_POLY8_C(1), SIMDE_POLY8_C(63), SIMDE_POLY8_C(20), SIMDE_POLY8_C(19), SIMDE_POLY8_C(83), SIMDE_POLY8_C(8), SIMDE_POLY8_C(44), SIMDE_POLY8_C(57) } }, { SIMDE_POLY8_C(63), SIMDE_POLY8_C(85), SIMDE_POLY8_C(98)}, { { SIMDE_POLY8_C(5), SIMDE_POLY8_C(76), SIMDE_POLY8_C(63), SIMDE_POLY8_C(97), SIMDE_POLY8_C(33), SIMDE_POLY8_C(72), SIMDE_POLY8_C(43), SIMDE_POLY8_C(79) }, { SIMDE_POLY8_C(75), SIMDE_POLY8_C(82), SIMDE_POLY8_C(85), SIMDE_POLY8_C(67), SIMDE_POLY8_C(37), SIMDE_POLY8_C(5), SIMDE_POLY8_C(72), SIMDE_POLY8_C(27) }, { SIMDE_POLY8_C(1), SIMDE_POLY8_C(63), SIMDE_POLY8_C(98), SIMDE_POLY8_C(19), SIMDE_POLY8_C(83), SIMDE_POLY8_C(8), SIMDE_POLY8_C(44), SIMDE_POLY8_C(57) } } }, { { { SIMDE_POLY8_C(72), SIMDE_POLY8_C(56), SIMDE_POLY8_C(65), SIMDE_POLY8_C(46), SIMDE_POLY8_C(4), SIMDE_POLY8_C(16), SIMDE_POLY8_C(78), SIMDE_POLY8_C(1) }, { SIMDE_POLY8_C(18), SIMDE_POLY8_C(48), SIMDE_POLY8_C(95), SIMDE_POLY8_C(22), SIMDE_POLY8_C(70), SIMDE_POLY8_C(44), SIMDE_POLY8_C(38), SIMDE_POLY8_C(3) }, { SIMDE_POLY8_C(23), SIMDE_POLY8_C(7), SIMDE_POLY8_C(81), SIMDE_POLY8_C(1), SIMDE_POLY8_C(25), SIMDE_POLY8_C(17), SIMDE_POLY8_C(17), SIMDE_POLY8_C(41) } }, { SIMDE_POLY8_C(60), SIMDE_POLY8_C(43), SIMDE_POLY8_C(32)}, { { SIMDE_POLY8_C(72), SIMDE_POLY8_C(56), SIMDE_POLY8_C(65), SIMDE_POLY8_C(60), SIMDE_POLY8_C(4), SIMDE_POLY8_C(16), SIMDE_POLY8_C(78), SIMDE_POLY8_C(1) }, { SIMDE_POLY8_C(18), SIMDE_POLY8_C(48), SIMDE_POLY8_C(95), SIMDE_POLY8_C(43), SIMDE_POLY8_C(70), SIMDE_POLY8_C(44), SIMDE_POLY8_C(38), SIMDE_POLY8_C(3) }, { SIMDE_POLY8_C(23), SIMDE_POLY8_C(7), SIMDE_POLY8_C(81), SIMDE_POLY8_C(32), SIMDE_POLY8_C(25), SIMDE_POLY8_C(17), SIMDE_POLY8_C(17), SIMDE_POLY8_C(41) } } }, { { { SIMDE_POLY8_C(90), SIMDE_POLY8_C(17), SIMDE_POLY8_C(65), SIMDE_POLY8_C(25), SIMDE_POLY8_C(72), SIMDE_POLY8_C(23), SIMDE_POLY8_C(54), SIMDE_POLY8_C(47) }, { SIMDE_POLY8_C(59), SIMDE_POLY8_C(82), SIMDE_POLY8_C(35), SIMDE_POLY8_C(91), SIMDE_POLY8_C(46), SIMDE_POLY8_C(26), SIMDE_POLY8_C(40), SIMDE_POLY8_C(79) }, { SIMDE_POLY8_C(73), SIMDE_POLY8_C(71), SIMDE_POLY8_C(80), SIMDE_POLY8_C(13), SIMDE_POLY8_C(88), SIMDE_POLY8_C(62), SIMDE_POLY8_C(41), SIMDE_POLY8_C(0) } }, { SIMDE_POLY8_C(86), SIMDE_POLY8_C(2), SIMDE_POLY8_C(23)}, { { SIMDE_POLY8_C(90), SIMDE_POLY8_C(17), SIMDE_POLY8_C(65), SIMDE_POLY8_C(25), SIMDE_POLY8_C(86), SIMDE_POLY8_C(23), SIMDE_POLY8_C(54), SIMDE_POLY8_C(47) }, { SIMDE_POLY8_C(59), SIMDE_POLY8_C(82), SIMDE_POLY8_C(35), SIMDE_POLY8_C(91), SIMDE_POLY8_C(2), SIMDE_POLY8_C(26), SIMDE_POLY8_C(40), SIMDE_POLY8_C(79) }, { SIMDE_POLY8_C(73), SIMDE_POLY8_C(71), SIMDE_POLY8_C(80), SIMDE_POLY8_C(13), SIMDE_POLY8_C(23), SIMDE_POLY8_C(62), SIMDE_POLY8_C(41), SIMDE_POLY8_C(0) } } }, { { { SIMDE_POLY8_C(9), SIMDE_POLY8_C(4), SIMDE_POLY8_C(48), SIMDE_POLY8_C(49), SIMDE_POLY8_C(13), SIMDE_POLY8_C(76), SIMDE_POLY8_C(28), SIMDE_POLY8_C(38) }, { SIMDE_POLY8_C(80), SIMDE_POLY8_C(15), SIMDE_POLY8_C(59), SIMDE_POLY8_C(29), SIMDE_POLY8_C(83), SIMDE_POLY8_C(69), SIMDE_POLY8_C(55), SIMDE_POLY8_C(2) }, { SIMDE_POLY8_C(12), SIMDE_POLY8_C(53), SIMDE_POLY8_C(98), SIMDE_POLY8_C(65), SIMDE_POLY8_C(68), SIMDE_POLY8_C(99), SIMDE_POLY8_C(58), SIMDE_POLY8_C(18) } }, { SIMDE_POLY8_C(49), SIMDE_POLY8_C(77), SIMDE_POLY8_C(71)}, { { SIMDE_POLY8_C(9), SIMDE_POLY8_C(4), SIMDE_POLY8_C(48), SIMDE_POLY8_C(49), SIMDE_POLY8_C(13), SIMDE_POLY8_C(49), SIMDE_POLY8_C(28), SIMDE_POLY8_C(38) }, { SIMDE_POLY8_C(80), SIMDE_POLY8_C(15), SIMDE_POLY8_C(59), SIMDE_POLY8_C(29), SIMDE_POLY8_C(83), SIMDE_POLY8_C(77), SIMDE_POLY8_C(55), SIMDE_POLY8_C(2) }, { SIMDE_POLY8_C(12), SIMDE_POLY8_C(53), SIMDE_POLY8_C(98), SIMDE_POLY8_C(65), SIMDE_POLY8_C(68), SIMDE_POLY8_C(71), SIMDE_POLY8_C(58), SIMDE_POLY8_C(18) } } }, { { { SIMDE_POLY8_C(21), SIMDE_POLY8_C(55), SIMDE_POLY8_C(12), SIMDE_POLY8_C(49), SIMDE_POLY8_C(97), SIMDE_POLY8_C(12), SIMDE_POLY8_C(16), SIMDE_POLY8_C(51) }, { SIMDE_POLY8_C(90), SIMDE_POLY8_C(34), SIMDE_POLY8_C(48), SIMDE_POLY8_C(61), SIMDE_POLY8_C(90), SIMDE_POLY8_C(4), SIMDE_POLY8_C(74), SIMDE_POLY8_C(53) }, { SIMDE_POLY8_C(44), SIMDE_POLY8_C(38), SIMDE_POLY8_C(5), SIMDE_POLY8_C(81), SIMDE_POLY8_C(71), SIMDE_POLY8_C(12), SIMDE_POLY8_C(0), SIMDE_POLY8_C(21) } }, { SIMDE_POLY8_C(61), SIMDE_POLY8_C(40), SIMDE_POLY8_C(87)}, { { SIMDE_POLY8_C(21), SIMDE_POLY8_C(55), SIMDE_POLY8_C(12), SIMDE_POLY8_C(49), SIMDE_POLY8_C(97), SIMDE_POLY8_C(12), SIMDE_POLY8_C(61), SIMDE_POLY8_C(51) }, { SIMDE_POLY8_C(90), SIMDE_POLY8_C(34), SIMDE_POLY8_C(48), SIMDE_POLY8_C(61), SIMDE_POLY8_C(90), SIMDE_POLY8_C(4), SIMDE_POLY8_C(40), SIMDE_POLY8_C(53) }, { SIMDE_POLY8_C(44), SIMDE_POLY8_C(38), SIMDE_POLY8_C(5), SIMDE_POLY8_C(81), SIMDE_POLY8_C(71), SIMDE_POLY8_C(12), SIMDE_POLY8_C(87), SIMDE_POLY8_C(21) } } }, { { { SIMDE_POLY8_C(95), SIMDE_POLY8_C(70), SIMDE_POLY8_C(79), SIMDE_POLY8_C(1), SIMDE_POLY8_C(27), SIMDE_POLY8_C(95), SIMDE_POLY8_C(83), SIMDE_POLY8_C(31) }, { SIMDE_POLY8_C(45), SIMDE_POLY8_C(24), SIMDE_POLY8_C(38), SIMDE_POLY8_C(76), SIMDE_POLY8_C(85), SIMDE_POLY8_C(61), SIMDE_POLY8_C(59), SIMDE_POLY8_C(71) }, { SIMDE_POLY8_C(7), SIMDE_POLY8_C(7), SIMDE_POLY8_C(22), SIMDE_POLY8_C(38), SIMDE_POLY8_C(73), SIMDE_POLY8_C(72), SIMDE_POLY8_C(79), SIMDE_POLY8_C(43) } }, { SIMDE_POLY8_C(9), SIMDE_POLY8_C(96), SIMDE_POLY8_C(17)}, { { SIMDE_POLY8_C(95), SIMDE_POLY8_C(70), SIMDE_POLY8_C(79), SIMDE_POLY8_C(1), SIMDE_POLY8_C(27), SIMDE_POLY8_C(95), SIMDE_POLY8_C(83), SIMDE_POLY8_C(9) }, { SIMDE_POLY8_C(45), SIMDE_POLY8_C(24), SIMDE_POLY8_C(38), SIMDE_POLY8_C(76), SIMDE_POLY8_C(85), SIMDE_POLY8_C(61), SIMDE_POLY8_C(59), SIMDE_POLY8_C(96) }, { SIMDE_POLY8_C(7), SIMDE_POLY8_C(7), SIMDE_POLY8_C(22), SIMDE_POLY8_C(38), SIMDE_POLY8_C(73), SIMDE_POLY8_C(72), SIMDE_POLY8_C(79), SIMDE_POLY8_C(17) } } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_poly8x8x3_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]); src.val[2] = simde_vld1_p8(test_vec[i].src[2]); SIMDE_CONSTIFY_8_(simde_vld3_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]); expected.val[2] = simde_vld1_p8(test_vec[i].r[2]); simde_test_arm_neon_assert_equal_p8x8(r.val[0], expected.val[0]); simde_test_arm_neon_assert_equal_p8x8(r.val[1], expected.val[1]); simde_test_arm_neon_assert_equal_p8x8(r.val[2], expected.val[2]); } return 0; #else for (int i = 0 ; i < 8 ; i++) { simde_poly8x8x3_t src = simde_test_arm_neon_random_p8x8x3(); simde_poly8_t buf[3]; simde_poly8x8x3_t r; simde_test_arm_neon_write_p8x8x3(2, src, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_random_memory(3, HEDLEY_REINTERPRET_CAST(uint8_t*, buf)); simde_test_codegen_write_vp8(2, 3, buf, SIMDE_TEST_VEC_POS_MIDDLE); SIMDE_CONSTIFY_8_(simde_vld3_lane_p8, r, (HEDLEY_UNREACHABLE(), r), i, buf, src); simde_test_arm_neon_write_p8x8x3(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_vld3_lane_p16 (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { simde_poly16_t src[3][4]; simde_poly16_t buf[3]; simde_poly16_t r[3][4]; } test_vec[] = { { { { SIMDE_POLY16_C(6015), SIMDE_POLY16_C(2114), SIMDE_POLY16_C(9985), SIMDE_POLY16_C(6732) }, { SIMDE_POLY16_C(8774), SIMDE_POLY16_C(5943), SIMDE_POLY16_C(9952), SIMDE_POLY16_C(6251) }, { SIMDE_POLY16_C(7677), SIMDE_POLY16_C(4431), SIMDE_POLY16_C(8936), SIMDE_POLY16_C(5217) } }, { SIMDE_POLY16_C(6123), SIMDE_POLY16_C(8122), SIMDE_POLY16_C(6028)}, { { SIMDE_POLY16_C(6123), SIMDE_POLY16_C(2114), SIMDE_POLY16_C(9985), SIMDE_POLY16_C(6732) }, { SIMDE_POLY16_C(8122), SIMDE_POLY16_C(5943), SIMDE_POLY16_C(9952), SIMDE_POLY16_C(6251) }, { SIMDE_POLY16_C(6028), SIMDE_POLY16_C(4431), SIMDE_POLY16_C(8936), SIMDE_POLY16_C(5217) } } }, { { { SIMDE_POLY16_C(1502), SIMDE_POLY16_C(4900), SIMDE_POLY16_C(3595), SIMDE_POLY16_C(5262) }, { SIMDE_POLY16_C(8144), SIMDE_POLY16_C(1060), SIMDE_POLY16_C(6932), SIMDE_POLY16_C(5912) }, { SIMDE_POLY16_C(6252), SIMDE_POLY16_C(4564), SIMDE_POLY16_C(7952), SIMDE_POLY16_C(4773) } }, { SIMDE_POLY16_C(8849), SIMDE_POLY16_C(6285), SIMDE_POLY16_C(845)}, { { SIMDE_POLY16_C(1502), SIMDE_POLY16_C(8849), SIMDE_POLY16_C(3595), SIMDE_POLY16_C(5262) }, { SIMDE_POLY16_C(8144), SIMDE_POLY16_C(6285), SIMDE_POLY16_C(6932), SIMDE_POLY16_C(5912) }, { SIMDE_POLY16_C(6252), SIMDE_POLY16_C(845), SIMDE_POLY16_C(7952), SIMDE_POLY16_C(4773) } } }, { { { SIMDE_POLY16_C(8789), SIMDE_POLY16_C(6109), SIMDE_POLY16_C(2590), SIMDE_POLY16_C(503) }, { SIMDE_POLY16_C(5135), SIMDE_POLY16_C(1328), SIMDE_POLY16_C(5106), SIMDE_POLY16_C(3566) }, { SIMDE_POLY16_C(6125), SIMDE_POLY16_C(5630), SIMDE_POLY16_C(1661), SIMDE_POLY16_C(5502) } }, { SIMDE_POLY16_C(7329), SIMDE_POLY16_C(958), SIMDE_POLY16_C(9522)}, { { SIMDE_POLY16_C(8789), SIMDE_POLY16_C(6109), SIMDE_POLY16_C(7329), SIMDE_POLY16_C(503) }, { SIMDE_POLY16_C(5135), SIMDE_POLY16_C(1328), SIMDE_POLY16_C(958), SIMDE_POLY16_C(3566) }, { SIMDE_POLY16_C(6125), SIMDE_POLY16_C(5630), SIMDE_POLY16_C(9522), SIMDE_POLY16_C(5502) } } }, { { { SIMDE_POLY16_C(237), SIMDE_POLY16_C(4662), SIMDE_POLY16_C(2239), SIMDE_POLY16_C(7486) }, { SIMDE_POLY16_C(9269), SIMDE_POLY16_C(4261), SIMDE_POLY16_C(1015), SIMDE_POLY16_C(4021) }, { SIMDE_POLY16_C(8255), SIMDE_POLY16_C(239), SIMDE_POLY16_C(9693), SIMDE_POLY16_C(2843) } }, { SIMDE_POLY16_C(2785), SIMDE_POLY16_C(9518), SIMDE_POLY16_C(5622)}, { { SIMDE_POLY16_C(237), SIMDE_POLY16_C(4662), SIMDE_POLY16_C(2239), SIMDE_POLY16_C(2785) }, { SIMDE_POLY16_C(9269), SIMDE_POLY16_C(4261), SIMDE_POLY16_C(1015), SIMDE_POLY16_C(9518) }, { SIMDE_POLY16_C(8255), SIMDE_POLY16_C(239), SIMDE_POLY16_C(9693), SIMDE_POLY16_C(5622) } } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_poly16x4x3_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]); src.val[2] = simde_vld1_p16(test_vec[i].src[2]); SIMDE_CONSTIFY_4_(simde_vld3_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]); expected.val[2] = simde_vld1_p16(test_vec[i].r[2]); simde_test_arm_neon_assert_equal_p16x4(r.val[0], expected.val[0]); simde_test_arm_neon_assert_equal_p16x4(r.val[1], expected.val[1]); simde_test_arm_neon_assert_equal_p16x4(r.val[2], expected.val[2]); } return 0; #else for (int i = 0 ; i < 4 ; i++) { simde_poly16x4x3_t src = simde_test_arm_neon_random_p16x4x3(); simde_poly16_t buf[3]; simde_poly16x4x3_t r; simde_test_arm_neon_write_p16x4x3(2, src, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_random_memory(6, HEDLEY_REINTERPRET_CAST(uint8_t*, buf)); simde_test_codegen_write_vp16(2, 3, buf, SIMDE_TEST_VEC_POS_MIDDLE); SIMDE_CONSTIFY_4_(simde_vld3_lane_p16, r, (HEDLEY_UNREACHABLE(), r), i, buf, src); simde_test_arm_neon_write_p16x4x3(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_vld3_lane_p64 (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { simde_poly64_t src[3][1]; simde_poly64_t buf[3]; simde_poly64_t r[3][1]; } test_vec[] = { { { { SIMDE_POLY64_C(54243463) }, { SIMDE_POLY64_C(32138549) }, { SIMDE_POLY64_C(65147451) } }, { SIMDE_POLY64_C(36001229), SIMDE_POLY64_C(4492888), SIMDE_POLY64_C(79288036)}, { { SIMDE_POLY64_C(36001229) }, { SIMDE_POLY64_C(4492888) }, { SIMDE_POLY64_C(79288036) } } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_poly64x1x3_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]); src.val[2] = simde_vld1_p64(test_vec[i].src[2]); r = simde_vld3_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]); expected.val[2] = simde_vld1_p64(test_vec[i].r[2]); simde_test_arm_neon_assert_equal_p64x1(r.val[0], expected.val[0]); simde_test_arm_neon_assert_equal_p64x1(r.val[1], expected.val[1]); simde_test_arm_neon_assert_equal_p64x1(r.val[2], expected.val[2]); } return 0; #else for (int i = 0 ; i < 4 ; i++) { simde_poly64x1x3_t src = simde_test_arm_neon_random_p64x1x3(); simde_poly64_t buf[3]; simde_poly64x1x3_t r; simde_test_arm_neon_write_p64x1x3(2, src, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_random_memory(24, HEDLEY_REINTERPRET_CAST(uint8_t*, buf)); simde_test_codegen_write_vp64(2, 3, buf, SIMDE_TEST_VEC_POS_MIDDLE); r = simde_vld3_lane_p64(buf, src, 0); simde_test_arm_neon_write_p64x1x3(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_vld3q_lane_p8 (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { simde_poly8_t src[3][16]; simde_poly8_t buf[3]; simde_poly8_t r[3][16]; } test_vec[] = { { { { SIMDE_POLY8_C(97), SIMDE_POLY8_C(34), SIMDE_POLY8_C(43), SIMDE_POLY8_C(79), SIMDE_POLY8_C(40), SIMDE_POLY8_C(28), SIMDE_POLY8_C(65), SIMDE_POLY8_C(74), SIMDE_POLY8_C(9), SIMDE_POLY8_C(3), SIMDE_POLY8_C(91), SIMDE_POLY8_C(11), SIMDE_POLY8_C(64), SIMDE_POLY8_C(46), SIMDE_POLY8_C(68), SIMDE_POLY8_C(53) }, { SIMDE_POLY8_C(42), SIMDE_POLY8_C(29), SIMDE_POLY8_C(58), SIMDE_POLY8_C(95), SIMDE_POLY8_C(50), SIMDE_POLY8_C(75), SIMDE_POLY8_C(26), SIMDE_POLY8_C(66), SIMDE_POLY8_C(71), SIMDE_POLY8_C(45), SIMDE_POLY8_C(14), SIMDE_POLY8_C(13), SIMDE_POLY8_C(88), SIMDE_POLY8_C(66), SIMDE_POLY8_C(0), SIMDE_POLY8_C(95) }, { SIMDE_POLY8_C(86), SIMDE_POLY8_C(19), SIMDE_POLY8_C(63), SIMDE_POLY8_C(41), SIMDE_POLY8_C(94), SIMDE_POLY8_C(31), SIMDE_POLY8_C(1), SIMDE_POLY8_C(67), SIMDE_POLY8_C(85), SIMDE_POLY8_C(10), SIMDE_POLY8_C(21), SIMDE_POLY8_C(61), SIMDE_POLY8_C(99), SIMDE_POLY8_C(54), SIMDE_POLY8_C(88), SIMDE_POLY8_C(96) } }, { SIMDE_POLY8_C(74), SIMDE_POLY8_C(52), SIMDE_POLY8_C(78)}, { { SIMDE_POLY8_C(74), SIMDE_POLY8_C(34), SIMDE_POLY8_C(43), SIMDE_POLY8_C(79), SIMDE_POLY8_C(40), SIMDE_POLY8_C(28), SIMDE_POLY8_C(65), SIMDE_POLY8_C(74), SIMDE_POLY8_C(9), SIMDE_POLY8_C(3), SIMDE_POLY8_C(91), SIMDE_POLY8_C(11), SIMDE_POLY8_C(64), SIMDE_POLY8_C(46), SIMDE_POLY8_C(68), SIMDE_POLY8_C(53) }, { SIMDE_POLY8_C(52), SIMDE_POLY8_C(29), SIMDE_POLY8_C(58), SIMDE_POLY8_C(95), SIMDE_POLY8_C(50), SIMDE_POLY8_C(75), SIMDE_POLY8_C(26), SIMDE_POLY8_C(66), SIMDE_POLY8_C(71), SIMDE_POLY8_C(45), SIMDE_POLY8_C(14), SIMDE_POLY8_C(13), SIMDE_POLY8_C(88), SIMDE_POLY8_C(66), SIMDE_POLY8_C(0), SIMDE_POLY8_C(95) }, { SIMDE_POLY8_C(78), SIMDE_POLY8_C(19), SIMDE_POLY8_C(63), SIMDE_POLY8_C(41), SIMDE_POLY8_C(94), SIMDE_POLY8_C(31), SIMDE_POLY8_C(1), SIMDE_POLY8_C(67), SIMDE_POLY8_C(85), SIMDE_POLY8_C(10), SIMDE_POLY8_C(21), SIMDE_POLY8_C(61), SIMDE_POLY8_C(99), SIMDE_POLY8_C(54), SIMDE_POLY8_C(88), SIMDE_POLY8_C(96) } } }, { { { SIMDE_POLY8_C(9), SIMDE_POLY8_C(1), SIMDE_POLY8_C(56), SIMDE_POLY8_C(58), SIMDE_POLY8_C(80), SIMDE_POLY8_C(56), SIMDE_POLY8_C(18), SIMDE_POLY8_C(35), SIMDE_POLY8_C(9), SIMDE_POLY8_C(71), SIMDE_POLY8_C(43), SIMDE_POLY8_C(36), SIMDE_POLY8_C(32), SIMDE_POLY8_C(11), SIMDE_POLY8_C(67), SIMDE_POLY8_C(53) }, { SIMDE_POLY8_C(6), SIMDE_POLY8_C(75), SIMDE_POLY8_C(57), SIMDE_POLY8_C(21), SIMDE_POLY8_C(70), SIMDE_POLY8_C(8), SIMDE_POLY8_C(57), SIMDE_POLY8_C(52), SIMDE_POLY8_C(52), SIMDE_POLY8_C(0), SIMDE_POLY8_C(40), SIMDE_POLY8_C(87), SIMDE_POLY8_C(92), SIMDE_POLY8_C(18), SIMDE_POLY8_C(24), SIMDE_POLY8_C(32) }, { SIMDE_POLY8_C(33), SIMDE_POLY8_C(9), SIMDE_POLY8_C(18), SIMDE_POLY8_C(75), SIMDE_POLY8_C(35), SIMDE_POLY8_C(76), SIMDE_POLY8_C(99), SIMDE_POLY8_C(66), SIMDE_POLY8_C(40), SIMDE_POLY8_C(47), SIMDE_POLY8_C(2), SIMDE_POLY8_C(94), SIMDE_POLY8_C(66), SIMDE_POLY8_C(80), SIMDE_POLY8_C(73), SIMDE_POLY8_C(10) } }, { SIMDE_POLY8_C(68), SIMDE_POLY8_C(58), SIMDE_POLY8_C(68)}, { { SIMDE_POLY8_C(9), SIMDE_POLY8_C(68), SIMDE_POLY8_C(56), SIMDE_POLY8_C(58), SIMDE_POLY8_C(80), SIMDE_POLY8_C(56), SIMDE_POLY8_C(18), SIMDE_POLY8_C(35), SIMDE_POLY8_C(9), SIMDE_POLY8_C(71), SIMDE_POLY8_C(43), SIMDE_POLY8_C(36), SIMDE_POLY8_C(32), SIMDE_POLY8_C(11), SIMDE_POLY8_C(67), SIMDE_POLY8_C(53) }, { SIMDE_POLY8_C(6), SIMDE_POLY8_C(58), SIMDE_POLY8_C(57), SIMDE_POLY8_C(21), SIMDE_POLY8_C(70), SIMDE_POLY8_C(8), SIMDE_POLY8_C(57), SIMDE_POLY8_C(52), SIMDE_POLY8_C(52), SIMDE_POLY8_C(0), SIMDE_POLY8_C(40), SIMDE_POLY8_C(87), SIMDE_POLY8_C(92), SIMDE_POLY8_C(18), SIMDE_POLY8_C(24), SIMDE_POLY8_C(32) }, { SIMDE_POLY8_C(33), SIMDE_POLY8_C(68), SIMDE_POLY8_C(18), SIMDE_POLY8_C(75), SIMDE_POLY8_C(35), SIMDE_POLY8_C(76), SIMDE_POLY8_C(99), SIMDE_POLY8_C(66), SIMDE_POLY8_C(40), SIMDE_POLY8_C(47), SIMDE_POLY8_C(2), SIMDE_POLY8_C(94), SIMDE_POLY8_C(66), SIMDE_POLY8_C(80), SIMDE_POLY8_C(73), SIMDE_POLY8_C(10) } } }, { { { SIMDE_POLY8_C(50), SIMDE_POLY8_C(10), SIMDE_POLY8_C(1), SIMDE_POLY8_C(90), SIMDE_POLY8_C(50), SIMDE_POLY8_C(47), SIMDE_POLY8_C(86), SIMDE_POLY8_C(81), SIMDE_POLY8_C(61), SIMDE_POLY8_C(7), SIMDE_POLY8_C(95), SIMDE_POLY8_C(60), SIMDE_POLY8_C(48), SIMDE_POLY8_C(8), SIMDE_POLY8_C(31), SIMDE_POLY8_C(91) }, { SIMDE_POLY8_C(73), SIMDE_POLY8_C(83), SIMDE_POLY8_C(76), SIMDE_POLY8_C(91), SIMDE_POLY8_C(19), SIMDE_POLY8_C(85), SIMDE_POLY8_C(38), SIMDE_POLY8_C(82), SIMDE_POLY8_C(27), SIMDE_POLY8_C(82), SIMDE_POLY8_C(46), SIMDE_POLY8_C(65), SIMDE_POLY8_C(68), SIMDE_POLY8_C(68), SIMDE_POLY8_C(33), SIMDE_POLY8_C(1) }, { SIMDE_POLY8_C(47), SIMDE_POLY8_C(15), SIMDE_POLY8_C(55), SIMDE_POLY8_C(34), SIMDE_POLY8_C(74), SIMDE_POLY8_C(43), SIMDE_POLY8_C(84), SIMDE_POLY8_C(10), SIMDE_POLY8_C(28), SIMDE_POLY8_C(68), SIMDE_POLY8_C(63), SIMDE_POLY8_C(97), SIMDE_POLY8_C(77), SIMDE_POLY8_C(44), SIMDE_POLY8_C(2), SIMDE_POLY8_C(12) } }, { SIMDE_POLY8_C(36), SIMDE_POLY8_C(31), SIMDE_POLY8_C(75)}, { { SIMDE_POLY8_C(50), SIMDE_POLY8_C(10), SIMDE_POLY8_C(36), SIMDE_POLY8_C(90), SIMDE_POLY8_C(50), SIMDE_POLY8_C(47), SIMDE_POLY8_C(86), SIMDE_POLY8_C(81), SIMDE_POLY8_C(61), SIMDE_POLY8_C(7), SIMDE_POLY8_C(95), SIMDE_POLY8_C(60), SIMDE_POLY8_C(48), SIMDE_POLY8_C(8), SIMDE_POLY8_C(31), SIMDE_POLY8_C(91) }, { SIMDE_POLY8_C(73), SIMDE_POLY8_C(83), SIMDE_POLY8_C(31), SIMDE_POLY8_C(91), SIMDE_POLY8_C(19), SIMDE_POLY8_C(85), SIMDE_POLY8_C(38), SIMDE_POLY8_C(82), SIMDE_POLY8_C(27), SIMDE_POLY8_C(82), SIMDE_POLY8_C(46), SIMDE_POLY8_C(65), SIMDE_POLY8_C(68), SIMDE_POLY8_C(68), SIMDE_POLY8_C(33), SIMDE_POLY8_C(1) }, { SIMDE_POLY8_C(47), SIMDE_POLY8_C(15), SIMDE_POLY8_C(75), SIMDE_POLY8_C(34), SIMDE_POLY8_C(74), SIMDE_POLY8_C(43), SIMDE_POLY8_C(84), SIMDE_POLY8_C(10), SIMDE_POLY8_C(28), SIMDE_POLY8_C(68), SIMDE_POLY8_C(63), SIMDE_POLY8_C(97), SIMDE_POLY8_C(77), SIMDE_POLY8_C(44), SIMDE_POLY8_C(2), SIMDE_POLY8_C(12) } } }, { { { SIMDE_POLY8_C(47), SIMDE_POLY8_C(52), SIMDE_POLY8_C(57), SIMDE_POLY8_C(40), SIMDE_POLY8_C(37), SIMDE_POLY8_C(25), SIMDE_POLY8_C(31), SIMDE_POLY8_C(34), SIMDE_POLY8_C(59), SIMDE_POLY8_C(77), SIMDE_POLY8_C(97), SIMDE_POLY8_C(42), SIMDE_POLY8_C(81), SIMDE_POLY8_C(31), SIMDE_POLY8_C(72), SIMDE_POLY8_C(79) }, { SIMDE_POLY8_C(34), SIMDE_POLY8_C(27), SIMDE_POLY8_C(19), SIMDE_POLY8_C(64), SIMDE_POLY8_C(15), SIMDE_POLY8_C(17), SIMDE_POLY8_C(15), SIMDE_POLY8_C(47), SIMDE_POLY8_C(63), SIMDE_POLY8_C(27), SIMDE_POLY8_C(7), SIMDE_POLY8_C(9), SIMDE_POLY8_C(63), SIMDE_POLY8_C(44), SIMDE_POLY8_C(81), SIMDE_POLY8_C(91) }, { SIMDE_POLY8_C(54), SIMDE_POLY8_C(66), SIMDE_POLY8_C(39), SIMDE_POLY8_C(9), SIMDE_POLY8_C(19), SIMDE_POLY8_C(4), SIMDE_POLY8_C(56), SIMDE_POLY8_C(13), SIMDE_POLY8_C(45), SIMDE_POLY8_C(91), SIMDE_POLY8_C(74), SIMDE_POLY8_C(85), SIMDE_POLY8_C(70), SIMDE_POLY8_C(79), SIMDE_POLY8_C(65), SIMDE_POLY8_C(66) } }, { SIMDE_POLY8_C(92), SIMDE_POLY8_C(78), SIMDE_POLY8_C(33)}, { { SIMDE_POLY8_C(47), SIMDE_POLY8_C(52), SIMDE_POLY8_C(57), SIMDE_POLY8_C(92), SIMDE_POLY8_C(37), SIMDE_POLY8_C(25), SIMDE_POLY8_C(31), SIMDE_POLY8_C(34), SIMDE_POLY8_C(59), SIMDE_POLY8_C(77), SIMDE_POLY8_C(97), SIMDE_POLY8_C(42), SIMDE_POLY8_C(81), SIMDE_POLY8_C(31), SIMDE_POLY8_C(72), SIMDE_POLY8_C(79) }, { SIMDE_POLY8_C(34), SIMDE_POLY8_C(27), SIMDE_POLY8_C(19), SIMDE_POLY8_C(78), SIMDE_POLY8_C(15), SIMDE_POLY8_C(17), SIMDE_POLY8_C(15), SIMDE_POLY8_C(47), SIMDE_POLY8_C(63), SIMDE_POLY8_C(27), SIMDE_POLY8_C(7), SIMDE_POLY8_C(9), SIMDE_POLY8_C(63), SIMDE_POLY8_C(44), SIMDE_POLY8_C(81), SIMDE_POLY8_C(91) }, { SIMDE_POLY8_C(54), SIMDE_POLY8_C(66), SIMDE_POLY8_C(39), SIMDE_POLY8_C(33), SIMDE_POLY8_C(19), SIMDE_POLY8_C(4), SIMDE_POLY8_C(56), SIMDE_POLY8_C(13), SIMDE_POLY8_C(45), SIMDE_POLY8_C(91), SIMDE_POLY8_C(74), SIMDE_POLY8_C(85), SIMDE_POLY8_C(70), SIMDE_POLY8_C(79), SIMDE_POLY8_C(65), SIMDE_POLY8_C(66) } } }, { { { SIMDE_POLY8_C(41), SIMDE_POLY8_C(0), SIMDE_POLY8_C(13), SIMDE_POLY8_C(21), SIMDE_POLY8_C(14), SIMDE_POLY8_C(99), SIMDE_POLY8_C(7), SIMDE_POLY8_C(41), SIMDE_POLY8_C(65), SIMDE_POLY8_C(42), SIMDE_POLY8_C(70), SIMDE_POLY8_C(7), SIMDE_POLY8_C(31), SIMDE_POLY8_C(6), SIMDE_POLY8_C(57), SIMDE_POLY8_C(25) }, { SIMDE_POLY8_C(89), SIMDE_POLY8_C(11), SIMDE_POLY8_C(40), SIMDE_POLY8_C(22), SIMDE_POLY8_C(75), SIMDE_POLY8_C(80), SIMDE_POLY8_C(72), SIMDE_POLY8_C(0), SIMDE_POLY8_C(12), SIMDE_POLY8_C(0), SIMDE_POLY8_C(29), SIMDE_POLY8_C(77), SIMDE_POLY8_C(83), SIMDE_POLY8_C(2), SIMDE_POLY8_C(22), SIMDE_POLY8_C(53) }, { SIMDE_POLY8_C(82), SIMDE_POLY8_C(8), SIMDE_POLY8_C(33), SIMDE_POLY8_C(81), SIMDE_POLY8_C(96), SIMDE_POLY8_C(37), SIMDE_POLY8_C(91), SIMDE_POLY8_C(76), SIMDE_POLY8_C(39), SIMDE_POLY8_C(58), SIMDE_POLY8_C(73), SIMDE_POLY8_C(97), SIMDE_POLY8_C(11), SIMDE_POLY8_C(15), SIMDE_POLY8_C(21), SIMDE_POLY8_C(99) } }, { SIMDE_POLY8_C(96), SIMDE_POLY8_C(62), SIMDE_POLY8_C(14)}, { { SIMDE_POLY8_C(41), SIMDE_POLY8_C(0), SIMDE_POLY8_C(13), SIMDE_POLY8_C(21), SIMDE_POLY8_C(96), SIMDE_POLY8_C(99), SIMDE_POLY8_C(7), SIMDE_POLY8_C(41), SIMDE_POLY8_C(65), SIMDE_POLY8_C(42), SIMDE_POLY8_C(70), SIMDE_POLY8_C(7), SIMDE_POLY8_C(31), SIMDE_POLY8_C(6), SIMDE_POLY8_C(57), SIMDE_POLY8_C(25) }, { SIMDE_POLY8_C(89), SIMDE_POLY8_C(11), SIMDE_POLY8_C(40), SIMDE_POLY8_C(22), SIMDE_POLY8_C(62), SIMDE_POLY8_C(80), SIMDE_POLY8_C(72), SIMDE_POLY8_C(0), SIMDE_POLY8_C(12), SIMDE_POLY8_C(0), SIMDE_POLY8_C(29), SIMDE_POLY8_C(77), SIMDE_POLY8_C(83), SIMDE_POLY8_C(2), SIMDE_POLY8_C(22), SIMDE_POLY8_C(53) }, { SIMDE_POLY8_C(82), SIMDE_POLY8_C(8), SIMDE_POLY8_C(33), SIMDE_POLY8_C(81), SIMDE_POLY8_C(14), SIMDE_POLY8_C(37), SIMDE_POLY8_C(91), SIMDE_POLY8_C(76), SIMDE_POLY8_C(39), SIMDE_POLY8_C(58), SIMDE_POLY8_C(73), SIMDE_POLY8_C(97), SIMDE_POLY8_C(11), SIMDE_POLY8_C(15), SIMDE_POLY8_C(21), SIMDE_POLY8_C(99) } } }, { { { SIMDE_POLY8_C(20), SIMDE_POLY8_C(41), SIMDE_POLY8_C(29), SIMDE_POLY8_C(44), SIMDE_POLY8_C(67), SIMDE_POLY8_C(37), SIMDE_POLY8_C(87), SIMDE_POLY8_C(42), SIMDE_POLY8_C(73), SIMDE_POLY8_C(62), SIMDE_POLY8_C(94), SIMDE_POLY8_C(35), SIMDE_POLY8_C(12), SIMDE_POLY8_C(53), SIMDE_POLY8_C(34), SIMDE_POLY8_C(89) }, { SIMDE_POLY8_C(64), SIMDE_POLY8_C(49), SIMDE_POLY8_C(36), SIMDE_POLY8_C(14), SIMDE_POLY8_C(32), SIMDE_POLY8_C(10), SIMDE_POLY8_C(2), SIMDE_POLY8_C(82), SIMDE_POLY8_C(64), SIMDE_POLY8_C(73), SIMDE_POLY8_C(51), SIMDE_POLY8_C(96), SIMDE_POLY8_C(23), SIMDE_POLY8_C(75), SIMDE_POLY8_C(27), SIMDE_POLY8_C(25) }, { SIMDE_POLY8_C(24), SIMDE_POLY8_C(87), SIMDE_POLY8_C(35), SIMDE_POLY8_C(68), SIMDE_POLY8_C(68), SIMDE_POLY8_C(9), SIMDE_POLY8_C(10), SIMDE_POLY8_C(17), SIMDE_POLY8_C(20), SIMDE_POLY8_C(88), SIMDE_POLY8_C(79), SIMDE_POLY8_C(13), SIMDE_POLY8_C(53), SIMDE_POLY8_C(99), SIMDE_POLY8_C(83), SIMDE_POLY8_C(9) } }, { SIMDE_POLY8_C(87), SIMDE_POLY8_C(65), SIMDE_POLY8_C(37)}, { { SIMDE_POLY8_C(20), SIMDE_POLY8_C(41), SIMDE_POLY8_C(29), SIMDE_POLY8_C(44), SIMDE_POLY8_C(67), SIMDE_POLY8_C(87), SIMDE_POLY8_C(87), SIMDE_POLY8_C(42), SIMDE_POLY8_C(73), SIMDE_POLY8_C(62), SIMDE_POLY8_C(94), SIMDE_POLY8_C(35), SIMDE_POLY8_C(12), SIMDE_POLY8_C(53), SIMDE_POLY8_C(34), SIMDE_POLY8_C(89) }, { SIMDE_POLY8_C(64), SIMDE_POLY8_C(49), SIMDE_POLY8_C(36), SIMDE_POLY8_C(14), SIMDE_POLY8_C(32), SIMDE_POLY8_C(65), SIMDE_POLY8_C(2), SIMDE_POLY8_C(82), SIMDE_POLY8_C(64), SIMDE_POLY8_C(73), SIMDE_POLY8_C(51), SIMDE_POLY8_C(96), SIMDE_POLY8_C(23), SIMDE_POLY8_C(75), SIMDE_POLY8_C(27), SIMDE_POLY8_C(25) }, { SIMDE_POLY8_C(24), SIMDE_POLY8_C(87), SIMDE_POLY8_C(35), SIMDE_POLY8_C(68), SIMDE_POLY8_C(68), SIMDE_POLY8_C(37), SIMDE_POLY8_C(10), SIMDE_POLY8_C(17), SIMDE_POLY8_C(20), SIMDE_POLY8_C(88), SIMDE_POLY8_C(79), SIMDE_POLY8_C(13), SIMDE_POLY8_C(53), SIMDE_POLY8_C(99), SIMDE_POLY8_C(83), SIMDE_POLY8_C(9) } } }, { { { SIMDE_POLY8_C(98), SIMDE_POLY8_C(75), SIMDE_POLY8_C(1), SIMDE_POLY8_C(3), SIMDE_POLY8_C(9), SIMDE_POLY8_C(61), SIMDE_POLY8_C(91), SIMDE_POLY8_C(69), SIMDE_POLY8_C(75), SIMDE_POLY8_C(22), SIMDE_POLY8_C(77), SIMDE_POLY8_C(29), SIMDE_POLY8_C(2), SIMDE_POLY8_C(8), SIMDE_POLY8_C(96), SIMDE_POLY8_C(52) }, { SIMDE_POLY8_C(35), SIMDE_POLY8_C(65), SIMDE_POLY8_C(32), SIMDE_POLY8_C(16), SIMDE_POLY8_C(62), SIMDE_POLY8_C(3), SIMDE_POLY8_C(91), SIMDE_POLY8_C(38), SIMDE_POLY8_C(42), SIMDE_POLY8_C(23), SIMDE_POLY8_C(81), SIMDE_POLY8_C(61), SIMDE_POLY8_C(28), SIMDE_POLY8_C(1), SIMDE_POLY8_C(5), SIMDE_POLY8_C(84) }, { SIMDE_POLY8_C(45), SIMDE_POLY8_C(87), SIMDE_POLY8_C(52), SIMDE_POLY8_C(74), SIMDE_POLY8_C(83), SIMDE_POLY8_C(48), SIMDE_POLY8_C(17), SIMDE_POLY8_C(96), SIMDE_POLY8_C(48), SIMDE_POLY8_C(82), SIMDE_POLY8_C(56), SIMDE_POLY8_C(23), SIMDE_POLY8_C(23), SIMDE_POLY8_C(52), SIMDE_POLY8_C(69), SIMDE_POLY8_C(57) } }, { SIMDE_POLY8_C(89), SIMDE_POLY8_C(29), SIMDE_POLY8_C(27)}, { { SIMDE_POLY8_C(98), SIMDE_POLY8_C(75), SIMDE_POLY8_C(1), SIMDE_POLY8_C(3), SIMDE_POLY8_C(9), SIMDE_POLY8_C(61), SIMDE_POLY8_C(89), SIMDE_POLY8_C(69), SIMDE_POLY8_C(75), SIMDE_POLY8_C(22), SIMDE_POLY8_C(77), SIMDE_POLY8_C(29), SIMDE_POLY8_C(2), SIMDE_POLY8_C(8), SIMDE_POLY8_C(96), SIMDE_POLY8_C(52) }, { SIMDE_POLY8_C(35), SIMDE_POLY8_C(65), SIMDE_POLY8_C(32), SIMDE_POLY8_C(16), SIMDE_POLY8_C(62), SIMDE_POLY8_C(3), SIMDE_POLY8_C(29), SIMDE_POLY8_C(38), SIMDE_POLY8_C(42), SIMDE_POLY8_C(23), SIMDE_POLY8_C(81), SIMDE_POLY8_C(61), SIMDE_POLY8_C(28), SIMDE_POLY8_C(1), SIMDE_POLY8_C(5), SIMDE_POLY8_C(84) }, { SIMDE_POLY8_C(45), SIMDE_POLY8_C(87), SIMDE_POLY8_C(52), SIMDE_POLY8_C(74), SIMDE_POLY8_C(83), SIMDE_POLY8_C(48), SIMDE_POLY8_C(27), SIMDE_POLY8_C(96), SIMDE_POLY8_C(48), SIMDE_POLY8_C(82), SIMDE_POLY8_C(56), SIMDE_POLY8_C(23), SIMDE_POLY8_C(23), SIMDE_POLY8_C(52), SIMDE_POLY8_C(69), SIMDE_POLY8_C(57) } } }, { { { SIMDE_POLY8_C(46), SIMDE_POLY8_C(86), SIMDE_POLY8_C(19), SIMDE_POLY8_C(68), SIMDE_POLY8_C(15), SIMDE_POLY8_C(80), SIMDE_POLY8_C(55), SIMDE_POLY8_C(26), SIMDE_POLY8_C(13), SIMDE_POLY8_C(91), SIMDE_POLY8_C(5), SIMDE_POLY8_C(36), SIMDE_POLY8_C(91), SIMDE_POLY8_C(27), SIMDE_POLY8_C(80), SIMDE_POLY8_C(74) }, { SIMDE_POLY8_C(88), SIMDE_POLY8_C(47), SIMDE_POLY8_C(36), SIMDE_POLY8_C(33), SIMDE_POLY8_C(37), SIMDE_POLY8_C(91), SIMDE_POLY8_C(41), SIMDE_POLY8_C(63), SIMDE_POLY8_C(23), SIMDE_POLY8_C(98), SIMDE_POLY8_C(80), SIMDE_POLY8_C(12), SIMDE_POLY8_C(64), SIMDE_POLY8_C(50), SIMDE_POLY8_C(92), SIMDE_POLY8_C(11) }, { SIMDE_POLY8_C(99), SIMDE_POLY8_C(57), SIMDE_POLY8_C(22), SIMDE_POLY8_C(30), SIMDE_POLY8_C(57), SIMDE_POLY8_C(84), SIMDE_POLY8_C(43), SIMDE_POLY8_C(39), SIMDE_POLY8_C(54), SIMDE_POLY8_C(15), SIMDE_POLY8_C(21), SIMDE_POLY8_C(38), SIMDE_POLY8_C(13), SIMDE_POLY8_C(93), SIMDE_POLY8_C(96), SIMDE_POLY8_C(10) } }, { SIMDE_POLY8_C(75), SIMDE_POLY8_C(42), SIMDE_POLY8_C(8)}, { { SIMDE_POLY8_C(46), SIMDE_POLY8_C(86), SIMDE_POLY8_C(19), SIMDE_POLY8_C(68), SIMDE_POLY8_C(15), SIMDE_POLY8_C(80), SIMDE_POLY8_C(55), SIMDE_POLY8_C(75), SIMDE_POLY8_C(13), SIMDE_POLY8_C(91), SIMDE_POLY8_C(5), SIMDE_POLY8_C(36), SIMDE_POLY8_C(91), SIMDE_POLY8_C(27), SIMDE_POLY8_C(80), SIMDE_POLY8_C(74) }, { SIMDE_POLY8_C(88), SIMDE_POLY8_C(47), SIMDE_POLY8_C(36), SIMDE_POLY8_C(33), SIMDE_POLY8_C(37), SIMDE_POLY8_C(91), SIMDE_POLY8_C(41), SIMDE_POLY8_C(42), SIMDE_POLY8_C(23), SIMDE_POLY8_C(98), SIMDE_POLY8_C(80), SIMDE_POLY8_C(12), SIMDE_POLY8_C(64), SIMDE_POLY8_C(50), SIMDE_POLY8_C(92), SIMDE_POLY8_C(11) }, { SIMDE_POLY8_C(99), SIMDE_POLY8_C(57), SIMDE_POLY8_C(22), SIMDE_POLY8_C(30), SIMDE_POLY8_C(57), SIMDE_POLY8_C(84), SIMDE_POLY8_C(43), SIMDE_POLY8_C(8), SIMDE_POLY8_C(54), SIMDE_POLY8_C(15), SIMDE_POLY8_C(21), SIMDE_POLY8_C(38), SIMDE_POLY8_C(13), SIMDE_POLY8_C(93), SIMDE_POLY8_C(96), SIMDE_POLY8_C(10) } } }, { { { SIMDE_POLY8_C(24), SIMDE_POLY8_C(21), SIMDE_POLY8_C(44), SIMDE_POLY8_C(24), SIMDE_POLY8_C(42), SIMDE_POLY8_C(32), SIMDE_POLY8_C(52), SIMDE_POLY8_C(88), SIMDE_POLY8_C(75), SIMDE_POLY8_C(41), SIMDE_POLY8_C(31), SIMDE_POLY8_C(71), SIMDE_POLY8_C(42), SIMDE_POLY8_C(21), SIMDE_POLY8_C(95), SIMDE_POLY8_C(29) }, { SIMDE_POLY8_C(0), SIMDE_POLY8_C(81), SIMDE_POLY8_C(30), SIMDE_POLY8_C(11), SIMDE_POLY8_C(14), SIMDE_POLY8_C(31), SIMDE_POLY8_C(47), SIMDE_POLY8_C(21), SIMDE_POLY8_C(76), SIMDE_POLY8_C(47), SIMDE_POLY8_C(72), SIMDE_POLY8_C(10), SIMDE_POLY8_C(59), SIMDE_POLY8_C(86), SIMDE_POLY8_C(58), SIMDE_POLY8_C(86) }, { SIMDE_POLY8_C(90), SIMDE_POLY8_C(32), SIMDE_POLY8_C(67), SIMDE_POLY8_C(12), SIMDE_POLY8_C(21), SIMDE_POLY8_C(76), SIMDE_POLY8_C(45), SIMDE_POLY8_C(14), SIMDE_POLY8_C(82), SIMDE_POLY8_C(96), SIMDE_POLY8_C(68), SIMDE_POLY8_C(15), SIMDE_POLY8_C(37), SIMDE_POLY8_C(65), SIMDE_POLY8_C(18), SIMDE_POLY8_C(49) } }, { SIMDE_POLY8_C(84), SIMDE_POLY8_C(83), SIMDE_POLY8_C(21)}, { { SIMDE_POLY8_C(24), SIMDE_POLY8_C(21), SIMDE_POLY8_C(44), SIMDE_POLY8_C(24), SIMDE_POLY8_C(42), SIMDE_POLY8_C(32), SIMDE_POLY8_C(52), SIMDE_POLY8_C(88), SIMDE_POLY8_C(84), SIMDE_POLY8_C(41), SIMDE_POLY8_C(31), SIMDE_POLY8_C(71), SIMDE_POLY8_C(42), SIMDE_POLY8_C(21), SIMDE_POLY8_C(95), SIMDE_POLY8_C(29) }, { SIMDE_POLY8_C(0), SIMDE_POLY8_C(81), SIMDE_POLY8_C(30), SIMDE_POLY8_C(11), SIMDE_POLY8_C(14), SIMDE_POLY8_C(31), SIMDE_POLY8_C(47), SIMDE_POLY8_C(21), SIMDE_POLY8_C(83), SIMDE_POLY8_C(47), SIMDE_POLY8_C(72), SIMDE_POLY8_C(10), SIMDE_POLY8_C(59), SIMDE_POLY8_C(86), SIMDE_POLY8_C(58), SIMDE_POLY8_C(86) }, { SIMDE_POLY8_C(90), SIMDE_POLY8_C(32), SIMDE_POLY8_C(67), SIMDE_POLY8_C(12), SIMDE_POLY8_C(21), SIMDE_POLY8_C(76), SIMDE_POLY8_C(45), SIMDE_POLY8_C(14), SIMDE_POLY8_C(21), SIMDE_POLY8_C(96), SIMDE_POLY8_C(68), SIMDE_POLY8_C(15), SIMDE_POLY8_C(37), SIMDE_POLY8_C(65), SIMDE_POLY8_C(18), SIMDE_POLY8_C(49) } } }, { { { SIMDE_POLY8_C(22), SIMDE_POLY8_C(62), SIMDE_POLY8_C(79), SIMDE_POLY8_C(5), SIMDE_POLY8_C(54), SIMDE_POLY8_C(45), SIMDE_POLY8_C(83), SIMDE_POLY8_C(98), SIMDE_POLY8_C(60), SIMDE_POLY8_C(61), SIMDE_POLY8_C(81), SIMDE_POLY8_C(62), SIMDE_POLY8_C(94), SIMDE_POLY8_C(14), SIMDE_POLY8_C(98), SIMDE_POLY8_C(22) }, { SIMDE_POLY8_C(78), SIMDE_POLY8_C(87), SIMDE_POLY8_C(48), SIMDE_POLY8_C(29), SIMDE_POLY8_C(52), SIMDE_POLY8_C(86), SIMDE_POLY8_C(71), SIMDE_POLY8_C(13), SIMDE_POLY8_C(20), SIMDE_POLY8_C(11), SIMDE_POLY8_C(89), SIMDE_POLY8_C(3), SIMDE_POLY8_C(5), SIMDE_POLY8_C(93), SIMDE_POLY8_C(48), SIMDE_POLY8_C(27) }, { SIMDE_POLY8_C(24), SIMDE_POLY8_C(21), SIMDE_POLY8_C(99), SIMDE_POLY8_C(53), SIMDE_POLY8_C(65), SIMDE_POLY8_C(75), SIMDE_POLY8_C(5), SIMDE_POLY8_C(72), SIMDE_POLY8_C(8), SIMDE_POLY8_C(35), SIMDE_POLY8_C(7), SIMDE_POLY8_C(49), SIMDE_POLY8_C(6), SIMDE_POLY8_C(75), SIMDE_POLY8_C(51), SIMDE_POLY8_C(60) } }, { SIMDE_POLY8_C(20), SIMDE_POLY8_C(32), SIMDE_POLY8_C(53)}, { { SIMDE_POLY8_C(22), SIMDE_POLY8_C(62), SIMDE_POLY8_C(79), SIMDE_POLY8_C(5), SIMDE_POLY8_C(54), SIMDE_POLY8_C(45), SIMDE_POLY8_C(83), SIMDE_POLY8_C(98), SIMDE_POLY8_C(60), SIMDE_POLY8_C(20), SIMDE_POLY8_C(81), SIMDE_POLY8_C(62), SIMDE_POLY8_C(94), SIMDE_POLY8_C(14), SIMDE_POLY8_C(98), SIMDE_POLY8_C(22) }, { SIMDE_POLY8_C(78), SIMDE_POLY8_C(87), SIMDE_POLY8_C(48), SIMDE_POLY8_C(29), SIMDE_POLY8_C(52), SIMDE_POLY8_C(86), SIMDE_POLY8_C(71), SIMDE_POLY8_C(13), SIMDE_POLY8_C(20), SIMDE_POLY8_C(32), SIMDE_POLY8_C(89), SIMDE_POLY8_C(3), SIMDE_POLY8_C(5), SIMDE_POLY8_C(93), SIMDE_POLY8_C(48), SIMDE_POLY8_C(27) }, { SIMDE_POLY8_C(24), SIMDE_POLY8_C(21), SIMDE_POLY8_C(99), SIMDE_POLY8_C(53), SIMDE_POLY8_C(65), SIMDE_POLY8_C(75), SIMDE_POLY8_C(5), SIMDE_POLY8_C(72), SIMDE_POLY8_C(8), SIMDE_POLY8_C(53), SIMDE_POLY8_C(7), SIMDE_POLY8_C(49), SIMDE_POLY8_C(6), SIMDE_POLY8_C(75), SIMDE_POLY8_C(51), SIMDE_POLY8_C(60) } } }, { { { SIMDE_POLY8_C(17), SIMDE_POLY8_C(92), SIMDE_POLY8_C(0), SIMDE_POLY8_C(91), SIMDE_POLY8_C(29), SIMDE_POLY8_C(86), SIMDE_POLY8_C(77), SIMDE_POLY8_C(36), SIMDE_POLY8_C(8), SIMDE_POLY8_C(86), SIMDE_POLY8_C(69), SIMDE_POLY8_C(6), SIMDE_POLY8_C(35), SIMDE_POLY8_C(48), SIMDE_POLY8_C(92), SIMDE_POLY8_C(63) }, { SIMDE_POLY8_C(69), SIMDE_POLY8_C(16), SIMDE_POLY8_C(3), SIMDE_POLY8_C(40), SIMDE_POLY8_C(43), SIMDE_POLY8_C(9), SIMDE_POLY8_C(40), SIMDE_POLY8_C(29), SIMDE_POLY8_C(43), SIMDE_POLY8_C(7), SIMDE_POLY8_C(58), SIMDE_POLY8_C(77), SIMDE_POLY8_C(6), SIMDE_POLY8_C(96), SIMDE_POLY8_C(81), SIMDE_POLY8_C(97) }, { SIMDE_POLY8_C(45), SIMDE_POLY8_C(34), SIMDE_POLY8_C(19), SIMDE_POLY8_C(92), SIMDE_POLY8_C(4), SIMDE_POLY8_C(72), SIMDE_POLY8_C(78), SIMDE_POLY8_C(30), SIMDE_POLY8_C(15), SIMDE_POLY8_C(12), SIMDE_POLY8_C(37), SIMDE_POLY8_C(53), SIMDE_POLY8_C(85), SIMDE_POLY8_C(88), SIMDE_POLY8_C(0), SIMDE_POLY8_C(40) } }, { SIMDE_POLY8_C(63), SIMDE_POLY8_C(11), SIMDE_POLY8_C(19)}, { { SIMDE_POLY8_C(17), SIMDE_POLY8_C(92), SIMDE_POLY8_C(0), SIMDE_POLY8_C(91), SIMDE_POLY8_C(29), SIMDE_POLY8_C(86), SIMDE_POLY8_C(77), SIMDE_POLY8_C(36), SIMDE_POLY8_C(8), SIMDE_POLY8_C(86), SIMDE_POLY8_C(63), SIMDE_POLY8_C(6), SIMDE_POLY8_C(35), SIMDE_POLY8_C(48), SIMDE_POLY8_C(92), SIMDE_POLY8_C(63) }, { SIMDE_POLY8_C(69), SIMDE_POLY8_C(16), SIMDE_POLY8_C(3), SIMDE_POLY8_C(40), SIMDE_POLY8_C(43), SIMDE_POLY8_C(9), SIMDE_POLY8_C(40), SIMDE_POLY8_C(29), SIMDE_POLY8_C(43), SIMDE_POLY8_C(7), SIMDE_POLY8_C(11), SIMDE_POLY8_C(77), SIMDE_POLY8_C(6), SIMDE_POLY8_C(96), SIMDE_POLY8_C(81), SIMDE_POLY8_C(97) }, { SIMDE_POLY8_C(45), SIMDE_POLY8_C(34), SIMDE_POLY8_C(19), SIMDE_POLY8_C(92), SIMDE_POLY8_C(4), SIMDE_POLY8_C(72), SIMDE_POLY8_C(78), SIMDE_POLY8_C(30), SIMDE_POLY8_C(15), SIMDE_POLY8_C(12), SIMDE_POLY8_C(19), SIMDE_POLY8_C(53), SIMDE_POLY8_C(85), SIMDE_POLY8_C(88), SIMDE_POLY8_C(0), SIMDE_POLY8_C(40) } } }, { { { SIMDE_POLY8_C(97), SIMDE_POLY8_C(65), SIMDE_POLY8_C(44), SIMDE_POLY8_C(86), SIMDE_POLY8_C(8), SIMDE_POLY8_C(17), SIMDE_POLY8_C(68), SIMDE_POLY8_C(90), SIMDE_POLY8_C(28), SIMDE_POLY8_C(50), SIMDE_POLY8_C(29), SIMDE_POLY8_C(7), SIMDE_POLY8_C(32), SIMDE_POLY8_C(0), SIMDE_POLY8_C(49), SIMDE_POLY8_C(9) }, { SIMDE_POLY8_C(41), SIMDE_POLY8_C(53), SIMDE_POLY8_C(62), SIMDE_POLY8_C(71), SIMDE_POLY8_C(16), SIMDE_POLY8_C(15), SIMDE_POLY8_C(13), SIMDE_POLY8_C(88), SIMDE_POLY8_C(68), SIMDE_POLY8_C(9), SIMDE_POLY8_C(29), SIMDE_POLY8_C(6), SIMDE_POLY8_C(22), SIMDE_POLY8_C(32), SIMDE_POLY8_C(28), SIMDE_POLY8_C(73) }, { SIMDE_POLY8_C(90), SIMDE_POLY8_C(12), SIMDE_POLY8_C(95), SIMDE_POLY8_C(43), SIMDE_POLY8_C(28), SIMDE_POLY8_C(11), SIMDE_POLY8_C(77), SIMDE_POLY8_C(24), SIMDE_POLY8_C(28), SIMDE_POLY8_C(66), SIMDE_POLY8_C(7), SIMDE_POLY8_C(48), SIMDE_POLY8_C(73), SIMDE_POLY8_C(66), SIMDE_POLY8_C(41), SIMDE_POLY8_C(26) } }, { SIMDE_POLY8_C(54), SIMDE_POLY8_C(15), SIMDE_POLY8_C(78)}, { { SIMDE_POLY8_C(97), SIMDE_POLY8_C(65), SIMDE_POLY8_C(44), SIMDE_POLY8_C(86), SIMDE_POLY8_C(8), SIMDE_POLY8_C(17), SIMDE_POLY8_C(68), SIMDE_POLY8_C(90), SIMDE_POLY8_C(28), SIMDE_POLY8_C(50), SIMDE_POLY8_C(29), SIMDE_POLY8_C(54), SIMDE_POLY8_C(32), SIMDE_POLY8_C(0), SIMDE_POLY8_C(49), SIMDE_POLY8_C(9) }, { SIMDE_POLY8_C(41), SIMDE_POLY8_C(53), SIMDE_POLY8_C(62), SIMDE_POLY8_C(71), SIMDE_POLY8_C(16), SIMDE_POLY8_C(15), SIMDE_POLY8_C(13), SIMDE_POLY8_C(88), SIMDE_POLY8_C(68), SIMDE_POLY8_C(9), SIMDE_POLY8_C(29), SIMDE_POLY8_C(15), SIMDE_POLY8_C(22), SIMDE_POLY8_C(32), SIMDE_POLY8_C(28), SIMDE_POLY8_C(73) }, { SIMDE_POLY8_C(90), SIMDE_POLY8_C(12), SIMDE_POLY8_C(95), SIMDE_POLY8_C(43), SIMDE_POLY8_C(28), SIMDE_POLY8_C(11), SIMDE_POLY8_C(77), SIMDE_POLY8_C(24), SIMDE_POLY8_C(28), SIMDE_POLY8_C(66), SIMDE_POLY8_C(7), SIMDE_POLY8_C(78), SIMDE_POLY8_C(73), SIMDE_POLY8_C(66), SIMDE_POLY8_C(41), SIMDE_POLY8_C(26) } } }, { { { SIMDE_POLY8_C(68), SIMDE_POLY8_C(0), SIMDE_POLY8_C(37), SIMDE_POLY8_C(9), SIMDE_POLY8_C(36), SIMDE_POLY8_C(20), SIMDE_POLY8_C(51), SIMDE_POLY8_C(43), SIMDE_POLY8_C(38), SIMDE_POLY8_C(58), SIMDE_POLY8_C(45), SIMDE_POLY8_C(25), SIMDE_POLY8_C(28), SIMDE_POLY8_C(58), SIMDE_POLY8_C(54), SIMDE_POLY8_C(47) }, { SIMDE_POLY8_C(95), SIMDE_POLY8_C(96), SIMDE_POLY8_C(83), SIMDE_POLY8_C(40), SIMDE_POLY8_C(74), SIMDE_POLY8_C(12), SIMDE_POLY8_C(25), SIMDE_POLY8_C(32), SIMDE_POLY8_C(23), SIMDE_POLY8_C(42), SIMDE_POLY8_C(57), SIMDE_POLY8_C(39), SIMDE_POLY8_C(36), SIMDE_POLY8_C(42), SIMDE_POLY8_C(21), SIMDE_POLY8_C(54) }, { SIMDE_POLY8_C(49), SIMDE_POLY8_C(37), SIMDE_POLY8_C(30), SIMDE_POLY8_C(78), SIMDE_POLY8_C(55), SIMDE_POLY8_C(40), SIMDE_POLY8_C(46), SIMDE_POLY8_C(82), SIMDE_POLY8_C(55), SIMDE_POLY8_C(76), SIMDE_POLY8_C(19), SIMDE_POLY8_C(6), SIMDE_POLY8_C(60), SIMDE_POLY8_C(52), SIMDE_POLY8_C(70), SIMDE_POLY8_C(78) } }, { SIMDE_POLY8_C(39), SIMDE_POLY8_C(16), SIMDE_POLY8_C(18)}, { { SIMDE_POLY8_C(68), SIMDE_POLY8_C(0), SIMDE_POLY8_C(37), SIMDE_POLY8_C(9), SIMDE_POLY8_C(36), SIMDE_POLY8_C(20), SIMDE_POLY8_C(51), SIMDE_POLY8_C(43), SIMDE_POLY8_C(38), SIMDE_POLY8_C(58), SIMDE_POLY8_C(45), SIMDE_POLY8_C(25), SIMDE_POLY8_C(39), SIMDE_POLY8_C(58), SIMDE_POLY8_C(54), SIMDE_POLY8_C(47) }, { SIMDE_POLY8_C(95), SIMDE_POLY8_C(96), SIMDE_POLY8_C(83), SIMDE_POLY8_C(40), SIMDE_POLY8_C(74), SIMDE_POLY8_C(12), SIMDE_POLY8_C(25), SIMDE_POLY8_C(32), SIMDE_POLY8_C(23), SIMDE_POLY8_C(42), SIMDE_POLY8_C(57), SIMDE_POLY8_C(39), SIMDE_POLY8_C(16), SIMDE_POLY8_C(42), SIMDE_POLY8_C(21), SIMDE_POLY8_C(54) }, { SIMDE_POLY8_C(49), SIMDE_POLY8_C(37), SIMDE_POLY8_C(30), SIMDE_POLY8_C(78), SIMDE_POLY8_C(55), SIMDE_POLY8_C(40), SIMDE_POLY8_C(46), SIMDE_POLY8_C(82), SIMDE_POLY8_C(55), SIMDE_POLY8_C(76), SIMDE_POLY8_C(19), SIMDE_POLY8_C(6), SIMDE_POLY8_C(18), SIMDE_POLY8_C(52), SIMDE_POLY8_C(70), SIMDE_POLY8_C(78) } } }, { { { SIMDE_POLY8_C(20), SIMDE_POLY8_C(75), SIMDE_POLY8_C(35), SIMDE_POLY8_C(24), SIMDE_POLY8_C(60), SIMDE_POLY8_C(21), SIMDE_POLY8_C(67), SIMDE_POLY8_C(1), SIMDE_POLY8_C(23), SIMDE_POLY8_C(57), SIMDE_POLY8_C(40), SIMDE_POLY8_C(31), SIMDE_POLY8_C(71), SIMDE_POLY8_C(21), SIMDE_POLY8_C(41), SIMDE_POLY8_C(71) }, { SIMDE_POLY8_C(3), SIMDE_POLY8_C(21), SIMDE_POLY8_C(89), SIMDE_POLY8_C(29), SIMDE_POLY8_C(51), SIMDE_POLY8_C(99), SIMDE_POLY8_C(90), SIMDE_POLY8_C(35), SIMDE_POLY8_C(30), SIMDE_POLY8_C(34), SIMDE_POLY8_C(67), SIMDE_POLY8_C(84), SIMDE_POLY8_C(79), SIMDE_POLY8_C(58), SIMDE_POLY8_C(39), SIMDE_POLY8_C(41) }, { SIMDE_POLY8_C(0), SIMDE_POLY8_C(68), SIMDE_POLY8_C(73), SIMDE_POLY8_C(59), SIMDE_POLY8_C(44), SIMDE_POLY8_C(83), SIMDE_POLY8_C(41), SIMDE_POLY8_C(72), SIMDE_POLY8_C(54), SIMDE_POLY8_C(29), SIMDE_POLY8_C(52), SIMDE_POLY8_C(51), SIMDE_POLY8_C(25), SIMDE_POLY8_C(25), SIMDE_POLY8_C(13), SIMDE_POLY8_C(15) } }, { SIMDE_POLY8_C(13), SIMDE_POLY8_C(84), SIMDE_POLY8_C(69)}, { { SIMDE_POLY8_C(20), SIMDE_POLY8_C(75), SIMDE_POLY8_C(35), SIMDE_POLY8_C(24), SIMDE_POLY8_C(60), SIMDE_POLY8_C(21), SIMDE_POLY8_C(67), SIMDE_POLY8_C(1), SIMDE_POLY8_C(23), SIMDE_POLY8_C(57), SIMDE_POLY8_C(40), SIMDE_POLY8_C(31), SIMDE_POLY8_C(71), SIMDE_POLY8_C(13), SIMDE_POLY8_C(41), SIMDE_POLY8_C(71) }, { SIMDE_POLY8_C(3), SIMDE_POLY8_C(21), SIMDE_POLY8_C(89), SIMDE_POLY8_C(29), SIMDE_POLY8_C(51), SIMDE_POLY8_C(99), SIMDE_POLY8_C(90), SIMDE_POLY8_C(35), SIMDE_POLY8_C(30), SIMDE_POLY8_C(34), SIMDE_POLY8_C(67), SIMDE_POLY8_C(84), SIMDE_POLY8_C(79), SIMDE_POLY8_C(84), SIMDE_POLY8_C(39), SIMDE_POLY8_C(41) }, { SIMDE_POLY8_C(0), SIMDE_POLY8_C(68), SIMDE_POLY8_C(73), SIMDE_POLY8_C(59), SIMDE_POLY8_C(44), SIMDE_POLY8_C(83), SIMDE_POLY8_C(41), SIMDE_POLY8_C(72), SIMDE_POLY8_C(54), SIMDE_POLY8_C(29), SIMDE_POLY8_C(52), SIMDE_POLY8_C(51), SIMDE_POLY8_C(25), SIMDE_POLY8_C(69), SIMDE_POLY8_C(13), SIMDE_POLY8_C(15) } } }, { { { SIMDE_POLY8_C(78), SIMDE_POLY8_C(80), SIMDE_POLY8_C(8), SIMDE_POLY8_C(85), SIMDE_POLY8_C(17), SIMDE_POLY8_C(53), SIMDE_POLY8_C(88), SIMDE_POLY8_C(87), SIMDE_POLY8_C(32), SIMDE_POLY8_C(29), SIMDE_POLY8_C(69), SIMDE_POLY8_C(78), SIMDE_POLY8_C(28), SIMDE_POLY8_C(38), SIMDE_POLY8_C(52), SIMDE_POLY8_C(24) }, { SIMDE_POLY8_C(64), SIMDE_POLY8_C(96), SIMDE_POLY8_C(34), SIMDE_POLY8_C(25), SIMDE_POLY8_C(46), SIMDE_POLY8_C(80), SIMDE_POLY8_C(65), SIMDE_POLY8_C(84), SIMDE_POLY8_C(71), SIMDE_POLY8_C(36), SIMDE_POLY8_C(9), SIMDE_POLY8_C(67), SIMDE_POLY8_C(75), SIMDE_POLY8_C(57), SIMDE_POLY8_C(24), SIMDE_POLY8_C(69) }, { SIMDE_POLY8_C(77), SIMDE_POLY8_C(59), SIMDE_POLY8_C(66), SIMDE_POLY8_C(82), SIMDE_POLY8_C(84), SIMDE_POLY8_C(12), SIMDE_POLY8_C(12), SIMDE_POLY8_C(87), SIMDE_POLY8_C(76), SIMDE_POLY8_C(40), SIMDE_POLY8_C(86), SIMDE_POLY8_C(5), SIMDE_POLY8_C(88), SIMDE_POLY8_C(47), SIMDE_POLY8_C(15), SIMDE_POLY8_C(68) } }, { SIMDE_POLY8_C(57), SIMDE_POLY8_C(4), SIMDE_POLY8_C(6)}, { { SIMDE_POLY8_C(78), SIMDE_POLY8_C(80), SIMDE_POLY8_C(8), SIMDE_POLY8_C(85), SIMDE_POLY8_C(17), SIMDE_POLY8_C(53), SIMDE_POLY8_C(88), SIMDE_POLY8_C(87), SIMDE_POLY8_C(32), SIMDE_POLY8_C(29), SIMDE_POLY8_C(69), SIMDE_POLY8_C(78), SIMDE_POLY8_C(28), SIMDE_POLY8_C(38), SIMDE_POLY8_C(57), SIMDE_POLY8_C(24) }, { SIMDE_POLY8_C(64), SIMDE_POLY8_C(96), SIMDE_POLY8_C(34), SIMDE_POLY8_C(25), SIMDE_POLY8_C(46), SIMDE_POLY8_C(80), SIMDE_POLY8_C(65), SIMDE_POLY8_C(84), SIMDE_POLY8_C(71), SIMDE_POLY8_C(36), SIMDE_POLY8_C(9), SIMDE_POLY8_C(67), SIMDE_POLY8_C(75), SIMDE_POLY8_C(57), SIMDE_POLY8_C(4), SIMDE_POLY8_C(69) }, { SIMDE_POLY8_C(77), SIMDE_POLY8_C(59), SIMDE_POLY8_C(66), SIMDE_POLY8_C(82), SIMDE_POLY8_C(84), SIMDE_POLY8_C(12), SIMDE_POLY8_C(12), SIMDE_POLY8_C(87), SIMDE_POLY8_C(76), SIMDE_POLY8_C(40), SIMDE_POLY8_C(86), SIMDE_POLY8_C(5), SIMDE_POLY8_C(88), SIMDE_POLY8_C(47), SIMDE_POLY8_C(6), SIMDE_POLY8_C(68) } } }, { { { SIMDE_POLY8_C(10), SIMDE_POLY8_C(53), SIMDE_POLY8_C(42), SIMDE_POLY8_C(50), SIMDE_POLY8_C(80), SIMDE_POLY8_C(86), SIMDE_POLY8_C(65), SIMDE_POLY8_C(9), SIMDE_POLY8_C(64), SIMDE_POLY8_C(65), SIMDE_POLY8_C(83), SIMDE_POLY8_C(30), SIMDE_POLY8_C(10), SIMDE_POLY8_C(44), SIMDE_POLY8_C(49), SIMDE_POLY8_C(37) }, { SIMDE_POLY8_C(31), SIMDE_POLY8_C(51), SIMDE_POLY8_C(22), SIMDE_POLY8_C(60), SIMDE_POLY8_C(49), SIMDE_POLY8_C(93), SIMDE_POLY8_C(32), SIMDE_POLY8_C(99), SIMDE_POLY8_C(7), SIMDE_POLY8_C(29), SIMDE_POLY8_C(87), SIMDE_POLY8_C(97), SIMDE_POLY8_C(99), SIMDE_POLY8_C(4), SIMDE_POLY8_C(60), SIMDE_POLY8_C(5) }, { SIMDE_POLY8_C(4), SIMDE_POLY8_C(70), SIMDE_POLY8_C(12), SIMDE_POLY8_C(81), SIMDE_POLY8_C(94), SIMDE_POLY8_C(77), SIMDE_POLY8_C(86), SIMDE_POLY8_C(97), SIMDE_POLY8_C(2), SIMDE_POLY8_C(78), SIMDE_POLY8_C(86), SIMDE_POLY8_C(4), SIMDE_POLY8_C(45), SIMDE_POLY8_C(33), SIMDE_POLY8_C(66), SIMDE_POLY8_C(9) } }, { SIMDE_POLY8_C(6), SIMDE_POLY8_C(72), SIMDE_POLY8_C(66)}, { { SIMDE_POLY8_C(10), SIMDE_POLY8_C(53), SIMDE_POLY8_C(42), SIMDE_POLY8_C(50), SIMDE_POLY8_C(80), SIMDE_POLY8_C(86), SIMDE_POLY8_C(65), SIMDE_POLY8_C(9), SIMDE_POLY8_C(64), SIMDE_POLY8_C(65), SIMDE_POLY8_C(83), SIMDE_POLY8_C(30), SIMDE_POLY8_C(10), SIMDE_POLY8_C(44), SIMDE_POLY8_C(49), SIMDE_POLY8_C(6) }, { SIMDE_POLY8_C(31), SIMDE_POLY8_C(51), SIMDE_POLY8_C(22), SIMDE_POLY8_C(60), SIMDE_POLY8_C(49), SIMDE_POLY8_C(93), SIMDE_POLY8_C(32), SIMDE_POLY8_C(99), SIMDE_POLY8_C(7), SIMDE_POLY8_C(29), SIMDE_POLY8_C(87), SIMDE_POLY8_C(97), SIMDE_POLY8_C(99), SIMDE_POLY8_C(4), SIMDE_POLY8_C(60), SIMDE_POLY8_C(72) }, { SIMDE_POLY8_C(4), SIMDE_POLY8_C(70), SIMDE_POLY8_C(12), SIMDE_POLY8_C(81), SIMDE_POLY8_C(94), SIMDE_POLY8_C(77), SIMDE_POLY8_C(86), SIMDE_POLY8_C(97), SIMDE_POLY8_C(2), SIMDE_POLY8_C(78), SIMDE_POLY8_C(86), SIMDE_POLY8_C(4), SIMDE_POLY8_C(45), SIMDE_POLY8_C(33), SIMDE_POLY8_C(66), SIMDE_POLY8_C(66) } } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_poly8x16x3_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]); src.val[2] = simde_vld1q_p8(test_vec[i].src[2]); SIMDE_CONSTIFY_16_(simde_vld3q_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]); expected.val[2] = simde_vld1q_p8(test_vec[i].r[2]); simde_test_arm_neon_assert_equal_p8x16(r.val[0], expected.val[0]); simde_test_arm_neon_assert_equal_p8x16(r.val[1], expected.val[1]); simde_test_arm_neon_assert_equal_p8x16(r.val[2], expected.val[2]); } return 0; #else for (int i = 0 ; i < 16 ; i++) { simde_poly8x16x3_t src = simde_test_arm_neon_random_p8x16x3(); simde_poly8_t buf[3]; simde_poly8x16x3_t r; simde_test_arm_neon_write_p8x16x3(2, src, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_random_memory(3, HEDLEY_REINTERPRET_CAST(uint8_t*, buf)); simde_test_codegen_write_vp8(2, 3, buf, SIMDE_TEST_VEC_POS_MIDDLE); SIMDE_CONSTIFY_16_(simde_vld3q_lane_p8, r, (HEDLEY_UNREACHABLE(), r), i, buf, src); simde_test_arm_neon_write_p8x16x3(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_vld3q_lane_p16 (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { simde_poly16_t src[3][8]; simde_poly16_t buf[3]; simde_poly16_t r[3][8]; } test_vec[] = { { { { SIMDE_POLY16_C(2878), SIMDE_POLY16_C(9122), SIMDE_POLY16_C(7556), SIMDE_POLY16_C(7857), SIMDE_POLY16_C(958), SIMDE_POLY16_C(7812), SIMDE_POLY16_C(2259), SIMDE_POLY16_C(582) }, { SIMDE_POLY16_C(5578), SIMDE_POLY16_C(9333), SIMDE_POLY16_C(1655), SIMDE_POLY16_C(9009), SIMDE_POLY16_C(596), SIMDE_POLY16_C(8223), SIMDE_POLY16_C(5654), SIMDE_POLY16_C(3297) }, { SIMDE_POLY16_C(5817), SIMDE_POLY16_C(7331), SIMDE_POLY16_C(8798), SIMDE_POLY16_C(172), SIMDE_POLY16_C(1106), SIMDE_POLY16_C(371), SIMDE_POLY16_C(9285), SIMDE_POLY16_C(5940) } }, { SIMDE_POLY16_C(9267), SIMDE_POLY16_C(2616), SIMDE_POLY16_C(7110)}, { { SIMDE_POLY16_C(9267), SIMDE_POLY16_C(9122), SIMDE_POLY16_C(7556), SIMDE_POLY16_C(7857), SIMDE_POLY16_C(958), SIMDE_POLY16_C(7812), SIMDE_POLY16_C(2259), SIMDE_POLY16_C(582) }, { SIMDE_POLY16_C(2616), SIMDE_POLY16_C(9333), SIMDE_POLY16_C(1655), SIMDE_POLY16_C(9009), SIMDE_POLY16_C(596), SIMDE_POLY16_C(8223), SIMDE_POLY16_C(5654), SIMDE_POLY16_C(3297) }, { SIMDE_POLY16_C(7110), SIMDE_POLY16_C(7331), SIMDE_POLY16_C(8798), SIMDE_POLY16_C(172), SIMDE_POLY16_C(1106), SIMDE_POLY16_C(371), SIMDE_POLY16_C(9285), SIMDE_POLY16_C(5940) } } }, { { { SIMDE_POLY16_C(2435), SIMDE_POLY16_C(4626), SIMDE_POLY16_C(4142), SIMDE_POLY16_C(3387), SIMDE_POLY16_C(6479), SIMDE_POLY16_C(7643), SIMDE_POLY16_C(5193), SIMDE_POLY16_C(3942) }, { SIMDE_POLY16_C(3016), SIMDE_POLY16_C(1407), SIMDE_POLY16_C(8271), SIMDE_POLY16_C(4950), SIMDE_POLY16_C(1775), SIMDE_POLY16_C(4681), SIMDE_POLY16_C(737), SIMDE_POLY16_C(7429) }, { SIMDE_POLY16_C(7279), SIMDE_POLY16_C(9658), SIMDE_POLY16_C(8142), SIMDE_POLY16_C(2112), SIMDE_POLY16_C(4555), SIMDE_POLY16_C(469), SIMDE_POLY16_C(1007), SIMDE_POLY16_C(2148) } }, { SIMDE_POLY16_C(4650), SIMDE_POLY16_C(9800), SIMDE_POLY16_C(2863)}, { { SIMDE_POLY16_C(2435), SIMDE_POLY16_C(4650), SIMDE_POLY16_C(4142), SIMDE_POLY16_C(3387), SIMDE_POLY16_C(6479), SIMDE_POLY16_C(7643), SIMDE_POLY16_C(5193), SIMDE_POLY16_C(3942) }, { SIMDE_POLY16_C(3016), SIMDE_POLY16_C(9800), SIMDE_POLY16_C(8271), SIMDE_POLY16_C(4950), SIMDE_POLY16_C(1775), SIMDE_POLY16_C(4681), SIMDE_POLY16_C(737), SIMDE_POLY16_C(7429) }, { SIMDE_POLY16_C(7279), SIMDE_POLY16_C(2863), SIMDE_POLY16_C(8142), SIMDE_POLY16_C(2112), SIMDE_POLY16_C(4555), SIMDE_POLY16_C(469), SIMDE_POLY16_C(1007), SIMDE_POLY16_C(2148) } } }, { { { SIMDE_POLY16_C(3842), SIMDE_POLY16_C(9560), SIMDE_POLY16_C(4451), SIMDE_POLY16_C(3039), SIMDE_POLY16_C(1396), SIMDE_POLY16_C(7094), SIMDE_POLY16_C(9151), SIMDE_POLY16_C(328) }, { SIMDE_POLY16_C(3222), SIMDE_POLY16_C(3639), SIMDE_POLY16_C(4981), SIMDE_POLY16_C(4084), SIMDE_POLY16_C(4213), SIMDE_POLY16_C(6807), SIMDE_POLY16_C(5985), SIMDE_POLY16_C(3640) }, { SIMDE_POLY16_C(5867), SIMDE_POLY16_C(7377), SIMDE_POLY16_C(7519), SIMDE_POLY16_C(4002), SIMDE_POLY16_C(4302), SIMDE_POLY16_C(897), SIMDE_POLY16_C(4387), SIMDE_POLY16_C(6837) } }, { SIMDE_POLY16_C(5729), SIMDE_POLY16_C(6854), SIMDE_POLY16_C(829)}, { { SIMDE_POLY16_C(3842), SIMDE_POLY16_C(9560), SIMDE_POLY16_C(5729), SIMDE_POLY16_C(3039), SIMDE_POLY16_C(1396), SIMDE_POLY16_C(7094), SIMDE_POLY16_C(9151), SIMDE_POLY16_C(328) }, { SIMDE_POLY16_C(3222), SIMDE_POLY16_C(3639), SIMDE_POLY16_C(6854), SIMDE_POLY16_C(4084), SIMDE_POLY16_C(4213), SIMDE_POLY16_C(6807), SIMDE_POLY16_C(5985), SIMDE_POLY16_C(3640) }, { SIMDE_POLY16_C(5867), SIMDE_POLY16_C(7377), SIMDE_POLY16_C(829), SIMDE_POLY16_C(4002), SIMDE_POLY16_C(4302), SIMDE_POLY16_C(897), SIMDE_POLY16_C(4387), SIMDE_POLY16_C(6837) } } }, { { { SIMDE_POLY16_C(7563), SIMDE_POLY16_C(2164), SIMDE_POLY16_C(8586), SIMDE_POLY16_C(1245), SIMDE_POLY16_C(9300), SIMDE_POLY16_C(1489), SIMDE_POLY16_C(7158), SIMDE_POLY16_C(4863) }, { SIMDE_POLY16_C(1424), SIMDE_POLY16_C(4247), SIMDE_POLY16_C(5640), SIMDE_POLY16_C(6608), SIMDE_POLY16_C(5989), SIMDE_POLY16_C(3578), SIMDE_POLY16_C(742), SIMDE_POLY16_C(1885) }, { SIMDE_POLY16_C(5512), SIMDE_POLY16_C(3861), SIMDE_POLY16_C(6631), SIMDE_POLY16_C(2430), SIMDE_POLY16_C(2806), SIMDE_POLY16_C(1789), SIMDE_POLY16_C(8536), SIMDE_POLY16_C(1442) } }, { SIMDE_POLY16_C(321), SIMDE_POLY16_C(9802), SIMDE_POLY16_C(8592)}, { { SIMDE_POLY16_C(7563), SIMDE_POLY16_C(2164), SIMDE_POLY16_C(8586), SIMDE_POLY16_C(321), SIMDE_POLY16_C(9300), SIMDE_POLY16_C(1489), SIMDE_POLY16_C(7158), SIMDE_POLY16_C(4863) }, { SIMDE_POLY16_C(1424), SIMDE_POLY16_C(4247), SIMDE_POLY16_C(5640), SIMDE_POLY16_C(9802), SIMDE_POLY16_C(5989), SIMDE_POLY16_C(3578), SIMDE_POLY16_C(742), SIMDE_POLY16_C(1885) }, { SIMDE_POLY16_C(5512), SIMDE_POLY16_C(3861), SIMDE_POLY16_C(6631), SIMDE_POLY16_C(8592), SIMDE_POLY16_C(2806), SIMDE_POLY16_C(1789), SIMDE_POLY16_C(8536), SIMDE_POLY16_C(1442) } } }, { { { SIMDE_POLY16_C(846), SIMDE_POLY16_C(2844), SIMDE_POLY16_C(4543), SIMDE_POLY16_C(5042), SIMDE_POLY16_C(9059), SIMDE_POLY16_C(789), SIMDE_POLY16_C(9345), SIMDE_POLY16_C(8528) }, { SIMDE_POLY16_C(5245), SIMDE_POLY16_C(4972), SIMDE_POLY16_C(9392), SIMDE_POLY16_C(6785), SIMDE_POLY16_C(6982), SIMDE_POLY16_C(1587), SIMDE_POLY16_C(9547), SIMDE_POLY16_C(806) }, { SIMDE_POLY16_C(2535), SIMDE_POLY16_C(912), SIMDE_POLY16_C(7134), SIMDE_POLY16_C(1939), SIMDE_POLY16_C(226), SIMDE_POLY16_C(4171), SIMDE_POLY16_C(756), SIMDE_POLY16_C(7958) } }, { SIMDE_POLY16_C(9975), SIMDE_POLY16_C(6402), SIMDE_POLY16_C(5394)}, { { SIMDE_POLY16_C(846), SIMDE_POLY16_C(2844), SIMDE_POLY16_C(4543), SIMDE_POLY16_C(5042), SIMDE_POLY16_C(9975), SIMDE_POLY16_C(789), SIMDE_POLY16_C(9345), SIMDE_POLY16_C(8528) }, { SIMDE_POLY16_C(5245), SIMDE_POLY16_C(4972), SIMDE_POLY16_C(9392), SIMDE_POLY16_C(6785), SIMDE_POLY16_C(6402), SIMDE_POLY16_C(1587), SIMDE_POLY16_C(9547), SIMDE_POLY16_C(806) }, { SIMDE_POLY16_C(2535), SIMDE_POLY16_C(912), SIMDE_POLY16_C(7134), SIMDE_POLY16_C(1939), SIMDE_POLY16_C(5394), SIMDE_POLY16_C(4171), SIMDE_POLY16_C(756), SIMDE_POLY16_C(7958) } } }, { { { SIMDE_POLY16_C(5491), SIMDE_POLY16_C(9037), SIMDE_POLY16_C(2121), SIMDE_POLY16_C(3027), SIMDE_POLY16_C(9896), SIMDE_POLY16_C(3828), SIMDE_POLY16_C(4925), SIMDE_POLY16_C(6295) }, { SIMDE_POLY16_C(4330), SIMDE_POLY16_C(4964), SIMDE_POLY16_C(3055), SIMDE_POLY16_C(2853), SIMDE_POLY16_C(5505), SIMDE_POLY16_C(2630), SIMDE_POLY16_C(7217), SIMDE_POLY16_C(9453) }, { SIMDE_POLY16_C(9293), SIMDE_POLY16_C(8272), SIMDE_POLY16_C(4351), SIMDE_POLY16_C(7481), SIMDE_POLY16_C(2380), SIMDE_POLY16_C(1671), SIMDE_POLY16_C(9975), SIMDE_POLY16_C(6647) } }, { SIMDE_POLY16_C(2220), SIMDE_POLY16_C(9744), SIMDE_POLY16_C(8641)}, { { SIMDE_POLY16_C(5491), SIMDE_POLY16_C(9037), SIMDE_POLY16_C(2121), SIMDE_POLY16_C(3027), SIMDE_POLY16_C(9896), SIMDE_POLY16_C(2220), SIMDE_POLY16_C(4925), SIMDE_POLY16_C(6295) }, { SIMDE_POLY16_C(4330), SIMDE_POLY16_C(4964), SIMDE_POLY16_C(3055), SIMDE_POLY16_C(2853), SIMDE_POLY16_C(5505), SIMDE_POLY16_C(9744), SIMDE_POLY16_C(7217), SIMDE_POLY16_C(9453) }, { SIMDE_POLY16_C(9293), SIMDE_POLY16_C(8272), SIMDE_POLY16_C(4351), SIMDE_POLY16_C(7481), SIMDE_POLY16_C(2380), SIMDE_POLY16_C(8641), SIMDE_POLY16_C(9975), SIMDE_POLY16_C(6647) } } }, { { { SIMDE_POLY16_C(9694), SIMDE_POLY16_C(2965), SIMDE_POLY16_C(2860), SIMDE_POLY16_C(3217), SIMDE_POLY16_C(905), SIMDE_POLY16_C(1382), SIMDE_POLY16_C(2539), SIMDE_POLY16_C(2136) }, { SIMDE_POLY16_C(9340), SIMDE_POLY16_C(8057), SIMDE_POLY16_C(2560), SIMDE_POLY16_C(2780), SIMDE_POLY16_C(9091), SIMDE_POLY16_C(341), SIMDE_POLY16_C(2559), SIMDE_POLY16_C(5566) }, { SIMDE_POLY16_C(5464), SIMDE_POLY16_C(8934), SIMDE_POLY16_C(8459), SIMDE_POLY16_C(5838), SIMDE_POLY16_C(5847), SIMDE_POLY16_C(9085), SIMDE_POLY16_C(7113), SIMDE_POLY16_C(1453) } }, { SIMDE_POLY16_C(9231), SIMDE_POLY16_C(1160), SIMDE_POLY16_C(1750)}, { { SIMDE_POLY16_C(9694), SIMDE_POLY16_C(2965), SIMDE_POLY16_C(2860), SIMDE_POLY16_C(3217), SIMDE_POLY16_C(905), SIMDE_POLY16_C(1382), SIMDE_POLY16_C(9231), SIMDE_POLY16_C(2136) }, { SIMDE_POLY16_C(9340), SIMDE_POLY16_C(8057), SIMDE_POLY16_C(2560), SIMDE_POLY16_C(2780), SIMDE_POLY16_C(9091), SIMDE_POLY16_C(341), SIMDE_POLY16_C(1160), SIMDE_POLY16_C(5566) }, { SIMDE_POLY16_C(5464), SIMDE_POLY16_C(8934), SIMDE_POLY16_C(8459), SIMDE_POLY16_C(5838), SIMDE_POLY16_C(5847), SIMDE_POLY16_C(9085), SIMDE_POLY16_C(1750), SIMDE_POLY16_C(1453) } } }, { { { SIMDE_POLY16_C(4299), SIMDE_POLY16_C(2575), SIMDE_POLY16_C(1738), SIMDE_POLY16_C(2713), SIMDE_POLY16_C(3823), SIMDE_POLY16_C(2897), SIMDE_POLY16_C(4868), SIMDE_POLY16_C(3272) }, { SIMDE_POLY16_C(1451), SIMDE_POLY16_C(4038), SIMDE_POLY16_C(5588), SIMDE_POLY16_C(8951), SIMDE_POLY16_C(8365), SIMDE_POLY16_C(7112), SIMDE_POLY16_C(7225), SIMDE_POLY16_C(5057) }, { SIMDE_POLY16_C(1287), SIMDE_POLY16_C(8547), SIMDE_POLY16_C(3369), SIMDE_POLY16_C(2472), SIMDE_POLY16_C(2063), SIMDE_POLY16_C(1405), SIMDE_POLY16_C(3647), SIMDE_POLY16_C(1463) } }, { SIMDE_POLY16_C(6301), SIMDE_POLY16_C(8922), SIMDE_POLY16_C(8856)}, { { SIMDE_POLY16_C(4299), SIMDE_POLY16_C(2575), SIMDE_POLY16_C(1738), SIMDE_POLY16_C(2713), SIMDE_POLY16_C(3823), SIMDE_POLY16_C(2897), SIMDE_POLY16_C(4868), SIMDE_POLY16_C(6301) }, { SIMDE_POLY16_C(1451), SIMDE_POLY16_C(4038), SIMDE_POLY16_C(5588), SIMDE_POLY16_C(8951), SIMDE_POLY16_C(8365), SIMDE_POLY16_C(7112), SIMDE_POLY16_C(7225), SIMDE_POLY16_C(8922) }, { SIMDE_POLY16_C(1287), SIMDE_POLY16_C(8547), SIMDE_POLY16_C(3369), SIMDE_POLY16_C(2472), SIMDE_POLY16_C(2063), SIMDE_POLY16_C(1405), SIMDE_POLY16_C(3647), SIMDE_POLY16_C(8856) } } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_poly16x8x3_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]); src.val[2] = simde_vld1q_p16(test_vec[i].src[2]); SIMDE_CONSTIFY_8_(simde_vld3q_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]); expected.val[2] = simde_vld1q_p16(test_vec[i].r[2]); simde_test_arm_neon_assert_equal_p16x8(r.val[0], expected.val[0]); simde_test_arm_neon_assert_equal_p16x8(r.val[1], expected.val[1]); simde_test_arm_neon_assert_equal_p16x8(r.val[2], expected.val[2]); } return 0; #else for (int i = 0 ; i < 8 ; i++) { simde_poly16x8x3_t src = simde_test_arm_neon_random_p16x8x3(); simde_poly16_t buf[3]; simde_poly16x8x3_t r; simde_test_arm_neon_write_p16x8x3(2, src, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_random_memory(6, HEDLEY_REINTERPRET_CAST(uint8_t*, buf)); simde_test_codegen_write_vp16(2, 3, buf, SIMDE_TEST_VEC_POS_MIDDLE); SIMDE_CONSTIFY_8_(simde_vld3q_lane_p16, r, (HEDLEY_UNREACHABLE(), r), i, buf, src); simde_test_arm_neon_write_p16x8x3(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_vld3q_lane_p64 (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { simde_poly64_t src[3][2]; simde_poly64_t buf[3]; simde_poly64_t r[3][2]; } test_vec[] = { { { { SIMDE_POLY64_C(56952904), SIMDE_POLY64_C(35256781) }, { SIMDE_POLY64_C(89718407), SIMDE_POLY64_C(12358219) }, { SIMDE_POLY64_C(61792069), SIMDE_POLY64_C(55919668) } }, { SIMDE_POLY64_C(95716616), SIMDE_POLY64_C(80066973), SIMDE_POLY64_C(46886750)}, { { SIMDE_POLY64_C(95716616), SIMDE_POLY64_C(35256781) }, { SIMDE_POLY64_C(80066973), SIMDE_POLY64_C(12358219) }, { SIMDE_POLY64_C(46886750), SIMDE_POLY64_C(55919668) } } }, { { { SIMDE_POLY64_C(95308677), SIMDE_POLY64_C(34498022) }, { SIMDE_POLY64_C(67254093), SIMDE_POLY64_C(94380501) }, { SIMDE_POLY64_C(77927395), SIMDE_POLY64_C(69899674) } }, { SIMDE_POLY64_C(50242963), SIMDE_POLY64_C(81401259), SIMDE_POLY64_C(34813265)}, { { SIMDE_POLY64_C(95308677), SIMDE_POLY64_C(50242963) }, { SIMDE_POLY64_C(67254093), SIMDE_POLY64_C(81401259) }, { SIMDE_POLY64_C(77927395), SIMDE_POLY64_C(34813265) } } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_poly64x2x3_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]); src.val[2] = simde_vld1q_p64(test_vec[i].src[2]); SIMDE_CONSTIFY_2_(simde_vld3q_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]); expected.val[2] = simde_vld1q_p64(test_vec[i].r[2]); simde_test_arm_neon_assert_equal_p64x2(r.val[0], expected.val[0]); simde_test_arm_neon_assert_equal_p64x2(r.val[1], expected.val[1]); simde_test_arm_neon_assert_equal_p64x2(r.val[2], expected.val[2]); } return 0; #else for (int i = 0 ; i < 2 ; i++) { simde_poly64x2x3_t src = simde_test_arm_neon_random_p64x2x3(); simde_poly64_t buf[3]; simde_poly64x2x3_t r; simde_test_arm_neon_write_p64x2x3(2, src, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_random_memory(24, HEDLEY_REINTERPRET_CAST(uint8_t*, buf)); simde_test_codegen_write_vp64(2, 3, buf, SIMDE_TEST_VEC_POS_MIDDLE); SIMDE_CONSTIFY_2_(simde_vld3q_lane_p64, r, (HEDLEY_UNREACHABLE(), r), i, buf, src); simde_test_arm_neon_write_p64x2x3(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_vld3_lane_bf16 (SIMDE_MUNIT_TEST_ARGS) { struct { simde_bfloat16_t src[3][4]; simde_bfloat16_t buf[3]; simde_bfloat16_t r[3][4]; } test_vec[] = { { { { SIMDE_BFLOAT16_VALUE(-38.09), SIMDE_BFLOAT16_VALUE(39.56), SIMDE_BFLOAT16_VALUE(12.85), SIMDE_BFLOAT16_VALUE(-6.63) }, { SIMDE_BFLOAT16_VALUE(-41.59), SIMDE_BFLOAT16_VALUE(46.59), SIMDE_BFLOAT16_VALUE(22.79), SIMDE_BFLOAT16_VALUE(-13.35) }, { SIMDE_BFLOAT16_VALUE(25.23), SIMDE_BFLOAT16_VALUE(-26.59), SIMDE_BFLOAT16_VALUE(19.00), SIMDE_BFLOAT16_VALUE(-16.99) } }, { SIMDE_BFLOAT16_VALUE(6.58), SIMDE_BFLOAT16_VALUE(-23.21), SIMDE_BFLOAT16_VALUE(-16.75)}, { { SIMDE_BFLOAT16_VALUE(6.58), SIMDE_BFLOAT16_VALUE(39.56), SIMDE_BFLOAT16_VALUE(12.85), SIMDE_BFLOAT16_VALUE(-6.63) }, { SIMDE_BFLOAT16_VALUE(-23.21), SIMDE_BFLOAT16_VALUE(46.59), SIMDE_BFLOAT16_VALUE(22.79), SIMDE_BFLOAT16_VALUE(-13.35) }, { SIMDE_BFLOAT16_VALUE(-16.75), SIMDE_BFLOAT16_VALUE(-26.59), SIMDE_BFLOAT16_VALUE(19.00), SIMDE_BFLOAT16_VALUE(-16.99) } } }, { { { SIMDE_BFLOAT16_VALUE(-31.46), SIMDE_BFLOAT16_VALUE(30.50), SIMDE_BFLOAT16_VALUE(-31.78), SIMDE_BFLOAT16_VALUE(47.74) }, { SIMDE_BFLOAT16_VALUE(33.97), SIMDE_BFLOAT16_VALUE(37.16), SIMDE_BFLOAT16_VALUE(27.13), SIMDE_BFLOAT16_VALUE(-28.58) }, { SIMDE_BFLOAT16_VALUE(-7.95), SIMDE_BFLOAT16_VALUE(-26.73), SIMDE_BFLOAT16_VALUE(17.08), SIMDE_BFLOAT16_VALUE(39.81) } }, { SIMDE_BFLOAT16_VALUE(-28.19), SIMDE_BFLOAT16_VALUE(29.28), SIMDE_BFLOAT16_VALUE(-1.21)}, { { SIMDE_BFLOAT16_VALUE(-31.46), SIMDE_BFLOAT16_VALUE(-28.19), SIMDE_BFLOAT16_VALUE(-31.78), SIMDE_BFLOAT16_VALUE(47.74) }, { SIMDE_BFLOAT16_VALUE(33.97), SIMDE_BFLOAT16_VALUE(29.28), SIMDE_BFLOAT16_VALUE(27.13), SIMDE_BFLOAT16_VALUE(-28.58) }, { SIMDE_BFLOAT16_VALUE(-7.95), SIMDE_BFLOAT16_VALUE(-1.21), SIMDE_BFLOAT16_VALUE(17.08), SIMDE_BFLOAT16_VALUE(39.81) } } }, { { { SIMDE_BFLOAT16_VALUE(42.99), SIMDE_BFLOAT16_VALUE(-22.57), SIMDE_BFLOAT16_VALUE(-7.51), SIMDE_BFLOAT16_VALUE(-37.37) }, { SIMDE_BFLOAT16_VALUE(15.49), SIMDE_BFLOAT16_VALUE(-14.01), SIMDE_BFLOAT16_VALUE(30.43), SIMDE_BFLOAT16_VALUE(-22.10) }, { SIMDE_BFLOAT16_VALUE(-17.08), SIMDE_BFLOAT16_VALUE(28.40), SIMDE_BFLOAT16_VALUE(-3.15), SIMDE_BFLOAT16_VALUE(-9.72) } }, { SIMDE_BFLOAT16_VALUE(37.03), SIMDE_BFLOAT16_VALUE(-46.18), SIMDE_BFLOAT16_VALUE(30.55)}, { { SIMDE_BFLOAT16_VALUE(42.99), SIMDE_BFLOAT16_VALUE(-22.57), SIMDE_BFLOAT16_VALUE(37.03), SIMDE_BFLOAT16_VALUE(-37.37) }, { SIMDE_BFLOAT16_VALUE(15.49), SIMDE_BFLOAT16_VALUE(-14.01), SIMDE_BFLOAT16_VALUE(-46.18), SIMDE_BFLOAT16_VALUE(-22.10) }, { SIMDE_BFLOAT16_VALUE(-17.08), SIMDE_BFLOAT16_VALUE(28.40), SIMDE_BFLOAT16_VALUE(30.55), SIMDE_BFLOAT16_VALUE(-9.72) } } }, { { { SIMDE_BFLOAT16_VALUE(-27.48), SIMDE_BFLOAT16_VALUE(13.58), SIMDE_BFLOAT16_VALUE(-24.04), SIMDE_BFLOAT16_VALUE(4.66) }, { SIMDE_BFLOAT16_VALUE(29.23), SIMDE_BFLOAT16_VALUE(31.79), SIMDE_BFLOAT16_VALUE(-45.75), SIMDE_BFLOAT16_VALUE(38.47) }, { SIMDE_BFLOAT16_VALUE(-41.39), SIMDE_BFLOAT16_VALUE(-33.55), SIMDE_BFLOAT16_VALUE(-46.68), SIMDE_BFLOAT16_VALUE(19.26) } }, { SIMDE_BFLOAT16_VALUE(39.57), SIMDE_BFLOAT16_VALUE(-22.13), SIMDE_BFLOAT16_VALUE(6.04)}, { { SIMDE_BFLOAT16_VALUE(-27.48), SIMDE_BFLOAT16_VALUE(13.58), SIMDE_BFLOAT16_VALUE(-24.04), SIMDE_BFLOAT16_VALUE(39.57) }, { SIMDE_BFLOAT16_VALUE(29.23), SIMDE_BFLOAT16_VALUE(31.79), SIMDE_BFLOAT16_VALUE(-45.75), SIMDE_BFLOAT16_VALUE(-22.13) }, { SIMDE_BFLOAT16_VALUE(-41.39), SIMDE_BFLOAT16_VALUE(-33.55), SIMDE_BFLOAT16_VALUE(-46.68), SIMDE_BFLOAT16_VALUE(6.04) } } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_bfloat16x4x3_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]); src.val[2] = simde_vld1_bf16(test_vec[i].src[2]); SIMDE_CONSTIFY_4_(simde_vld3_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]); expected.val[2] = simde_vld1_bf16(test_vec[i].r[2]); simde_test_arm_neon_assert_equal_bf16x4(r.val[0], expected.val[0], INT_MAX); simde_test_arm_neon_assert_equal_bf16x4(r.val[1], expected.val[1], INT_MAX); simde_test_arm_neon_assert_equal_bf16x4(r.val[2], expected.val[2], INT_MAX); } return 0; } static int test_simde_vld3q_lane_bf16 (SIMDE_MUNIT_TEST_ARGS) { struct { simde_bfloat16_t src[3][8]; simde_bfloat16_t buf[3]; simde_bfloat16_t r[3][8]; } test_vec[] = { { { { SIMDE_BFLOAT16_VALUE(25.81), SIMDE_BFLOAT16_VALUE(32.75), SIMDE_BFLOAT16_VALUE(23.73), SIMDE_BFLOAT16_VALUE(-45.72), SIMDE_BFLOAT16_VALUE(21.87), SIMDE_BFLOAT16_VALUE(8.97), SIMDE_BFLOAT16_VALUE(-15.67), SIMDE_BFLOAT16_VALUE(26.89) }, { SIMDE_BFLOAT16_VALUE(16.63), SIMDE_BFLOAT16_VALUE(6.70), SIMDE_BFLOAT16_VALUE(26.16), SIMDE_BFLOAT16_VALUE(-0.53), SIMDE_BFLOAT16_VALUE(-39.38), SIMDE_BFLOAT16_VALUE(-30.03), SIMDE_BFLOAT16_VALUE(33.53), SIMDE_BFLOAT16_VALUE(-5.08) }, { SIMDE_BFLOAT16_VALUE(24.18), SIMDE_BFLOAT16_VALUE(-0.77), SIMDE_BFLOAT16_VALUE(-38.76), SIMDE_BFLOAT16_VALUE(23.74), SIMDE_BFLOAT16_VALUE(-37.79), SIMDE_BFLOAT16_VALUE(-12.87), SIMDE_BFLOAT16_VALUE(35.22), SIMDE_BFLOAT16_VALUE(18.82) } }, { SIMDE_BFLOAT16_VALUE(18.75), SIMDE_BFLOAT16_VALUE(-19.33), SIMDE_BFLOAT16_VALUE(-8.32)}, { { SIMDE_BFLOAT16_VALUE(18.75), SIMDE_BFLOAT16_VALUE(32.75), SIMDE_BFLOAT16_VALUE(23.73), SIMDE_BFLOAT16_VALUE(-45.72), SIMDE_BFLOAT16_VALUE(21.87), SIMDE_BFLOAT16_VALUE(8.97), SIMDE_BFLOAT16_VALUE(-15.67), SIMDE_BFLOAT16_VALUE(26.89) }, { SIMDE_BFLOAT16_VALUE(-19.33), SIMDE_BFLOAT16_VALUE(6.70), SIMDE_BFLOAT16_VALUE(26.16), SIMDE_BFLOAT16_VALUE(-0.53), SIMDE_BFLOAT16_VALUE(-39.38), SIMDE_BFLOAT16_VALUE(-30.03), SIMDE_BFLOAT16_VALUE(33.53), SIMDE_BFLOAT16_VALUE(-5.08) }, { SIMDE_BFLOAT16_VALUE(-8.32), SIMDE_BFLOAT16_VALUE(-0.77), SIMDE_BFLOAT16_VALUE(-38.76), SIMDE_BFLOAT16_VALUE(23.74), SIMDE_BFLOAT16_VALUE(-37.79), SIMDE_BFLOAT16_VALUE(-12.87), SIMDE_BFLOAT16_VALUE(35.22), SIMDE_BFLOAT16_VALUE(18.82) } } }, { { { SIMDE_BFLOAT16_VALUE(-21.87), SIMDE_BFLOAT16_VALUE(-23.46), SIMDE_BFLOAT16_VALUE(43.50), SIMDE_BFLOAT16_VALUE(-42.37), SIMDE_BFLOAT16_VALUE(38.96), SIMDE_BFLOAT16_VALUE(-39.73), SIMDE_BFLOAT16_VALUE(1.99), SIMDE_BFLOAT16_VALUE(13.47) }, { SIMDE_BFLOAT16_VALUE(-21.30), SIMDE_BFLOAT16_VALUE(31.71), SIMDE_BFLOAT16_VALUE(43.14), SIMDE_BFLOAT16_VALUE(6.05), SIMDE_BFLOAT16_VALUE(-9.36), SIMDE_BFLOAT16_VALUE(31.44), SIMDE_BFLOAT16_VALUE(-1.40), SIMDE_BFLOAT16_VALUE(-46.83) }, { SIMDE_BFLOAT16_VALUE(22.32), SIMDE_BFLOAT16_VALUE(-30.37), SIMDE_BFLOAT16_VALUE(-16.31), SIMDE_BFLOAT16_VALUE(48.67), SIMDE_BFLOAT16_VALUE(-32.26), SIMDE_BFLOAT16_VALUE(-43.03), SIMDE_BFLOAT16_VALUE(-31.49), SIMDE_BFLOAT16_VALUE(-29.73) } }, { SIMDE_BFLOAT16_VALUE(-19.96), SIMDE_BFLOAT16_VALUE(16.11), SIMDE_BFLOAT16_VALUE(15.29)}, { { SIMDE_BFLOAT16_VALUE(-21.87), SIMDE_BFLOAT16_VALUE(-19.96), SIMDE_BFLOAT16_VALUE(43.50), SIMDE_BFLOAT16_VALUE(-42.37), SIMDE_BFLOAT16_VALUE(38.96), SIMDE_BFLOAT16_VALUE(-39.73), SIMDE_BFLOAT16_VALUE(1.99), SIMDE_BFLOAT16_VALUE(13.47) }, { SIMDE_BFLOAT16_VALUE(-21.30), SIMDE_BFLOAT16_VALUE(16.11), SIMDE_BFLOAT16_VALUE(43.14), SIMDE_BFLOAT16_VALUE(6.05), SIMDE_BFLOAT16_VALUE(-9.36), SIMDE_BFLOAT16_VALUE(31.44), SIMDE_BFLOAT16_VALUE(-1.40), SIMDE_BFLOAT16_VALUE(-46.83) }, { SIMDE_BFLOAT16_VALUE(22.32), SIMDE_BFLOAT16_VALUE(15.29), SIMDE_BFLOAT16_VALUE(-16.31), SIMDE_BFLOAT16_VALUE(48.67), SIMDE_BFLOAT16_VALUE(-32.26), SIMDE_BFLOAT16_VALUE(-43.03), SIMDE_BFLOAT16_VALUE(-31.49), SIMDE_BFLOAT16_VALUE(-29.73) } } }, { { { SIMDE_BFLOAT16_VALUE(22.99), SIMDE_BFLOAT16_VALUE(19.29), SIMDE_BFLOAT16_VALUE(-46.27), SIMDE_BFLOAT16_VALUE(-49.21), SIMDE_BFLOAT16_VALUE(48.55), SIMDE_BFLOAT16_VALUE(49.51), SIMDE_BFLOAT16_VALUE(1.68), SIMDE_BFLOAT16_VALUE(4.07) }, { SIMDE_BFLOAT16_VALUE(-8.20), SIMDE_BFLOAT16_VALUE(5.11), SIMDE_BFLOAT16_VALUE(17.40), SIMDE_BFLOAT16_VALUE(-3.87), SIMDE_BFLOAT16_VALUE(-20.55), SIMDE_BFLOAT16_VALUE(19.44), SIMDE_BFLOAT16_VALUE(-49.04), SIMDE_BFLOAT16_VALUE(-1.42) }, { SIMDE_BFLOAT16_VALUE(22.33), SIMDE_BFLOAT16_VALUE(-45.53), SIMDE_BFLOAT16_VALUE(-33.31), SIMDE_BFLOAT16_VALUE(-20.16), SIMDE_BFLOAT16_VALUE(-39.51), SIMDE_BFLOAT16_VALUE(-20.23), SIMDE_BFLOAT16_VALUE(-41.96), SIMDE_BFLOAT16_VALUE(-27.75) } }, { SIMDE_BFLOAT16_VALUE(21.67), SIMDE_BFLOAT16_VALUE(-1.62), SIMDE_BFLOAT16_VALUE(47.29)}, { { SIMDE_BFLOAT16_VALUE(22.99), SIMDE_BFLOAT16_VALUE(19.29), SIMDE_BFLOAT16_VALUE(21.67), SIMDE_BFLOAT16_VALUE(-49.21), SIMDE_BFLOAT16_VALUE(48.55), SIMDE_BFLOAT16_VALUE(49.51), SIMDE_BFLOAT16_VALUE(1.68), SIMDE_BFLOAT16_VALUE(4.07) }, { SIMDE_BFLOAT16_VALUE(-8.20), SIMDE_BFLOAT16_VALUE(5.11), SIMDE_BFLOAT16_VALUE(-1.62), SIMDE_BFLOAT16_VALUE(-3.87), SIMDE_BFLOAT16_VALUE(-20.55), SIMDE_BFLOAT16_VALUE(19.44), SIMDE_BFLOAT16_VALUE(-49.04), SIMDE_BFLOAT16_VALUE(-1.42) }, { SIMDE_BFLOAT16_VALUE(22.33), SIMDE_BFLOAT16_VALUE(-45.53), SIMDE_BFLOAT16_VALUE(47.29), SIMDE_BFLOAT16_VALUE(-20.16), SIMDE_BFLOAT16_VALUE(-39.51), SIMDE_BFLOAT16_VALUE(-20.23), SIMDE_BFLOAT16_VALUE(-41.96), SIMDE_BFLOAT16_VALUE(-27.75) } } }, { { { SIMDE_BFLOAT16_VALUE(-13.98), SIMDE_BFLOAT16_VALUE(-15.40), SIMDE_BFLOAT16_VALUE(-41.40), SIMDE_BFLOAT16_VALUE(-11.10), SIMDE_BFLOAT16_VALUE(-0.98), SIMDE_BFLOAT16_VALUE(20.30), SIMDE_BFLOAT16_VALUE(-21.19), SIMDE_BFLOAT16_VALUE(32.22) }, { SIMDE_BFLOAT16_VALUE(-29.71), SIMDE_BFLOAT16_VALUE(-33.61), SIMDE_BFLOAT16_VALUE(-34.96), SIMDE_BFLOAT16_VALUE(22.05), SIMDE_BFLOAT16_VALUE(-46.85), SIMDE_BFLOAT16_VALUE(49.18), SIMDE_BFLOAT16_VALUE(29.80), SIMDE_BFLOAT16_VALUE(15.12) }, { SIMDE_BFLOAT16_VALUE(-48.25), SIMDE_BFLOAT16_VALUE(20.21), SIMDE_BFLOAT16_VALUE(30.89), SIMDE_BFLOAT16_VALUE(-8.00), SIMDE_BFLOAT16_VALUE(47.59), SIMDE_BFLOAT16_VALUE(-33.30), SIMDE_BFLOAT16_VALUE(-17.17), SIMDE_BFLOAT16_VALUE(15.96) } }, { SIMDE_BFLOAT16_VALUE(-22.71), SIMDE_BFLOAT16_VALUE(18.03), SIMDE_BFLOAT16_VALUE(-12.62)}, { { SIMDE_BFLOAT16_VALUE(-13.98), SIMDE_BFLOAT16_VALUE(-15.40), SIMDE_BFLOAT16_VALUE(-41.40), SIMDE_BFLOAT16_VALUE(-22.71), SIMDE_BFLOAT16_VALUE(-0.98), SIMDE_BFLOAT16_VALUE(20.30), SIMDE_BFLOAT16_VALUE(-21.19), SIMDE_BFLOAT16_VALUE(32.22) }, { SIMDE_BFLOAT16_VALUE(-29.71), SIMDE_BFLOAT16_VALUE(-33.61), SIMDE_BFLOAT16_VALUE(-34.96), SIMDE_BFLOAT16_VALUE(18.03), SIMDE_BFLOAT16_VALUE(-46.85), SIMDE_BFLOAT16_VALUE(49.18), SIMDE_BFLOAT16_VALUE(29.80), SIMDE_BFLOAT16_VALUE(15.12) }, { SIMDE_BFLOAT16_VALUE(-48.25), SIMDE_BFLOAT16_VALUE(20.21), SIMDE_BFLOAT16_VALUE(30.89), SIMDE_BFLOAT16_VALUE(-12.62), SIMDE_BFLOAT16_VALUE(47.59), SIMDE_BFLOAT16_VALUE(-33.30), SIMDE_BFLOAT16_VALUE(-17.17), SIMDE_BFLOAT16_VALUE(15.96) } } }, { { { SIMDE_BFLOAT16_VALUE(-33.16), SIMDE_BFLOAT16_VALUE(41.77), SIMDE_BFLOAT16_VALUE(0.37), SIMDE_BFLOAT16_VALUE(49.97), SIMDE_BFLOAT16_VALUE(41.81), SIMDE_BFLOAT16_VALUE(-38.26), SIMDE_BFLOAT16_VALUE(36.03), SIMDE_BFLOAT16_VALUE(-6.12) }, { SIMDE_BFLOAT16_VALUE(45.98), SIMDE_BFLOAT16_VALUE(33.57), SIMDE_BFLOAT16_VALUE(4.26), SIMDE_BFLOAT16_VALUE(19.87), SIMDE_BFLOAT16_VALUE(6.49), SIMDE_BFLOAT16_VALUE(3.23), SIMDE_BFLOAT16_VALUE(17.28), SIMDE_BFLOAT16_VALUE(-0.70) }, { SIMDE_BFLOAT16_VALUE(-45.21), SIMDE_BFLOAT16_VALUE(10.70), SIMDE_BFLOAT16_VALUE(-30.89), SIMDE_BFLOAT16_VALUE(17.48), SIMDE_BFLOAT16_VALUE(-18.12), SIMDE_BFLOAT16_VALUE(-36.32), SIMDE_BFLOAT16_VALUE(12.70), SIMDE_BFLOAT16_VALUE(-9.89) } }, { SIMDE_BFLOAT16_VALUE(19.50), SIMDE_BFLOAT16_VALUE(43.23), SIMDE_BFLOAT16_VALUE(-34.14)}, { { SIMDE_BFLOAT16_VALUE(-33.16), SIMDE_BFLOAT16_VALUE(41.77), SIMDE_BFLOAT16_VALUE(0.37), SIMDE_BFLOAT16_VALUE(49.97), SIMDE_BFLOAT16_VALUE(19.50), SIMDE_BFLOAT16_VALUE(-38.26), SIMDE_BFLOAT16_VALUE(36.03), SIMDE_BFLOAT16_VALUE(-6.12) }, { SIMDE_BFLOAT16_VALUE(45.98), SIMDE_BFLOAT16_VALUE(33.57), SIMDE_BFLOAT16_VALUE(4.26), SIMDE_BFLOAT16_VALUE(19.87), SIMDE_BFLOAT16_VALUE(43.23), SIMDE_BFLOAT16_VALUE(3.23), SIMDE_BFLOAT16_VALUE(17.28), SIMDE_BFLOAT16_VALUE(-0.70) }, { SIMDE_BFLOAT16_VALUE(-45.21), SIMDE_BFLOAT16_VALUE(10.70), SIMDE_BFLOAT16_VALUE(-30.89), SIMDE_BFLOAT16_VALUE(17.48), SIMDE_BFLOAT16_VALUE(-34.14), SIMDE_BFLOAT16_VALUE(-36.32), SIMDE_BFLOAT16_VALUE(12.70), SIMDE_BFLOAT16_VALUE(-9.89) } } }, { { { SIMDE_BFLOAT16_VALUE(34.35), SIMDE_BFLOAT16_VALUE(45.11), SIMDE_BFLOAT16_VALUE(-17.38), SIMDE_BFLOAT16_VALUE(32.13), SIMDE_BFLOAT16_VALUE(-19.58), SIMDE_BFLOAT16_VALUE(-5.73), SIMDE_BFLOAT16_VALUE(-14.12), SIMDE_BFLOAT16_VALUE(-0.42) }, { SIMDE_BFLOAT16_VALUE(-17.04), SIMDE_BFLOAT16_VALUE(40.80), SIMDE_BFLOAT16_VALUE(-45.80), SIMDE_BFLOAT16_VALUE(37.28), SIMDE_BFLOAT16_VALUE(35.24), SIMDE_BFLOAT16_VALUE(40.83), SIMDE_BFLOAT16_VALUE(41.86), SIMDE_BFLOAT16_VALUE(16.76) }, { SIMDE_BFLOAT16_VALUE(44.82), SIMDE_BFLOAT16_VALUE(44.21), SIMDE_BFLOAT16_VALUE(-16.87), SIMDE_BFLOAT16_VALUE(28.04), SIMDE_BFLOAT16_VALUE(12.42), SIMDE_BFLOAT16_VALUE(-24.77), SIMDE_BFLOAT16_VALUE(-2.03), SIMDE_BFLOAT16_VALUE(6.16) } }, { SIMDE_BFLOAT16_VALUE(24.51), SIMDE_BFLOAT16_VALUE(-14.45), SIMDE_BFLOAT16_VALUE(-29.20)}, { { SIMDE_BFLOAT16_VALUE(34.35), SIMDE_BFLOAT16_VALUE(45.11), SIMDE_BFLOAT16_VALUE(-17.38), SIMDE_BFLOAT16_VALUE(32.13), SIMDE_BFLOAT16_VALUE(-19.58), SIMDE_BFLOAT16_VALUE(24.51), SIMDE_BFLOAT16_VALUE(-14.12), SIMDE_BFLOAT16_VALUE(-0.42) }, { SIMDE_BFLOAT16_VALUE(-17.04), SIMDE_BFLOAT16_VALUE(40.80), SIMDE_BFLOAT16_VALUE(-45.80), SIMDE_BFLOAT16_VALUE(37.28), SIMDE_BFLOAT16_VALUE(35.24), SIMDE_BFLOAT16_VALUE(-14.45), SIMDE_BFLOAT16_VALUE(41.86), SIMDE_BFLOAT16_VALUE(16.76) }, { SIMDE_BFLOAT16_VALUE(44.82), SIMDE_BFLOAT16_VALUE(44.21), SIMDE_BFLOAT16_VALUE(-16.87), SIMDE_BFLOAT16_VALUE(28.04), SIMDE_BFLOAT16_VALUE(12.42), SIMDE_BFLOAT16_VALUE(-29.20), SIMDE_BFLOAT16_VALUE(-2.03), SIMDE_BFLOAT16_VALUE(6.16) } } }, { { { SIMDE_BFLOAT16_VALUE(-19.86), SIMDE_BFLOAT16_VALUE(-49.12), SIMDE_BFLOAT16_VALUE(-43.11), SIMDE_BFLOAT16_VALUE(6.61), SIMDE_BFLOAT16_VALUE(-14.42), SIMDE_BFLOAT16_VALUE(-26.68), SIMDE_BFLOAT16_VALUE(-14.21), SIMDE_BFLOAT16_VALUE(-19.62) }, { SIMDE_BFLOAT16_VALUE(2.80), SIMDE_BFLOAT16_VALUE(21.66), SIMDE_BFLOAT16_VALUE(-36.49), SIMDE_BFLOAT16_VALUE(-15.12), SIMDE_BFLOAT16_VALUE(-49.41), SIMDE_BFLOAT16_VALUE(-26.19), SIMDE_BFLOAT16_VALUE(-24.23), SIMDE_BFLOAT16_VALUE(36.09) }, { SIMDE_BFLOAT16_VALUE(10.26), SIMDE_BFLOAT16_VALUE(31.20), SIMDE_BFLOAT16_VALUE(-42.59), SIMDE_BFLOAT16_VALUE(22.36), SIMDE_BFLOAT16_VALUE(-1.95), SIMDE_BFLOAT16_VALUE(-8.53), SIMDE_BFLOAT16_VALUE(37.02), SIMDE_BFLOAT16_VALUE(-47.32) } }, { SIMDE_BFLOAT16_VALUE(-2.66), SIMDE_BFLOAT16_VALUE(-28.19), SIMDE_BFLOAT16_VALUE(-49.39)}, { { SIMDE_BFLOAT16_VALUE(-19.86), SIMDE_BFLOAT16_VALUE(-49.12), SIMDE_BFLOAT16_VALUE(-43.11), SIMDE_BFLOAT16_VALUE(6.61), SIMDE_BFLOAT16_VALUE(-14.42), SIMDE_BFLOAT16_VALUE(-26.68), SIMDE_BFLOAT16_VALUE(-2.66), SIMDE_BFLOAT16_VALUE(-19.62) }, { SIMDE_BFLOAT16_VALUE(2.80), SIMDE_BFLOAT16_VALUE(21.66), SIMDE_BFLOAT16_VALUE(-36.49), SIMDE_BFLOAT16_VALUE(-15.12), SIMDE_BFLOAT16_VALUE(-49.41), SIMDE_BFLOAT16_VALUE(-26.19), SIMDE_BFLOAT16_VALUE(-28.19), SIMDE_BFLOAT16_VALUE(36.09) }, { SIMDE_BFLOAT16_VALUE(10.26), SIMDE_BFLOAT16_VALUE(31.20), SIMDE_BFLOAT16_VALUE(-42.59), SIMDE_BFLOAT16_VALUE(22.36), SIMDE_BFLOAT16_VALUE(-1.95), SIMDE_BFLOAT16_VALUE(-8.53), SIMDE_BFLOAT16_VALUE(-49.39), SIMDE_BFLOAT16_VALUE(-47.32) } } }, { { { SIMDE_BFLOAT16_VALUE(0.30), SIMDE_BFLOAT16_VALUE(6.73), SIMDE_BFLOAT16_VALUE(-6.28), SIMDE_BFLOAT16_VALUE(35.22), SIMDE_BFLOAT16_VALUE(-5.78), SIMDE_BFLOAT16_VALUE(-32.42), SIMDE_BFLOAT16_VALUE(-25.16), SIMDE_BFLOAT16_VALUE(14.50) }, { SIMDE_BFLOAT16_VALUE(9.20), SIMDE_BFLOAT16_VALUE(15.26), SIMDE_BFLOAT16_VALUE(14.27), SIMDE_BFLOAT16_VALUE(24.06), SIMDE_BFLOAT16_VALUE(9.76), SIMDE_BFLOAT16_VALUE(-32.84), SIMDE_BFLOAT16_VALUE(23.54), SIMDE_BFLOAT16_VALUE(-38.60) }, { SIMDE_BFLOAT16_VALUE(-2.89), SIMDE_BFLOAT16_VALUE(-12.52), SIMDE_BFLOAT16_VALUE(-24.22), SIMDE_BFLOAT16_VALUE(45.18), SIMDE_BFLOAT16_VALUE(-49.48), SIMDE_BFLOAT16_VALUE(-38.06), SIMDE_BFLOAT16_VALUE(0.89), SIMDE_BFLOAT16_VALUE(-2.25) } }, { SIMDE_BFLOAT16_VALUE(2.18), SIMDE_BFLOAT16_VALUE(35.99), SIMDE_BFLOAT16_VALUE(26.18)}, { { SIMDE_BFLOAT16_VALUE(0.30), SIMDE_BFLOAT16_VALUE(6.73), SIMDE_BFLOAT16_VALUE(-6.28), SIMDE_BFLOAT16_VALUE(35.22), SIMDE_BFLOAT16_VALUE(-5.78), SIMDE_BFLOAT16_VALUE(-32.42), SIMDE_BFLOAT16_VALUE(-25.16), SIMDE_BFLOAT16_VALUE(2.18) }, { SIMDE_BFLOAT16_VALUE(9.20), SIMDE_BFLOAT16_VALUE(15.26), SIMDE_BFLOAT16_VALUE(14.27), SIMDE_BFLOAT16_VALUE(24.06), SIMDE_BFLOAT16_VALUE(9.76), SIMDE_BFLOAT16_VALUE(-32.84), SIMDE_BFLOAT16_VALUE(23.54), SIMDE_BFLOAT16_VALUE(35.99) }, { SIMDE_BFLOAT16_VALUE(-2.89), SIMDE_BFLOAT16_VALUE(-12.52), SIMDE_BFLOAT16_VALUE(-24.22), SIMDE_BFLOAT16_VALUE(45.18), SIMDE_BFLOAT16_VALUE(-49.48), SIMDE_BFLOAT16_VALUE(-38.06), SIMDE_BFLOAT16_VALUE(0.89), SIMDE_BFLOAT16_VALUE(26.18) } } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_bfloat16x8x3_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]); src.val[2] = simde_vld1q_bf16(test_vec[i].src[2]); SIMDE_CONSTIFY_8_(simde_vld3q_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]); expected.val[2] = simde_vld1q_bf16(test_vec[i].r[2]); simde_test_arm_neon_assert_equal_bf16x8(r.val[0], expected.val[0], INT_MAX); simde_test_arm_neon_assert_equal_bf16x8(r.val[1], expected.val[1], INT_MAX); simde_test_arm_neon_assert_equal_bf16x8(r.val[2], expected.val[2], INT_MAX); } return 0; } SIMDE_TEST_FUNC_LIST_BEGIN SIMDE_TEST_FUNC_LIST_ENTRY(vld3_lane_s8) SIMDE_TEST_FUNC_LIST_ENTRY(vld3_lane_s16) SIMDE_TEST_FUNC_LIST_ENTRY(vld3_lane_s32) SIMDE_TEST_FUNC_LIST_ENTRY(vld3_lane_s64) SIMDE_TEST_FUNC_LIST_ENTRY(vld3_lane_u8) SIMDE_TEST_FUNC_LIST_ENTRY(vld3_lane_u16) SIMDE_TEST_FUNC_LIST_ENTRY(vld3_lane_u32) SIMDE_TEST_FUNC_LIST_ENTRY(vld3_lane_u64) SIMDE_TEST_FUNC_LIST_ENTRY(vld3_lane_f16) SIMDE_TEST_FUNC_LIST_ENTRY(vld3_lane_f32) SIMDE_TEST_FUNC_LIST_ENTRY(vld3_lane_f64) SIMDE_TEST_FUNC_LIST_ENTRY(vld3q_lane_s8) SIMDE_TEST_FUNC_LIST_ENTRY(vld3q_lane_s16) SIMDE_TEST_FUNC_LIST_ENTRY(vld3q_lane_s32) SIMDE_TEST_FUNC_LIST_ENTRY(vld3q_lane_s64) SIMDE_TEST_FUNC_LIST_ENTRY(vld3q_lane_u8) SIMDE_TEST_FUNC_LIST_ENTRY(vld3q_lane_u16) SIMDE_TEST_FUNC_LIST_ENTRY(vld3q_lane_u32) SIMDE_TEST_FUNC_LIST_ENTRY(vld3q_lane_u64) SIMDE_TEST_FUNC_LIST_ENTRY(vld3q_lane_f16) SIMDE_TEST_FUNC_LIST_ENTRY(vld3q_lane_f32) SIMDE_TEST_FUNC_LIST_ENTRY(vld3q_lane_f64) SIMDE_TEST_FUNC_LIST_ENTRY(vld3_lane_p8) SIMDE_TEST_FUNC_LIST_ENTRY(vld3_lane_p16) SIMDE_TEST_FUNC_LIST_ENTRY(vld3_lane_p64) SIMDE_TEST_FUNC_LIST_ENTRY(vld3q_lane_p8) SIMDE_TEST_FUNC_LIST_ENTRY(vld3q_lane_p16) SIMDE_TEST_FUNC_LIST_ENTRY(vld3q_lane_p64) SIMDE_TEST_FUNC_LIST_ENTRY(vld3_lane_bf16) SIMDE_TEST_FUNC_LIST_ENTRY(vld3q_lane_bf16) SIMDE_TEST_FUNC_LIST_END #include "test-neon-footer.h"