#define SIMDE_TEST_ARM_NEON_INSN sli_n
#include <test/arm/neon/test-neon.h>
#include <simde/arm/neon/sli_n.h>
static int
test_simde_vsli_n_s8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
int8_t a[8];
int8_t b[8];
int8_t r0[8];
int8_t r3[8];
int8_t r5[8];
int8_t r7[8];
} test_vec[] = {
{ { -INT8_C( 101), INT8_C( 26), INT8_C( 9), INT8_C( 26), INT8_C( 49), -INT8_C( 61), INT8_C( 126), INT8_C( 21) },
{ -INT8_C( 44), -INT8_C( 122), INT8_C( 93), INT8_C( 94), INT8_C( 54), -INT8_C( 71), -INT8_C( 21), INT8_C( 56) },
{ -INT8_C( 44), -INT8_C( 122), INT8_C( 93), INT8_C( 94), INT8_C( 54), -INT8_C( 71), -INT8_C( 21), INT8_C( 56) },
{ -INT8_C( 93), INT8_C( 50), -INT8_C( 23), -INT8_C( 14), -INT8_C( 79), -INT8_C( 53), INT8_C( 94), -INT8_C( 59) },
{ -INT8_C( 101), -INT8_C( 38), -INT8_C( 87), -INT8_C( 38), -INT8_C( 47), INT8_C( 35), INT8_C( 126), INT8_C( 21) },
{ INT8_C( 27), INT8_C( 26), -INT8_C( 119), INT8_C( 26), INT8_C( 49), -INT8_C( 61), -INT8_C( 2), INT8_C( 21) } },
{ { -INT8_C( 52), -INT8_C( 65), INT8_C( 2), INT8_C( 9), INT8_C( 115), -INT8_C( 114), INT8_C( 25), INT8_C( 51) },
{ INT8_C( 36), -INT8_C( 93), INT8_C( 125), -INT8_C( 57), -INT8_C( 97), INT8_C( 56), INT8_C( 7), -INT8_C( 86) },
{ INT8_C( 36), -INT8_C( 93), INT8_C( 125), -INT8_C( 57), -INT8_C( 97), INT8_C( 56), INT8_C( 7), -INT8_C( 86) },
{ INT8_C( 36), INT8_C( 31), -INT8_C( 22), INT8_C( 57), -INT8_C( 5), -INT8_C( 58), INT8_C( 57), INT8_C( 83) },
{ -INT8_C( 116), INT8_MAX, -INT8_C( 94), -INT8_C( 23), -INT8_C( 13), INT8_C( 14), -INT8_C( 7), INT8_C( 83) },
{ INT8_C( 76), -INT8_C( 65), -INT8_C( 126), -INT8_C( 119), -INT8_C( 13), INT8_C( 14), -INT8_C( 103), INT8_C( 51) } },
{ { INT8_C( 6), -INT8_C( 75), -INT8_C( 113), -INT8_C( 102), INT8_C( 91), INT8_C( 107), -INT8_C( 19), -INT8_C( 49) },
{ INT8_C( 125), INT8_C( 24), -INT8_C( 117), -INT8_C( 52), INT8_C( 56), -INT8_C( 96), -INT8_C( 78), -INT8_C( 125) },
{ INT8_C( 125), INT8_C( 24), -INT8_C( 117), -INT8_C( 52), INT8_C( 56), -INT8_C( 96), -INT8_C( 78), -INT8_C( 125) },
{ -INT8_C( 18), -INT8_C( 59), INT8_C( 95), INT8_C( 98), -INT8_C( 61), INT8_C( 3), -INT8_C( 107), INT8_C( 31) },
{ -INT8_C( 90), INT8_C( 21), INT8_C( 111), -INT8_C( 102), INT8_C( 27), INT8_C( 11), INT8_C( 77), INT8_C( 111) },
{ -INT8_C( 122), INT8_C( 53), -INT8_C( 113), INT8_C( 26), INT8_C( 91), INT8_C( 107), INT8_C( 109), -INT8_C( 49) } },
{ { INT8_C( 75), -INT8_C( 25), INT8_C( 53), INT8_C( 41), -INT8_C( 91), -INT8_C( 47), INT8_C( 11), INT8_C( 120) },
{ INT8_C( 26), -INT8_C( 111), -INT8_C( 51), -INT8_C( 50), -INT8_C( 100), INT8_C( 21), -INT8_C( 106), -INT8_C( 93) },
{ INT8_C( 26), -INT8_C( 111), -INT8_C( 51), -INT8_C( 50), -INT8_C( 100), INT8_C( 21), -INT8_C( 106), -INT8_C( 93) },
{ -INT8_C( 45), -INT8_C( 113), INT8_C( 109), INT8_C( 113), -INT8_C( 27), -INT8_C( 87), -INT8_C( 77), INT8_C( 24) },
{ INT8_C( 75), INT8_C( 39), -INT8_C( 75), -INT8_C( 55), -INT8_C( 123), -INT8_C( 79), -INT8_C( 53), INT8_C( 120) },
{ INT8_C( 75), -INT8_C( 25), -INT8_C( 75), INT8_C( 41), INT8_C( 37), -INT8_C( 47), INT8_C( 11), -INT8_C( 8) } },
{ { -INT8_C( 87), -INT8_C( 95), -INT8_C( 8), -INT8_C( 55), -INT8_C( 109), -INT8_C( 83), -INT8_C( 16), -INT8_C( 60) },
{ INT8_C( 67), -INT8_C( 113), INT8_C( 90), -INT8_C( 126), -INT8_C( 75), -INT8_C( 92), INT8_C( 62), INT8_C( 117) },
{ INT8_C( 67), -INT8_C( 113), INT8_C( 90), -INT8_C( 126), -INT8_C( 75), -INT8_C( 92), INT8_C( 62), INT8_C( 117) },
{ INT8_C( 25), INT8_C( 121), -INT8_C( 48), INT8_C( 17), -INT8_C( 85), INT8_C( 37), -INT8_C( 16), -INT8_C( 84) },
{ INT8_C( 105), -INT8_C( 31), INT8_C( 88), INT8_C( 73), -INT8_C( 77), -INT8_C( 115), -INT8_C( 48), -INT8_C( 92) },
{ -INT8_C( 87), -INT8_C( 95), INT8_C( 120), INT8_C( 73), -INT8_C( 109), INT8_C( 45), INT8_C( 112), -INT8_C( 60) } },
{ { INT8_C( 123), INT8_C( 75), -INT8_C( 20), -INT8_C( 51), INT8_C( 120), INT8_C( 69), INT8_C( 48), INT8_C( 75) },
{ -INT8_C( 63), -INT8_C( 101), -INT8_C( 127), INT8_C( 26), -INT8_C( 50), -INT8_C( 85), INT8_C( 50), -INT8_C( 88) },
{ -INT8_C( 63), -INT8_C( 101), -INT8_C( 127), INT8_C( 26), -INT8_C( 50), -INT8_C( 85), INT8_C( 50), -INT8_C( 88) },
{ INT8_C( 11), -INT8_C( 37), INT8_C( 12), -INT8_C( 43), INT8_C( 112), INT8_C( 93), -INT8_C( 112), INT8_C( 67) },
{ INT8_C( 59), INT8_C( 107), INT8_C( 44), INT8_C( 77), -INT8_C( 40), INT8_C( 101), INT8_C( 80), INT8_C( 11) },
{ -INT8_C( 5), -INT8_C( 53), -INT8_C( 20), INT8_C( 77), INT8_C( 120), -INT8_C( 59), INT8_C( 48), INT8_C( 75) } },
{ { -INT8_C( 23), -INT8_C( 99), -INT8_C( 123), -INT8_C( 103), INT8_C( 63), -INT8_C( 97), -INT8_C( 22), INT8_C( 117) },
{ -INT8_C( 75), -INT8_C( 111), INT8_C( 98), -INT8_C( 17), -INT8_C( 5), INT8_C( 109), INT8_C( 78), INT8_C( 52) },
{ -INT8_C( 75), -INT8_C( 111), INT8_C( 98), -INT8_C( 17), -INT8_C( 5), INT8_C( 109), INT8_C( 78), INT8_C( 52) },
{ -INT8_C( 87), -INT8_C( 115), INT8_C( 21), INT8_C( 121), -INT8_C( 33), INT8_C( 111), INT8_C( 114), -INT8_C( 91) },
{ -INT8_C( 87), INT8_C( 61), INT8_C( 69), -INT8_C( 7), INT8_MAX, -INT8_C( 65), -INT8_C( 54), -INT8_C( 107) },
{ -INT8_C( 23), -INT8_C( 99), INT8_C( 5), -INT8_C( 103), -INT8_C( 65), -INT8_C( 97), INT8_C( 106), INT8_C( 117) } },
{ { INT8_C( 98), INT8_C( 62), INT8_C( 126), -INT8_C( 74), -INT8_C( 10), INT8_C( 124), INT8_C( 96), -INT8_C( 61) },
{ -INT8_C( 110), INT8_C( 111), INT8_C( 80), INT8_C( 107), INT8_C( 102), INT8_C( 8), INT8_C( 75), -INT8_C( 51) },
{ -INT8_C( 110), INT8_C( 111), INT8_C( 80), INT8_C( 107), INT8_C( 102), INT8_C( 8), INT8_C( 75), -INT8_C( 51) },
{ -INT8_C( 110), INT8_C( 126), -INT8_C( 122), INT8_C( 94), INT8_C( 54), INT8_C( 68), INT8_C( 88), INT8_C( 107) },
{ INT8_C( 66), -INT8_C( 2), INT8_C( 30), INT8_C( 118), -INT8_C( 42), INT8_C( 28), INT8_C( 96), -INT8_C( 93) },
{ INT8_C( 98), -INT8_C( 66), INT8_C( 126), -INT8_C( 74), INT8_C( 118), INT8_C( 124), -INT8_C( 32), -INT8_C( 61) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int8x8_t a = simde_vld1_s8(test_vec[i].a);
simde_int8x8_t b = simde_vld1_s8(test_vec[i].b);
simde_int8x8_t r0 = simde_vsli_n_s8(a, b, 0);
simde_int8x8_t r3 = simde_vsli_n_s8(a, b, 3);
simde_int8x8_t r5 = simde_vsli_n_s8(a, b, 5);
simde_int8x8_t r7 = simde_vsli_n_s8(a, b, 7);
simde_test_arm_neon_assert_equal_i8x8(r0, simde_vld1_s8(test_vec[i].r0));
simde_test_arm_neon_assert_equal_i8x8(r3, simde_vld1_s8(test_vec[i].r3));
simde_test_arm_neon_assert_equal_i8x8(r5, simde_vld1_s8(test_vec[i].r5));
simde_test_arm_neon_assert_equal_i8x8(r7, simde_vld1_s8(test_vec[i].r7));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_int8x8_t a = simde_test_arm_neon_random_i8x8();
simde_int8x8_t b = simde_test_arm_neon_random_i8x8();
simde_int8x8_t r0 = simde_vsli_n_s8(a, b, 0);
simde_int8x8_t r3 = simde_vsli_n_s8(a, b, 3);
simde_int8x8_t r5 = simde_vsli_n_s8(a, b, 5);
simde_int8x8_t r7 = simde_vsli_n_s8(a, b, 7);
simde_test_arm_neon_write_i8x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_i8x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i8x8(2, r0, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i8x8(2, r3, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i8x8(2, r5, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i8x8(2, r7, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vsli_n_s16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
int16_t a[4];
int16_t b[4];
int16_t r3[4];
int16_t r6[4];
int16_t r10[4];
int16_t r13[4];
int16_t r15[4];
} test_vec[] = {
{ { INT16_C( 23715), -INT16_C( 5119), -INT16_C( 948), -INT16_C( 10596) },
{ -INT16_C( 10350), -INT16_C( 1795), -INT16_C( 14589), INT16_C( 23500) },
{ -INT16_C( 17261), -INT16_C( 14359), INT16_C( 14364), -INT16_C( 8604) },
{ -INT16_C( 7005), INT16_C( 16193), -INT16_C( 16180), -INT16_C( 3300) },
{ INT16_C( 18595), -INT16_C( 3071), INT16_C( 3148), INT16_C( 12956) },
{ INT16_C( 23715), -INT16_C( 21503), INT16_C( 31820), -INT16_C( 26980) },
{ INT16_C( 23715), -INT16_C( 5119), -INT16_C( 948), INT16_C( 22172) } },
{ { -INT16_C( 7934), INT16_C( 21731), -INT16_C( 14529), INT16_C( 7523) },
{ INT16_C( 19582), INT16_C( 30872), -INT16_C( 13482), INT16_C( 26450) },
{ INT16_C( 25586), -INT16_C( 15165), INT16_C( 23223), INT16_C( 14995) },
{ INT16_C( 8066), INT16_C( 9763), -INT16_C( 10817), -INT16_C( 11101) },
{ -INT16_C( 1790), INT16_C( 24803), INT16_C( 23359), INT16_C( 18787) },
{ -INT16_C( 16126), INT16_C( 5347), -INT16_C( 14529), INT16_C( 23907) },
{ INT16_C( 24834), INT16_C( 21731), INT16_C( 18239), INT16_C( 7523) } },
{ { -INT16_C( 24714), -INT16_C( 31480), -INT16_C( 32651), INT16_C( 11630) },
{ -INT16_C( 15138), INT16_C( 24046), INT16_C( 29437), INT16_C( 12656) },
{ INT16_C( 9974), -INT16_C( 4240), -INT16_C( 26643), -INT16_C( 29818) },
{ INT16_C( 14262), INT16_C( 31624), -INT16_C( 16523), INT16_C( 23598) },
{ INT16_C( 31606), -INT16_C( 18168), -INT16_C( 2955), -INT16_C( 16018) },
{ -INT16_C( 8330), -INT16_C( 15096), -INT16_C( 24459), INT16_C( 3438) },
{ INT16_C( 8054), INT16_C( 1288), -INT16_C( 32651), INT16_C( 11630) } },
{ { INT16_C( 16403), INT16_C( 27409), -INT16_C( 10162), INT16_C( 4136) },
{ -INT16_C( 19183), INT16_C( 17481), INT16_C( 8984), -INT16_C( 8279) },
{ -INT16_C( 22389), INT16_C( 8777), INT16_C( 6342), -INT16_C( 696) },
{ INT16_C( 17491), INT16_C( 4689), -INT16_C( 14834), -INT16_C( 5528) },
{ INT16_C( 17427), INT16_C( 10001), INT16_C( 24654), -INT16_C( 23512) },
{ INT16_C( 8211), INT16_C( 11025), INT16_C( 6222), INT16_C( 12328) },
{ -INT16_C( 16365), -INT16_C( 5359), INT16_C( 22606), -INT16_C( 28632) } },
{ { -INT16_C( 13838), -INT16_C( 14285), -INT16_C( 31333), INT16_C( 13782) },
{ -INT16_C( 27229), -INT16_C( 5507), INT16_C( 956), INT16_C( 28420) },
{ -INT16_C( 21222), INT16_C( 21483), INT16_C( 7651), INT16_C( 30758) },
{ INT16_C( 26866), -INT16_C( 24717), -INT16_C( 4325), -INT16_C( 16106) },
{ -INT16_C( 29198), -INT16_C( 3021), -INT16_C( 3685), INT16_C( 4566) },
{ INT16_C( 27122), -INT16_C( 22477), -INT16_C( 31333), -INT16_C( 27178) },
{ -INT16_C( 13838), -INT16_C( 14285), INT16_C( 1435), INT16_C( 13782) } },
{ { -INT16_C( 18860), INT16_C( 10979), INT16_C( 2287), INT16_C( 27177) },
{ -INT16_C( 19616), -INT16_C( 31797), -INT16_C( 22340), -INT16_C( 25390) },
{ -INT16_C( 25852), INT16_C( 7771), INT16_C( 17895), -INT16_C( 6511) },
{ -INT16_C( 10220), -INT16_C( 3357), INT16_C( 12079), INT16_C( 13481) },
{ -INT16_C( 32172), INT16_C( 12003), -INT16_C( 3857), INT16_C( 18985) },
{ INT16_C( 5716), INT16_C( 27363), -INT16_C( 30481), INT16_C( 18985) },
{ INT16_C( 13908), -INT16_C( 21789), INT16_C( 2287), INT16_C( 27177) } },
{ { -INT16_C( 2519), -INT16_C( 16767), INT16_C( 1614), -INT16_C( 7018) },
{ -INT16_C( 20639), -INT16_C( 13532), INT16_C( 11903), INT16_C( 7823) },
{ INT16_C( 31497), INT16_C( 22817), INT16_C( 29694), -INT16_C( 2946) },
{ -INT16_C( 10135), -INT16_C( 14079), -INT16_C( 24626), -INT16_C( 23594) },
{ -INT16_C( 31191), -INT16_C( 28031), -INT16_C( 434), INT16_C( 15510) },
{ INT16_C( 13865), -INT16_C( 24959), -INT16_C( 6578), -INT16_C( 7018) },
{ -INT16_C( 2519), INT16_C( 16001), -INT16_C( 31154), -INT16_C( 7018) } },
{ { INT16_C( 23386), -INT16_C( 5076), INT16_C( 2178), -INT16_C( 19292) },
{ -INT16_C( 15822), INT16_C( 11790), -INT16_C( 26587), INT16_C( 12479) },
{ INT16_C( 4498), INT16_C( 28788), -INT16_C( 16086), -INT16_C( 31236) },
{ -INT16_C( 29542), -INT16_C( 31828), INT16_C( 2370), INT16_C( 12260) },
{ -INT16_C( 13478), INT16_C( 14380), -INT16_C( 27518), -INT16_C( 860) },
{ INT16_C( 23386), -INT16_C( 13268), -INT16_C( 22398), -INT16_C( 2908) },
{ INT16_C( 23386), INT16_C( 27692), -INT16_C( 30590), -INT16_C( 19292) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int16x4_t a = simde_vld1_s16(test_vec[i].a);
simde_int16x4_t b = simde_vld1_s16(test_vec[i].b);
simde_int16x4_t r3 = simde_vsli_n_s16(a, b, 3);
simde_int16x4_t r6 = simde_vsli_n_s16(a, b, 6);
simde_int16x4_t r10 = simde_vsli_n_s16(a, b, 10);
simde_int16x4_t r13 = simde_vsli_n_s16(a, b, 13);
simde_int16x4_t r15 = simde_vsli_n_s16(a, b, 15);
simde_test_arm_neon_assert_equal_i16x4(r3, simde_vld1_s16(test_vec[i].r3));
simde_test_arm_neon_assert_equal_i16x4(r6, simde_vld1_s16(test_vec[i].r6));
simde_test_arm_neon_assert_equal_i16x4(r10, simde_vld1_s16(test_vec[i].r10));
simde_test_arm_neon_assert_equal_i16x4(r13, simde_vld1_s16(test_vec[i].r13));
simde_test_arm_neon_assert_equal_i16x4(r15, simde_vld1_s16(test_vec[i].r15));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_int16x4_t a = simde_test_arm_neon_random_i16x4();
simde_int16x4_t b = simde_test_arm_neon_random_i16x4();
simde_int16x4_t r3 = simde_vsli_n_s16(a, b, 3);
simde_int16x4_t r6 = simde_vsli_n_s16(a, b, 6);
simde_int16x4_t r10 = simde_vsli_n_s16(a, b, 10);
simde_int16x4_t r13 = simde_vsli_n_s16(a, b, 13);
simde_int16x4_t r15 = simde_vsli_n_s16(a, b, 15);
simde_test_arm_neon_write_i16x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_i16x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i16x4(2, r3, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i16x4(2, r6, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i16x4(2, r10, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i16x4(2, r13, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i16x4(2, r15, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vsli_n_s32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
int32_t a[2];
int32_t b[2];
int32_t r6[2];
int32_t r13[2];
int32_t r19[2];
int32_t r26[2];
int32_t r31[2];
} test_vec[] = {
{ { -INT32_C(1940115604), -INT32_C( 493831926) },
{ INT32_C(1869505583), -INT32_C( 899781217) },
{ -INT32_C( 610726932), -INT32_C(1751423030) },
{ -INT32_C( 863637652), -INT32_C( 843843318) },
{ INT32_C( 561786732), INT32_C(1828239626) },
{ -INT32_C(1134809236), INT32_C(2123413770) },
{ -INT32_C(1940115604), -INT32_C( 493831926) } },
{ { -INT32_C(1955947586), INT32_C(1978912402) },
{ -INT32_C(1236739145), INT32_C(1680908470) },
{ -INT32_C(1841893890), INT32_C( 203959698) },
{ INT32_C( 460782526), INT32_C( 337038994) },
{ -INT32_C( 574972994), INT32_C( 95669906) },
{ -INT32_C( 546661442), -INT32_C( 638333294) },
{ -INT32_C(1955947586), INT32_C(1978912402) } },
{ { INT32_C( 280147815), -INT32_C( 796117516) },
{ INT32_C( 183449113), -INT32_C(1555283915) },
{ -INT32_C(1144158617), -INT32_C( 753922700) },
{ -INT32_C( 423413913), -INT32_C(2012826124) },
{ -INT32_C(1328892057), INT32_C( 28063220) },
{ INT32_C(1689433959), -INT32_C( 729008652) },
{ -INT32_C(1867335833), -INT32_C( 796117516) } },
{ { -INT32_C( 481956659), INT32_C(1163086735) },
{ -INT32_C( 907228244), -INT32_C( 499683881) },
{ INT32_C(2066934541), -INT32_C(1914997297) },
{ -INT32_C(1720349491), -INT32_C( 306517105) },
{ INT32_C(1566960845), INT32_C(1857768335) },
{ -INT32_C(1287263027), INT32_C(1565739919) },
{ INT32_C(1665526989), -INT32_C( 984396913) } },
{ { INT32_C( 866589805), -INT32_C(1170103474) },
{ -INT32_C( 619576881), -INT32_C(1677689277) },
{ -INT32_C( 998214675), INT32_C( 2068686) },
{ INT32_C(1077541997), INT32_C( 264790862) },
{ INT32_C( 243211373), -INT32_C( 233200818) },
{ INT32_C(1067916397), INT32_C( 239182670) },
{ -INT32_C(1280893843), -INT32_C(1170103474) } },
{ { -INT32_C(1782422731), INT32_C(1801404031) },
{ -INT32_C( 75297761), -INT32_C( 202030994) },
{ -INT32_C( 524089355), -INT32_C( 45081665) },
{ INT32_C(1636033333), -INT32_C(1475486081) },
{ INT32_C(1627022133), INT32_C( 58146431) },
{ INT32_C(2109891381), -INT32_C(1151385985) },
{ -INT32_C(1782422731), INT32_C(1801404031) } },
{ { -INT32_C(1145515122), -INT32_C(1205350463) },
{ -INT32_C(2014419578), -INT32_C( 605233209) },
{ -INT32_C( 73834098), -INT32_C( 80219711) },
{ -INT32_C( 860826738), -INT32_C(1678184511) },
{ INT32_C( 741397390), -INT32_C( 29372479) },
{ INT32_C( 465097614), INT32_C( 472371137) },
{ INT32_C(1001968526), -INT32_C(1205350463) } },
{ { INT32_C(1262095535), -INT32_C(1722331384) },
{ INT32_C(1969407398), -INT32_C(1230587853) },
{ INT32_C(1488021935), -INT32_C(1448211256) },
{ INT32_C(1488243887), -INT32_C( 687444216) },
{ INT32_C( 758254767), -INT32_C(1046524152) },
{ -INT32_C(1690694481), -INT32_C( 849916152) },
{ INT32_C(1262095535), -INT32_C(1722331384) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int32x2_t a = simde_vld1_s32(test_vec[i].a);
simde_int32x2_t b = simde_vld1_s32(test_vec[i].b);
simde_int32x2_t r6 = simde_vsli_n_s32(a, b, 6);
simde_int32x2_t r13 = simde_vsli_n_s32(a, b, 13);
simde_int32x2_t r19 = simde_vsli_n_s32(a, b, 19);
simde_int32x2_t r26 = simde_vsli_n_s32(a, b, 26);
simde_int32x2_t r31 = simde_vsli_n_s32(a, b, 31);
simde_test_arm_neon_assert_equal_i32x2(r6, simde_vld1_s32(test_vec[i].r6));
simde_test_arm_neon_assert_equal_i32x2(r13, simde_vld1_s32(test_vec[i].r13));
simde_test_arm_neon_assert_equal_i32x2(r19, simde_vld1_s32(test_vec[i].r19));
simde_test_arm_neon_assert_equal_i32x2(r26, simde_vld1_s32(test_vec[i].r26));
simde_test_arm_neon_assert_equal_i32x2(r31, simde_vld1_s32(test_vec[i].r31));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_int32x2_t a = simde_test_arm_neon_random_i32x2();
simde_int32x2_t b = simde_test_arm_neon_random_i32x2();
simde_int32x2_t r6 = simde_vsli_n_s32(a, b, 6);
simde_int32x2_t r13 = simde_vsli_n_s32(a, b, 13);
simde_int32x2_t r19 = simde_vsli_n_s32(a, b, 19);
simde_int32x2_t r26 = simde_vsli_n_s32(a, b, 26);
simde_int32x2_t r31 = simde_vsli_n_s32(a, b, 31);
simde_test_arm_neon_write_i32x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_i32x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i32x2(2, r6, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i32x2(2, r13, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i32x2(2, r19, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i32x2(2, r26, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i32x2(2, r31, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vsli_n_s64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
int64_t a[1];
int64_t b[1];
int64_t r13[1];
int64_t r26[1];
int64_t r39[1];
int64_t r52[1];
int64_t r63[1];
} test_vec[] = {
{ { INT64_C( 6231160190656283089) },
{ -INT64_C( 460160416367637488) },
{ -INT64_C( 6498339846937771567) },
{ INT64_C( 2903370611581485521) },
{ INT64_C( 6558938900547469777) },
{ -INT64_C( 4536946518386572847) },
{ INT64_C( 6231160190656283089) } },
{ { -INT64_C( 1382763905312428596) },
{ -INT64_C( 4253508470463334304) },
{ INT64_C( 1158165201708387788) },
{ INT64_C( 6062878508435041740) },
{ INT64_C( 8465694235828350412) },
{ -INT64_C( 8786681692709524020) },
{ INT64_C( 7840608131542347212) } },
{ { -INT64_C( 188675660009576721) },
{ INT64_C( 8862026640770314742) },
{ -INT64_C( 8662432930376792337) },
{ INT64_C( 1973885914004186863) },
{ -INT64_C( 7721145048391358737) },
{ INT64_C( 2261282537279973103) },
{ INT64_C( 9034696376845199087) } },
{ { INT64_C( 8280825101553980221) },
{ -INT64_C( 5326939997036914826) },
{ INT64_C( 6704022670392873789) },
{ INT64_C( 3396608425067762493) },
{ INT64_C( 7326154889283982141) },
{ INT64_C( 8605084274724655933) },
{ INT64_C( 8280825101553980221) } },
{ { -INT64_C( 4186443145725907458) },
{ INT64_C( 8264653391654679543) },
{ INT64_C( 4489833921080389118) },
{ -INT64_C( 2088201486283346434) },
{ -INT64_C( 6414819513448829442) },
{ INT64_C( 4573058129509707262) },
{ -INT64_C( 4186443145725907458) } },
{ { INT64_C( 668356405945180429) },
{ -INT64_C( 5702155833444664254) },
{ -INT64_C( 4904592946104876787) },
{ -INT64_C( 1416821951687024371) },
{ -INT64_C( 3603406246906420979) },
{ -INT64_C( 4312624781926588147) },
{ INT64_C( 668356405945180429) } },
{ { -INT64_C( 7452140987469877822) },
{ -INT64_C( 6307661369476126878) },
{ -INT64_C( 3031788287977304638) },
{ -INT64_C( 7092131897022960190) },
{ INT64_C( 8499331815746219458) },
{ INT64_C( 8513119691558530498) },
{ INT64_C( 1771231049384897986) } },
{ { INT64_C( 8764810789801773550) },
{ -INT64_C( 8804733489023547712) },
{ -INT64_C( 1607413876556035602) },
{ INT64_C( 3040791881582987758) },
{ INT64_C( 7062594716434778606) },
{ INT64_C( 7783026071035005422) },
{ INT64_C( 8764810789801773550) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int64x1_t a = simde_vld1_s64(test_vec[i].a);
simde_int64x1_t b = simde_vld1_s64(test_vec[i].b);
simde_int64x1_t r13 = simde_vsli_n_s64(a, b, 13);
simde_int64x1_t r26 = simde_vsli_n_s64(a, b, 26);
simde_int64x1_t r39 = simde_vsli_n_s64(a, b, 39);
simde_int64x1_t r52 = simde_vsli_n_s64(a, b, 52);
simde_int64x1_t r63 = simde_vsli_n_s64(a, b, 63);
simde_test_arm_neon_assert_equal_i64x1(r13, simde_vld1_s64(test_vec[i].r13));
simde_test_arm_neon_assert_equal_i64x1(r26, simde_vld1_s64(test_vec[i].r26));
simde_test_arm_neon_assert_equal_i64x1(r39, simde_vld1_s64(test_vec[i].r39));
simde_test_arm_neon_assert_equal_i64x1(r52, simde_vld1_s64(test_vec[i].r52));
simde_test_arm_neon_assert_equal_i64x1(r63, simde_vld1_s64(test_vec[i].r63));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_int64x1_t a = simde_test_arm_neon_random_i64x1();
simde_int64x1_t b = simde_test_arm_neon_random_i64x1();
simde_int64x1_t r13 = simde_vsli_n_s64(a, b, 13);
simde_int64x1_t r26 = simde_vsli_n_s64(a, b, 26);
simde_int64x1_t r39 = simde_vsli_n_s64(a, b, 39);
simde_int64x1_t r52 = simde_vsli_n_s64(a, b, 52);
simde_int64x1_t r63 = simde_vsli_n_s64(a, b, 63);
simde_test_arm_neon_write_i64x1(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_i64x1(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i64x1(2, r13, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i64x1(2, r26, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i64x1(2, r39, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i64x1(2, r52, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i64x1(2, r63, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vsli_n_u8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
uint8_t a[8];
uint8_t b[8];
uint8_t r0[8];
uint8_t r3[8];
uint8_t r5[8];
uint8_t r7[8];
} test_vec[] = {
{ { UINT8_C( 194), UINT8_C( 153), UINT8_C( 182), UINT8_C( 53), UINT8_C( 45), UINT8_C( 214), UINT8_C( 136), UINT8_C( 217) },
{ UINT8_C( 51), UINT8_C( 2), UINT8_C( 97), UINT8_C( 189), UINT8_C( 250), UINT8_C( 77), UINT8_C( 65), UINT8_C( 28) },
{ UINT8_C( 51), UINT8_C( 2), UINT8_C( 97), UINT8_C( 189), UINT8_C( 250), UINT8_C( 77), UINT8_C( 65), UINT8_C( 28) },
{ UINT8_C( 154), UINT8_C( 17), UINT8_C( 14), UINT8_C( 237), UINT8_C( 213), UINT8_C( 110), UINT8_C( 8), UINT8_C( 225) },
{ UINT8_C( 98), UINT8_C( 89), UINT8_C( 54), UINT8_C( 181), UINT8_C( 77), UINT8_C( 182), UINT8_C( 40), UINT8_C( 153) },
{ UINT8_C( 194), UINT8_C( 25), UINT8_C( 182), UINT8_C( 181), UINT8_C( 45), UINT8_C( 214), UINT8_C( 136), UINT8_C( 89) } },
{ { UINT8_C( 149), UINT8_C( 148), UINT8_C( 192), UINT8_C( 18), UINT8_C( 191), UINT8_C( 120), UINT8_C( 160), UINT8_C( 251) },
{ UINT8_C( 243), UINT8_C( 246), UINT8_C( 159), UINT8_C( 234), UINT8_C( 49), UINT8_C( 191), UINT8_C( 110), UINT8_C( 189) },
{ UINT8_C( 243), UINT8_C( 246), UINT8_C( 159), UINT8_C( 234), UINT8_C( 49), UINT8_C( 191), UINT8_C( 110), UINT8_C( 189) },
{ UINT8_C( 157), UINT8_C( 180), UINT8_C( 248), UINT8_C( 82), UINT8_C( 143), UINT8_C( 248), UINT8_C( 112), UINT8_C( 235) },
{ UINT8_C( 117), UINT8_C( 212), UINT8_C( 224), UINT8_C( 82), UINT8_C( 63), UINT8_C( 248), UINT8_C( 192), UINT8_C( 187) },
{ UINT8_C( 149), UINT8_C( 20), UINT8_C( 192), UINT8_C( 18), UINT8_C( 191), UINT8_C( 248), UINT8_C( 32), UINT8_C( 251) } },
{ { UINT8_C( 16), UINT8_C( 99), UINT8_C( 9), UINT8_C( 145), UINT8_C( 219), UINT8_C( 91), UINT8_C( 218), UINT8_C( 77) },
{ UINT8_C( 145), UINT8_C( 92), UINT8_C( 7), UINT8_C( 26), UINT8_C( 192), UINT8_C( 34), UINT8_C( 2), UINT8_C( 133) },
{ UINT8_C( 145), UINT8_C( 92), UINT8_C( 7), UINT8_C( 26), UINT8_C( 192), UINT8_C( 34), UINT8_C( 2), UINT8_C( 133) },
{ UINT8_C( 136), UINT8_C( 227), UINT8_C( 57), UINT8_C( 209), UINT8_C( 3), UINT8_C( 19), UINT8_C( 18), UINT8_C( 45) },
{ UINT8_C( 48), UINT8_C( 131), UINT8_C( 233), UINT8_C( 81), UINT8_C( 27), UINT8_C( 91), UINT8_C( 90), UINT8_C( 173) },
{ UINT8_C( 144), UINT8_C( 99), UINT8_C( 137), UINT8_C( 17), UINT8_C( 91), UINT8_C( 91), UINT8_C( 90), UINT8_C( 205) } },
{ { UINT8_C( 102), UINT8_C( 103), UINT8_C( 7), UINT8_C( 20), UINT8_C( 115), UINT8_C( 205), UINT8_C( 70), UINT8_C( 133) },
{ UINT8_C( 41), UINT8_C( 89), UINT8_C( 182), UINT8_C( 231), UINT8_C( 117), UINT8_C( 92), UINT8_C( 234), UINT8_C( 177) },
{ UINT8_C( 41), UINT8_C( 89), UINT8_C( 182), UINT8_C( 231), UINT8_C( 117), UINT8_C( 92), UINT8_C( 234), UINT8_C( 177) },
{ UINT8_C( 78), UINT8_C( 207), UINT8_C( 183), UINT8_C( 60), UINT8_C( 171), UINT8_C( 229), UINT8_C( 86), UINT8_C( 141) },
{ UINT8_C( 38), UINT8_C( 39), UINT8_C( 199), UINT8_C( 244), UINT8_C( 179), UINT8_C( 141), UINT8_C( 70), UINT8_C( 37) },
{ UINT8_C( 230), UINT8_C( 231), UINT8_C( 7), UINT8_C( 148), UINT8_C( 243), UINT8_C( 77), UINT8_C( 70), UINT8_C( 133) } },
{ { UINT8_C( 51), UINT8_C( 28), UINT8_C( 95), UINT8_C( 70), UINT8_C( 30), UINT8_C( 241), UINT8_C( 5), UINT8_C( 134) },
{ UINT8_C( 85), UINT8_C( 174), UINT8_C( 194), UINT8_C( 192), UINT8_C( 222), UINT8_C( 190), UINT8_C( 203), UINT8_C( 97) },
{ UINT8_C( 85), UINT8_C( 174), UINT8_C( 194), UINT8_C( 192), UINT8_C( 222), UINT8_C( 190), UINT8_C( 203), UINT8_C( 97) },
{ UINT8_C( 171), UINT8_C( 116), UINT8_C( 23), UINT8_C( 6), UINT8_C( 246), UINT8_C( 241), UINT8_C( 93), UINT8_C( 14) },
{ UINT8_C( 179), UINT8_C( 220), UINT8_C( 95), UINT8_C( 6), UINT8_C( 222), UINT8_C( 209), UINT8_C( 101), UINT8_C( 38) },
{ UINT8_C( 179), UINT8_C( 28), UINT8_C( 95), UINT8_C( 70), UINT8_C( 30), UINT8_C( 113), UINT8_C( 133), UINT8_C( 134) } },
{ { UINT8_C( 167), UINT8_C( 158), UINT8_C( 137), UINT8_C( 37), UINT8_C( 155), UINT8_C( 179), UINT8_C( 172), UINT8_C( 255) },
{ UINT8_C( 33), UINT8_C( 236), UINT8_C( 241), UINT8_C( 226), UINT8_C( 155), UINT8_C( 240), UINT8_C( 33), UINT8_C( 64) },
{ UINT8_C( 33), UINT8_C( 236), UINT8_C( 241), UINT8_C( 226), UINT8_C( 155), UINT8_C( 240), UINT8_C( 33), UINT8_C( 64) },
{ UINT8_C( 15), UINT8_C( 102), UINT8_C( 137), UINT8_C( 21), UINT8_C( 219), UINT8_C( 131), UINT8_C( 12), UINT8_C( 7) },
{ UINT8_C( 39), UINT8_C( 158), UINT8_C( 41), UINT8_C( 69), UINT8_C( 123), UINT8_C( 19), UINT8_C( 44), UINT8_C( 31) },
{ UINT8_C( 167), UINT8_C( 30), UINT8_C( 137), UINT8_C( 37), UINT8_C( 155), UINT8_C( 51), UINT8_C( 172), UINT8_C( 127) } },
{ { UINT8_C( 5), UINT8_C( 77), UINT8_C( 86), UINT8_C( 188), UINT8_C( 22), UINT8_C( 139), UINT8_C( 165), UINT8_C( 74) },
{ UINT8_C( 27), UINT8_C( 100), UINT8_C( 63), UINT8_C( 133), UINT8_C( 173), UINT8_C( 182), UINT8_C( 69), UINT8_C( 152) },
{ UINT8_C( 27), UINT8_C( 100), UINT8_C( 63), UINT8_C( 133), UINT8_C( 173), UINT8_C( 182), UINT8_C( 69), UINT8_C( 152) },
{ UINT8_C( 221), UINT8_C( 37), UINT8_C( 254), UINT8_C( 44), UINT8_C( 110), UINT8_C( 179), UINT8_C( 45), UINT8_C( 194) },
{ UINT8_C( 101), UINT8_C( 141), UINT8_C( 246), UINT8_C( 188), UINT8_C( 182), UINT8_C( 203), UINT8_C( 165), UINT8_C( 10) },
{ UINT8_C( 133), UINT8_C( 77), UINT8_C( 214), UINT8_C( 188), UINT8_C( 150), UINT8_C( 11), UINT8_C( 165), UINT8_C( 74) } },
{ { UINT8_C( 250), UINT8_C( 205), UINT8_C( 140), UINT8_C( 192), UINT8_C( 13), UINT8_C( 95), UINT8_C( 19), UINT8_C( 34) },
{ UINT8_C( 170), UINT8_C( 18), UINT8_C( 194), UINT8_C( 134), UINT8_C( 116), UINT8_C( 119), UINT8_C( 217), UINT8_C( 7) },
{ UINT8_C( 170), UINT8_C( 18), UINT8_C( 194), UINT8_C( 134), UINT8_C( 116), UINT8_C( 119), UINT8_C( 217), UINT8_C( 7) },
{ UINT8_C( 82), UINT8_C( 149), UINT8_C( 20), UINT8_C( 48), UINT8_C( 165), UINT8_C( 191), UINT8_C( 203), UINT8_C( 58) },
{ UINT8_C( 90), UINT8_C( 77), UINT8_C( 76), UINT8_C( 192), UINT8_C( 141), UINT8_MAX, UINT8_C( 51), UINT8_C( 226) },
{ UINT8_C( 122), UINT8_C( 77), UINT8_C( 12), UINT8_C( 64), UINT8_C( 13), UINT8_C( 223), UINT8_C( 147), UINT8_C( 162) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint8x8_t a = simde_vld1_u8(test_vec[i].a);
simde_uint8x8_t b = simde_vld1_u8(test_vec[i].b);
simde_uint8x8_t r0 = simde_vsli_n_u8(a, b, 0);
simde_uint8x8_t r3 = simde_vsli_n_u8(a, b, 3);
simde_uint8x8_t r5 = simde_vsli_n_u8(a, b, 5);
simde_uint8x8_t r7 = simde_vsli_n_u8(a, b, 7);
simde_test_arm_neon_assert_equal_u8x8(r0, simde_vld1_u8(test_vec[i].r0));
simde_test_arm_neon_assert_equal_u8x8(r3, simde_vld1_u8(test_vec[i].r3));
simde_test_arm_neon_assert_equal_u8x8(r5, simde_vld1_u8(test_vec[i].r5));
simde_test_arm_neon_assert_equal_u8x8(r7, simde_vld1_u8(test_vec[i].r7));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_uint8x8_t a = simde_test_arm_neon_random_u8x8();
simde_uint8x8_t b = simde_test_arm_neon_random_u8x8();
simde_uint8x8_t r0 = simde_vsli_n_u8(a, b, 0);
simde_uint8x8_t r3 = simde_vsli_n_u8(a, b, 3);
simde_uint8x8_t r5 = simde_vsli_n_u8(a, b, 5);
simde_uint8x8_t r7 = simde_vsli_n_u8(a, b, 7);
simde_test_arm_neon_write_u8x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_u8x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u8x8(2, r0, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u8x8(2, r3, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u8x8(2, r5, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u8x8(2, r7, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vsli_n_u16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
uint16_t a[4];
uint16_t b[4];
uint16_t r3[4];
uint16_t r6[4];
uint16_t r10[4];
uint16_t r13[4];
uint16_t r15[4];
} test_vec[] = {
{ { UINT16_C( 15391), UINT16_C( 8013), UINT16_C( 1254), UINT16_C( 45654) },
{ UINT16_C( 35066), UINT16_C( 48548), UINT16_C( 14346), UINT16_C( 1393) },
{ UINT16_C( 18391), UINT16_C( 60709), UINT16_C( 49238), UINT16_C( 11150) },
{ UINT16_C( 16031), UINT16_C( 26893), UINT16_C( 678), UINT16_C( 23638) },
{ UINT16_C( 59423), UINT16_C( 37709), UINT16_C( 10470), UINT16_C( 50774) },
{ UINT16_C( 23583), UINT16_C( 40781), UINT16_C( 17638), UINT16_C( 12886) },
{ UINT16_C( 15391), UINT16_C( 8013), UINT16_C( 1254), UINT16_C( 45654) } },
{ { UINT16_C( 23736), UINT16_C( 7291), UINT16_C( 61578), UINT16_C( 8940) },
{ UINT16_C( 15242), UINT16_C( 20311), UINT16_C( 19232), UINT16_C( 4411) },
{ UINT16_C( 56400), UINT16_C( 31419), UINT16_C( 22786), UINT16_C( 35292) },
{ UINT16_C( 58040), UINT16_C( 54779), UINT16_C( 51210), UINT16_C( 20204) },
{ UINT16_C( 10424), UINT16_C( 23675), UINT16_C( 32906), UINT16_C( 61164) },
{ UINT16_C( 23736), UINT16_C( 64635), UINT16_C( 4234), UINT16_C( 25324) },
{ UINT16_C( 23736), UINT16_C( 40059), UINT16_C( 28810), UINT16_C( 41708) } },
{ { UINT16_C( 47025), UINT16_C( 52193), UINT16_C( 31710), UINT16_C( 14843) },
{ UINT16_C( 54022), UINT16_C( 30364), UINT16_C( 65371), UINT16_C( 28567) },
{ UINT16_C( 38961), UINT16_C( 46305), UINT16_C( 64222), UINT16_C( 31931) },
{ UINT16_C( 49585), UINT16_C( 42785), UINT16_C( 55006), UINT16_C( 58875) },
{ UINT16_C( 7089), UINT16_C( 29665), UINT16_C( 28638), UINT16_C( 24059) },
{ UINT16_C( 55217), UINT16_C( 35809), UINT16_C( 31710), UINT16_C( 63995) },
{ UINT16_C( 14257), UINT16_C( 19425), UINT16_C( 64478), UINT16_C( 47611) } },
{ { UINT16_C( 54568), UINT16_C( 15862), UINT16_C( 52509), UINT16_C( 47425) },
{ UINT16_C( 1779), UINT16_C( 31523), UINT16_C( 16426), UINT16_C( 60116) },
{ UINT16_C( 14232), UINT16_C( 55582), UINT16_C( 341), UINT16_C( 22177) },
{ UINT16_C( 48360), UINT16_C( 51446), UINT16_C( 2717), UINT16_C( 46337) },
{ UINT16_C( 52520), UINT16_C( 36342), UINT16_C( 43293), UINT16_C( 20801) },
{ UINT16_C( 29992), UINT16_C( 32246), UINT16_C( 19741), UINT16_C( 39233) },
{ UINT16_C( 54568), UINT16_C( 48630), UINT16_C( 19741), UINT16_C( 14657) } },
{ { UINT16_C( 19021), UINT16_C( 2955), UINT16_C( 23434), UINT16_C( 24652) },
{ UINT16_C( 64304), UINT16_C( 33123), UINT16_C( 28656), UINT16_C( 7738) },
{ UINT16_C( 55685), UINT16_C( 2843), UINT16_C( 32642), UINT16_C( 61908) },
{ UINT16_C( 52237), UINT16_C( 22731), UINT16_C( 64522), UINT16_C( 36492) },
{ UINT16_C( 49741), UINT16_C( 36747), UINT16_C( 50058), UINT16_C( 59468) },
{ UINT16_C( 2637), UINT16_C( 27531), UINT16_C( 7050), UINT16_C( 16460) },
{ UINT16_C( 19021), UINT16_C( 35723), UINT16_C( 23434), UINT16_C( 24652) } },
{ { UINT16_C( 35638), UINT16_C( 64110), UINT16_C( 55906), UINT16_C( 20848) },
{ UINT16_C( 27670), UINT16_C( 29508), UINT16_C( 17746), UINT16_C( 25076) },
{ UINT16_C( 24758), UINT16_C( 39462), UINT16_C( 10898), UINT16_C( 4000) },
{ UINT16_C( 1462), UINT16_C( 53550), UINT16_C( 21666), UINT16_C( 32048) },
{ UINT16_C( 23350), UINT16_C( 4718), UINT16_C( 19042), UINT16_C( 53616) },
{ UINT16_C( 52022), UINT16_C( 39534), UINT16_C( 23138), UINT16_C( 37232) },
{ UINT16_C( 2870), UINT16_C( 31342), UINT16_C( 23138), UINT16_C( 20848) } },
{ { UINT16_C( 23800), UINT16_C( 37832), UINT16_C( 34512), UINT16_C( 33446) },
{ UINT16_C( 19904), UINT16_C( 51885), UINT16_C( 10602), UINT16_C( 42147) },
{ UINT16_C( 28160), UINT16_C( 21864), UINT16_C( 19280), UINT16_C( 9502) },
{ UINT16_C( 28728), UINT16_C( 43848), UINT16_C( 23184), UINT16_C( 10470) },
{ UINT16_C( 248), UINT16_C( 47048), UINT16_C( 43728), UINT16_C( 36518) },
{ UINT16_C( 7416), UINT16_C( 46024), UINT16_C( 18128), UINT16_C( 25254) },
{ UINT16_C( 23800), UINT16_C( 37832), UINT16_C( 1744), UINT16_C( 33446) } },
{ { UINT16_C( 32311), UINT16_C( 55845), UINT16_C( 55299), UINT16_C( 15525) },
{ UINT16_C( 16152), UINT16_C( 36439), UINT16_C( 64155), UINT16_C( 41506) },
{ UINT16_C( 63687), UINT16_C( 29373), UINT16_C( 54491), UINT16_C( 4373) },
{ UINT16_C( 50743), UINT16_C( 38373), UINT16_C( 42691), UINT16_C( 34981) },
{ UINT16_C( 25143), UINT16_C( 24101), UINT16_C( 27651), UINT16_C( 34981) },
{ UINT16_C( 7735), UINT16_C( 64037), UINT16_C( 30723), UINT16_C( 23717) },
{ UINT16_C( 32311), UINT16_C( 55845), UINT16_C( 55299), UINT16_C( 15525) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint16x4_t a = simde_vld1_u16(test_vec[i].a);
simde_uint16x4_t b = simde_vld1_u16(test_vec[i].b);
simde_uint16x4_t r3 = simde_vsli_n_u16(a, b, 3);
simde_uint16x4_t r6 = simde_vsli_n_u16(a, b, 6);
simde_uint16x4_t r10 = simde_vsli_n_u16(a, b, 10);
simde_uint16x4_t r13 = simde_vsli_n_u16(a, b, 13);
simde_uint16x4_t r15 = simde_vsli_n_u16(a, b, 15);
simde_test_arm_neon_assert_equal_u16x4(r3, simde_vld1_u16(test_vec[i].r3));
simde_test_arm_neon_assert_equal_u16x4(r6, simde_vld1_u16(test_vec[i].r6));
simde_test_arm_neon_assert_equal_u16x4(r10, simde_vld1_u16(test_vec[i].r10));
simde_test_arm_neon_assert_equal_u16x4(r13, simde_vld1_u16(test_vec[i].r13));
simde_test_arm_neon_assert_equal_u16x4(r15, simde_vld1_u16(test_vec[i].r15));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_uint16x4_t a = simde_test_arm_neon_random_u16x4();
simde_uint16x4_t b = simde_test_arm_neon_random_u16x4();
simde_uint16x4_t r3 = simde_vsli_n_u16(a, b, 3);
simde_uint16x4_t r6 = simde_vsli_n_u16(a, b, 6);
simde_uint16x4_t r10 = simde_vsli_n_u16(a, b, 10);
simde_uint16x4_t r13 = simde_vsli_n_u16(a, b, 13);
simde_uint16x4_t r15 = simde_vsli_n_u16(a, b, 15);
simde_test_arm_neon_write_u16x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_u16x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u16x4(2, r3, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u16x4(2, r6, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u16x4(2, r10, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u16x4(2, r13, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u16x4(2, r15, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vsli_n_u32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
uint32_t a[2];
uint32_t b[2];
uint32_t r6[2];
uint32_t r13[2];
uint32_t r19[2];
uint32_t r26[2];
uint32_t r31[2];
} test_vec[] = {
{ { UINT32_C(3081230558), UINT32_C(1323792986) },
{ UINT32_C(1071965024), UINT32_C(2237917539) },
{ UINT32_C(4181252126), UINT32_C(1492801754) },
{ UINT32_C(2624329950), UINT32_C(2100066906) },
{ UINT32_C( 453499102), UINT32_C(1260354138) },
{ UINT32_C(2208815326), UINT32_C(2397534810) },
{ UINT32_C( 933746910), UINT32_C(3471276634) } },
{ { UINT32_C(1801753472), UINT32_C(3276321139) },
{ UINT32_C(3767665232), UINT32_C(1682889056) },
{ UINT32_C( 612406272), UINT32_C( 330717235) },
{ UINT32_C(1078596480), UINT32_C(3677098355) },
{ UINT32_C( 310678400), UINT32_C(3405820275) },
{ UINT32_C(1130664832), UINT32_C(2202579315) },
{ UINT32_C(1801753472), UINT32_C(1128837491) } },
{ { UINT32_C(1903242450), UINT32_C( 544175578) },
{ UINT32_C(1301025297), UINT32_C(2094177212) },
{ UINT32_C(1661240402), UINT32_C( 883355418) },
{ UINT32_C(2185374930), UINT32_C(1400346074) },
{ UINT32_C(2424909010), UINT32_C(3722933722) },
{ UINT32_C(1165044946), UINT32_C(4033836506) },
{ UINT32_C(4050726098), UINT32_C( 544175578) } },
{ { UINT32_C(2126941907), UINT32_C( 977695758) },
{ UINT32_C(1486134999), UINT32_C(1742360137) },
{ UINT32_C( 623359443), UINT32_C(4136866382) },
{ UINT32_C(2480598739), UINT32_C(1237922830) },
{ UINT32_C(4139683539), UINT32_C(1917744142) },
{ UINT32_C(1590070995), UINT32_C( 642151438) },
{ UINT32_C(4274425555), UINT32_C(3125179406) } },
{ { UINT32_C(2706916007), UINT32_C(1068692422) },
{ UINT32_C( 545324817), UINT32_C(1867710312) },
{ UINT32_C( 541049959), UINT32_C(3569342982) },
{ UINT32_C( 534913703), UINT32_C(1609372614) },
{ UINT32_C(4169679527), UINT32_C(4215468998) },
{ UINT32_C(1163412135), UINT32_C(2746414022) },
{ UINT32_C(2706916007), UINT32_C(1068692422) } },
{ { UINT32_C(4153598072), UINT32_C(1583301308) },
{ UINT32_C(1843033608), UINT32_C(3432411003) },
{ UINT32_C(1990033976), UINT32_C( 630972156) },
{ UINT32_C(1321271416), UINT32_C(3455017660) },
{ UINT32_C(2957172856), UINT32_C(2078229180) },
{ UINT32_C( 596828280), UINT32_C(3999220412) },
{ UINT32_C(2006114424), UINT32_C(3730784956) } },
{ { UINT32_C( 503922803), UINT32_C( 102391840) },
{ UINT32_C(1659267842), UINT32_C(3517337088) },
{ UINT32_C(3113926835), UINT32_C(1771274272) },
{ UINT32_C(3445637235), UINT32_C(3384803360) },
{ UINT32_C(1477525619), UINT32_C(1879203872) },
{ UINT32_C( 168378483), UINT32_C( 35282976) },
{ UINT32_C( 503922803), UINT32_C( 102391840) } },
{ { UINT32_C( 135317347), UINT32_C(3314568864) },
{ UINT32_C( 923437489), UINT32_C( 213085622) },
{ UINT32_C(3265424483), UINT32_C( 752577952) },
{ UINT32_C(1362503523), UINT32_C(1840696992) },
{ UINT32_C(1300809571), UINT32_C(1840271008) },
{ UINT32_C(3289433955), UINT32_C(3650113184) },
{ UINT32_C(2282800995), UINT32_C(1167085216) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint32x2_t a = simde_vld1_u32(test_vec[i].a);
simde_uint32x2_t b = simde_vld1_u32(test_vec[i].b);
simde_uint32x2_t r6 = simde_vsli_n_u32(a, b, 6);
simde_uint32x2_t r13 = simde_vsli_n_u32(a, b, 13);
simde_uint32x2_t r19 = simde_vsli_n_u32(a, b, 19);
simde_uint32x2_t r26 = simde_vsli_n_u32(a, b, 26);
simde_uint32x2_t r31 = simde_vsli_n_u32(a, b, 31);
simde_test_arm_neon_assert_equal_u32x2(r6, simde_vld1_u32(test_vec[i].r6));
simde_test_arm_neon_assert_equal_u32x2(r13, simde_vld1_u32(test_vec[i].r13));
simde_test_arm_neon_assert_equal_u32x2(r19, simde_vld1_u32(test_vec[i].r19));
simde_test_arm_neon_assert_equal_u32x2(r26, simde_vld1_u32(test_vec[i].r26));
simde_test_arm_neon_assert_equal_u32x2(r31, simde_vld1_u32(test_vec[i].r31));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_uint32x2_t a = simde_test_arm_neon_random_u32x2();
simde_uint32x2_t b = simde_test_arm_neon_random_u32x2();
simde_uint32x2_t r6 = simde_vsli_n_u32(a, b, 6);
simde_uint32x2_t r13 = simde_vsli_n_u32(a, b, 13);
simde_uint32x2_t r19 = simde_vsli_n_u32(a, b, 19);
simde_uint32x2_t r26 = simde_vsli_n_u32(a, b, 26);
simde_uint32x2_t r31 = simde_vsli_n_u32(a, b, 31);
simde_test_arm_neon_write_u32x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_u32x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u32x2(2, r6, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u32x2(2, r13, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u32x2(2, r19, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u32x2(2, r26, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u32x2(2, r31, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vsli_n_u64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
uint64_t a[1];
uint64_t b[1];
uint64_t r13[1];
uint64_t r26[1];
uint64_t r39[1];
uint64_t r52[1];
uint64_t r63[1];
} test_vec[] = {
{ { UINT64_C( 2367438358383478378) },
{ UINT64_C(10151069329549398822) },
{ UINT64_C(18084407459726018154) },
{ UINT64_C( 1664254114169931370) },
{ UINT64_C( 1425832543274714730) },
{ UINT64_C( 3632949853674587754) },
{ UINT64_C( 2367438358383478378) } },
{ { UINT64_C( 4289360236958653475) },
{ UINT64_C( 9003445777938185491) },
{ UINT64_C( 6145006178828188707) },
{ UINT64_C(17172783880833014819) },
{ UINT64_C( 4575245904564132899) },
{ UINT64_C(15075481344510991395) },
{ UINT64_C(13512732273813429283) } },
{ { UINT64_C( 4661840731346591672) },
{ UINT64_C(16008367045675390461) },
{ UINT64_C( 2639218171596226488) },
{ UINT64_C( 891207328682762168) },
{ UINT64_C(14306527482023272376) },
{ UINT64_C( 6904633345777098680) },
{ UINT64_C(13885212768201367480) } },
{ { UINT64_C( 560855986095228110) },
{ UINT64_C(12519105941898633195) },
{ UINT64_C(11065570282205701326) },
{ UINT64_C( 1851373620381320398) },
{ UINT64_C( 3229069440521569486) },
{ UINT64_C(18354578113836057806) },
{ UINT64_C( 9784228022950003918) } },
{ { UINT64_C(15210706800944352878) },
{ UINT64_C( 2343987333079752503) },
{ UINT64_C(17330395931398827630) },
{ UINT64_C( 4461078750471655022) },
{ UINT64_C( 2157113990720261742) },
{ UINT64_C(17543571407922269806) },
{ UINT64_C(15210706800944352878) } },
{ { UINT64_C( 3102245097986106578) },
{ UINT64_C(11620068368410445742) },
{ UINT64_C( 6400653677085181138) },
{ UINT64_C( 8508265199309464786) },
{ UINT64_C( 7909402293599511762) },
{ UINT64_C( 8857845421765600466) },
{ UINT64_C( 3102245097986106578) } },
{ { UINT64_C(17038098246975051983) },
{ UINT64_C(18292780545233057134) },
{ UINT64_C(11556115806516271311) },
{ UINT64_C(17456844777586120911) },
{ UINT64_C( 7312358247877793999) },
{ UINT64_C( 6260984338677455055) },
{ UINT64_C( 7814726210120276175) } },
{ { UINT64_C( 1351949120307680797) },
{ UINT64_C(15139404553755458091) },
{ UINT64_C( 4541696815397172765) },
{ UINT64_C(16944259135176136221) },
{ UINT64_C(14068424518630069789) },
{ UINT64_C(11723739062141933085) },
{ UINT64_C(10575321157162456605) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint64x1_t a = simde_vld1_u64(test_vec[i].a);
simde_uint64x1_t b = simde_vld1_u64(test_vec[i].b);
simde_uint64x1_t r13 = simde_vsli_n_u64(a, b, 13);
simde_uint64x1_t r26 = simde_vsli_n_u64(a, b, 26);
simde_uint64x1_t r39 = simde_vsli_n_u64(a, b, 39);
simde_uint64x1_t r52 = simde_vsli_n_u64(a, b, 52);
simde_uint64x1_t r63 = simde_vsli_n_u64(a, b, 63);
simde_test_arm_neon_assert_equal_u64x1(r13, simde_vld1_u64(test_vec[i].r13));
simde_test_arm_neon_assert_equal_u64x1(r26, simde_vld1_u64(test_vec[i].r26));
simde_test_arm_neon_assert_equal_u64x1(r39, simde_vld1_u64(test_vec[i].r39));
simde_test_arm_neon_assert_equal_u64x1(r52, simde_vld1_u64(test_vec[i].r52));
simde_test_arm_neon_assert_equal_u64x1(r63, simde_vld1_u64(test_vec[i].r63));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_uint64x1_t a = simde_test_arm_neon_random_u64x1();
simde_uint64x1_t b = simde_test_arm_neon_random_u64x1();
simde_uint64x1_t r13 = simde_vsli_n_u64(a, b, 13);
simde_uint64x1_t r26 = simde_vsli_n_u64(a, b, 26);
simde_uint64x1_t r39 = simde_vsli_n_u64(a, b, 39);
simde_uint64x1_t r52 = simde_vsli_n_u64(a, b, 52);
simde_uint64x1_t r63 = simde_vsli_n_u64(a, b, 63);
simde_test_arm_neon_write_u64x1(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_u64x1(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u64x1(2, r13, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u64x1(2, r26, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u64x1(2, r39, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u64x1(2, r52, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u64x1(2, r63, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vsliq_n_s8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
int8_t a[16];
int8_t b[16];
int8_t r0[16];
int8_t r3[16];
int8_t r5[16];
int8_t r7[16];
} test_vec[] = {
{ { INT8_C( 107), INT8_C( 125), -INT8_C( 74), INT8_C( 13), -INT8_C( 11), INT8_C( 64), INT8_C( 106), -INT8_C( 95), -INT8_C( 9), -INT8_C( 95), INT8_C( 80), INT8_C( 86), INT8_C( 70), INT8_C( 72), INT8_C( 12), INT8_C( 60) },
{ INT8_C( 59), -INT8_C( 7), -INT8_C( 115), -INT8_C( 18), -INT8_C( 104), INT8_C( 105), INT8_C( 23), -INT8_C( 72), INT8_C( 48), INT8_C( 16), -INT8_C( 56), INT8_C( 12), INT8_C( 111), INT8_C( 13), -INT8_C( 111), INT8_C( 21) },
{ INT8_C( 59), -INT8_C( 7), -INT8_C( 115), -INT8_C( 18), -INT8_C( 104), INT8_C( 105), INT8_C( 23), -INT8_C( 72), INT8_C( 48), INT8_C( 16), -INT8_C( 56), INT8_C( 12), INT8_C( 111), INT8_C( 13), -INT8_C( 111), INT8_C( 21) },
{ -INT8_C( 37), -INT8_C( 51), INT8_C( 110), INT8_C( 117), -INT8_C( 59), INT8_C( 72), -INT8_C( 70), -INT8_C( 63), -INT8_C( 121), -INT8_C( 127), INT8_C( 64), INT8_C( 102), INT8_C( 126), INT8_C( 104), -INT8_C( 116), -INT8_C( 84) },
{ INT8_C( 107), INT8_C( 61), -INT8_C( 74), -INT8_C( 51), INT8_C( 21), INT8_C( 32), -INT8_C( 22), INT8_C( 1), INT8_C( 23), INT8_C( 1), INT8_C( 16), -INT8_C( 106), -INT8_C( 26), -INT8_C( 88), INT8_C( 44), -INT8_C( 68) },
{ -INT8_C( 21), -INT8_C( 3), -INT8_C( 74), INT8_C( 13), INT8_C( 117), -INT8_C( 64), -INT8_C( 22), INT8_C( 33), INT8_C( 119), INT8_C( 33), INT8_C( 80), INT8_C( 86), -INT8_C( 58), -INT8_C( 56), -INT8_C( 116), -INT8_C( 68) } },
{ { -INT8_C( 83), INT8_C( 48), -INT8_C( 92), INT8_C( 37), -INT8_C( 62), -INT8_C( 48), INT8_C( 120), -INT8_C( 43), -INT8_C( 96), INT8_C( 105), INT8_C( 127), INT8_C( 63), INT8_C( 110), INT8_C( 120), INT8_C( 10), -INT8_C( 86) },
{ INT8_C( 27), -INT8_C( 20), -INT8_C( 50), -INT8_C( 62), INT8_C( 1), INT8_C( 119), INT8_C( 75), -INT8_C( 28), INT8_C( 42), INT8_C( 27), INT8_C( 107), INT8_C( 0), -INT8_C( 101), INT8_C( 64), INT8_C( 104), -INT8_C( 83) },
{ INT8_C( 27), -INT8_C( 20), -INT8_C( 50), -INT8_C( 62), INT8_C( 1), INT8_C( 119), INT8_C( 75), -INT8_C( 28), INT8_C( 42), INT8_C( 27), INT8_C( 107), INT8_C( 0), -INT8_C( 101), INT8_C( 64), INT8_C( 104), -INT8_C( 83) },
{ -INT8_C( 35), INT8_C( 96), INT8_C( 116), INT8_C( 21), INT8_C( 10), -INT8_C( 72), INT8_C( 88), INT8_C( 37), INT8_C( 80), -INT8_C( 39), INT8_C( 95), INT8_C( 7), -INT8_C( 34), INT8_C( 0), INT8_C( 66), INT8_C( 106) },
{ INT8_C( 109), -INT8_C( 112), -INT8_C( 60), INT8_C( 69), INT8_C( 34), -INT8_C( 16), INT8_C( 120), -INT8_C( 107), INT8_C( 64), INT8_C( 105), INT8_MAX, INT8_C( 31), INT8_C( 110), INT8_C( 24), INT8_C( 10), -INT8_C( 86) },
{ -INT8_C( 83), INT8_C( 48), INT8_C( 36), INT8_C( 37), -INT8_C( 62), -INT8_C( 48), -INT8_C( 8), INT8_C( 85), INT8_C( 32), -INT8_C( 23), -INT8_C( 1), INT8_C( 63), -INT8_C( 18), INT8_C( 120), INT8_C( 10), -INT8_C( 86) } },
{ { -INT8_C( 19), -INT8_C( 90), INT8_C( 10), -INT8_C( 113), -INT8_C( 120), -INT8_C( 94), INT8_C( 87), INT8_C( 114), -INT8_C( 45), -INT8_C( 75), INT8_C( 120), -INT8_C( 16), INT8_C( 46), INT8_C( 102), -INT8_C( 116), -INT8_C( 68) },
{ INT8_C( 92), -INT8_C( 76), INT8_C( 70), -INT8_C( 37), INT8_C( 123), INT8_C( 52), -INT8_C( 87), INT8_C( 95), -INT8_C( 94), INT8_C( 15), INT8_C( 0), INT8_C( 4), INT8_C( 101), INT8_C( 63), -INT8_C( 71), -INT8_C( 97) },
{ INT8_C( 92), -INT8_C( 76), INT8_C( 70), -INT8_C( 37), INT8_C( 123), INT8_C( 52), -INT8_C( 87), INT8_C( 95), -INT8_C( 94), INT8_C( 15), INT8_C( 0), INT8_C( 4), INT8_C( 101), INT8_C( 63), -INT8_C( 71), -INT8_C( 97) },
{ -INT8_C( 27), -INT8_C( 90), INT8_C( 50), -INT8_C( 33), -INT8_C( 40), -INT8_C( 94), INT8_C( 79), -INT8_C( 6), INT8_C( 19), INT8_C( 125), INT8_C( 0), INT8_C( 32), INT8_C( 46), -INT8_C( 2), -INT8_C( 52), -INT8_C( 4) },
{ -INT8_C( 115), -INT8_C( 122), -INT8_C( 54), INT8_C( 111), INT8_C( 104), -INT8_C( 126), INT8_C( 55), -INT8_C( 14), INT8_C( 83), -INT8_C( 11), INT8_C( 24), -INT8_C( 112), -INT8_C( 82), -INT8_C( 26), INT8_C( 44), -INT8_C( 4) },
{ INT8_C( 109), INT8_C( 38), INT8_C( 10), -INT8_C( 113), -INT8_C( 120), INT8_C( 34), -INT8_C( 41), -INT8_C( 14), INT8_C( 83), -INT8_C( 75), INT8_C( 120), INT8_C( 112), -INT8_C( 82), -INT8_C( 26), -INT8_C( 116), -INT8_C( 68) } },
{ { -INT8_C( 15), INT8_C( 19), INT8_C( 64), -INT8_C( 114), INT8_C( 42), -INT8_C( 125), INT8_C( 89), -INT8_C( 12), -INT8_C( 7), -INT8_C( 83), INT8_C( 70), -INT8_C( 105), INT8_C( 44), -INT8_C( 31), INT8_C( 103), INT8_C( 51) },
{ INT8_C( 67), INT8_C( 4), -INT8_C( 27), -INT8_C( 70), INT8_C( 87), INT8_C( 38), -INT8_C( 25), -INT8_C( 12), INT8_C( 35), -INT8_C( 20), INT8_C( 122), INT8_C( 53), INT8_C( 17), INT8_C( 11), -INT8_C( 80), -INT8_C( 18) },
{ INT8_C( 67), INT8_C( 4), -INT8_C( 27), -INT8_C( 70), INT8_C( 87), INT8_C( 38), -INT8_C( 25), -INT8_C( 12), INT8_C( 35), -INT8_C( 20), INT8_C( 122), INT8_C( 53), INT8_C( 17), INT8_C( 11), -INT8_C( 80), -INT8_C( 18) },
{ INT8_C( 25), INT8_C( 35), INT8_C( 40), -INT8_C( 42), -INT8_C( 70), INT8_C( 51), INT8_C( 57), -INT8_C( 92), INT8_C( 25), INT8_C( 101), -INT8_C( 42), -INT8_C( 81), -INT8_C( 116), INT8_C( 89), -INT8_C( 121), INT8_C( 115) },
{ INT8_C( 113), -INT8_C( 109), -INT8_C( 96), INT8_C( 78), -INT8_C( 22), -INT8_C( 61), -INT8_C( 7), -INT8_C( 108), INT8_C( 121), -INT8_C( 115), INT8_C( 70), -INT8_C( 73), INT8_C( 44), INT8_C( 97), INT8_C( 7), -INT8_C( 45) },
{ -INT8_C( 15), INT8_C( 19), -INT8_C( 64), INT8_C( 14), -INT8_C( 86), INT8_C( 3), -INT8_C( 39), INT8_C( 116), -INT8_C( 7), INT8_C( 45), INT8_C( 70), -INT8_C( 105), -INT8_C( 84), -INT8_C( 31), INT8_C( 103), INT8_C( 51) } },
{ { -INT8_C( 117), INT8_C( 28), INT8_C( 31), INT8_C( 18), INT8_C( 49), INT8_C( 30), INT8_C( 101), -INT8_C( 25), -INT8_C( 21), INT8_C( 14), INT8_C( 3), -INT8_C( 42), -INT8_C( 6), INT8_C( 126), -INT8_C( 36), -INT8_C( 27) },
{ INT8_C( 105), INT8_C( 0), -INT8_C( 61), -INT8_C( 49), INT8_C( 81), INT8_C( 27), -INT8_C( 36), INT8_C( 79), INT8_C( 94), INT8_C( 43), -INT8_C( 22), INT8_C( 34), INT8_C( 55), INT8_C( 20), -INT8_C( 6), INT8_C( 19) },
{ INT8_C( 105), INT8_C( 0), -INT8_C( 61), -INT8_C( 49), INT8_C( 81), INT8_C( 27), -INT8_C( 36), INT8_C( 79), INT8_C( 94), INT8_C( 43), -INT8_C( 22), INT8_C( 34), INT8_C( 55), INT8_C( 20), -INT8_C( 6), INT8_C( 19) },
{ INT8_C( 75), INT8_C( 4), INT8_C( 31), INT8_C( 122), -INT8_C( 119), -INT8_C( 34), -INT8_C( 27), INT8_MAX, -INT8_C( 13), INT8_C( 94), INT8_C( 83), INT8_C( 22), -INT8_C( 70), -INT8_C( 90), -INT8_C( 44), -INT8_C( 99) },
{ INT8_C( 43), INT8_C( 28), INT8_MAX, -INT8_C( 14), INT8_C( 49), INT8_C( 126), -INT8_C( 123), -INT8_C( 25), -INT8_C( 53), INT8_C( 110), INT8_C( 67), INT8_C( 86), -INT8_C( 6), -INT8_C( 98), INT8_C( 92), INT8_C( 101) },
{ -INT8_C( 117), INT8_C( 28), -INT8_C( 97), -INT8_C( 110), -INT8_C( 79), -INT8_C( 98), INT8_C( 101), -INT8_C( 25), INT8_C( 107), -INT8_C( 114), INT8_C( 3), INT8_C( 86), -INT8_C( 6), INT8_C( 126), INT8_C( 92), -INT8_C( 27) } },
{ { INT8_C( 32), INT8_C( 1), -INT8_C( 82), INT8_C( 9), -INT8_C( 16), INT8_C( 104), INT8_C( 15), -INT8_C( 123), -INT8_C( 124), -INT8_C( 120), INT8_C( 24), INT8_C( 2), INT8_C( 70), INT8_C( 107), -INT8_C( 20), -INT8_C( 87) },
{ -INT8_C( 91), -INT8_C( 3), INT8_C( 66), -INT8_C( 82), -INT8_C( 60), -INT8_C( 88), INT8_C( 118), INT8_C( 92), INT8_C( 44), -INT8_C( 110), -INT8_C( 62), INT8_C( 8), INT8_C( 15), INT8_C( 24), INT8_C( 15), INT8_C( 22) },
{ -INT8_C( 91), -INT8_C( 3), INT8_C( 66), -INT8_C( 82), -INT8_C( 60), -INT8_C( 88), INT8_C( 118), INT8_C( 92), INT8_C( 44), -INT8_C( 110), -INT8_C( 62), INT8_C( 8), INT8_C( 15), INT8_C( 24), INT8_C( 15), INT8_C( 22) },
{ INT8_C( 40), -INT8_C( 23), INT8_C( 22), INT8_C( 113), INT8_C( 32), INT8_C( 64), -INT8_C( 73), -INT8_C( 27), INT8_C( 100), -INT8_C( 112), INT8_C( 16), INT8_C( 66), INT8_C( 126), -INT8_C( 61), INT8_C( 124), -INT8_C( 79) },
{ -INT8_C( 96), -INT8_C( 95), INT8_C( 78), -INT8_C( 55), -INT8_C( 112), INT8_C( 8), -INT8_C( 49), -INT8_C( 123), -INT8_C( 124), INT8_C( 72), INT8_C( 88), INT8_C( 2), -INT8_C( 26), INT8_C( 11), -INT8_C( 20), -INT8_C( 55) },
{ -INT8_C( 96), -INT8_C( 127), INT8_C( 46), INT8_C( 9), INT8_C( 112), INT8_C( 104), INT8_C( 15), INT8_C( 5), INT8_C( 4), INT8_C( 8), INT8_C( 24), INT8_C( 2), -INT8_C( 58), INT8_C( 107), -INT8_C( 20), INT8_C( 41) } },
{ { INT8_C( 116), INT8_C( 19), INT8_C( 48), INT8_C( 76), -INT8_C( 11), -INT8_C( 16), INT8_C( 66), INT8_C( 14), -INT8_C( 56), -INT8_C( 32), INT8_C( 85), -INT8_C( 52), INT8_C( 90), INT8_C( 115), -INT8_C( 81), -INT8_C( 128) },
{ INT8_C( 38), -INT8_C( 126), -INT8_C( 53), INT8_C( 117), INT8_C( 74), -INT8_C( 43), INT8_C( 93), INT8_C( 63), INT8_C( 26), INT8_C( 0), INT8_C( 22), -INT8_C( 5), -INT8_C( 88), -INT8_C( 126), -INT8_C( 54), -INT8_C( 25) },
{ INT8_C( 38), -INT8_C( 126), -INT8_C( 53), INT8_C( 117), INT8_C( 74), -INT8_C( 43), INT8_C( 93), INT8_C( 63), INT8_C( 26), INT8_C( 0), INT8_C( 22), -INT8_C( 5), -INT8_C( 88), -INT8_C( 126), -INT8_C( 54), -INT8_C( 25) },
{ INT8_C( 52), INT8_C( 19), INT8_C( 88), -INT8_C( 84), INT8_C( 85), -INT8_C( 88), -INT8_C( 22), -INT8_C( 2), -INT8_C( 48), INT8_C( 0), -INT8_C( 75), -INT8_C( 36), INT8_C( 66), INT8_C( 19), INT8_C( 87), INT8_C( 56) },
{ -INT8_C( 44), INT8_C( 83), INT8_C( 112), -INT8_C( 84), INT8_C( 85), -INT8_C( 80), -INT8_C( 94), -INT8_C( 18), INT8_C( 72), INT8_C( 0), -INT8_C( 43), INT8_C( 108), INT8_C( 26), INT8_C( 83), INT8_C( 79), -INT8_C( 32) },
{ INT8_C( 116), INT8_C( 19), -INT8_C( 80), -INT8_C( 52), INT8_C( 117), -INT8_C( 16), -INT8_C( 62), -INT8_C( 114), INT8_C( 72), INT8_C( 96), INT8_C( 85), -INT8_C( 52), INT8_C( 90), INT8_C( 115), INT8_C( 47), INT8_MIN } },
{ { -INT8_C( 22), -INT8_C( 17), INT8_C( 28), INT8_C( 50), -INT8_C( 115), -INT8_C( 92), INT8_C( 125), -INT8_C( 70), -INT8_C( 83), -INT8_C( 95), INT8_C( 82), INT8_C( 105), -INT8_C( 105), INT8_C( 108), INT8_C( 59), -INT8_C( 115) },
{ -INT8_C( 23), -INT8_C( 45), -INT8_C( 89), -INT8_C( 112), -INT8_C( 31), -INT8_C( 92), INT8_C( 60), INT8_C( 70), -INT8_C( 8), INT8_C( 108), INT8_C( 110), INT8_C( 82), INT8_C( 62), -INT8_C( 116), INT8_C( 65), -INT8_C( 36) },
{ -INT8_C( 23), -INT8_C( 45), -INT8_C( 89), -INT8_C( 112), -INT8_C( 31), -INT8_C( 92), INT8_C( 60), INT8_C( 70), -INT8_C( 8), INT8_C( 108), INT8_C( 110), INT8_C( 82), INT8_C( 62), -INT8_C( 116), INT8_C( 65), -INT8_C( 36) },
{ INT8_C( 74), -INT8_C( 97), INT8_C( 60), -INT8_C( 126), INT8_C( 13), INT8_C( 36), -INT8_C( 27), INT8_C( 50), -INT8_C( 59), INT8_C( 97), INT8_C( 114), -INT8_C( 111), -INT8_C( 9), INT8_C( 100), INT8_C( 11), -INT8_C( 27) },
{ INT8_C( 42), INT8_C( 111), -INT8_C( 4), INT8_C( 18), INT8_C( 45), -INT8_C( 124), -INT8_C( 99), -INT8_C( 38), INT8_C( 13), -INT8_C( 127), -INT8_C( 46), INT8_C( 73), -INT8_C( 41), -INT8_C( 116), INT8_C( 59), -INT8_C( 115) },
{ -INT8_C( 22), -INT8_C( 17), -INT8_C( 100), INT8_C( 50), -INT8_C( 115), INT8_C( 36), INT8_C( 125), INT8_C( 58), INT8_C( 45), INT8_C( 33), INT8_C( 82), INT8_C( 105), INT8_C( 23), INT8_C( 108), -INT8_C( 69), INT8_C( 13) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int8x16_t a = simde_vld1q_s8(test_vec[i].a);
simde_int8x16_t b = simde_vld1q_s8(test_vec[i].b);
simde_int8x16_t r0 = simde_vsliq_n_s8(a, b, 0);
simde_int8x16_t r3 = simde_vsliq_n_s8(a, b, 3);
simde_int8x16_t r5 = simde_vsliq_n_s8(a, b, 5);
simde_int8x16_t r7 = simde_vsliq_n_s8(a, b, 7);
simde_test_arm_neon_assert_equal_i8x16(r0, simde_vld1q_s8(test_vec[i].r0));
simde_test_arm_neon_assert_equal_i8x16(r3, simde_vld1q_s8(test_vec[i].r3));
simde_test_arm_neon_assert_equal_i8x16(r5, simde_vld1q_s8(test_vec[i].r5));
simde_test_arm_neon_assert_equal_i8x16(r7, simde_vld1q_s8(test_vec[i].r7));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_int8x16_t a = simde_test_arm_neon_random_i8x16();
simde_int8x16_t b = simde_test_arm_neon_random_i8x16();
simde_int8x16_t r0 = simde_vsliq_n_s8(a, b, 0);
simde_int8x16_t r3 = simde_vsliq_n_s8(a, b, 3);
simde_int8x16_t r5 = simde_vsliq_n_s8(a, b, 5);
simde_int8x16_t r7 = simde_vsliq_n_s8(a, b, 7);
simde_test_arm_neon_write_i8x16(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_i8x16(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i8x16(2, r0, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i8x16(2, r3, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i8x16(2, r5, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i8x16(2, r7, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vsliq_n_s16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
int16_t a[8];
int16_t b[8];
int16_t r3[8];
int16_t r6[8];
int16_t r10[8];
int16_t r13[8];
int16_t r15[8];
} test_vec[] = {
{ { -INT16_C( 29857), INT16_C( 2406), -INT16_C( 11751), INT16_C( 26063), -INT16_C( 23473), -INT16_C( 31823), INT16_C( 16138), -INT16_C( 20066) },
{ -INT16_C( 4911), INT16_C( 31239), -INT16_C( 17957), -INT16_C( 32668), -INT16_C( 25285), -INT16_C( 17755), INT16_C( 16852), -INT16_C( 29183) },
{ INT16_C( 26255), -INT16_C( 12226), -INT16_C( 12583), INT16_C( 807), -INT16_C( 5665), -INT16_C( 10967), INT16_C( 3746), INT16_C( 28686) },
{ INT16_C( 13407), -INT16_C( 32282), INT16_C( 30425), INT16_C( 6415), INT16_C( 20175), -INT16_C( 22159), INT16_C( 29962), -INT16_C( 32674) },
{ INT16_C( 18271), INT16_C( 7526), INT16_C( 28185), -INT16_C( 28209), -INT16_C( 5041), -INT16_C( 26703), INT16_C( 21258), INT16_C( 1438) },
{ INT16_C( 11103), -INT16_C( 5786), INT16_C( 29209), -INT16_C( 31281), INT16_C( 25679), -INT16_C( 23631), -INT16_C( 24822), INT16_C( 12702) },
{ -INT16_C( 29857), -INT16_C( 30362), -INT16_C( 11751), INT16_C( 26063), -INT16_C( 23473), -INT16_C( 31823), INT16_C( 16138), -INT16_C( 20066) } },
{ { INT16_C( 22305), INT16_C( 2996), -INT16_C( 8798), INT16_C( 21771), INT16_C( 20048), -INT16_C( 17424), -INT16_C( 7311), -INT16_C( 13384) },
{ INT16_C( 3899), -INT16_C( 13236), INT16_C( 23899), INT16_C( 10311), INT16_C( 358), -INT16_C( 22886), -INT16_C( 4505), -INT16_C( 13942) },
{ INT16_C( 31193), INT16_C( 25188), -INT16_C( 5414), INT16_C( 16955), INT16_C( 2864), INT16_C( 13520), INT16_C( 29497), INT16_C( 19536) },
{ -INT16_C( 12575), INT16_C( 4916), INT16_C( 22242), INT16_C( 4555), INT16_C( 22928), -INT16_C( 22864), -INT16_C( 26127), INT16_C( 25272) },
{ -INT16_C( 4319), INT16_C( 13236), INT16_C( 28066), INT16_C( 7435), -INT16_C( 26032), INT16_C( 27632), -INT16_C( 24719), INT16_C( 11192) },
{ INT16_C( 30497), -INT16_C( 29772), INT16_C( 32162), -INT16_C( 2805), -INT16_C( 12720), INT16_C( 23536), -INT16_C( 7311), INT16_C( 19384) },
{ -INT16_C( 10463), INT16_C( 2996), -INT16_C( 8798), -INT16_C( 10997), INT16_C( 20048), INT16_C( 15344), -INT16_C( 7311), INT16_C( 19384) } },
{ { -INT16_C( 1299), -INT16_C( 23418), -INT16_C( 31396), INT16_C( 14574), INT16_C( 20335), INT16_C( 24078), -INT16_C( 16568), -INT16_C( 30262) },
{ -INT16_C( 9023), -INT16_C( 23614), -INT16_C( 28517), -INT16_C( 32122), INT16_C( 6327), INT16_C( 32095), -INT16_C( 8933), INT16_C( 26767) },
{ -INT16_C( 6643), INT16_C( 7702), -INT16_C( 31524), INT16_C( 5174), -INT16_C( 14913), -INT16_C( 5378), -INT16_C( 5928), INT16_C( 17530) },
{ INT16_C( 12397), -INT16_C( 3962), INT16_C( 9948), -INT16_C( 24146), INT16_C( 11759), INT16_C( 22478), INT16_C( 18120), INT16_C( 9162) },
{ INT16_C( 1773), INT16_C( 2182), INT16_C( 27996), INT16_C( 6382), -INT16_C( 8337), INT16_C( 32270), INT16_C( 28488), INT16_C( 15818) },
{ INT16_C( 15085), INT16_C( 17542), INT16_C( 25948), -INT16_C( 10002), -INT16_C( 4241), -INT16_C( 498), INT16_C( 32584), -INT16_C( 5686) },
{ -INT16_C( 1299), INT16_C( 9350), -INT16_C( 31396), INT16_C( 14574), -INT16_C( 12433), -INT16_C( 8690), -INT16_C( 16568), -INT16_C( 30262) } },
{ { INT16_C( 7035), -INT16_C( 28128), -INT16_C( 27633), -INT16_C( 6964), INT16_C( 3245), INT16_C( 16127), -INT16_C( 23649), INT16_C( 10659) },
{ -INT16_C( 6328), INT16_C( 13357), -INT16_C( 9860), INT16_C( 5121), INT16_C( 2322), -INT16_C( 9202), -INT16_C( 5031), INT16_C( 2542) },
{ INT16_C( 14915), -INT16_C( 24216), -INT16_C( 13337), -INT16_C( 24564), INT16_C( 18581), -INT16_C( 8073), INT16_C( 25295), INT16_C( 20339) },
{ -INT16_C( 11717), INT16_C( 2912), INT16_C( 24335), INT16_C( 76), INT16_C( 17581), INT16_C( 959), INT16_C( 5727), INT16_C( 31651) },
{ INT16_C( 9083), -INT16_C( 18912), -INT16_C( 4081), INT16_C( 1228), INT16_C( 18605), INT16_C( 15103), INT16_C( 26527), -INT16_C( 18013) },
{ INT16_C( 7035), -INT16_C( 19936), -INT16_C( 27633), INT16_C( 9420), INT16_C( 19629), -INT16_C( 8449), INT16_C( 9119), -INT16_C( 13917) },
{ INT16_C( 7035), -INT16_C( 28128), INT16_C( 5135), -INT16_C( 6964), INT16_C( 3245), INT16_C( 16127), -INT16_C( 23649), INT16_C( 10659) } },
{ { -INT16_C( 14045), INT16_C( 6950), INT16_C( 25104), -INT16_C( 22985), -INT16_C( 559), -INT16_C( 28091), INT16_C( 4901), INT16_C( 28381) },
{ -INT16_C( 25976), -INT16_C( 15056), INT16_C( 10123), INT16_C( 5179), INT16_C( 9318), -INT16_C( 26683), -INT16_C( 29282), INT16_C( 29906) },
{ -INT16_C( 11197), INT16_C( 10630), INT16_C( 15448), -INT16_C( 24097), INT16_C( 9009), -INT16_C( 16851), INT16_C( 27893), -INT16_C( 22891) },
{ -INT16_C( 24029), INT16_C( 19494), -INT16_C( 7472), INT16_C( 3831), INT16_C( 6545), -INT16_C( 3771), INT16_C( 26533), INT16_C( 13469) },
{ INT16_C( 8483), -INT16_C( 15578), INT16_C( 11792), -INT16_C( 4553), -INT16_C( 26159), INT16_C( 5701), INT16_C( 31525), INT16_C( 19165) },
{ INT16_C( 2339), INT16_C( 6950), INT16_C( 25104), INT16_C( 26167), -INT16_C( 8751), -INT16_C( 19899), -INT16_C( 11483), INT16_C( 20189) },
{ INT16_C( 18723), INT16_C( 6950), -INT16_C( 7664), -INT16_C( 22985), INT16_C( 32209), -INT16_C( 28091), INT16_C( 4901), INT16_C( 28381) } },
{ { -INT16_C( 7004), -INT16_C( 1843), -INT16_C( 19583), INT16_C( 21568), INT16_C( 21139), INT16_C( 8147), INT16_C( 22889), -INT16_C( 8842) },
{ -INT16_C( 14802), -INT16_C( 15206), INT16_C( 30112), INT16_C( 8024), INT16_C( 23550), INT16_C( 30909), -INT16_C( 13817), INT16_C( 27018) },
{ INT16_C( 12660), INT16_C( 9429), -INT16_C( 21247), -INT16_C( 1344), -INT16_C( 8205), -INT16_C( 14869), INT16_C( 20537), INT16_C( 19542) },
{ -INT16_C( 29788), INT16_C( 9869), INT16_C( 26625), -INT16_C( 10752), -INT16_C( 109), INT16_C( 12115), -INT16_C( 32279), INT16_C( 25270) },
{ -INT16_C( 18268), INT16_C( 26829), -INT16_C( 31871), INT16_C( 24640), -INT16_C( 1389), -INT16_C( 2093), INT16_C( 7529), INT16_C( 10614) },
{ -INT16_C( 15196), INT16_C( 22733), INT16_C( 4993), INT16_C( 5184), -INT16_C( 11629), -INT16_C( 16429), -INT16_C( 1687), INT16_C( 23926) },
{ INT16_C( 25764), INT16_C( 30925), INT16_C( 13185), INT16_C( 21568), INT16_C( 21139), -INT16_C( 24621), -INT16_C( 9879), INT16_C( 23926) } },
{ { INT16_C( 17169), INT16_C( 24072), -INT16_C( 12994), -INT16_C( 8073), -INT16_C( 12777), INT16_C( 1825), -INT16_C( 5150), -INT16_C( 31600) },
{ -INT16_C( 7078), INT16_C( 21725), INT16_C( 27331), -INT16_C( 7935), -INT16_C( 9434), INT16_C( 29126), INT16_C( 21858), -INT16_C( 2211) },
{ INT16_C( 8913), -INT16_C( 22808), INT16_C( 22046), INT16_C( 2063), -INT16_C( 9929), -INT16_C( 29135), -INT16_C( 21742), -INT16_C( 17688) },
{ INT16_C( 5777), INT16_C( 14152), -INT16_C( 20226), INT16_C( 16503), -INT16_C( 13929), INT16_C( 29089), INT16_C( 22690), -INT16_C( 10416) },
{ INT16_C( 27409), INT16_C( 30216), INT16_C( 3390), INT16_C( 1143), -INT16_C( 26089), INT16_C( 6945), -INT16_C( 29726), INT16_C( 29840) },
{ INT16_C( 17169), -INT16_C( 16888), INT16_C( 27966), INT16_C( 8311), -INT16_C( 12777), -INT16_C( 14559), INT16_C( 19426), -INT16_C( 23408) },
{ INT16_C( 17169), -INT16_C( 8696), -INT16_C( 12994), -INT16_C( 8073), INT16_C( 19991), INT16_C( 1825), INT16_C( 27618), -INT16_C( 31600) } },
{ { -INT16_C( 23136), -INT16_C( 21049), INT16_C( 4129), -INT16_C( 8019), INT16_C( 25623), INT16_C( 9637), INT16_C( 8632), INT16_C( 32502) },
{ -INT16_C( 1800), INT16_C( 21742), INT16_C( 13572), -INT16_C( 19366), -INT16_C( 6353), INT16_C( 26854), INT16_C( 902), INT16_C( 24083) },
{ -INT16_C( 14400), -INT16_C( 22665), -INT16_C( 22495), -INT16_C( 23851), INT16_C( 14719), INT16_C( 18229), INT16_C( 7216), -INT16_C( 3938) },
{ INT16_C( 15904), INT16_C( 15239), INT16_C( 16673), INT16_C( 5805), -INT16_C( 13353), INT16_C( 14757), -INT16_C( 7752), -INT16_C( 31498) },
{ -INT16_C( 7776), -INT16_C( 17977), INT16_C( 4129), INT16_C( 26797), -INT16_C( 17385), -INT16_C( 26203), INT16_C( 6584), INT16_C( 20214) },
{ INT16_C( 1440), -INT16_C( 12857), -INT16_C( 28639), INT16_C( 16557), -INT16_C( 7145), -INT16_C( 14939), -INT16_C( 15944), INT16_C( 32502) },
{ INT16_C( 9632), INT16_C( 11719), INT16_C( 4129), INT16_C( 24749), -INT16_C( 7145), INT16_C( 9637), INT16_C( 8632), -INT16_C( 266) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int16x8_t a = simde_vld1q_s16(test_vec[i].a);
simde_int16x8_t b = simde_vld1q_s16(test_vec[i].b);
simde_int16x8_t r3 = simde_vsliq_n_s16(a, b, 3);
simde_int16x8_t r6 = simde_vsliq_n_s16(a, b, 6);
simde_int16x8_t r10 = simde_vsliq_n_s16(a, b, 10);
simde_int16x8_t r13 = simde_vsliq_n_s16(a, b, 13);
simde_int16x8_t r15 = simde_vsliq_n_s16(a, b, 15);
simde_test_arm_neon_assert_equal_i16x8(r3, simde_vld1q_s16(test_vec[i].r3));
simde_test_arm_neon_assert_equal_i16x8(r6, simde_vld1q_s16(test_vec[i].r6));
simde_test_arm_neon_assert_equal_i16x8(r10, simde_vld1q_s16(test_vec[i].r10));
simde_test_arm_neon_assert_equal_i16x8(r13, simde_vld1q_s16(test_vec[i].r13));
simde_test_arm_neon_assert_equal_i16x8(r15, simde_vld1q_s16(test_vec[i].r15));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_int16x8_t a = simde_test_arm_neon_random_i16x8();
simde_int16x8_t b = simde_test_arm_neon_random_i16x8();
simde_int16x8_t r3 = simde_vsliq_n_s16(a, b, 3);
simde_int16x8_t r6 = simde_vsliq_n_s16(a, b, 6);
simde_int16x8_t r10 = simde_vsliq_n_s16(a, b, 10);
simde_int16x8_t r13 = simde_vsliq_n_s16(a, b, 13);
simde_int16x8_t r15 = simde_vsliq_n_s16(a, b, 15);
simde_test_arm_neon_write_i16x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_i16x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i16x8(2, r3, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i16x8(2, r6, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i16x8(2, r10, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i16x8(2, r13, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i16x8(2, r15, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vsliq_n_s32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
int32_t a[4];
int32_t b[4];
int32_t r6[4];
int32_t r13[4];
int32_t r19[4];
int32_t r26[4];
int32_t r31[4];
} test_vec[] = {
{ { -INT32_C( 2048672908), INT32_C( 482466515), -INT32_C( 375121982), INT32_C( 1919378555) },
{ -INT32_C( 92957730), INT32_C( 1419974623), INT32_C( 1820210245), -INT32_C( 127918576) },
{ -INT32_C( 1654327372), INT32_C( 684062675), INT32_C( 529338690), INT32_C( 403145787) },
{ -INT32_C( 1300505740), INT32_C( 1660680915), -INT32_C( 964118590), INT32_C( 63046779) },
{ -INT32_C( 1628193932), -INT32_C( 1090921773), -INT32_C( 1574168638), -INT32_C( 259562373) },
{ INT32_C( 2044967796), INT32_C( 2093079251), INT32_C( 363075522), INT32_C( 1114072187) },
{ INT32_C( 98810740), -INT32_C( 1665017133), -INT32_C( 375121982), INT32_C( 1919378555) } },
{ { INT32_C( 429638935), INT32_C( 807280638), INT32_C( 482365039), INT32_C( 1712721656) },
{ INT32_C( 396810675), INT32_C( 2144555430), -INT32_C( 705681075), INT32_C( 287557555) },
{ -INT32_C( 373920553), -INT32_C( 187405890), INT32_C( 2081051503), INT32_C( 1223814392) },
{ -INT32_C( 617192169), INT32_C( 1781850110), INT32_C( 86617711), INT32_C( 2029416184) },
{ -INT32_C( 845429481), -INT32_C( 1925832706), INT32_C( 1248349807), INT32_C( 1033768696) },
{ -INT32_C( 845429481), -INT32_C( 1742856194), INT32_C( 885018223), -INT32_C( 837415176) },
{ -INT32_C( 1717844713), INT32_C( 807280638), -INT32_C( 1665118609), -INT32_C( 434761992) } },
{ { -INT32_C( 517994438), INT32_C( 1285438865), -INT32_C( 338029974), INT32_C( 40999571) },
{ INT32_C( 291353625), -INT32_C( 1038552292), -INT32_C( 2119572785), -INT32_C( 1620388047) },
{ INT32_C( 1466762874), -INT32_C( 2042837231), INT32_C( 1786295274), -INT32_C( 625619885) },
{ -INT32_C( 1232918470), INT32_C( 509844881), INT32_C( 1012527722), INT32_C( 1525037715) },
{ -INT32_C( 1597503430), -INT32_C( 1729741423), INT32_C( 377098858), -INT32_C( 1182164333) },
{ INT32_C( 1696598074), INT32_C( 1889418641), INT32_C( 1071256170), -INT32_C( 965633389) },
{ -INT32_C( 517994438), INT32_C( 1285438865), -INT32_C( 338029974), -INT32_C( 2106484077) } },
{ { -INT32_C( 61481464), INT32_C( 164801062), -INT32_C( 1442367081), INT32_C( 600232314) },
{ INT32_C( 268218714), -INT32_C( 64451073), -INT32_C( 735524508), -INT32_C( 1224314185) },
{ -INT32_C( 13871480), INT32_C( 170098662), INT32_C( 171071767), -INT32_C( 1046696454) },
{ -INT32_C( 1775542776), INT32_C( 297789990), INT32_C( 422353303), -INT32_C( 833162886) },
{ -INT32_C( 1965695480), INT32_C( 1878698534), INT32_C( 1260861847), -INT32_C( 1782656646) },
{ INT32_C( 1750457864), -INT32_C( 36525530), -INT32_C( 1845020265), -INT32_C( 540618374) },
{ INT32_C( 2086002184), -INT32_C( 1982682586), INT32_C( 705116567), -INT32_C( 1547251334) } },
{ { -INT32_C( 126851217), -INT32_C( 1366643457), -INT32_C( 1960710568), INT32_C( 1373905720) },
{ INT32_C( 491803898), INT32_C( 803598513), -INT32_C( 1851430137), -INT32_C( 750917567) },
{ INT32_C( 1410678447), -INT32_C( 109302657), INT32_C( 1767555544), -INT32_C( 814083976) },
{ INT32_C( 178210671), -INT32_C( 1105842945), -INT32_C( 1386156456), -INT32_C( 1123540168) },
{ -INT32_C( 1479514257), -INT32_C( 2054509313), INT32_C( 1480191576), INT32_C( 1108091704) },
{ -INT32_C( 395286673), -INT32_C( 963990273), INT32_C( 522317400), INT32_C( 98837304) },
{ INT32_C( 2020632431), -INT32_C( 1366643457), -INT32_C( 1960710568), -INT32_C( 773577928) } },
{ { -INT32_C( 2137359464), -INT32_C( 615731445), INT32_C( 708318726), INT32_C( 944041089) },
{ INT32_C( 938801535), -INT32_C( 84228041), INT32_C( 353656812), INT32_C( 158358579) },
{ -INT32_C( 46243880), -INT32_C( 1095627317), INT32_C( 1159199494), INT32_C( 1545014465) },
{ -INT32_C( 1624245352), INT32_C( 1493626635), -INT32_C( 1946315258), INT32_C( 193358977) },
{ -INT32_C( 872776808), INT32_C( 1102884619), -INT32_C( 10480122), -INT32_C( 509809535) },
{ -INT32_C( 56984680), -INT32_C( 548622581), -INT32_C( 1304947194), -INT32_C( 867898239) },
{ -INT32_C( 2137359464), -INT32_C( 615731445), INT32_C( 708318726), -INT32_C( 1203442559) } },
{ { INT32_C( 1569927325), INT32_C( 1349793024), INT32_C( 1347867252), INT32_C( 583373983) },
{ INT32_C( 198226018), INT32_C( 1371438700), INT32_C( 322817713), INT32_C( 1605845413) },
{ -INT32_C( 198436707), INT32_C( 1872730880), -INT32_C( 814502796), -INT32_C( 305108641) },
{ INT32_C( 369905821), -INT32_C( 808610560), -INT32_C( 1177144716), -INT32_C( 399199073) },
{ -INT32_C( 2095894371), -INT32_C( 211536640), INT32_C( 1972294260), INT32_C( 221090975) },
{ -INT32_C( 1986842467), -INT32_C( 1334561536), -INT32_C( 1000942988), -INT32_C( 1765436257) },
{ INT32_C( 1569927325), INT32_C( 1349793024), -INT32_C( 799616396), -INT32_C( 1564109665) } },
{ { INT32_C( 2115085206), INT32_C( 1904667615), -INT32_C( 1478857215), -INT32_C( 1378658545) },
{ INT32_C( 738556760), INT32_C( 523005912), -INT32_C( 406383756), INT32_C( 1614439741) },
{ INT32_C( 22992406), -INT32_C( 887359969), -INT32_C( 238756607), INT32_C( 244928335) },
{ -INT32_C( 1351941226), -INT32_C( 1912927265), -INT32_C( 496071167), INT32_C( 1286059791) },
{ -INT32_C( 624843882), INT32_C( 2126965727), -INT32_C( 1683853823), INT32_C( 703289103) },
{ INT32_C( 1645323158), INT32_C( 1636232159), -INT32_C( 740659711), -INT32_C( 170698993) },
{ INT32_C( 2115085206), INT32_C( 1904667615), INT32_C( 668626433), -INT32_C( 1378658545) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int32x4_t a = simde_vld1q_s32(test_vec[i].a);
simde_int32x4_t b = simde_vld1q_s32(test_vec[i].b);
simde_int32x4_t r6 = simde_vsliq_n_s32(a, b, 6);
simde_int32x4_t r13 = simde_vsliq_n_s32(a, b, 13);
simde_int32x4_t r19 = simde_vsliq_n_s32(a, b, 19);
simde_int32x4_t r26 = simde_vsliq_n_s32(a, b, 26);
simde_int32x4_t r31 = simde_vsliq_n_s32(a, b, 31);
simde_test_arm_neon_assert_equal_i32x4(r6, simde_vld1q_s32(test_vec[i].r6));
simde_test_arm_neon_assert_equal_i32x4(r13, simde_vld1q_s32(test_vec[i].r13));
simde_test_arm_neon_assert_equal_i32x4(r19, simde_vld1q_s32(test_vec[i].r19));
simde_test_arm_neon_assert_equal_i32x4(r26, simde_vld1q_s32(test_vec[i].r26));
simde_test_arm_neon_assert_equal_i32x4(r31, simde_vld1q_s32(test_vec[i].r31));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_int32x4_t a = simde_test_arm_neon_random_i32x4();
simde_int32x4_t b = simde_test_arm_neon_random_i32x4();
simde_int32x4_t r6 = simde_vsliq_n_s32(a, b, 6);
simde_int32x4_t r13 = simde_vsliq_n_s32(a, b, 13);
simde_int32x4_t r19 = simde_vsliq_n_s32(a, b, 19);
simde_int32x4_t r26 = simde_vsliq_n_s32(a, b, 26);
simde_int32x4_t r31 = simde_vsliq_n_s32(a, b, 31);
simde_test_arm_neon_write_i32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_i32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i32x4(2, r6, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i32x4(2, r13, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i32x4(2, r19, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i32x4(2, r26, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i32x4(2, r31, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vsliq_n_s64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
int64_t a[2];
int64_t b[2];
int64_t r13[2];
int64_t r26[2];
int64_t r39[2];
int64_t r52[2];
int64_t r63[2];
} test_vec[] = {
{ { -INT64_C( 5263643971819047857), INT64_C( 541502720996737267) },
{ INT64_C( 3946797069985802130), -INT64_C( 42445362033043898) },
{ -INT64_C( 4980763889152928689), INT64_C( 2775731625785868531) },
{ INT64_C( 1780111104754152527), -INT64_C( 6041964446011948813) },
{ -INT64_C( 8704392437862665137), -INT64_C( 3158391839620661005) },
{ INT64_C( 8729040070421083215), INT64_C( 7233851767269294323) },
{ INT64_C( 3959728065035727951), INT64_C( 541502720996737267) } },
{ { -INT64_C( 7912615021952819050), -INT64_C( 5293486681595043945) },
{ INT64_C( 6940172625691428387), INT64_C( 9115758130503661579) },
{ INT64_C( 1028914491343265942), INT64_C( 3870594709730721687) },
{ -INT64_C( 1294528601230335850), -INT64_C( 2041200592708952169) },
{ INT64_C( 2099541159110320278), -INT64_C( 8765124277553586281) },
{ INT64_C( 7075364537936191638), -INT64_C( 9171085960761041001) },
{ -INT64_C( 7912615021952819050), -INT64_C( 5293486681595043945) } },
{ { INT64_C( 2180577019911891298), -INT64_C( 1541747926973591080) },
{ -INT64_C( 8065666064468080886), -INT64_C( 6826784933820909701) },
{ INT64_C( 2300871905095272802), INT64_C( 5505853626468233688) },
{ -INT64_C( 3829796790686029470), INT64_C( 1663647807938712024) },
{ INT64_C( 4216360182134499682), -INT64_C( 3541027852909850152) },
{ INT64_C( 8116321328786205026), INT64_C( 8627380031628988888) },
{ INT64_C( 2180577019911891298), -INT64_C( 1541747926973591080) } },
{ { -INT64_C( 1415110380634122788), INT64_C( 3816863978450722004) },
{ INT64_C( 6818280905982752686), INT64_C( 9098726142237371117) },
{ -INT64_C( 1383873381812283940), -INT64_C( 6528244651753882412) },
{ INT64_C( 8056861525103990236), -INT64_C( 2269117483815658284) },
{ -INT64_C( 640682009993816612), INT64_C( 5707598467225492692) },
{ INT64_C( 8857600369397978588), -INT64_C( 5847860821886362412) },
{ INT64_C( 7808261656220653020), -INT64_C( 5406508058404053804) } },
{ { -INT64_C( 1783781172000361495), INT64_C( 7705716969977077247) },
{ -INT64_C( 8358257093625578635), -INT64_C( 7084006825256911651) },
{ INT64_C( 3471890629115425769), INT64_C( 1272943385629146623) },
{ -INT64_C( 3151327946570763287), INT64_C( 5541813428062969343) },
{ -INT64_C( 8683578925376113687), INT64_C( 1098437138345549311) },
{ -INT64_C( 5233538486566161431), -INT64_C( 3616332493232349697) },
{ -INT64_C( 1783781172000361495), -INT64_C( 1517655066877698561) } },
{ { -INT64_C( 4154394067891526097), -INT64_C( 2189220270624961150) },
{ -INT64_C( 6795139893074132725), -INT64_C( 309058967878318537) },
{ INT64_C( 6487610392131495471), -INT64_C( 4607126760976880254) },
{ INT64_C( 1434655984018908719), INT64_C( 455948887150071170) },
{ INT64_C( 2125845925662680623), INT64_C( 8890980614938856834) },
{ INT64_C( 1204889488679364143), INT64_C( 7169259755050929538) },
{ -INT64_C( 4154394067891526097), -INT64_C( 2189220270624961150) } },
{ { -INT64_C( 2333047277017444018), INT64_C( 7658204717489207402) },
{ -INT64_C( 6281729226854084346), INT64_C( 6339895830207820242) },
{ INT64_C( 6490139260990050638), INT64_C( 8842073570075629674) },
{ INT64_C( 3704405599550624078), -INT64_C( 6097291397849008022) },
{ INT64_C( 1596670502572577102), INT64_C( 4771820118565599338) },
{ INT64_C( 1184264031958913358), INT64_C( 2100762777314015338) },
{ INT64_C( 6890324759837331790), INT64_C( 7658204717489207402) } },
{ { INT64_C( 8524677170650393138), INT64_C( 3185460102790185058) },
{ -INT64_C( 4517026812874662391), INT64_C( 3366551090117233348) },
{ INT64_C( 684960792126237234), INT64_C( 904140044595920994) },
{ INT64_C( 3388610690435492402), -INT64_C( 8875872301439188894) },
{ -INT64_C( 2851054848273569230), INT64_C( 5919245132162203746) },
{ -INT64_C( 2261443936901944782), -INT64_C( 6033408334437220254) },
{ -INT64_C( 698694866204382670), INT64_C( 3185460102790185058) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int64x2_t a = simde_vld1q_s64(test_vec[i].a);
simde_int64x2_t b = simde_vld1q_s64(test_vec[i].b);
simde_int64x2_t r13 = simde_vsliq_n_s64(a, b, 13);
simde_int64x2_t r26 = simde_vsliq_n_s64(a, b, 26);
simde_int64x2_t r39 = simde_vsliq_n_s64(a, b, 39);
simde_int64x2_t r52 = simde_vsliq_n_s64(a, b, 52);
simde_int64x2_t r63 = simde_vsliq_n_s64(a, b, 63);
simde_test_arm_neon_assert_equal_i64x2(r13, simde_vld1q_s64(test_vec[i].r13));
simde_test_arm_neon_assert_equal_i64x2(r26, simde_vld1q_s64(test_vec[i].r26));
simde_test_arm_neon_assert_equal_i64x2(r39, simde_vld1q_s64(test_vec[i].r39));
simde_test_arm_neon_assert_equal_i64x2(r52, simde_vld1q_s64(test_vec[i].r52));
simde_test_arm_neon_assert_equal_i64x2(r63, simde_vld1q_s64(test_vec[i].r63));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_int64x2_t a = simde_test_arm_neon_random_i64x2();
simde_int64x2_t b = simde_test_arm_neon_random_i64x2();
simde_int64x2_t r13 = simde_vsliq_n_s64(a, b, 13);
simde_int64x2_t r26 = simde_vsliq_n_s64(a, b, 26);
simde_int64x2_t r39 = simde_vsliq_n_s64(a, b, 39);
simde_int64x2_t r52 = simde_vsliq_n_s64(a, b, 52);
simde_int64x2_t r63 = simde_vsliq_n_s64(a, b, 63);
simde_test_arm_neon_write_i64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_i64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i64x2(2, r13, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i64x2(2, r26, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i64x2(2, r39, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i64x2(2, r52, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i64x2(2, r63, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vsliq_n_u8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
uint8_t a[16];
uint8_t b[16];
uint8_t r0[16];
uint8_t r3[16];
uint8_t r5[16];
uint8_t r7[16];
} test_vec[] = {
{ { UINT8_C( 244), UINT8_C( 66), UINT8_C( 116), UINT8_C( 69), UINT8_C( 184), UINT8_C( 184), UINT8_C( 36), UINT8_C( 119), UINT8_C( 145), UINT8_C( 73), UINT8_C( 68), UINT8_C( 242), UINT8_C( 252), UINT8_C( 205), UINT8_C( 128), UINT8_C( 96) },
{ UINT8_C( 152), UINT8_C( 85), UINT8_C( 203), UINT8_C( 155), UINT8_C( 94), UINT8_C( 94), UINT8_C( 115), UINT8_C( 52), UINT8_C( 255), UINT8_C( 54), UINT8_C( 182), UINT8_C( 141), UINT8_C( 92), UINT8_C( 173), UINT8_C( 209), UINT8_C( 117) },
{ UINT8_C( 152), UINT8_C( 85), UINT8_C( 203), UINT8_C( 155), UINT8_C( 94), UINT8_C( 94), UINT8_C( 115), UINT8_C( 52), UINT8_MAX, UINT8_C( 54), UINT8_C( 182), UINT8_C( 141), UINT8_C( 92), UINT8_C( 173), UINT8_C( 209), UINT8_C( 117) },
{ UINT8_C( 196), UINT8_C( 170), UINT8_C( 92), UINT8_C( 221), UINT8_C( 240), UINT8_C( 240), UINT8_C( 156), UINT8_C( 167), UINT8_C( 249), UINT8_C( 177), UINT8_C( 180), UINT8_C( 106), UINT8_C( 228), UINT8_C( 109), UINT8_C( 136), UINT8_C( 168) },
{ UINT8_C( 20), UINT8_C( 162), UINT8_C( 116), UINT8_C( 101), UINT8_C( 216), UINT8_C( 216), UINT8_C( 100), UINT8_C( 151), UINT8_C( 241), UINT8_C( 201), UINT8_C( 196), UINT8_C( 178), UINT8_C( 156), UINT8_C( 173), UINT8_C( 32), UINT8_C( 160) },
{ UINT8_C( 116), UINT8_C( 194), UINT8_C( 244), UINT8_C( 197), UINT8_C( 56), UINT8_C( 56), UINT8_C( 164), UINT8_C( 119), UINT8_C( 145), UINT8_C( 73), UINT8_C( 68), UINT8_C( 242), UINT8_C( 124), UINT8_C( 205), UINT8_C( 128), UINT8_C( 224) } },
{ { UINT8_C( 196), UINT8_C( 145), UINT8_C( 235), UINT8_C( 187), UINT8_C( 234), UINT8_C( 71), UINT8_C( 208), UINT8_C( 39), UINT8_C( 217), UINT8_C( 216), UINT8_C( 187), UINT8_C( 169), UINT8_C( 88), UINT8_C( 246), UINT8_C( 218), UINT8_C( 150) },
{ UINT8_C( 139), UINT8_C( 183), UINT8_C( 107), UINT8_C( 236), UINT8_C( 111), UINT8_C( 223), UINT8_C( 146), UINT8_C( 125), UINT8_C( 1), UINT8_C( 153), UINT8_C( 203), UINT8_C( 5), UINT8_C( 159), UINT8_C( 47), UINT8_C( 104), UINT8_C( 122) },
{ UINT8_C( 139), UINT8_C( 183), UINT8_C( 107), UINT8_C( 236), UINT8_C( 111), UINT8_C( 223), UINT8_C( 146), UINT8_C( 125), UINT8_C( 1), UINT8_C( 153), UINT8_C( 203), UINT8_C( 5), UINT8_C( 159), UINT8_C( 47), UINT8_C( 104), UINT8_C( 122) },
{ UINT8_C( 92), UINT8_C( 185), UINT8_C( 91), UINT8_C( 99), UINT8_C( 122), UINT8_MAX, UINT8_C( 144), UINT8_C( 239), UINT8_C( 9), UINT8_C( 200), UINT8_C( 91), UINT8_C( 41), UINT8_C( 248), UINT8_C( 126), UINT8_C( 66), UINT8_C( 214) },
{ UINT8_C( 100), UINT8_C( 241), UINT8_C( 107), UINT8_C( 155), UINT8_C( 234), UINT8_C( 231), UINT8_C( 80), UINT8_C( 167), UINT8_C( 57), UINT8_C( 56), UINT8_C( 123), UINT8_C( 169), UINT8_C( 248), UINT8_C( 246), UINT8_C( 26), UINT8_C( 86) },
{ UINT8_C( 196), UINT8_C( 145), UINT8_C( 235), UINT8_C( 59), UINT8_C( 234), UINT8_C( 199), UINT8_C( 80), UINT8_C( 167), UINT8_C( 217), UINT8_C( 216), UINT8_C( 187), UINT8_C( 169), UINT8_C( 216), UINT8_C( 246), UINT8_C( 90), UINT8_C( 22) } },
{ { UINT8_C( 99), UINT8_C( 213), UINT8_C( 98), UINT8_C( 126), UINT8_C( 100), UINT8_C( 135), UINT8_C( 177), UINT8_C( 214), UINT8_C( 144), UINT8_C( 59), UINT8_C( 153), UINT8_C( 4), UINT8_C( 22), UINT8_C( 60), UINT8_C( 89), UINT8_C( 55) },
{ UINT8_C( 110), UINT8_C( 86), UINT8_C( 122), UINT8_C( 11), UINT8_C( 21), UINT8_C( 130), UINT8_C( 209), UINT8_C( 56), UINT8_C( 211), UINT8_C( 181), UINT8_C( 9), UINT8_C( 238), UINT8_C( 204), UINT8_C( 88), UINT8_C( 131), UINT8_C( 141) },
{ UINT8_C( 110), UINT8_C( 86), UINT8_C( 122), UINT8_C( 11), UINT8_C( 21), UINT8_C( 130), UINT8_C( 209), UINT8_C( 56), UINT8_C( 211), UINT8_C( 181), UINT8_C( 9), UINT8_C( 238), UINT8_C( 204), UINT8_C( 88), UINT8_C( 131), UINT8_C( 141) },
{ UINT8_C( 115), UINT8_C( 181), UINT8_C( 210), UINT8_C( 94), UINT8_C( 172), UINT8_C( 23), UINT8_C( 137), UINT8_C( 198), UINT8_C( 152), UINT8_C( 171), UINT8_C( 73), UINT8_C( 116), UINT8_C( 102), UINT8_C( 196), UINT8_C( 25), UINT8_C( 111) },
{ UINT8_C( 195), UINT8_C( 213), UINT8_C( 66), UINT8_C( 126), UINT8_C( 164), UINT8_C( 71), UINT8_C( 49), UINT8_C( 22), UINT8_C( 112), UINT8_C( 187), UINT8_C( 57), UINT8_C( 196), UINT8_C( 150), UINT8_C( 28), UINT8_C( 121), UINT8_C( 183) },
{ UINT8_C( 99), UINT8_C( 85), UINT8_C( 98), UINT8_C( 254), UINT8_C( 228), UINT8_C( 7), UINT8_C( 177), UINT8_C( 86), UINT8_C( 144), UINT8_C( 187), UINT8_C( 153), UINT8_C( 4), UINT8_C( 22), UINT8_C( 60), UINT8_C( 217), UINT8_C( 183) } },
{ { UINT8_C( 180), UINT8_C( 141), UINT8_C( 233), UINT8_C( 117), UINT8_C( 209), UINT8_C( 84), UINT8_C( 61), UINT8_C( 212), UINT8_C( 173), UINT8_C( 50), UINT8_C( 112), UINT8_C( 18), UINT8_C( 188), UINT8_C( 32), UINT8_C( 189), UINT8_C( 127) },
{ UINT8_C( 190), UINT8_C( 224), UINT8_C( 111), UINT8_C( 107), UINT8_C( 92), UINT8_C( 61), UINT8_C( 107), UINT8_C( 194), UINT8_C( 193), UINT8_C( 92), UINT8_C( 169), UINT8_C( 27), UINT8_C( 120), UINT8_C( 102), UINT8_C( 237), UINT8_C( 120) },
{ UINT8_C( 190), UINT8_C( 224), UINT8_C( 111), UINT8_C( 107), UINT8_C( 92), UINT8_C( 61), UINT8_C( 107), UINT8_C( 194), UINT8_C( 193), UINT8_C( 92), UINT8_C( 169), UINT8_C( 27), UINT8_C( 120), UINT8_C( 102), UINT8_C( 237), UINT8_C( 120) },
{ UINT8_C( 244), UINT8_C( 5), UINT8_C( 121), UINT8_C( 93), UINT8_C( 225), UINT8_C( 236), UINT8_C( 93), UINT8_C( 20), UINT8_C( 13), UINT8_C( 226), UINT8_C( 72), UINT8_C( 218), UINT8_C( 196), UINT8_C( 48), UINT8_C( 109), UINT8_C( 199) },
{ UINT8_C( 212), UINT8_C( 13), UINT8_C( 233), UINT8_C( 117), UINT8_C( 145), UINT8_C( 180), UINT8_C( 125), UINT8_C( 84), UINT8_C( 45), UINT8_C( 146), UINT8_C( 48), UINT8_C( 114), UINT8_C( 28), UINT8_C( 192), UINT8_C( 189), UINT8_C( 31) },
{ UINT8_C( 52), UINT8_C( 13), UINT8_C( 233), UINT8_C( 245), UINT8_C( 81), UINT8_C( 212), UINT8_C( 189), UINT8_C( 84), UINT8_C( 173), UINT8_C( 50), UINT8_C( 240), UINT8_C( 146), UINT8_C( 60), UINT8_C( 32), UINT8_C( 189), UINT8_C( 127) } },
{ { UINT8_C( 183), UINT8_C( 36), UINT8_C( 213), UINT8_C( 190), UINT8_C( 11), UINT8_C( 205), UINT8_C( 129), UINT8_C( 21), UINT8_C( 4), UINT8_C( 108), UINT8_C( 248), UINT8_C( 225), UINT8_C( 169), UINT8_C( 75), UINT8_C( 175), UINT8_C( 43) },
{ UINT8_C( 141), UINT8_C( 83), UINT8_C( 71), UINT8_C( 14), UINT8_C( 37), UINT8_C( 24), UINT8_C( 233), UINT8_C( 220), UINT8_C( 16), UINT8_C( 80), UINT8_C( 162), UINT8_C( 85), UINT8_C( 75), UINT8_C( 254), UINT8_C( 153), UINT8_C( 29) },
{ UINT8_C( 141), UINT8_C( 83), UINT8_C( 71), UINT8_C( 14), UINT8_C( 37), UINT8_C( 24), UINT8_C( 233), UINT8_C( 220), UINT8_C( 16), UINT8_C( 80), UINT8_C( 162), UINT8_C( 85), UINT8_C( 75), UINT8_C( 254), UINT8_C( 153), UINT8_C( 29) },
{ UINT8_C( 111), UINT8_C( 156), UINT8_C( 61), UINT8_C( 118), UINT8_C( 43), UINT8_C( 197), UINT8_C( 73), UINT8_C( 229), UINT8_C( 132), UINT8_C( 132), UINT8_C( 16), UINT8_C( 169), UINT8_C( 89), UINT8_C( 243), UINT8_C( 207), UINT8_C( 235) },
{ UINT8_C( 183), UINT8_C( 100), UINT8_C( 245), UINT8_C( 222), UINT8_C( 171), UINT8_C( 13), UINT8_C( 33), UINT8_C( 149), UINT8_C( 4), UINT8_C( 12), UINT8_C( 88), UINT8_C( 161), UINT8_C( 105), UINT8_C( 203), UINT8_C( 47), UINT8_C( 171) },
{ UINT8_C( 183), UINT8_C( 164), UINT8_C( 213), UINT8_C( 62), UINT8_C( 139), UINT8_C( 77), UINT8_C( 129), UINT8_C( 21), UINT8_C( 4), UINT8_C( 108), UINT8_C( 120), UINT8_C( 225), UINT8_C( 169), UINT8_C( 75), UINT8_C( 175), UINT8_C( 171) } },
{ { UINT8_C( 234), UINT8_C( 182), UINT8_C( 103), UINT8_C( 241), UINT8_C( 11), UINT8_C( 127), UINT8_C( 118), UINT8_C( 55), UINT8_C( 177), UINT8_C( 196), UINT8_C( 189), UINT8_C( 131), UINT8_C( 254), UINT8_C( 151), UINT8_C( 156), UINT8_C( 20) },
{ UINT8_C( 38), UINT8_C( 43), UINT8_C( 107), UINT8_C( 172), UINT8_C( 184), UINT8_C( 43), UINT8_C( 121), UINT8_C( 218), UINT8_C( 74), UINT8_C( 188), UINT8_C( 8), UINT8_C( 190), UINT8_C( 231), UINT8_C( 164), UINT8_C( 142), UINT8_C( 233) },
{ UINT8_C( 38), UINT8_C( 43), UINT8_C( 107), UINT8_C( 172), UINT8_C( 184), UINT8_C( 43), UINT8_C( 121), UINT8_C( 218), UINT8_C( 74), UINT8_C( 188), UINT8_C( 8), UINT8_C( 190), UINT8_C( 231), UINT8_C( 164), UINT8_C( 142), UINT8_C( 233) },
{ UINT8_C( 50), UINT8_C( 94), UINT8_C( 95), UINT8_C( 97), UINT8_C( 195), UINT8_C( 95), UINT8_C( 206), UINT8_C( 215), UINT8_C( 81), UINT8_C( 228), UINT8_C( 69), UINT8_C( 243), UINT8_C( 62), UINT8_C( 39), UINT8_C( 116), UINT8_C( 76) },
{ UINT8_C( 202), UINT8_C( 118), UINT8_C( 103), UINT8_C( 145), UINT8_C( 11), UINT8_C( 127), UINT8_C( 54), UINT8_C( 87), UINT8_C( 81), UINT8_C( 132), UINT8_C( 29), UINT8_C( 195), UINT8_C( 254), UINT8_C( 151), UINT8_C( 220), UINT8_C( 52) },
{ UINT8_C( 106), UINT8_C( 182), UINT8_C( 231), UINT8_C( 113), UINT8_C( 11), UINT8_MAX, UINT8_C( 246), UINT8_C( 55), UINT8_C( 49), UINT8_C( 68), UINT8_C( 61), UINT8_C( 3), UINT8_C( 254), UINT8_C( 23), UINT8_C( 28), UINT8_C( 148) } },
{ { UINT8_C( 46), UINT8_C( 219), UINT8_C( 53), UINT8_C( 4), UINT8_C( 130), UINT8_C( 212), UINT8_C( 30), UINT8_C( 85), UINT8_C( 206), UINT8_C( 67), UINT8_C( 71), UINT8_C( 68), UINT8_C( 104), UINT8_C( 195), UINT8_C( 15), UINT8_C( 107) },
{ UINT8_C( 125), UINT8_C( 115), UINT8_C( 253), UINT8_C( 164), UINT8_C( 131), UINT8_C( 60), UINT8_C( 54), UINT8_C( 18), UINT8_C( 160), UINT8_C( 87), UINT8_C( 144), UINT8_C( 99), UINT8_C( 146), UINT8_C( 139), UINT8_C( 180), UINT8_C( 90) },
{ UINT8_C( 125), UINT8_C( 115), UINT8_C( 253), UINT8_C( 164), UINT8_C( 131), UINT8_C( 60), UINT8_C( 54), UINT8_C( 18), UINT8_C( 160), UINT8_C( 87), UINT8_C( 144), UINT8_C( 99), UINT8_C( 146), UINT8_C( 139), UINT8_C( 180), UINT8_C( 90) },
{ UINT8_C( 238), UINT8_C( 155), UINT8_C( 237), UINT8_C( 36), UINT8_C( 26), UINT8_C( 228), UINT8_C( 182), UINT8_C( 149), UINT8_C( 6), UINT8_C( 187), UINT8_C( 135), UINT8_C( 28), UINT8_C( 144), UINT8_C( 91), UINT8_C( 167), UINT8_C( 211) },
{ UINT8_C( 174), UINT8_C( 123), UINT8_C( 181), UINT8_C( 132), UINT8_C( 98), UINT8_C( 148), UINT8_C( 222), UINT8_C( 85), UINT8_C( 14), UINT8_C( 227), UINT8_C( 7), UINT8_C( 100), UINT8_C( 72), UINT8_C( 99), UINT8_C( 143), UINT8_C( 75) },
{ UINT8_C( 174), UINT8_C( 219), UINT8_C( 181), UINT8_C( 4), UINT8_C( 130), UINT8_C( 84), UINT8_C( 30), UINT8_C( 85), UINT8_C( 78), UINT8_C( 195), UINT8_C( 71), UINT8_C( 196), UINT8_C( 104), UINT8_C( 195), UINT8_C( 15), UINT8_C( 107) } },
{ { UINT8_C( 234), UINT8_C( 41), UINT8_C( 8), UINT8_C( 239), UINT8_C( 215), UINT8_C( 216), UINT8_C( 100), UINT8_C( 174), UINT8_C( 83), UINT8_C( 100), UINT8_C( 240), UINT8_C( 31), UINT8_C( 72), UINT8_C( 42), UINT8_C( 180), UINT8_C( 12) },
{ UINT8_C( 87), UINT8_C( 103), UINT8_C( 201), UINT8_C( 233), UINT8_C( 29), UINT8_C( 172), UINT8_C( 138), UINT8_C( 78), UINT8_C( 179), UINT8_C( 66), UINT8_C( 163), UINT8_C( 203), UINT8_C( 132), UINT8_C( 33), UINT8_C( 173), UINT8_C( 89) },
{ UINT8_C( 87), UINT8_C( 103), UINT8_C( 201), UINT8_C( 233), UINT8_C( 29), UINT8_C( 172), UINT8_C( 138), UINT8_C( 78), UINT8_C( 179), UINT8_C( 66), UINT8_C( 163), UINT8_C( 203), UINT8_C( 132), UINT8_C( 33), UINT8_C( 173), UINT8_C( 89) },
{ UINT8_C( 186), UINT8_C( 57), UINT8_C( 72), UINT8_C( 79), UINT8_C( 239), UINT8_C( 96), UINT8_C( 84), UINT8_C( 118), UINT8_C( 155), UINT8_C( 20), UINT8_C( 24), UINT8_C( 95), UINT8_C( 32), UINT8_C( 10), UINT8_C( 108), UINT8_C( 204) },
{ UINT8_C( 234), UINT8_C( 233), UINT8_C( 40), UINT8_C( 47), UINT8_C( 183), UINT8_C( 152), UINT8_C( 68), UINT8_C( 206), UINT8_C( 115), UINT8_C( 68), UINT8_C( 112), UINT8_C( 127), UINT8_C( 136), UINT8_C( 42), UINT8_C( 180), UINT8_C( 44) },
{ UINT8_C( 234), UINT8_C( 169), UINT8_C( 136), UINT8_C( 239), UINT8_C( 215), UINT8_C( 88), UINT8_C( 100), UINT8_C( 46), UINT8_C( 211), UINT8_C( 100), UINT8_C( 240), UINT8_C( 159), UINT8_C( 72), UINT8_C( 170), UINT8_C( 180), UINT8_C( 140) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint8x16_t a = simde_vld1q_u8(test_vec[i].a);
simde_uint8x16_t b = simde_vld1q_u8(test_vec[i].b);
simde_uint8x16_t r0 = simde_vsliq_n_u8(a, b, 0);
simde_uint8x16_t r3 = simde_vsliq_n_u8(a, b, 3);
simde_uint8x16_t r5 = simde_vsliq_n_u8(a, b, 5);
simde_uint8x16_t r7 = simde_vsliq_n_u8(a, b, 7);
simde_test_arm_neon_assert_equal_u8x16(r0, simde_vld1q_u8(test_vec[i].r0));
simde_test_arm_neon_assert_equal_u8x16(r3, simde_vld1q_u8(test_vec[i].r3));
simde_test_arm_neon_assert_equal_u8x16(r5, simde_vld1q_u8(test_vec[i].r5));
simde_test_arm_neon_assert_equal_u8x16(r7, simde_vld1q_u8(test_vec[i].r7));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_uint8x16_t a = simde_test_arm_neon_random_u8x16();
simde_uint8x16_t b = simde_test_arm_neon_random_u8x16();
simde_uint8x16_t r0 = simde_vsliq_n_u8(a, b, 0);
simde_uint8x16_t r3 = simde_vsliq_n_u8(a, b, 3);
simde_uint8x16_t r5 = simde_vsliq_n_u8(a, b, 5);
simde_uint8x16_t r7 = simde_vsliq_n_u8(a, b, 7);
simde_test_arm_neon_write_u8x16(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_u8x16(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u8x16(2, r0, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u8x16(2, r3, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u8x16(2, r5, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u8x16(2, r7, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vsliq_n_u16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
uint16_t a[8];
uint16_t b[8];
uint16_t r3[8];
uint16_t r6[8];
uint16_t r10[8];
uint16_t r13[8];
uint16_t r15[8];
} test_vec[] = {
{ { UINT16_C( 54932), UINT16_C( 2052), UINT16_C( 30900), UINT16_C( 7957), UINT16_C( 53988), UINT16_C( 54164), UINT16_C( 41244), UINT16_C( 57663) },
{ UINT16_C( 22926), UINT16_C( 51202), UINT16_C( 3783), UINT16_C( 62722), UINT16_C( 47770), UINT16_C( 44849), UINT16_C( 38117), UINT16_C( 19359) },
{ UINT16_C( 52340), UINT16_C( 16404), UINT16_C( 30268), UINT16_C( 43029), UINT16_C( 54484), UINT16_C( 31116), UINT16_C( 42796), UINT16_C( 23807) },
{ UINT16_C( 25492), UINT16_C( 132), UINT16_C( 45556), UINT16_C( 16533), UINT16_C( 42660), UINT16_C( 52308), UINT16_C( 14684), UINT16_C( 59391) },
{ UINT16_C( 14996), UINT16_C( 2052), UINT16_C( 7348), UINT16_C( 2837), UINT16_C( 27364), UINT16_C( 51092), UINT16_C( 38172), UINT16_C( 32063) },
{ UINT16_C( 54932), UINT16_C( 18436), UINT16_C( 63668), UINT16_C( 24341), UINT16_C( 21220), UINT16_C( 13204), UINT16_C( 41244), UINT16_C( 57663) },
{ UINT16_C( 22164), UINT16_C( 2052), UINT16_C( 63668), UINT16_C( 7957), UINT16_C( 21220), UINT16_C( 54164), UINT16_C( 41244), UINT16_C( 57663) } },
{ { UINT16_C( 55983), UINT16_C( 3761), UINT16_C( 17325), UINT16_C( 1501), UINT16_C( 20550), UINT16_C( 44898), UINT16_C( 2169), UINT16_C( 48672) },
{ UINT16_C( 59886), UINT16_C( 11886), UINT16_C( 50059), UINT16_C( 39013), UINT16_C( 4828), UINT16_C( 28010), UINT16_C( 2847), UINT16_C( 15306) },
{ UINT16_C( 20343), UINT16_C( 29553), UINT16_C( 7261), UINT16_C( 49965), UINT16_C( 38630), UINT16_C( 27474), UINT16_C( 22777), UINT16_C( 56912) },
{ UINT16_C( 31663), UINT16_C( 39857), UINT16_C( 58093), UINT16_C( 6493), UINT16_C( 46854), UINT16_C( 23202), UINT16_C( 51193), UINT16_C( 62112) },
{ UINT16_C( 47791), UINT16_C( 47793), UINT16_C( 12205), UINT16_C( 38365), UINT16_C( 28742), UINT16_C( 43874), UINT16_C( 31865), UINT16_C( 10784) },
{ UINT16_C( 55983), UINT16_C( 52913), UINT16_C( 25517), UINT16_C( 42461), UINT16_C( 36934), UINT16_C( 20322), UINT16_C( 59513), UINT16_C( 24096) },
{ UINT16_C( 23215), UINT16_C( 3761), UINT16_C( 50093), UINT16_C( 34269), UINT16_C( 20550), UINT16_C( 12130), UINT16_C( 34937), UINT16_C( 15904) } },
{ { UINT16_C( 17536), UINT16_C( 59891), UINT16_C( 42463), UINT16_C( 3164), UINT16_C( 10034), UINT16_C( 15752), UINT16_C( 13926), UINT16_C( 51179) },
{ UINT16_C( 16067), UINT16_C( 15431), UINT16_C( 15067), UINT16_C( 39231), UINT16_C( 52443), UINT16_C( 53059), UINT16_C( 35282), UINT16_C( 4686) },
{ UINT16_C( 63000), UINT16_C( 57915), UINT16_C( 55007), UINT16_C( 51708), UINT16_C( 26330), UINT16_C( 31256), UINT16_C( 20118), UINT16_C( 37491) },
{ UINT16_C( 45248), UINT16_C( 4595), UINT16_C( 46815), UINT16_C( 20444), UINT16_C( 14066), UINT16_C( 53448), UINT16_C( 29862), UINT16_C( 37803) },
{ UINT16_C( 3200), UINT16_C( 7667), UINT16_C( 28127), UINT16_C( 64604), UINT16_C( 28466), UINT16_C( 3464), UINT16_C( 19046), UINT16_C( 15339) },
{ UINT16_C( 25728), UINT16_C( 59891), UINT16_C( 26079), UINT16_C( 60508), UINT16_C( 26418), UINT16_C( 32136), UINT16_C( 22118), UINT16_C( 51179) },
{ UINT16_C( 50304), UINT16_C( 59891), UINT16_C( 42463), UINT16_C( 35932), UINT16_C( 42802), UINT16_C( 48520), UINT16_C( 13926), UINT16_C( 18411) } },
{ { UINT16_C( 55903), UINT16_C( 22857), UINT16_C( 39133), UINT16_C( 33408), UINT16_C( 16011), UINT16_C( 990), UINT16_C( 21485), UINT16_C( 53727) },
{ UINT16_C( 10331), UINT16_C( 5549), UINT16_C( 17252), UINT16_C( 48442), UINT16_C( 3492), UINT16_C( 61577), UINT16_C( 18795), UINT16_C( 38317) },
{ UINT16_C( 17119), UINT16_C( 44393), UINT16_C( 6949), UINT16_C( 59856), UINT16_C( 27939), UINT16_C( 33870), UINT16_C( 19293), UINT16_C( 44399) },
{ UINT16_C( 5855), UINT16_C( 27465), UINT16_C( 55581), UINT16_C( 20096), UINT16_C( 26891), UINT16_C( 8798), UINT16_C( 23277), UINT16_C( 27487) },
{ UINT16_C( 28255), UINT16_C( 46409), UINT16_C( 37085), UINT16_C( 60032), UINT16_C( 37515), UINT16_C( 10206), UINT16_C( 45037), UINT16_C( 46559) },
{ UINT16_C( 31327), UINT16_C( 47433), UINT16_C( 39133), UINT16_C( 17024), UINT16_C( 40587), UINT16_C( 9182), UINT16_C( 29677), UINT16_C( 45535) },
{ UINT16_C( 55903), UINT16_C( 55625), UINT16_C( 6365), UINT16_C( 640), UINT16_C( 16011), UINT16_C( 33758), UINT16_C( 54253), UINT16_C( 53727) } },
{ { UINT16_C( 30910), UINT16_C( 36057), UINT16_C( 28028), UINT16_C( 65285), UINT16_C( 30944), UINT16_C( 29925), UINT16_C( 64087), UINT16_C( 51797) },
{ UINT16_C( 21033), UINT16_C( 43881), UINT16_C( 63534), UINT16_C( 35658), UINT16_C( 41153), UINT16_C( 27208), UINT16_C( 27863), UINT16_C( 40336) },
{ UINT16_C( 37198), UINT16_C( 23369), UINT16_C( 49524), UINT16_C( 23125), UINT16_C( 1544), UINT16_C( 21061), UINT16_C( 26303), UINT16_C( 60549) },
{ UINT16_C( 35454), UINT16_C( 55897), UINT16_C( 3004), UINT16_C( 53893), UINT16_C( 12384), UINT16_C( 37413), UINT16_C( 13783), UINT16_C( 25621) },
{ UINT16_C( 42174), UINT16_C( 42201), UINT16_C( 47484), UINT16_C( 11013), UINT16_C( 1248), UINT16_C( 8421), UINT16_C( 24151), UINT16_C( 16981) },
{ UINT16_C( 14526), UINT16_C( 11481), UINT16_C( 52604), UINT16_C( 24325), UINT16_C( 14560), UINT16_C( 5349), UINT16_C( 64087), UINT16_C( 2645) },
{ UINT16_C( 63678), UINT16_C( 36057), UINT16_C( 28028), UINT16_C( 32517), UINT16_C( 63712), UINT16_C( 29925), UINT16_C( 64087), UINT16_C( 19029) } },
{ { UINT16_C( 2698), UINT16_C( 52795), UINT16_C( 47428), UINT16_C( 57027), UINT16_C( 39964), UINT16_C( 36120), UINT16_C( 60475), UINT16_C( 45338) },
{ UINT16_C( 21185), UINT16_C( 2661), UINT16_C( 53801), UINT16_C( 24352), UINT16_C( 21787), UINT16_C( 30325), UINT16_C( 60200), UINT16_C( 19373) },
{ UINT16_C( 38410), UINT16_C( 21291), UINT16_C( 37196), UINT16_C( 63747), UINT16_C( 43228), UINT16_C( 45992), UINT16_C( 22851), UINT16_C( 23914) },
{ UINT16_C( 45130), UINT16_C( 39291), UINT16_C( 35396), UINT16_C( 51203), UINT16_C( 18140), UINT16_C( 40280), UINT16_C( 51771), UINT16_C( 60250) },
{ UINT16_C( 1674), UINT16_C( 38459), UINT16_C( 42308), UINT16_C( 33475), UINT16_C( 27676), UINT16_C( 54552), UINT16_C( 41019), UINT16_C( 46362) },
{ UINT16_C( 10890), UINT16_C( 44603), UINT16_C( 14660), UINT16_C( 7875), UINT16_C( 31772), UINT16_C( 44312), UINT16_C( 3131), UINT16_C( 45338) },
{ UINT16_C( 35466), UINT16_C( 52795), UINT16_C( 47428), UINT16_C( 24259), UINT16_C( 39964), UINT16_C( 36120), UINT16_C( 27707), UINT16_C( 45338) } },
{ { UINT16_C( 20622), UINT16_C( 35405), UINT16_C( 42684), UINT16_C( 64877), UINT16_C( 29368), UINT16_C( 10266), UINT16_C( 24647), UINT16_C( 64280) },
{ UINT16_C( 31576), UINT16_C( 19446), UINT16_C( 44288), UINT16_C( 56822), UINT16_C( 32174), UINT16_C( 17103), UINT16_C( 18667), UINT16_C( 20678) },
{ UINT16_C( 56006), UINT16_C( 24501), UINT16_C( 26628), UINT16_C( 61365), UINT16_C( 60784), UINT16_C( 5754), UINT16_C( 18271), UINT16_C( 34352) },
{ UINT16_C( 54798), UINT16_C( 64909), UINT16_C( 16444), UINT16_C( 32173), UINT16_C( 27576), UINT16_C( 46042), UINT16_C( 15047), UINT16_C( 12696) },
{ UINT16_C( 24718), UINT16_C( 55885), UINT16_C( 700), UINT16_C( 55661), UINT16_C( 47800), UINT16_C( 15386), UINT16_C( 44103), UINT16_C( 6936) },
{ UINT16_C( 4238), UINT16_C( 51789), UINT16_C( 1724), UINT16_C( 56685), UINT16_C( 53944), UINT16_C( 59418), UINT16_C( 24647), UINT16_C( 56088) },
{ UINT16_C( 20622), UINT16_C( 2637), UINT16_C( 9916), UINT16_C( 32109), UINT16_C( 29368), UINT16_C( 43034), UINT16_C( 57415), UINT16_C( 31512) } },
{ { UINT16_C( 47232), UINT16_C( 355), UINT16_C( 64050), UINT16_C( 59843), UINT16_C( 9532), UINT16_C( 42900), UINT16_C( 36704), UINT16_C( 46935) },
{ UINT16_C( 18854), UINT16_C( 61891), UINT16_C( 57306), UINT16_C( 15820), UINT16_C( 62408), UINT16_C( 25140), UINT16_C( 4068), UINT16_C( 24825) },
{ UINT16_C( 19760), UINT16_C( 36379), UINT16_C( 65234), UINT16_C( 61027), UINT16_C( 40516), UINT16_C( 4516), UINT16_C( 32544), UINT16_C( 1999) },
{ UINT16_C( 27008), UINT16_C( 28899), UINT16_C( 63154), UINT16_C( 29443), UINT16_C( 62012), UINT16_C( 36116), UINT16_C( 63776), UINT16_C( 15959) },
{ UINT16_C( 39040), UINT16_C( 3427), UINT16_C( 27186), UINT16_C( 12739), UINT16_C( 8508), UINT16_C( 54164), UINT16_C( 37728), UINT16_C( 59223) },
{ UINT16_C( 55424), UINT16_C( 24931), UINT16_C( 23090), UINT16_C( 35267), UINT16_C( 1340), UINT16_C( 34708), UINT16_C( 36704), UINT16_C( 14167) },
{ UINT16_C( 14464), UINT16_C( 33123), UINT16_C( 31282), UINT16_C( 27075), UINT16_C( 9532), UINT16_C( 10132), UINT16_C( 3936), UINT16_C( 46935) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint16x8_t a = simde_vld1q_u16(test_vec[i].a);
simde_uint16x8_t b = simde_vld1q_u16(test_vec[i].b);
simde_uint16x8_t r3 = simde_vsliq_n_u16(a, b, 3);
simde_uint16x8_t r6 = simde_vsliq_n_u16(a, b, 6);
simde_uint16x8_t r10 = simde_vsliq_n_u16(a, b, 10);
simde_uint16x8_t r13 = simde_vsliq_n_u16(a, b, 13);
simde_uint16x8_t r15 = simde_vsliq_n_u16(a, b, 15);
simde_test_arm_neon_assert_equal_u16x8(r3, simde_vld1q_u16(test_vec[i].r3));
simde_test_arm_neon_assert_equal_u16x8(r6, simde_vld1q_u16(test_vec[i].r6));
simde_test_arm_neon_assert_equal_u16x8(r10, simde_vld1q_u16(test_vec[i].r10));
simde_test_arm_neon_assert_equal_u16x8(r13, simde_vld1q_u16(test_vec[i].r13));
simde_test_arm_neon_assert_equal_u16x8(r15, simde_vld1q_u16(test_vec[i].r15));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_uint16x8_t a = simde_test_arm_neon_random_u16x8();
simde_uint16x8_t b = simde_test_arm_neon_random_u16x8();
simde_uint16x8_t r3 = simde_vsliq_n_u16(a, b, 3);
simde_uint16x8_t r6 = simde_vsliq_n_u16(a, b, 6);
simde_uint16x8_t r10 = simde_vsliq_n_u16(a, b, 10);
simde_uint16x8_t r13 = simde_vsliq_n_u16(a, b, 13);
simde_uint16x8_t r15 = simde_vsliq_n_u16(a, b, 15);
simde_test_arm_neon_write_u16x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_u16x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u16x8(2, r3, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u16x8(2, r6, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u16x8(2, r10, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u16x8(2, r13, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u16x8(2, r15, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vsliq_n_u32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
uint32_t a[4];
uint32_t b[4];
uint32_t r6[4];
uint32_t r13[4];
uint32_t r19[4];
uint32_t r26[4];
uint32_t r31[4];
} test_vec[] = {
{ { UINT32_C(3314104844), UINT32_C( 896066203), UINT32_C(1274783480), UINT32_C(1259865211) },
{ UINT32_C(2546938802), UINT32_C(2309454007), UINT32_C(3677554301), UINT32_C(1529066540) },
{ UINT32_C(4090293388), UINT32_C(1776168411), UINT32_C(3435241336), UINT32_C(3370978107) },
{ UINT32_C(3866515980), UINT32_C(4011254427), UINT32_C(1624221432), UINT32_C(1988461691) },
{ UINT32_C(2643540492), UINT32_C(3317228187), UINT32_C( 871081720), UINT32_C(2707424379) },
{ UINT32_C(3381213708), UINT32_C(3714638491), UINT32_C(4160464632), UINT32_C(3004695675) },
{ UINT32_C(1166621196), UINT32_C(3043549851), UINT32_C(3422267128), UINT32_C(1259865211) } },
{ { UINT32_C(2519560084), UINT32_C(4091206232), UINT32_C(1216423209), UINT32_C(2044064088) },
{ UINT32_C(3403746096), UINT32_C( 188361982), UINT32_C(1027264752), UINT32_C( 342173962) },
{ UINT32_C(3091385364), UINT32_C(3465232280), UINT32_C(1320434729), UINT32_C( 424297112) },
{ UINT32_C( 560336788), UINT32_C(1168104024), UINT32_C(1511916841), UINT32_C(2770424152) },
{ UINT32_C(1501917076), UINT32_C(1743968856), UINT32_C(2273387817), UINT32_C(1213591896) },
{ UINT32_C(3257757588), UINT32_C(4225423960), UINT32_C(3229689129), UINT32_C( 701886808) },
{ UINT32_C( 372076436), UINT32_C(1943722584), UINT32_C(1216423209), UINT32_C(2044064088) } },
{ { UINT32_C( 442898144), UINT32_C(4213751943), UINT32_C(3937589646), UINT32_C(1647003042) },
{ UINT32_C(1900144466), UINT32_C(2941186414), UINT32_C( 465710967), UINT32_C(3138196476) },
{ UINT32_C(1350161568), UINT32_C(3552336775), UINT32_C(4035698126), UINT32_C(3276078882) },
{ UINT32_C(1021990624), UINT32_C(3727540359), UINT32_C(1173289358), UINT32_C(2726266274) },
{ UINT32_C( 982914784), UINT32_C(2339422343), UINT32_C(2075842958), UINT32_C(2682471842) },
{ UINT32_C(1248204512), UINT32_C(3140010119), UINT32_C(3736263054), UINT32_C(4062922146) },
{ UINT32_C( 442898144), UINT32_C(2066268295), UINT32_C(3937589646), UINT32_C(1647003042) } },
{ { UINT32_C(2089720617), UINT32_C(1970686998), UINT32_C( 778315975), UINT32_C(2964826108) },
{ UINT32_C( 394207440), UINT32_C(4261643434), UINT32_C(2206406389), UINT32_C(3380683517) },
{ UINT32_C(3754439721), UINT32_C(2162240150), UINT32_C(3771055431), UINT32_C(1615380348) },
{ UINT32_C(3826916137), UINT32_C(1888832534), UINT32_C(1658759367), UINT32_C( 610248700) },
{ UINT32_C( 109484841), UINT32_C( 626412566), UINT32_C(3081513159), UINT32_C( 401582076) },
{ UINT32_C(1083087657), UINT32_C(2843102230), UINT32_C(3596888263), UINT32_C(4105676796) },
{ UINT32_C(2089720617), UINT32_C(1970686998), UINT32_C(2925799623), UINT32_C(2964826108) } },
{ { UINT32_C(4032337033), UINT32_C(2722005257), UINT32_C(3284061714), UINT32_C(3943119414) },
{ UINT32_C(3606855119), UINT32_C(4011542875), UINT32_C(3628735594), UINT32_C(1545447947) },
{ UINT32_C(3205460937), UINT32_C(3335673545), UINT32_C( 310844050), UINT32_C( 124420854) },
{ UINT32_C(2277110921), UINT32_C(1764450569), UINT32_C(1133334034), UINT32_C(3040967222) },
{ UINT32_C(4000879753), UINT32_C(1256096009), UINT32_C(3814116882), UINT32_C(1348418102) },
{ UINT32_C(1012438153), UINT32_C(1849590025), UINT32_C(2881408530), UINT32_C( 789002806) },
{ UINT32_C(4032337033), UINT32_C(2722005257), UINT32_C(1136578066), UINT32_C(3943119414) } },
{ { UINT32_C(1857063657), UINT32_C( 398218107), UINT32_C(3397194281), UINT32_C(2589095246) },
{ UINT32_C( 57471507), UINT32_C(2562833446), UINT32_C(3648520257), UINT32_C(3804890585) },
{ UINT32_C(3678176489), UINT32_C( 812583355), UINT32_C(1577062505), UINT32_C(2994828878) },
{ UINT32_C(2655152873), UINT32_C( 931451771), UINT32_C( 537129), UINT32_C(1086010702) },
{ UINT32_C(2425916137), UINT32_C(3778302843), UINT32_C( 34411049), UINT32_C( 785020238) },
{ UINT32_C(1320192745), UINT32_C(2612810619), UINT32_C( 108859945), UINT32_C(1716680014) },
{ UINT32_C(4004547305), UINT32_C( 398218107), UINT32_C(3397194281), UINT32_C(2589095246) } },
{ { UINT32_C(3089759757), UINT32_C( 293828492), UINT32_C(3325553807), UINT32_C( 877656139) },
{ UINT32_C(1892709601), UINT32_C(3829548036), UINT32_C( 730099765), UINT32_C(2664244870) },
{ UINT32_C( 874330189), UINT32_C( 277938444), UINT32_C(3776712015), UINT32_C(3007947147) },
{ UINT32_C( 245120525), UINT32_C(1216386956), UINT32_C(2382802063), UINT32_C(2765150283) },
{ UINT32_C(2802449933), UINT32_C( 539195276), UINT32_C(2175790223), UINT32_C( 876083275) },
{ UINT32_C(2217344525), UINT32_C( 293828492), UINT32_C(3593989263), UINT32_C( 407894091) },
{ UINT32_C(3089759757), UINT32_C( 293828492), UINT32_C(3325553807), UINT32_C( 877656139) } },
{ { UINT32_C(3617356505), UINT32_C(3366892416), UINT32_C(2443525970), UINT32_C(3678188135) },
{ UINT32_C(2074072819), UINT32_C(1284524143), UINT32_C(2431646596), UINT32_C(4048530367) },
{ UINT32_C(3891641561), UINT32_C( 605166528), UINT32_C(1006559506), UINT32_C(1407905767) },
{ UINT32_C(4208884441), UINT32_C( 151909248), UINT32_C(4285570898), UINT32_C(4118278759) },
{ UINT32_C(3080485593), UINT32_C(1132376960), UINT32_C(3693428562), UINT32_C(1576841831) },
{ UINT32_C(3483138777), UINT32_C(3165565824), UINT32_C( 296042322), UINT32_C(4282167911) },
{ UINT32_C(3617356505), UINT32_C(3366892416), UINT32_C( 296042322), UINT32_C(3678188135) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint32x4_t a = simde_vld1q_u32(test_vec[i].a);
simde_uint32x4_t b = simde_vld1q_u32(test_vec[i].b);
simde_uint32x4_t r6 = simde_vsliq_n_u32(a, b, 6);
simde_uint32x4_t r13 = simde_vsliq_n_u32(a, b, 13);
simde_uint32x4_t r19 = simde_vsliq_n_u32(a, b, 19);
simde_uint32x4_t r26 = simde_vsliq_n_u32(a, b, 26);
simde_uint32x4_t r31 = simde_vsliq_n_u32(a, b, 31);
simde_test_arm_neon_assert_equal_u32x4(r6, simde_vld1q_u32(test_vec[i].r6));
simde_test_arm_neon_assert_equal_u32x4(r13, simde_vld1q_u32(test_vec[i].r13));
simde_test_arm_neon_assert_equal_u32x4(r19, simde_vld1q_u32(test_vec[i].r19));
simde_test_arm_neon_assert_equal_u32x4(r26, simde_vld1q_u32(test_vec[i].r26));
simde_test_arm_neon_assert_equal_u32x4(r31, simde_vld1q_u32(test_vec[i].r31));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_uint32x4_t a = simde_test_arm_neon_random_u32x4();
simde_uint32x4_t b = simde_test_arm_neon_random_u32x4();
simde_uint32x4_t r6 = simde_vsliq_n_u32(a, b, 6);
simde_uint32x4_t r13 = simde_vsliq_n_u32(a, b, 13);
simde_uint32x4_t r19 = simde_vsliq_n_u32(a, b, 19);
simde_uint32x4_t r26 = simde_vsliq_n_u32(a, b, 26);
simde_uint32x4_t r31 = simde_vsliq_n_u32(a, b, 31);
simde_test_arm_neon_write_u32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_u32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u32x4(2, r6, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u32x4(2, r13, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u32x4(2, r19, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u32x4(2, r26, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u32x4(2, r31, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vsliq_n_u64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
uint64_t a[2];
uint64_t b[2];
uint64_t r13[2];
uint64_t r26[2];
uint64_t r39[2];
uint64_t r52[2];
uint64_t r63[2];
} test_vec[] = {
{ { UINT64_C( 3326354101924670590), UINT64_C(15812941646549698216) },
{ UINT64_C(18151090002998169439), UINT64_C( 1380667824062628123) },
{ UINT64_C(12972070462018022526), UINT64_C( 2576697537094444712) },
{ UINT64_C(13955360284637015166), UINT64_C( 5231003553959724712) },
{ UINT64_C( 7838427115654622334), UINT64_C( 594630893316032168) },
{ UINT64_C(17724362110628146302), UINT64_C( 1275322049397737128) },
{ UINT64_C(12549726138779446398), UINT64_C(15812941646549698216) } },
{ { UINT64_C( 5869328896938516263), UINT64_C( 2222189733952536719) },
{ UINT64_C(12411628851339405478), UINT64_C( 942836641027284248) },
{ UINT64_C(16056959959070727975), UINT64_C(12978740484919984271) },
{ UINT64_C(13330739158301581095), UINT64_C(13255955676427108495) },
{ UINT64_C( 690267940543831847), UINT64_C(15253283237737447567) },
{ UINT64_C( 9972108157473038119), UINT64_C(15097981068604784783) },
{ UINT64_C( 5869328896938516263), UINT64_C( 2222189733952536719) } },
{ { UINT64_C(15272376107936314541), UINT64_C( 7392787741455680135) },
{ UINT64_C( 9420840874243141019), UINT64_C( 6038106548576691917) },
{ UINT64_C(12797981472756823213), UINT64_C( 8447984324952302215) },
{ UINT64_C( 8217653932499203245), UINT64_C(12150569524748616327) },
{ UINT64_C( 6851890001671943341), UINT64_C(17281269205359133319) },
{ UINT64_C(15686707273654400173), UINT64_C( 7843147704192729735) },
{ UINT64_C(15272376107936314541), UINT64_C(16616159778310455943) } },
{ { UINT64_C(17788547161097733072), UINT64_C(10303315733532817032) },
{ UINT64_C( 9530739437947880088), UINT64_C( 9539080515559423601) },
{ UINT64_C( 9196555730211242960), UINT64_C( 3739687229137499784) },
{ UINT64_C( 1681744860744483792), UINT64_C(13922618736527455880) },
{ UINT64_C(15582820183151182800), UINT64_C(16320825774362506888) },
{ UINT64_C( 2994222385185653712), UINT64_C(16653391208125216392) },
{ UINT64_C( 8565175124242957264), UINT64_C(10303315733532817032) } },
{ { UINT64_C(11269734078394947120), UINT64_C(11079511464515323691) },
{ UINT64_C( 4631258017608531081), UINT64_C( 2950484057785924872) },
{ UINT64_C(12759864702248498736), UINT64_C( 5130664822783936299) },
{ UINT64_C( 9559719181400167984), UINT64_C( 8723228335687976747) },
{ UINT64_C( 6790941082614519344), UINT64_C(16446728547236431659) },
{ UINT64_C(14453779014945887792), UINT64_C(15024664738091878187) },
{ UINT64_C(11269734078394947120), UINT64_C( 1856139427660547883) } },
{ { UINT64_C( 7998503011676121860), UINT64_C(12436442786690204518) },
{ UINT64_C(10507257933463575756), UINT64_C( 890983024616133747) },
{ UINT64_C( 2949143004844755716), UINT64_C(12469028540094767974) },
{ UINT64_C(12591503202443651844), UINT64_C( 6659864326580700006) },
{ UINT64_C(13848118176700230404), UINT64_C(10586337451585012582) },
{ UINT64_C(14753902452731865860), UINT64_C( 5131604191095260006) },
{ UINT64_C( 7998503011676121860), UINT64_C(12436442786690204518) } },
{ { UINT64_C(10515578012670966780), UINT64_C(17680525830101447828) },
{ UINT64_C(11288336922296194998), UINT64_C(16689682725274606802) },
{ UINT64_C( 528025944447179772), UINT64_C(13060555188091901076) },
{ UINT64_C( 9050423663222406140), UINT64_C( 952473333433152660) },
{ UINT64_C( 3606217256912632828), UINT64_C(18135548271896081556) },
{ UINT64_C( 8894282146817588220), UINT64_C(14784711269702218900) },
{ UINT64_C( 1292205975816190972), UINT64_C( 8457153793246672020) } },
{ { UINT64_C( 2303077286822012679), UINT64_C( 138581218363046567) },
{ UINT64_C(18411670028825252116), UINT64_C( 8225054175440624625) },
{ UINT64_C( 7821329487171323655), UINT64_C(12134448022314433191) },
{ UINT64_C( 6788990914251187975), UINT64_C(14341129652734655143) },
{ UINT64_C(16926931031184631559), UINT64_C(13667854094844426919) },
{ UINT64_C( 1244731374389946119), UINT64_C(13770977290413537959) },
{ UINT64_C( 2303077286822012679), UINT64_C( 9361953255217822375) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint64x2_t a = simde_vld1q_u64(test_vec[i].a);
simde_uint64x2_t b = simde_vld1q_u64(test_vec[i].b);
simde_uint64x2_t r13 = simde_vsliq_n_u64(a, b, 13);
simde_uint64x2_t r26 = simde_vsliq_n_u64(a, b, 26);
simde_uint64x2_t r39 = simde_vsliq_n_u64(a, b, 39);
simde_uint64x2_t r52 = simde_vsliq_n_u64(a, b, 52);
simde_uint64x2_t r63 = simde_vsliq_n_u64(a, b, 63);
simde_test_arm_neon_assert_equal_u64x2(r13, simde_vld1q_u64(test_vec[i].r13));
simde_test_arm_neon_assert_equal_u64x2(r26, simde_vld1q_u64(test_vec[i].r26));
simde_test_arm_neon_assert_equal_u64x2(r39, simde_vld1q_u64(test_vec[i].r39));
simde_test_arm_neon_assert_equal_u64x2(r52, simde_vld1q_u64(test_vec[i].r52));
simde_test_arm_neon_assert_equal_u64x2(r63, simde_vld1q_u64(test_vec[i].r63));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_uint64x2_t a = simde_test_arm_neon_random_u64x2();
simde_uint64x2_t b = simde_test_arm_neon_random_u64x2();
simde_uint64x2_t r13 = simde_vsliq_n_u64(a, b, 13);
simde_uint64x2_t r26 = simde_vsliq_n_u64(a, b, 26);
simde_uint64x2_t r39 = simde_vsliq_n_u64(a, b, 39);
simde_uint64x2_t r52 = simde_vsliq_n_u64(a, b, 52);
simde_uint64x2_t r63 = simde_vsliq_n_u64(a, b, 63);
simde_test_arm_neon_write_u64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_u64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u64x2(2, r13, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u64x2(2, r26, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u64x2(2, r39, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u64x2(2, r52, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u64x2(2, r63, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vslid_n_s64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
int64_t a;
int64_t b;
int64_t r13;
int64_t r26;
int64_t r39;
int64_t r52;
int64_t r63;
} test_vec[] = {
{ -INT64_C( 4403672992202505812),
-INT64_C( 1230496034501682882),
-INT64_C( 8301250392370986580),
-INT64_C( 9144558609705090644),
INT64_C( 3552791725982124),
-INT64_C( 7790379911985118804),
INT64_C( 4819699044652269996) },
{ -INT64_C( 3907786404754124187),
INT64_C( 7915678331130018259),
INT64_C( 4931469528035652197),
INT64_C( 228852244148621925),
-INT64_C( 6810311284617670043),
-INT64_C( 7118852939069287835),
-INT64_C( 3907786404754124187) },
{ -INT64_C( 7546561803657959031),
-INT64_C( 5215796123490493360),
-INT64_C( 5142568922800060023),
INT64_C( 4438848774528280969),
INT64_C( 4516591482021325193),
-INT64_C( 4249926876422755959),
INT64_C( 1676810233196816777) },
{ INT64_C( 3478031672116439332),
-INT64_C( 8079927811897769318),
-INT64_C( 3850898596655052508),
-INT64_C( 2628937754841519836),
-INT64_C( 8907753509524412124),
INT64_C( 3000650111615166756),
INT64_C( 3478031672116439332) },
{ INT64_C( 7801976851260586890),
INT64_C( 4148771054844773256),
INT64_C( 7829897515388443530),
INT64_C( 3191301773980941194),
INT64_C( 4107779959898323850),
INT64_C( 4072996359797816202),
INT64_C( 7801976851260586890) },
{ INT64_C( 5698065473092539665),
-INT64_C( 6783390212694855361),
-INT64_C( 7939472383085644527),
INT64_C( 3061841662278456593),
-INT64_C( 4965042823300033263),
INT64_C( 1437660225600050449),
-INT64_C( 3525306563762236143) },
{ INT64_C( 4286310312536331710),
INT64_C( 2689930727598008905),
-INT64_C( 7946647600025225794),
-INT64_C( 377303285623532098),
INT64_C( 8184488051327784382),
-INT64_C( 6585379187936045634),
-INT64_C( 4937061724318444098) },
{ INT64_C( 7214605044141401542),
INT64_C( 5142768677345030141),
-INT64_C( 2802459542128974394),
INT64_C( 8447802647868220870),
-INT64_C( 7784473535874193978),
-INT64_C( 9168758160874042),
-INT64_C( 2008766992713374266) },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
int64_t r13 = simde_vslid_n_s64(test_vec[i].a, test_vec[i].b, 13);
int64_t r26 = simde_vslid_n_s64(test_vec[i].a, test_vec[i].b, 26);
int64_t r39 = simde_vslid_n_s64(test_vec[i].a, test_vec[i].b, 39);
int64_t r52 = simde_vslid_n_s64(test_vec[i].a, test_vec[i].b, 52);
int64_t r63 = simde_vslid_n_s64(test_vec[i].a, test_vec[i].b, 63);
simde_assert_equal_i64(r13, test_vec[i].r13);
simde_assert_equal_i64(r26, test_vec[i].r26);
simde_assert_equal_i64(r39, test_vec[i].r39);
simde_assert_equal_i64(r52, test_vec[i].r52);
simde_assert_equal_i64(r63, test_vec[i].r63);
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
int64_t a = simde_test_codegen_random_i64();
int64_t b = simde_test_codegen_random_i64();
int64_t r13 = simde_vslid_n_s64(a, b, 13);
int64_t r26 = simde_vslid_n_s64(a, b, 26);
int64_t r39 = simde_vslid_n_s64(a, b, 39);
int64_t r52 = simde_vslid_n_s64(a, b, 52);
int64_t r63 = simde_vslid_n_s64(a, b, 63);
simde_test_codegen_write_i64(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_codegen_write_i64(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_codegen_write_i64(2, r13, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_codegen_write_i64(2, r26, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_codegen_write_i64(2, r39, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_codegen_write_i64(2, r52, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_codegen_write_i64(2, r63, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vslid_n_u64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
uint64_t a;
uint64_t b;
uint64_t r13;
uint64_t r26;
uint64_t r39;
uint64_t r52;
uint64_t r63;
} test_vec[] = {
{ UINT64_C(16047323941614028429),
UINT64_C( 5759110669390432380),
UINT64_C(10310007171098576525),
UINT64_C(10384376197257004685),
UINT64_C(10872883682835072653),
UINT64_C( 9782816859941668493),
UINT64_C( 6823951904759252621) },
{ UINT64_C( 6252747629803370157),
UINT64_C( 9603497943463504180),
UINT64_C(14938422555498157741),
UINT64_C(18304133725414782637),
UINT64_C(12327647779556456109),
UINT64_C(10612232069098010285),
UINT64_C( 6252747629803370157) },
{ UINT64_C( 9127216911202849255),
UINT64_C( 5473098671353457008),
UINT64_C(10036216613309387239),
UINT64_C(17994903780703801831),
UINT64_C( 6319878951979127271),
UINT64_C(10883620765877342695),
UINT64_C( 9127216911202849255) },
{ UINT64_C(17366484507887084631),
UINT64_C(13169929079093652159),
UINT64_C(11499672881740637271),
UINT64_C(16245006858353321047),
UINT64_C( 4284435786980336727),
UINT64_C(12390006919642686551),
UINT64_C(17366484507887084631) },
{ UINT64_C(11977100683987906951),
UINT64_C(15640438591829181941),
UINT64_C(13835352351822492039),
UINT64_C( 2410877258336039303),
UINT64_C(11890341519974986119),
UINT64_C( 6870018706549764487),
UINT64_C(11977100683987906951) },
{ UINT64_C(16622456104105027770),
UINT64_C(12751574988462635335),
UINT64_C(15437360142427416762),
UINT64_C(10423661486465624250),
UINT64_C( 656579698565064890),
UINT64_C(10700222594112825530),
UINT64_C(16622456104105027770) },
{ UINT64_C( 6364346099977397255),
UINT64_C( 5145566249440208637),
UINT64_C( 1668506987863712775),
UINT64_C(17818630034471756807),
UINT64_C( 1131387083589133319),
UINT64_C( 8057699559868703751),
UINT64_C(15587718136832173063) },
{ UINT64_C(14133761816967247706),
UINT64_C(14840253816082545319),
UINT64_C( 7315815602266109786),
UINT64_C(16136662355303987034),
UINT64_C( 2169982941962172250),
UINT64_C(12282782370117973850),
UINT64_C(14133761816967247706) },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
uint64_t r13 = simde_vslid_n_u64(test_vec[i].a, test_vec[i].b, 13);
uint64_t r26 = simde_vslid_n_u64(test_vec[i].a, test_vec[i].b, 26);
uint64_t r39 = simde_vslid_n_u64(test_vec[i].a, test_vec[i].b, 39);
uint64_t r52 = simde_vslid_n_u64(test_vec[i].a, test_vec[i].b, 52);
uint64_t r63 = simde_vslid_n_u64(test_vec[i].a, test_vec[i].b, 63);
simde_assert_equal_u64(r13, test_vec[i].r13);
simde_assert_equal_u64(r26, test_vec[i].r26);
simde_assert_equal_u64(r39, test_vec[i].r39);
simde_assert_equal_u64(r52, test_vec[i].r52);
simde_assert_equal_u64(r63, test_vec[i].r63);
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
uint64_t a = simde_test_codegen_random_u64();
uint64_t b = simde_test_codegen_random_u64();
uint64_t r13 = simde_vslid_n_u64(a, b, 13);
uint64_t r26 = simde_vslid_n_u64(a, b, 26);
uint64_t r39 = simde_vslid_n_u64(a, b, 39);
uint64_t r52 = simde_vslid_n_u64(a, b, 52);
uint64_t r63 = simde_vslid_n_u64(a, b, 63);
simde_test_codegen_write_u64(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_codegen_write_u64(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_codegen_write_u64(2, r13, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_codegen_write_u64(2, r26, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_codegen_write_u64(2, r39, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_codegen_write_u64(2, r52, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_codegen_write_u64(2, r63, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vsli_n_p8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
simde_poly8_t a[8];
simde_poly8_t b[8];
simde_poly8_t r0[8];
simde_poly8_t r3[8];
simde_poly8_t r5[8];
simde_poly8_t r7[8];
} test_vec[] = {
{ { SIMDE_POLY8_C( 194), SIMDE_POLY8_C( 153), SIMDE_POLY8_C( 182), SIMDE_POLY8_C( 53), SIMDE_POLY8_C( 45), SIMDE_POLY8_C( 214), SIMDE_POLY8_C( 136), SIMDE_POLY8_C( 217) },
{ SIMDE_POLY8_C( 51), SIMDE_POLY8_C( 2), SIMDE_POLY8_C( 97), SIMDE_POLY8_C( 189), SIMDE_POLY8_C( 250), SIMDE_POLY8_C( 77), SIMDE_POLY8_C( 65), SIMDE_POLY8_C( 28) },
{ SIMDE_POLY8_C( 51), SIMDE_POLY8_C( 2), SIMDE_POLY8_C( 97), SIMDE_POLY8_C( 189), SIMDE_POLY8_C( 250), SIMDE_POLY8_C( 77), SIMDE_POLY8_C( 65), SIMDE_POLY8_C( 28) },
{ SIMDE_POLY8_C( 154), SIMDE_POLY8_C( 17), SIMDE_POLY8_C( 14), SIMDE_POLY8_C( 237), SIMDE_POLY8_C( 213), SIMDE_POLY8_C( 110), SIMDE_POLY8_C( 8), SIMDE_POLY8_C( 225) },
{ SIMDE_POLY8_C( 98), SIMDE_POLY8_C( 89), SIMDE_POLY8_C( 54), SIMDE_POLY8_C( 181), SIMDE_POLY8_C( 77), SIMDE_POLY8_C( 182), SIMDE_POLY8_C( 40), SIMDE_POLY8_C( 153) },
{ SIMDE_POLY8_C( 194), SIMDE_POLY8_C( 25), SIMDE_POLY8_C( 182), SIMDE_POLY8_C( 181), SIMDE_POLY8_C( 45), SIMDE_POLY8_C( 214), SIMDE_POLY8_C( 136), SIMDE_POLY8_C( 89) } },
{ { SIMDE_POLY8_C( 149), SIMDE_POLY8_C( 148), SIMDE_POLY8_C( 192), SIMDE_POLY8_C( 18), SIMDE_POLY8_C( 191), SIMDE_POLY8_C( 120), SIMDE_POLY8_C( 160), SIMDE_POLY8_C( 251) },
{ SIMDE_POLY8_C( 243), SIMDE_POLY8_C( 246), SIMDE_POLY8_C( 159), SIMDE_POLY8_C( 234), SIMDE_POLY8_C( 49), SIMDE_POLY8_C( 191), SIMDE_POLY8_C( 110), SIMDE_POLY8_C( 189) },
{ SIMDE_POLY8_C( 243), SIMDE_POLY8_C( 246), SIMDE_POLY8_C( 159), SIMDE_POLY8_C( 234), SIMDE_POLY8_C( 49), SIMDE_POLY8_C( 191), SIMDE_POLY8_C( 110), SIMDE_POLY8_C( 189) },
{ SIMDE_POLY8_C( 157), SIMDE_POLY8_C( 180), SIMDE_POLY8_C( 248), SIMDE_POLY8_C( 82), SIMDE_POLY8_C( 143), SIMDE_POLY8_C( 248), SIMDE_POLY8_C( 112), SIMDE_POLY8_C( 235) },
{ SIMDE_POLY8_C( 117), SIMDE_POLY8_C( 212), SIMDE_POLY8_C( 224), SIMDE_POLY8_C( 82), SIMDE_POLY8_C( 63), SIMDE_POLY8_C( 248), SIMDE_POLY8_C( 192), SIMDE_POLY8_C( 187) },
{ SIMDE_POLY8_C( 149), SIMDE_POLY8_C( 20), SIMDE_POLY8_C( 192), SIMDE_POLY8_C( 18), SIMDE_POLY8_C( 191), SIMDE_POLY8_C( 248), SIMDE_POLY8_C( 32), SIMDE_POLY8_C( 251) } },
{ { SIMDE_POLY8_C( 16), SIMDE_POLY8_C( 99), SIMDE_POLY8_C( 9), SIMDE_POLY8_C( 145), SIMDE_POLY8_C( 219), SIMDE_POLY8_C( 91), SIMDE_POLY8_C( 218), SIMDE_POLY8_C( 77) },
{ SIMDE_POLY8_C( 145), SIMDE_POLY8_C( 92), SIMDE_POLY8_C( 7), SIMDE_POLY8_C( 26), SIMDE_POLY8_C( 192), SIMDE_POLY8_C( 34), SIMDE_POLY8_C( 2), SIMDE_POLY8_C( 133) },
{ SIMDE_POLY8_C( 145), SIMDE_POLY8_C( 92), SIMDE_POLY8_C( 7), SIMDE_POLY8_C( 26), SIMDE_POLY8_C( 192), SIMDE_POLY8_C( 34), SIMDE_POLY8_C( 2), SIMDE_POLY8_C( 133) },
{ SIMDE_POLY8_C( 136), SIMDE_POLY8_C( 227), SIMDE_POLY8_C( 57), SIMDE_POLY8_C( 209), SIMDE_POLY8_C( 3), SIMDE_POLY8_C( 19), SIMDE_POLY8_C( 18), SIMDE_POLY8_C( 45) },
{ SIMDE_POLY8_C( 48), SIMDE_POLY8_C( 131), SIMDE_POLY8_C( 233), SIMDE_POLY8_C( 81), SIMDE_POLY8_C( 27), SIMDE_POLY8_C( 91), SIMDE_POLY8_C( 90), SIMDE_POLY8_C( 173) },
{ SIMDE_POLY8_C( 144), SIMDE_POLY8_C( 99), SIMDE_POLY8_C( 137), SIMDE_POLY8_C( 17), SIMDE_POLY8_C( 91), SIMDE_POLY8_C( 91), SIMDE_POLY8_C( 90), SIMDE_POLY8_C( 205) } },
{ { SIMDE_POLY8_C( 102), SIMDE_POLY8_C( 103), SIMDE_POLY8_C( 7), SIMDE_POLY8_C( 20), SIMDE_POLY8_C( 115), SIMDE_POLY8_C( 205), SIMDE_POLY8_C( 70), SIMDE_POLY8_C( 133) },
{ SIMDE_POLY8_C( 41), SIMDE_POLY8_C( 89), SIMDE_POLY8_C( 182), SIMDE_POLY8_C( 231), SIMDE_POLY8_C( 117), SIMDE_POLY8_C( 92), SIMDE_POLY8_C( 234), SIMDE_POLY8_C( 177) },
{ SIMDE_POLY8_C( 41), SIMDE_POLY8_C( 89), SIMDE_POLY8_C( 182), SIMDE_POLY8_C( 231), SIMDE_POLY8_C( 117), SIMDE_POLY8_C( 92), SIMDE_POLY8_C( 234), SIMDE_POLY8_C( 177) },
{ SIMDE_POLY8_C( 78), SIMDE_POLY8_C( 207), SIMDE_POLY8_C( 183), SIMDE_POLY8_C( 60), SIMDE_POLY8_C( 171), SIMDE_POLY8_C( 229), SIMDE_POLY8_C( 86), SIMDE_POLY8_C( 141) },
{ SIMDE_POLY8_C( 38), SIMDE_POLY8_C( 39), SIMDE_POLY8_C( 199), SIMDE_POLY8_C( 244), SIMDE_POLY8_C( 179), SIMDE_POLY8_C( 141), SIMDE_POLY8_C( 70), SIMDE_POLY8_C( 37) },
{ SIMDE_POLY8_C( 230), SIMDE_POLY8_C( 231), SIMDE_POLY8_C( 7), SIMDE_POLY8_C( 148), SIMDE_POLY8_C( 243), SIMDE_POLY8_C( 77), SIMDE_POLY8_C( 70), SIMDE_POLY8_C( 133) } },
{ { SIMDE_POLY8_C( 51), SIMDE_POLY8_C( 28), SIMDE_POLY8_C( 95), SIMDE_POLY8_C( 70), SIMDE_POLY8_C( 30), SIMDE_POLY8_C( 241), SIMDE_POLY8_C( 5), SIMDE_POLY8_C( 134) },
{ SIMDE_POLY8_C( 85), SIMDE_POLY8_C( 174), SIMDE_POLY8_C( 194), SIMDE_POLY8_C( 192), SIMDE_POLY8_C( 222), SIMDE_POLY8_C( 190), SIMDE_POLY8_C( 203), SIMDE_POLY8_C( 97) },
{ SIMDE_POLY8_C( 85), SIMDE_POLY8_C( 174), SIMDE_POLY8_C( 194), SIMDE_POLY8_C( 192), SIMDE_POLY8_C( 222), SIMDE_POLY8_C( 190), SIMDE_POLY8_C( 203), SIMDE_POLY8_C( 97) },
{ SIMDE_POLY8_C( 171), SIMDE_POLY8_C( 116), SIMDE_POLY8_C( 23), SIMDE_POLY8_C( 6), SIMDE_POLY8_C( 246), SIMDE_POLY8_C( 241), SIMDE_POLY8_C( 93), SIMDE_POLY8_C( 14) },
{ SIMDE_POLY8_C( 179), SIMDE_POLY8_C( 220), SIMDE_POLY8_C( 95), SIMDE_POLY8_C( 6), SIMDE_POLY8_C( 222), SIMDE_POLY8_C( 209), SIMDE_POLY8_C( 101), SIMDE_POLY8_C( 38) },
{ SIMDE_POLY8_C( 179), SIMDE_POLY8_C( 28), SIMDE_POLY8_C( 95), SIMDE_POLY8_C( 70), SIMDE_POLY8_C( 30), SIMDE_POLY8_C( 113), SIMDE_POLY8_C( 133), SIMDE_POLY8_C( 134) } },
{ { SIMDE_POLY8_C( 167), SIMDE_POLY8_C( 158), SIMDE_POLY8_C( 137), SIMDE_POLY8_C( 37), SIMDE_POLY8_C( 155), SIMDE_POLY8_C( 179), SIMDE_POLY8_C( 172), SIMDE_POLY8_C( 255) },
{ SIMDE_POLY8_C( 33), SIMDE_POLY8_C( 236), SIMDE_POLY8_C( 241), SIMDE_POLY8_C( 226), SIMDE_POLY8_C( 155), SIMDE_POLY8_C( 240), SIMDE_POLY8_C( 33), SIMDE_POLY8_C( 64) },
{ SIMDE_POLY8_C( 33), SIMDE_POLY8_C( 236), SIMDE_POLY8_C( 241), SIMDE_POLY8_C( 226), SIMDE_POLY8_C( 155), SIMDE_POLY8_C( 240), SIMDE_POLY8_C( 33), SIMDE_POLY8_C( 64) },
{ SIMDE_POLY8_C( 15), SIMDE_POLY8_C( 102), SIMDE_POLY8_C( 137), SIMDE_POLY8_C( 21), SIMDE_POLY8_C( 219), SIMDE_POLY8_C( 131), SIMDE_POLY8_C( 12), SIMDE_POLY8_C( 7) },
{ SIMDE_POLY8_C( 39), SIMDE_POLY8_C( 158), SIMDE_POLY8_C( 41), SIMDE_POLY8_C( 69), SIMDE_POLY8_C( 123), SIMDE_POLY8_C( 19), SIMDE_POLY8_C( 44), SIMDE_POLY8_C( 31) },
{ SIMDE_POLY8_C( 167), SIMDE_POLY8_C( 30), SIMDE_POLY8_C( 137), SIMDE_POLY8_C( 37), SIMDE_POLY8_C( 155), SIMDE_POLY8_C( 51), SIMDE_POLY8_C( 172), SIMDE_POLY8_C( 127) } },
{ { SIMDE_POLY8_C( 5), SIMDE_POLY8_C( 77), SIMDE_POLY8_C( 86), SIMDE_POLY8_C( 188), SIMDE_POLY8_C( 22), SIMDE_POLY8_C( 139), SIMDE_POLY8_C( 165), SIMDE_POLY8_C( 74) },
{ SIMDE_POLY8_C( 27), SIMDE_POLY8_C( 100), SIMDE_POLY8_C( 63), SIMDE_POLY8_C( 133), SIMDE_POLY8_C( 173), SIMDE_POLY8_C( 182), SIMDE_POLY8_C( 69), SIMDE_POLY8_C( 152) },
{ SIMDE_POLY8_C( 27), SIMDE_POLY8_C( 100), SIMDE_POLY8_C( 63), SIMDE_POLY8_C( 133), SIMDE_POLY8_C( 173), SIMDE_POLY8_C( 182), SIMDE_POLY8_C( 69), SIMDE_POLY8_C( 152) },
{ SIMDE_POLY8_C( 221), SIMDE_POLY8_C( 37), SIMDE_POLY8_C( 254), SIMDE_POLY8_C( 44), SIMDE_POLY8_C( 110), SIMDE_POLY8_C( 179), SIMDE_POLY8_C( 45), SIMDE_POLY8_C( 194) },
{ SIMDE_POLY8_C( 101), SIMDE_POLY8_C( 141), SIMDE_POLY8_C( 246), SIMDE_POLY8_C( 188), SIMDE_POLY8_C( 182), SIMDE_POLY8_C( 203), SIMDE_POLY8_C( 165), SIMDE_POLY8_C( 10) },
{ SIMDE_POLY8_C( 133), SIMDE_POLY8_C( 77), SIMDE_POLY8_C( 214), SIMDE_POLY8_C( 188), SIMDE_POLY8_C( 150), SIMDE_POLY8_C( 11), SIMDE_POLY8_C( 165), SIMDE_POLY8_C( 74) } },
{ { SIMDE_POLY8_C( 250), SIMDE_POLY8_C( 205), SIMDE_POLY8_C( 140), SIMDE_POLY8_C( 192), SIMDE_POLY8_C( 13), SIMDE_POLY8_C( 95), SIMDE_POLY8_C( 19), SIMDE_POLY8_C( 34) },
{ SIMDE_POLY8_C( 170), SIMDE_POLY8_C( 18), SIMDE_POLY8_C( 194), SIMDE_POLY8_C( 134), SIMDE_POLY8_C( 116), SIMDE_POLY8_C( 119), SIMDE_POLY8_C( 217), SIMDE_POLY8_C( 7) },
{ SIMDE_POLY8_C( 170), SIMDE_POLY8_C( 18), SIMDE_POLY8_C( 194), SIMDE_POLY8_C( 134), SIMDE_POLY8_C( 116), SIMDE_POLY8_C( 119), SIMDE_POLY8_C( 217), SIMDE_POLY8_C( 7) },
{ SIMDE_POLY8_C( 82), SIMDE_POLY8_C( 149), SIMDE_POLY8_C( 20), SIMDE_POLY8_C( 48), SIMDE_POLY8_C( 165), SIMDE_POLY8_C( 191), SIMDE_POLY8_C( 203), SIMDE_POLY8_C( 58) },
{ SIMDE_POLY8_C( 90), SIMDE_POLY8_C( 77), SIMDE_POLY8_C( 76), SIMDE_POLY8_C( 192), SIMDE_POLY8_C( 141), SIMDE_POLY8_C(UINT8_MAX), SIMDE_POLY8_C( 51), SIMDE_POLY8_C( 226) },
{ SIMDE_POLY8_C( 122), SIMDE_POLY8_C( 77), SIMDE_POLY8_C( 12), SIMDE_POLY8_C( 64), SIMDE_POLY8_C( 13), SIMDE_POLY8_C( 223), SIMDE_POLY8_C( 147), SIMDE_POLY8_C( 162) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_poly8x8_t a = simde_vld1_p8(test_vec[i].a);
simde_poly8x8_t b = simde_vld1_p8(test_vec[i].b);
simde_poly8x8_t r0 = simde_vsli_n_p8(a, b, 0);
simde_poly8x8_t r3 = simde_vsli_n_p8(a, b, 3);
simde_poly8x8_t r5 = simde_vsli_n_p8(a, b, 5);
simde_poly8x8_t r7 = simde_vsli_n_p8(a, b, 7);
simde_test_arm_neon_assert_equal_p8x8(r0, simde_vld1_p8(test_vec[i].r0));
simde_test_arm_neon_assert_equal_p8x8(r3, simde_vld1_p8(test_vec[i].r3));
simde_test_arm_neon_assert_equal_p8x8(r5, simde_vld1_p8(test_vec[i].r5));
simde_test_arm_neon_assert_equal_p8x8(r7, simde_vld1_p8(test_vec[i].r7));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_poly8x8_t a = simde_test_arm_neon_random_p8x8();
simde_poly8x8_t b = simde_test_arm_neon_random_p8x8();
simde_poly8x8_t r0 = simde_vsli_n_p8(a, b, 0);
simde_poly8x8_t r3 = simde_vsli_n_p8(a, b, 3);
simde_poly8x8_t r5 = simde_vsli_n_p8(a, b, 5);
simde_poly8x8_t r7 = simde_vsli_n_p8(a, b, 7);
simde_test_arm_neon_write_p8x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_p8x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_p8x8(2, r0, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_p8x8(2, r3, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_p8x8(2, r5, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_p8x8(2, r7, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vsli_n_p16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
simde_poly16_t a[4];
simde_poly16_t b[4];
simde_poly16_t r3[4];
simde_poly16_t r6[4];
simde_poly16_t r10[4];
simde_poly16_t r13[4];
simde_poly16_t r15[4];
} test_vec[] = {
{ { SIMDE_POLY16_C( 15391), SIMDE_POLY16_C( 8013), SIMDE_POLY16_C( 1254), SIMDE_POLY16_C( 45654) },
{ SIMDE_POLY16_C( 35066), SIMDE_POLY16_C( 48548), SIMDE_POLY16_C( 14346), SIMDE_POLY16_C( 1393) },
{ SIMDE_POLY16_C( 18391), SIMDE_POLY16_C( 60709), SIMDE_POLY16_C( 49238), SIMDE_POLY16_C( 11150) },
{ SIMDE_POLY16_C( 16031), SIMDE_POLY16_C( 26893), SIMDE_POLY16_C( 678), SIMDE_POLY16_C( 23638) },
{ SIMDE_POLY16_C( 59423), SIMDE_POLY16_C( 37709), SIMDE_POLY16_C( 10470), SIMDE_POLY16_C( 50774) },
{ SIMDE_POLY16_C( 23583), SIMDE_POLY16_C( 40781), SIMDE_POLY16_C( 17638), SIMDE_POLY16_C( 12886) },
{ SIMDE_POLY16_C( 15391), SIMDE_POLY16_C( 8013), SIMDE_POLY16_C( 1254), SIMDE_POLY16_C( 45654) } },
{ { SIMDE_POLY16_C( 23736), SIMDE_POLY16_C( 7291), SIMDE_POLY16_C( 61578), SIMDE_POLY16_C( 8940) },
{ SIMDE_POLY16_C( 15242), SIMDE_POLY16_C( 20311), SIMDE_POLY16_C( 19232), SIMDE_POLY16_C( 4411) },
{ SIMDE_POLY16_C( 56400), SIMDE_POLY16_C( 31419), SIMDE_POLY16_C( 22786), SIMDE_POLY16_C( 35292) },
{ SIMDE_POLY16_C( 58040), SIMDE_POLY16_C( 54779), SIMDE_POLY16_C( 51210), SIMDE_POLY16_C( 20204) },
{ SIMDE_POLY16_C( 10424), SIMDE_POLY16_C( 23675), SIMDE_POLY16_C( 32906), SIMDE_POLY16_C( 61164) },
{ SIMDE_POLY16_C( 23736), SIMDE_POLY16_C( 64635), SIMDE_POLY16_C( 4234), SIMDE_POLY16_C( 25324) },
{ SIMDE_POLY16_C( 23736), SIMDE_POLY16_C( 40059), SIMDE_POLY16_C( 28810), SIMDE_POLY16_C( 41708) } },
{ { SIMDE_POLY16_C( 47025), SIMDE_POLY16_C( 52193), SIMDE_POLY16_C( 31710), SIMDE_POLY16_C( 14843) },
{ SIMDE_POLY16_C( 54022), SIMDE_POLY16_C( 30364), SIMDE_POLY16_C( 65371), SIMDE_POLY16_C( 28567) },
{ SIMDE_POLY16_C( 38961), SIMDE_POLY16_C( 46305), SIMDE_POLY16_C( 64222), SIMDE_POLY16_C( 31931) },
{ SIMDE_POLY16_C( 49585), SIMDE_POLY16_C( 42785), SIMDE_POLY16_C( 55006), SIMDE_POLY16_C( 58875) },
{ SIMDE_POLY16_C( 7089), SIMDE_POLY16_C( 29665), SIMDE_POLY16_C( 28638), SIMDE_POLY16_C( 24059) },
{ SIMDE_POLY16_C( 55217), SIMDE_POLY16_C( 35809), SIMDE_POLY16_C( 31710), SIMDE_POLY16_C( 63995) },
{ SIMDE_POLY16_C( 14257), SIMDE_POLY16_C( 19425), SIMDE_POLY16_C( 64478), SIMDE_POLY16_C( 47611) } },
{ { SIMDE_POLY16_C( 54568), SIMDE_POLY16_C( 15862), SIMDE_POLY16_C( 52509), SIMDE_POLY16_C( 47425) },
{ SIMDE_POLY16_C( 1779), SIMDE_POLY16_C( 31523), SIMDE_POLY16_C( 16426), SIMDE_POLY16_C( 60116) },
{ SIMDE_POLY16_C( 14232), SIMDE_POLY16_C( 55582), SIMDE_POLY16_C( 341), SIMDE_POLY16_C( 22177) },
{ SIMDE_POLY16_C( 48360), SIMDE_POLY16_C( 51446), SIMDE_POLY16_C( 2717), SIMDE_POLY16_C( 46337) },
{ SIMDE_POLY16_C( 52520), SIMDE_POLY16_C( 36342), SIMDE_POLY16_C( 43293), SIMDE_POLY16_C( 20801) },
{ SIMDE_POLY16_C( 29992), SIMDE_POLY16_C( 32246), SIMDE_POLY16_C( 19741), SIMDE_POLY16_C( 39233) },
{ SIMDE_POLY16_C( 54568), SIMDE_POLY16_C( 48630), SIMDE_POLY16_C( 19741), SIMDE_POLY16_C( 14657) } },
{ { SIMDE_POLY16_C( 19021), SIMDE_POLY16_C( 2955), SIMDE_POLY16_C( 23434), SIMDE_POLY16_C( 24652) },
{ SIMDE_POLY16_C( 64304), SIMDE_POLY16_C( 33123), SIMDE_POLY16_C( 28656), SIMDE_POLY16_C( 7738) },
{ SIMDE_POLY16_C( 55685), SIMDE_POLY16_C( 2843), SIMDE_POLY16_C( 32642), SIMDE_POLY16_C( 61908) },
{ SIMDE_POLY16_C( 52237), SIMDE_POLY16_C( 22731), SIMDE_POLY16_C( 64522), SIMDE_POLY16_C( 36492) },
{ SIMDE_POLY16_C( 49741), SIMDE_POLY16_C( 36747), SIMDE_POLY16_C( 50058), SIMDE_POLY16_C( 59468) },
{ SIMDE_POLY16_C( 2637), SIMDE_POLY16_C( 27531), SIMDE_POLY16_C( 7050), SIMDE_POLY16_C( 16460) },
{ SIMDE_POLY16_C( 19021), SIMDE_POLY16_C( 35723), SIMDE_POLY16_C( 23434), SIMDE_POLY16_C( 24652) } },
{ { SIMDE_POLY16_C( 35638), SIMDE_POLY16_C( 64110), SIMDE_POLY16_C( 55906), SIMDE_POLY16_C( 20848) },
{ SIMDE_POLY16_C( 27670), SIMDE_POLY16_C( 29508), SIMDE_POLY16_C( 17746), SIMDE_POLY16_C( 25076) },
{ SIMDE_POLY16_C( 24758), SIMDE_POLY16_C( 39462), SIMDE_POLY16_C( 10898), SIMDE_POLY16_C( 4000) },
{ SIMDE_POLY16_C( 1462), SIMDE_POLY16_C( 53550), SIMDE_POLY16_C( 21666), SIMDE_POLY16_C( 32048) },
{ SIMDE_POLY16_C( 23350), SIMDE_POLY16_C( 4718), SIMDE_POLY16_C( 19042), SIMDE_POLY16_C( 53616) },
{ SIMDE_POLY16_C( 52022), SIMDE_POLY16_C( 39534), SIMDE_POLY16_C( 23138), SIMDE_POLY16_C( 37232) },
{ SIMDE_POLY16_C( 2870), SIMDE_POLY16_C( 31342), SIMDE_POLY16_C( 23138), SIMDE_POLY16_C( 20848) } },
{ { SIMDE_POLY16_C( 23800), SIMDE_POLY16_C( 37832), SIMDE_POLY16_C( 34512), SIMDE_POLY16_C( 33446) },
{ SIMDE_POLY16_C( 19904), SIMDE_POLY16_C( 51885), SIMDE_POLY16_C( 10602), SIMDE_POLY16_C( 42147) },
{ SIMDE_POLY16_C( 28160), SIMDE_POLY16_C( 21864), SIMDE_POLY16_C( 19280), SIMDE_POLY16_C( 9502) },
{ SIMDE_POLY16_C( 28728), SIMDE_POLY16_C( 43848), SIMDE_POLY16_C( 23184), SIMDE_POLY16_C( 10470) },
{ SIMDE_POLY16_C( 248), SIMDE_POLY16_C( 47048), SIMDE_POLY16_C( 43728), SIMDE_POLY16_C( 36518) },
{ SIMDE_POLY16_C( 7416), SIMDE_POLY16_C( 46024), SIMDE_POLY16_C( 18128), SIMDE_POLY16_C( 25254) },
{ SIMDE_POLY16_C( 23800), SIMDE_POLY16_C( 37832), SIMDE_POLY16_C( 1744), SIMDE_POLY16_C( 33446) } },
{ { SIMDE_POLY16_C( 32311), SIMDE_POLY16_C( 55845), SIMDE_POLY16_C( 55299), SIMDE_POLY16_C( 15525) },
{ SIMDE_POLY16_C( 16152), SIMDE_POLY16_C( 36439), SIMDE_POLY16_C( 64155), SIMDE_POLY16_C( 41506) },
{ SIMDE_POLY16_C( 63687), SIMDE_POLY16_C( 29373), SIMDE_POLY16_C( 54491), SIMDE_POLY16_C( 4373) },
{ SIMDE_POLY16_C( 50743), SIMDE_POLY16_C( 38373), SIMDE_POLY16_C( 42691), SIMDE_POLY16_C( 34981) },
{ SIMDE_POLY16_C( 25143), SIMDE_POLY16_C( 24101), SIMDE_POLY16_C( 27651), SIMDE_POLY16_C( 34981) },
{ SIMDE_POLY16_C( 7735), SIMDE_POLY16_C( 64037), SIMDE_POLY16_C( 30723), SIMDE_POLY16_C( 23717) },
{ SIMDE_POLY16_C( 32311), SIMDE_POLY16_C( 55845), SIMDE_POLY16_C( 55299), SIMDE_POLY16_C( 15525) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_poly16x4_t a = simde_vld1_p16(test_vec[i].a);
simde_poly16x4_t b = simde_vld1_p16(test_vec[i].b);
simde_poly16x4_t r3 = simde_vsli_n_p16(a, b, 3);
simde_poly16x4_t r6 = simde_vsli_n_p16(a, b, 6);
simde_poly16x4_t r10 = simde_vsli_n_p16(a, b, 10);
simde_poly16x4_t r13 = simde_vsli_n_p16(a, b, 13);
simde_poly16x4_t r15 = simde_vsli_n_p16(a, b, 15);
simde_test_arm_neon_assert_equal_p16x4(r3, simde_vld1_p16(test_vec[i].r3));
simde_test_arm_neon_assert_equal_p16x4(r6, simde_vld1_p16(test_vec[i].r6));
simde_test_arm_neon_assert_equal_p16x4(r10, simde_vld1_p16(test_vec[i].r10));
simde_test_arm_neon_assert_equal_p16x4(r13, simde_vld1_p16(test_vec[i].r13));
simde_test_arm_neon_assert_equal_p16x4(r15, simde_vld1_p16(test_vec[i].r15));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_poly16x4_t a = simde_test_arm_neon_random_p16x4();
simde_poly16x4_t b = simde_test_arm_neon_random_p16x4();
simde_poly16x4_t r3 = simde_vsli_n_p16(a, b, 3);
simde_poly16x4_t r6 = simde_vsli_n_p16(a, b, 6);
simde_poly16x4_t r10 = simde_vsli_n_p16(a, b, 10);
simde_poly16x4_t r13 = simde_vsli_n_p16(a, b, 13);
simde_poly16x4_t r15 = simde_vsli_n_p16(a, b, 15);
simde_test_arm_neon_write_p16x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_p16x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_p16x4(2, r3, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_p16x4(2, r6, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_p16x4(2, r10, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_p16x4(2, r13, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_p16x4(2, r15, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vsli_n_p64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
simde_poly64_t a[1];
simde_poly64_t b[1];
simde_poly64_t r13[1];
simde_poly64_t r26[1];
simde_poly64_t r39[1];
simde_poly64_t r52[1];
simde_poly64_t r63[1];
} test_vec[] = {
{ { SIMDE_POLY64_C( 2367438358383478378) },
{ SIMDE_POLY64_C(10151069329549398822) },
{ SIMDE_POLY64_C(18084407459726018154) },
{ SIMDE_POLY64_C( 1664254114169931370) },
{ SIMDE_POLY64_C( 1425832543274714730) },
{ SIMDE_POLY64_C( 3632949853674587754) },
{ SIMDE_POLY64_C( 2367438358383478378) } },
{ { SIMDE_POLY64_C( 4289360236958653475) },
{ SIMDE_POLY64_C( 9003445777938185491) },
{ SIMDE_POLY64_C( 6145006178828188707) },
{ SIMDE_POLY64_C(17172783880833014819) },
{ SIMDE_POLY64_C( 4575245904564132899) },
{ SIMDE_POLY64_C(15075481344510991395) },
{ SIMDE_POLY64_C(13512732273813429283) } },
{ { SIMDE_POLY64_C( 4661840731346591672) },
{ SIMDE_POLY64_C(16008367045675390461) },
{ SIMDE_POLY64_C( 2639218171596226488) },
{ SIMDE_POLY64_C( 891207328682762168) },
{ SIMDE_POLY64_C(14306527482023272376) },
{ SIMDE_POLY64_C( 6904633345777098680) },
{ SIMDE_POLY64_C(13885212768201367480) } },
{ { SIMDE_POLY64_C( 560855986095228110) },
{ SIMDE_POLY64_C(12519105941898633195) },
{ SIMDE_POLY64_C(11065570282205701326) },
{ SIMDE_POLY64_C( 1851373620381320398) },
{ SIMDE_POLY64_C( 3229069440521569486) },
{ SIMDE_POLY64_C(18354578113836057806) },
{ SIMDE_POLY64_C( 9784228022950003918) } },
{ { SIMDE_POLY64_C(15210706800944352878) },
{ SIMDE_POLY64_C( 2343987333079752503) },
{ SIMDE_POLY64_C(17330395931398827630) },
{ SIMDE_POLY64_C( 4461078750471655022) },
{ SIMDE_POLY64_C( 2157113990720261742) },
{ SIMDE_POLY64_C(17543571407922269806) },
{ SIMDE_POLY64_C(15210706800944352878) } },
{ { SIMDE_POLY64_C( 3102245097986106578) },
{ SIMDE_POLY64_C(11620068368410445742) },
{ SIMDE_POLY64_C( 6400653677085181138) },
{ SIMDE_POLY64_C( 8508265199309464786) },
{ SIMDE_POLY64_C( 7909402293599511762) },
{ SIMDE_POLY64_C( 8857845421765600466) },
{ SIMDE_POLY64_C( 3102245097986106578) } },
{ { SIMDE_POLY64_C(17038098246975051983) },
{ SIMDE_POLY64_C(18292780545233057134) },
{ SIMDE_POLY64_C(11556115806516271311) },
{ SIMDE_POLY64_C(17456844777586120911) },
{ SIMDE_POLY64_C( 7312358247877793999) },
{ SIMDE_POLY64_C( 6260984338677455055) },
{ SIMDE_POLY64_C( 7814726210120276175) } },
{ { SIMDE_POLY64_C( 1351949120307680797) },
{ SIMDE_POLY64_C(15139404553755458091) },
{ SIMDE_POLY64_C( 4541696815397172765) },
{ SIMDE_POLY64_C(16944259135176136221) },
{ SIMDE_POLY64_C(14068424518630069789) },
{ SIMDE_POLY64_C(11723739062141933085) },
{ SIMDE_POLY64_C(10575321157162456605) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_poly64x1_t a = simde_vld1_p64(test_vec[i].a);
simde_poly64x1_t b = simde_vld1_p64(test_vec[i].b);
simde_poly64x1_t r13 = simde_vsli_n_p64(a, b, 13);
simde_poly64x1_t r26 = simde_vsli_n_p64(a, b, 26);
simde_poly64x1_t r39 = simde_vsli_n_p64(a, b, 39);
simde_poly64x1_t r52 = simde_vsli_n_p64(a, b, 52);
simde_poly64x1_t r63 = simde_vsli_n_p64(a, b, 63);
simde_test_arm_neon_assert_equal_p64x1(r13, simde_vld1_p64(test_vec[i].r13));
simde_test_arm_neon_assert_equal_p64x1(r26, simde_vld1_p64(test_vec[i].r26));
simde_test_arm_neon_assert_equal_p64x1(r39, simde_vld1_p64(test_vec[i].r39));
simde_test_arm_neon_assert_equal_p64x1(r52, simde_vld1_p64(test_vec[i].r52));
simde_test_arm_neon_assert_equal_p64x1(r63, simde_vld1_p64(test_vec[i].r63));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_poly64x1_t a = simde_test_arm_neon_random_p64x1();
simde_poly64x1_t b = simde_test_arm_neon_random_p64x1();
simde_poly64x1_t r13 = simde_vsli_n_p64(a, b, 13);
simde_poly64x1_t r26 = simde_vsli_n_p64(a, b, 26);
simde_poly64x1_t r39 = simde_vsli_n_p64(a, b, 39);
simde_poly64x1_t r52 = simde_vsli_n_p64(a, b, 52);
simde_poly64x1_t r63 = simde_vsli_n_p64(a, b, 63);
simde_test_arm_neon_write_p64x1(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_p64x1(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_p64x1(2, r13, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_p64x1(2, r26, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_p64x1(2, r39, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_p64x1(2, r52, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_p64x1(2, r63, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vsliq_n_p8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
simde_poly8_t a[16];
simde_poly8_t b[16];
simde_poly8_t r0[16];
simde_poly8_t r3[16];
simde_poly8_t r5[16];
simde_poly8_t r7[16];
} test_vec[] = {
{ { SIMDE_POLY8_C( 244), SIMDE_POLY8_C( 66), SIMDE_POLY8_C( 116), SIMDE_POLY8_C( 69), SIMDE_POLY8_C( 184), SIMDE_POLY8_C( 184), SIMDE_POLY8_C( 36), SIMDE_POLY8_C( 119), SIMDE_POLY8_C( 145), SIMDE_POLY8_C( 73), SIMDE_POLY8_C( 68), SIMDE_POLY8_C( 242), SIMDE_POLY8_C( 252), SIMDE_POLY8_C( 205), SIMDE_POLY8_C( 128), SIMDE_POLY8_C( 96) },
{ SIMDE_POLY8_C( 152), SIMDE_POLY8_C( 85), SIMDE_POLY8_C( 203), SIMDE_POLY8_C( 155), SIMDE_POLY8_C( 94), SIMDE_POLY8_C( 94), SIMDE_POLY8_C( 115), SIMDE_POLY8_C( 52), SIMDE_POLY8_C( 255), SIMDE_POLY8_C( 54), SIMDE_POLY8_C( 182), SIMDE_POLY8_C( 141), SIMDE_POLY8_C( 92), SIMDE_POLY8_C( 173), SIMDE_POLY8_C( 209), SIMDE_POLY8_C( 117) },
{ SIMDE_POLY8_C( 152), SIMDE_POLY8_C( 85), SIMDE_POLY8_C( 203), SIMDE_POLY8_C( 155), SIMDE_POLY8_C( 94), SIMDE_POLY8_C( 94), SIMDE_POLY8_C( 115), SIMDE_POLY8_C( 52), SIMDE_POLY8_C(UINT8_MAX), SIMDE_POLY8_C( 54), SIMDE_POLY8_C( 182), SIMDE_POLY8_C( 141), SIMDE_POLY8_C( 92), SIMDE_POLY8_C( 173), SIMDE_POLY8_C( 209), SIMDE_POLY8_C( 117) },
{ SIMDE_POLY8_C( 196), SIMDE_POLY8_C( 170), SIMDE_POLY8_C( 92), SIMDE_POLY8_C( 221), SIMDE_POLY8_C( 240), SIMDE_POLY8_C( 240), SIMDE_POLY8_C( 156), SIMDE_POLY8_C( 167), SIMDE_POLY8_C( 249), SIMDE_POLY8_C( 177), SIMDE_POLY8_C( 180), SIMDE_POLY8_C( 106), SIMDE_POLY8_C( 228), SIMDE_POLY8_C( 109), SIMDE_POLY8_C( 136), SIMDE_POLY8_C( 168) },
{ SIMDE_POLY8_C( 20), SIMDE_POLY8_C( 162), SIMDE_POLY8_C( 116), SIMDE_POLY8_C( 101), SIMDE_POLY8_C( 216), SIMDE_POLY8_C( 216), SIMDE_POLY8_C( 100), SIMDE_POLY8_C( 151), SIMDE_POLY8_C( 241), SIMDE_POLY8_C( 201), SIMDE_POLY8_C( 196), SIMDE_POLY8_C( 178), SIMDE_POLY8_C( 156), SIMDE_POLY8_C( 173), SIMDE_POLY8_C( 32), SIMDE_POLY8_C( 160) },
{ SIMDE_POLY8_C( 116), SIMDE_POLY8_C( 194), SIMDE_POLY8_C( 244), SIMDE_POLY8_C( 197), SIMDE_POLY8_C( 56), SIMDE_POLY8_C( 56), SIMDE_POLY8_C( 164), SIMDE_POLY8_C( 119), SIMDE_POLY8_C( 145), SIMDE_POLY8_C( 73), SIMDE_POLY8_C( 68), SIMDE_POLY8_C( 242), SIMDE_POLY8_C( 124), SIMDE_POLY8_C( 205), SIMDE_POLY8_C( 128), SIMDE_POLY8_C( 224) } },
{ { SIMDE_POLY8_C( 196), SIMDE_POLY8_C( 145), SIMDE_POLY8_C( 235), SIMDE_POLY8_C( 187), SIMDE_POLY8_C( 234), SIMDE_POLY8_C( 71), SIMDE_POLY8_C( 208), SIMDE_POLY8_C( 39), SIMDE_POLY8_C( 217), SIMDE_POLY8_C( 216), SIMDE_POLY8_C( 187), SIMDE_POLY8_C( 169), SIMDE_POLY8_C( 88), SIMDE_POLY8_C( 246), SIMDE_POLY8_C( 218), SIMDE_POLY8_C( 150) },
{ SIMDE_POLY8_C( 139), SIMDE_POLY8_C( 183), SIMDE_POLY8_C( 107), SIMDE_POLY8_C( 236), SIMDE_POLY8_C( 111), SIMDE_POLY8_C( 223), SIMDE_POLY8_C( 146), SIMDE_POLY8_C( 125), SIMDE_POLY8_C( 1), SIMDE_POLY8_C( 153), SIMDE_POLY8_C( 203), SIMDE_POLY8_C( 5), SIMDE_POLY8_C( 159), SIMDE_POLY8_C( 47), SIMDE_POLY8_C( 104), SIMDE_POLY8_C( 122) },
{ SIMDE_POLY8_C( 139), SIMDE_POLY8_C( 183), SIMDE_POLY8_C( 107), SIMDE_POLY8_C( 236), SIMDE_POLY8_C( 111), SIMDE_POLY8_C( 223), SIMDE_POLY8_C( 146), SIMDE_POLY8_C( 125), SIMDE_POLY8_C( 1), SIMDE_POLY8_C( 153), SIMDE_POLY8_C( 203), SIMDE_POLY8_C( 5), SIMDE_POLY8_C( 159), SIMDE_POLY8_C( 47), SIMDE_POLY8_C( 104), SIMDE_POLY8_C( 122) },
{ SIMDE_POLY8_C( 92), SIMDE_POLY8_C( 185), SIMDE_POLY8_C( 91), SIMDE_POLY8_C( 99), SIMDE_POLY8_C( 122), SIMDE_POLY8_C(UINT8_MAX), SIMDE_POLY8_C( 144), SIMDE_POLY8_C( 239), SIMDE_POLY8_C( 9), SIMDE_POLY8_C( 200), SIMDE_POLY8_C( 91), SIMDE_POLY8_C( 41), SIMDE_POLY8_C( 248), SIMDE_POLY8_C( 126), SIMDE_POLY8_C( 66), SIMDE_POLY8_C( 214) },
{ SIMDE_POLY8_C( 100), SIMDE_POLY8_C( 241), SIMDE_POLY8_C( 107), SIMDE_POLY8_C( 155), SIMDE_POLY8_C( 234), SIMDE_POLY8_C( 231), SIMDE_POLY8_C( 80), SIMDE_POLY8_C( 167), SIMDE_POLY8_C( 57), SIMDE_POLY8_C( 56), SIMDE_POLY8_C( 123), SIMDE_POLY8_C( 169), SIMDE_POLY8_C( 248), SIMDE_POLY8_C( 246), SIMDE_POLY8_C( 26), SIMDE_POLY8_C( 86) },
{ SIMDE_POLY8_C( 196), SIMDE_POLY8_C( 145), SIMDE_POLY8_C( 235), SIMDE_POLY8_C( 59), SIMDE_POLY8_C( 234), SIMDE_POLY8_C( 199), SIMDE_POLY8_C( 80), SIMDE_POLY8_C( 167), SIMDE_POLY8_C( 217), SIMDE_POLY8_C( 216), SIMDE_POLY8_C( 187), SIMDE_POLY8_C( 169), SIMDE_POLY8_C( 216), SIMDE_POLY8_C( 246), SIMDE_POLY8_C( 90), SIMDE_POLY8_C( 22) } },
{ { SIMDE_POLY8_C( 99), SIMDE_POLY8_C( 213), SIMDE_POLY8_C( 98), SIMDE_POLY8_C( 126), SIMDE_POLY8_C( 100), SIMDE_POLY8_C( 135), SIMDE_POLY8_C( 177), SIMDE_POLY8_C( 214), SIMDE_POLY8_C( 144), SIMDE_POLY8_C( 59), SIMDE_POLY8_C( 153), SIMDE_POLY8_C( 4), SIMDE_POLY8_C( 22), SIMDE_POLY8_C( 60), SIMDE_POLY8_C( 89), SIMDE_POLY8_C( 55) },
{ SIMDE_POLY8_C( 110), SIMDE_POLY8_C( 86), SIMDE_POLY8_C( 122), SIMDE_POLY8_C( 11), SIMDE_POLY8_C( 21), SIMDE_POLY8_C( 130), SIMDE_POLY8_C( 209), SIMDE_POLY8_C( 56), SIMDE_POLY8_C( 211), SIMDE_POLY8_C( 181), SIMDE_POLY8_C( 9), SIMDE_POLY8_C( 238), SIMDE_POLY8_C( 204), SIMDE_POLY8_C( 88), SIMDE_POLY8_C( 131), SIMDE_POLY8_C( 141) },
{ SIMDE_POLY8_C( 110), SIMDE_POLY8_C( 86), SIMDE_POLY8_C( 122), SIMDE_POLY8_C( 11), SIMDE_POLY8_C( 21), SIMDE_POLY8_C( 130), SIMDE_POLY8_C( 209), SIMDE_POLY8_C( 56), SIMDE_POLY8_C( 211), SIMDE_POLY8_C( 181), SIMDE_POLY8_C( 9), SIMDE_POLY8_C( 238), SIMDE_POLY8_C( 204), SIMDE_POLY8_C( 88), SIMDE_POLY8_C( 131), SIMDE_POLY8_C( 141) },
{ SIMDE_POLY8_C( 115), SIMDE_POLY8_C( 181), SIMDE_POLY8_C( 210), SIMDE_POLY8_C( 94), SIMDE_POLY8_C( 172), SIMDE_POLY8_C( 23), SIMDE_POLY8_C( 137), SIMDE_POLY8_C( 198), SIMDE_POLY8_C( 152), SIMDE_POLY8_C( 171), SIMDE_POLY8_C( 73), SIMDE_POLY8_C( 116), SIMDE_POLY8_C( 102), SIMDE_POLY8_C( 196), SIMDE_POLY8_C( 25), SIMDE_POLY8_C( 111) },
{ SIMDE_POLY8_C( 195), SIMDE_POLY8_C( 213), SIMDE_POLY8_C( 66), SIMDE_POLY8_C( 126), SIMDE_POLY8_C( 164), SIMDE_POLY8_C( 71), SIMDE_POLY8_C( 49), SIMDE_POLY8_C( 22), SIMDE_POLY8_C( 112), SIMDE_POLY8_C( 187), SIMDE_POLY8_C( 57), SIMDE_POLY8_C( 196), SIMDE_POLY8_C( 150), SIMDE_POLY8_C( 28), SIMDE_POLY8_C( 121), SIMDE_POLY8_C( 183) },
{ SIMDE_POLY8_C( 99), SIMDE_POLY8_C( 85), SIMDE_POLY8_C( 98), SIMDE_POLY8_C( 254), SIMDE_POLY8_C( 228), SIMDE_POLY8_C( 7), SIMDE_POLY8_C( 177), SIMDE_POLY8_C( 86), SIMDE_POLY8_C( 144), SIMDE_POLY8_C( 187), SIMDE_POLY8_C( 153), SIMDE_POLY8_C( 4), SIMDE_POLY8_C( 22), SIMDE_POLY8_C( 60), SIMDE_POLY8_C( 217), SIMDE_POLY8_C( 183) } },
{ { SIMDE_POLY8_C( 180), SIMDE_POLY8_C( 141), SIMDE_POLY8_C( 233), SIMDE_POLY8_C( 117), SIMDE_POLY8_C( 209), SIMDE_POLY8_C( 84), SIMDE_POLY8_C( 61), SIMDE_POLY8_C( 212), SIMDE_POLY8_C( 173), SIMDE_POLY8_C( 50), SIMDE_POLY8_C( 112), SIMDE_POLY8_C( 18), SIMDE_POLY8_C( 188), SIMDE_POLY8_C( 32), SIMDE_POLY8_C( 189), SIMDE_POLY8_C( 127) },
{ SIMDE_POLY8_C( 190), SIMDE_POLY8_C( 224), SIMDE_POLY8_C( 111), SIMDE_POLY8_C( 107), SIMDE_POLY8_C( 92), SIMDE_POLY8_C( 61), SIMDE_POLY8_C( 107), SIMDE_POLY8_C( 194), SIMDE_POLY8_C( 193), SIMDE_POLY8_C( 92), SIMDE_POLY8_C( 169), SIMDE_POLY8_C( 27), SIMDE_POLY8_C( 120), SIMDE_POLY8_C( 102), SIMDE_POLY8_C( 237), SIMDE_POLY8_C( 120) },
{ SIMDE_POLY8_C( 190), SIMDE_POLY8_C( 224), SIMDE_POLY8_C( 111), SIMDE_POLY8_C( 107), SIMDE_POLY8_C( 92), SIMDE_POLY8_C( 61), SIMDE_POLY8_C( 107), SIMDE_POLY8_C( 194), SIMDE_POLY8_C( 193), SIMDE_POLY8_C( 92), SIMDE_POLY8_C( 169), SIMDE_POLY8_C( 27), SIMDE_POLY8_C( 120), SIMDE_POLY8_C( 102), SIMDE_POLY8_C( 237), SIMDE_POLY8_C( 120) },
{ SIMDE_POLY8_C( 244), SIMDE_POLY8_C( 5), SIMDE_POLY8_C( 121), SIMDE_POLY8_C( 93), SIMDE_POLY8_C( 225), SIMDE_POLY8_C( 236), SIMDE_POLY8_C( 93), SIMDE_POLY8_C( 20), SIMDE_POLY8_C( 13), SIMDE_POLY8_C( 226), SIMDE_POLY8_C( 72), SIMDE_POLY8_C( 218), SIMDE_POLY8_C( 196), SIMDE_POLY8_C( 48), SIMDE_POLY8_C( 109), SIMDE_POLY8_C( 199) },
{ SIMDE_POLY8_C( 212), SIMDE_POLY8_C( 13), SIMDE_POLY8_C( 233), SIMDE_POLY8_C( 117), SIMDE_POLY8_C( 145), SIMDE_POLY8_C( 180), SIMDE_POLY8_C( 125), SIMDE_POLY8_C( 84), SIMDE_POLY8_C( 45), SIMDE_POLY8_C( 146), SIMDE_POLY8_C( 48), SIMDE_POLY8_C( 114), SIMDE_POLY8_C( 28), SIMDE_POLY8_C( 192), SIMDE_POLY8_C( 189), SIMDE_POLY8_C( 31) },
{ SIMDE_POLY8_C( 52), SIMDE_POLY8_C( 13), SIMDE_POLY8_C( 233), SIMDE_POLY8_C( 245), SIMDE_POLY8_C( 81), SIMDE_POLY8_C( 212), SIMDE_POLY8_C( 189), SIMDE_POLY8_C( 84), SIMDE_POLY8_C( 173), SIMDE_POLY8_C( 50), SIMDE_POLY8_C( 240), SIMDE_POLY8_C( 146), SIMDE_POLY8_C( 60), SIMDE_POLY8_C( 32), SIMDE_POLY8_C( 189), SIMDE_POLY8_C( 127) } },
{ { SIMDE_POLY8_C( 183), SIMDE_POLY8_C( 36), SIMDE_POLY8_C( 213), SIMDE_POLY8_C( 190), SIMDE_POLY8_C( 11), SIMDE_POLY8_C( 205), SIMDE_POLY8_C( 129), SIMDE_POLY8_C( 21), SIMDE_POLY8_C( 4), SIMDE_POLY8_C( 108), SIMDE_POLY8_C( 248), SIMDE_POLY8_C( 225), SIMDE_POLY8_C( 169), SIMDE_POLY8_C( 75), SIMDE_POLY8_C( 175), SIMDE_POLY8_C( 43) },
{ SIMDE_POLY8_C( 141), SIMDE_POLY8_C( 83), SIMDE_POLY8_C( 71), SIMDE_POLY8_C( 14), SIMDE_POLY8_C( 37), SIMDE_POLY8_C( 24), SIMDE_POLY8_C( 233), SIMDE_POLY8_C( 220), SIMDE_POLY8_C( 16), SIMDE_POLY8_C( 80), SIMDE_POLY8_C( 162), SIMDE_POLY8_C( 85), SIMDE_POLY8_C( 75), SIMDE_POLY8_C( 254), SIMDE_POLY8_C( 153), SIMDE_POLY8_C( 29) },
{ SIMDE_POLY8_C( 141), SIMDE_POLY8_C( 83), SIMDE_POLY8_C( 71), SIMDE_POLY8_C( 14), SIMDE_POLY8_C( 37), SIMDE_POLY8_C( 24), SIMDE_POLY8_C( 233), SIMDE_POLY8_C( 220), SIMDE_POLY8_C( 16), SIMDE_POLY8_C( 80), SIMDE_POLY8_C( 162), SIMDE_POLY8_C( 85), SIMDE_POLY8_C( 75), SIMDE_POLY8_C( 254), SIMDE_POLY8_C( 153), SIMDE_POLY8_C( 29) },
{ SIMDE_POLY8_C( 111), SIMDE_POLY8_C( 156), SIMDE_POLY8_C( 61), SIMDE_POLY8_C( 118), SIMDE_POLY8_C( 43), SIMDE_POLY8_C( 197), SIMDE_POLY8_C( 73), SIMDE_POLY8_C( 229), SIMDE_POLY8_C( 132), SIMDE_POLY8_C( 132), SIMDE_POLY8_C( 16), SIMDE_POLY8_C( 169), SIMDE_POLY8_C( 89), SIMDE_POLY8_C( 243), SIMDE_POLY8_C( 207), SIMDE_POLY8_C( 235) },
{ SIMDE_POLY8_C( 183), SIMDE_POLY8_C( 100), SIMDE_POLY8_C( 245), SIMDE_POLY8_C( 222), SIMDE_POLY8_C( 171), SIMDE_POLY8_C( 13), SIMDE_POLY8_C( 33), SIMDE_POLY8_C( 149), SIMDE_POLY8_C( 4), SIMDE_POLY8_C( 12), SIMDE_POLY8_C( 88), SIMDE_POLY8_C( 161), SIMDE_POLY8_C( 105), SIMDE_POLY8_C( 203), SIMDE_POLY8_C( 47), SIMDE_POLY8_C( 171) },
{ SIMDE_POLY8_C( 183), SIMDE_POLY8_C( 164), SIMDE_POLY8_C( 213), SIMDE_POLY8_C( 62), SIMDE_POLY8_C( 139), SIMDE_POLY8_C( 77), SIMDE_POLY8_C( 129), SIMDE_POLY8_C( 21), SIMDE_POLY8_C( 4), SIMDE_POLY8_C( 108), SIMDE_POLY8_C( 120), SIMDE_POLY8_C( 225), SIMDE_POLY8_C( 169), SIMDE_POLY8_C( 75), SIMDE_POLY8_C( 175), SIMDE_POLY8_C( 171) } },
{ { SIMDE_POLY8_C( 234), SIMDE_POLY8_C( 182), SIMDE_POLY8_C( 103), SIMDE_POLY8_C( 241), SIMDE_POLY8_C( 11), SIMDE_POLY8_C( 127), SIMDE_POLY8_C( 118), SIMDE_POLY8_C( 55), SIMDE_POLY8_C( 177), SIMDE_POLY8_C( 196), SIMDE_POLY8_C( 189), SIMDE_POLY8_C( 131), SIMDE_POLY8_C( 254), SIMDE_POLY8_C( 151), SIMDE_POLY8_C( 156), SIMDE_POLY8_C( 20) },
{ SIMDE_POLY8_C( 38), SIMDE_POLY8_C( 43), SIMDE_POLY8_C( 107), SIMDE_POLY8_C( 172), SIMDE_POLY8_C( 184), SIMDE_POLY8_C( 43), SIMDE_POLY8_C( 121), SIMDE_POLY8_C( 218), SIMDE_POLY8_C( 74), SIMDE_POLY8_C( 188), SIMDE_POLY8_C( 8), SIMDE_POLY8_C( 190), SIMDE_POLY8_C( 231), SIMDE_POLY8_C( 164), SIMDE_POLY8_C( 142), SIMDE_POLY8_C( 233) },
{ SIMDE_POLY8_C( 38), SIMDE_POLY8_C( 43), SIMDE_POLY8_C( 107), SIMDE_POLY8_C( 172), SIMDE_POLY8_C( 184), SIMDE_POLY8_C( 43), SIMDE_POLY8_C( 121), SIMDE_POLY8_C( 218), SIMDE_POLY8_C( 74), SIMDE_POLY8_C( 188), SIMDE_POLY8_C( 8), SIMDE_POLY8_C( 190), SIMDE_POLY8_C( 231), SIMDE_POLY8_C( 164), SIMDE_POLY8_C( 142), SIMDE_POLY8_C( 233) },
{ SIMDE_POLY8_C( 50), SIMDE_POLY8_C( 94), SIMDE_POLY8_C( 95), SIMDE_POLY8_C( 97), SIMDE_POLY8_C( 195), SIMDE_POLY8_C( 95), SIMDE_POLY8_C( 206), SIMDE_POLY8_C( 215), SIMDE_POLY8_C( 81), SIMDE_POLY8_C( 228), SIMDE_POLY8_C( 69), SIMDE_POLY8_C( 243), SIMDE_POLY8_C( 62), SIMDE_POLY8_C( 39), SIMDE_POLY8_C( 116), SIMDE_POLY8_C( 76) },
{ SIMDE_POLY8_C( 202), SIMDE_POLY8_C( 118), SIMDE_POLY8_C( 103), SIMDE_POLY8_C( 145), SIMDE_POLY8_C( 11), SIMDE_POLY8_C( 127), SIMDE_POLY8_C( 54), SIMDE_POLY8_C( 87), SIMDE_POLY8_C( 81), SIMDE_POLY8_C( 132), SIMDE_POLY8_C( 29), SIMDE_POLY8_C( 195), SIMDE_POLY8_C( 254), SIMDE_POLY8_C( 151), SIMDE_POLY8_C( 220), SIMDE_POLY8_C( 52) },
{ SIMDE_POLY8_C( 106), SIMDE_POLY8_C( 182), SIMDE_POLY8_C( 231), SIMDE_POLY8_C( 113), SIMDE_POLY8_C( 11), SIMDE_POLY8_C(UINT8_MAX), SIMDE_POLY8_C( 246), SIMDE_POLY8_C( 55), SIMDE_POLY8_C( 49), SIMDE_POLY8_C( 68), SIMDE_POLY8_C( 61), SIMDE_POLY8_C( 3), SIMDE_POLY8_C( 254), SIMDE_POLY8_C( 23), SIMDE_POLY8_C( 28), SIMDE_POLY8_C( 148) } },
{ { SIMDE_POLY8_C( 46), SIMDE_POLY8_C( 219), SIMDE_POLY8_C( 53), SIMDE_POLY8_C( 4), SIMDE_POLY8_C( 130), SIMDE_POLY8_C( 212), SIMDE_POLY8_C( 30), SIMDE_POLY8_C( 85), SIMDE_POLY8_C( 206), SIMDE_POLY8_C( 67), SIMDE_POLY8_C( 71), SIMDE_POLY8_C( 68), SIMDE_POLY8_C( 104), SIMDE_POLY8_C( 195), SIMDE_POLY8_C( 15), SIMDE_POLY8_C( 107) },
{ SIMDE_POLY8_C( 125), SIMDE_POLY8_C( 115), SIMDE_POLY8_C( 253), SIMDE_POLY8_C( 164), SIMDE_POLY8_C( 131), SIMDE_POLY8_C( 60), SIMDE_POLY8_C( 54), SIMDE_POLY8_C( 18), SIMDE_POLY8_C( 160), SIMDE_POLY8_C( 87), SIMDE_POLY8_C( 144), SIMDE_POLY8_C( 99), SIMDE_POLY8_C( 146), SIMDE_POLY8_C( 139), SIMDE_POLY8_C( 180), SIMDE_POLY8_C( 90) },
{ SIMDE_POLY8_C( 125), SIMDE_POLY8_C( 115), SIMDE_POLY8_C( 253), SIMDE_POLY8_C( 164), SIMDE_POLY8_C( 131), SIMDE_POLY8_C( 60), SIMDE_POLY8_C( 54), SIMDE_POLY8_C( 18), SIMDE_POLY8_C( 160), SIMDE_POLY8_C( 87), SIMDE_POLY8_C( 144), SIMDE_POLY8_C( 99), SIMDE_POLY8_C( 146), SIMDE_POLY8_C( 139), SIMDE_POLY8_C( 180), SIMDE_POLY8_C( 90) },
{ SIMDE_POLY8_C( 238), SIMDE_POLY8_C( 155), SIMDE_POLY8_C( 237), SIMDE_POLY8_C( 36), SIMDE_POLY8_C( 26), SIMDE_POLY8_C( 228), SIMDE_POLY8_C( 182), SIMDE_POLY8_C( 149), SIMDE_POLY8_C( 6), SIMDE_POLY8_C( 187), SIMDE_POLY8_C( 135), SIMDE_POLY8_C( 28), SIMDE_POLY8_C( 144), SIMDE_POLY8_C( 91), SIMDE_POLY8_C( 167), SIMDE_POLY8_C( 211) },
{ SIMDE_POLY8_C( 174), SIMDE_POLY8_C( 123), SIMDE_POLY8_C( 181), SIMDE_POLY8_C( 132), SIMDE_POLY8_C( 98), SIMDE_POLY8_C( 148), SIMDE_POLY8_C( 222), SIMDE_POLY8_C( 85), SIMDE_POLY8_C( 14), SIMDE_POLY8_C( 227), SIMDE_POLY8_C( 7), SIMDE_POLY8_C( 100), SIMDE_POLY8_C( 72), SIMDE_POLY8_C( 99), SIMDE_POLY8_C( 143), SIMDE_POLY8_C( 75) },
{ SIMDE_POLY8_C( 174), SIMDE_POLY8_C( 219), SIMDE_POLY8_C( 181), SIMDE_POLY8_C( 4), SIMDE_POLY8_C( 130), SIMDE_POLY8_C( 84), SIMDE_POLY8_C( 30), SIMDE_POLY8_C( 85), SIMDE_POLY8_C( 78), SIMDE_POLY8_C( 195), SIMDE_POLY8_C( 71), SIMDE_POLY8_C( 196), SIMDE_POLY8_C( 104), SIMDE_POLY8_C( 195), SIMDE_POLY8_C( 15), SIMDE_POLY8_C( 107) } },
{ { SIMDE_POLY8_C( 234), SIMDE_POLY8_C( 41), SIMDE_POLY8_C( 8), SIMDE_POLY8_C( 239), SIMDE_POLY8_C( 215), SIMDE_POLY8_C( 216), SIMDE_POLY8_C( 100), SIMDE_POLY8_C( 174), SIMDE_POLY8_C( 83), SIMDE_POLY8_C( 100), SIMDE_POLY8_C( 240), SIMDE_POLY8_C( 31), SIMDE_POLY8_C( 72), SIMDE_POLY8_C( 42), SIMDE_POLY8_C( 180), SIMDE_POLY8_C( 12) },
{ SIMDE_POLY8_C( 87), SIMDE_POLY8_C( 103), SIMDE_POLY8_C( 201), SIMDE_POLY8_C( 233), SIMDE_POLY8_C( 29), SIMDE_POLY8_C( 172), SIMDE_POLY8_C( 138), SIMDE_POLY8_C( 78), SIMDE_POLY8_C( 179), SIMDE_POLY8_C( 66), SIMDE_POLY8_C( 163), SIMDE_POLY8_C( 203), SIMDE_POLY8_C( 132), SIMDE_POLY8_C( 33), SIMDE_POLY8_C( 173), SIMDE_POLY8_C( 89) },
{ SIMDE_POLY8_C( 87), SIMDE_POLY8_C( 103), SIMDE_POLY8_C( 201), SIMDE_POLY8_C( 233), SIMDE_POLY8_C( 29), SIMDE_POLY8_C( 172), SIMDE_POLY8_C( 138), SIMDE_POLY8_C( 78), SIMDE_POLY8_C( 179), SIMDE_POLY8_C( 66), SIMDE_POLY8_C( 163), SIMDE_POLY8_C( 203), SIMDE_POLY8_C( 132), SIMDE_POLY8_C( 33), SIMDE_POLY8_C( 173), SIMDE_POLY8_C( 89) },
{ SIMDE_POLY8_C( 186), SIMDE_POLY8_C( 57), SIMDE_POLY8_C( 72), SIMDE_POLY8_C( 79), SIMDE_POLY8_C( 239), SIMDE_POLY8_C( 96), SIMDE_POLY8_C( 84), SIMDE_POLY8_C( 118), SIMDE_POLY8_C( 155), SIMDE_POLY8_C( 20), SIMDE_POLY8_C( 24), SIMDE_POLY8_C( 95), SIMDE_POLY8_C( 32), SIMDE_POLY8_C( 10), SIMDE_POLY8_C( 108), SIMDE_POLY8_C( 204) },
{ SIMDE_POLY8_C( 234), SIMDE_POLY8_C( 233), SIMDE_POLY8_C( 40), SIMDE_POLY8_C( 47), SIMDE_POLY8_C( 183), SIMDE_POLY8_C( 152), SIMDE_POLY8_C( 68), SIMDE_POLY8_C( 206), SIMDE_POLY8_C( 115), SIMDE_POLY8_C( 68), SIMDE_POLY8_C( 112), SIMDE_POLY8_C( 127), SIMDE_POLY8_C( 136), SIMDE_POLY8_C( 42), SIMDE_POLY8_C( 180), SIMDE_POLY8_C( 44) },
{ SIMDE_POLY8_C( 234), SIMDE_POLY8_C( 169), SIMDE_POLY8_C( 136), SIMDE_POLY8_C( 239), SIMDE_POLY8_C( 215), SIMDE_POLY8_C( 88), SIMDE_POLY8_C( 100), SIMDE_POLY8_C( 46), SIMDE_POLY8_C( 211), SIMDE_POLY8_C( 100), SIMDE_POLY8_C( 240), SIMDE_POLY8_C( 159), SIMDE_POLY8_C( 72), SIMDE_POLY8_C( 170), SIMDE_POLY8_C( 180), SIMDE_POLY8_C( 140) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_poly8x16_t a = simde_vld1q_p8(test_vec[i].a);
simde_poly8x16_t b = simde_vld1q_p8(test_vec[i].b);
simde_poly8x16_t r0 = simde_vsliq_n_p8(a, b, 0);
simde_poly8x16_t r3 = simde_vsliq_n_p8(a, b, 3);
simde_poly8x16_t r5 = simde_vsliq_n_p8(a, b, 5);
simde_poly8x16_t r7 = simde_vsliq_n_p8(a, b, 7);
simde_test_arm_neon_assert_equal_p8x16(r0, simde_vld1q_p8(test_vec[i].r0));
simde_test_arm_neon_assert_equal_p8x16(r3, simde_vld1q_p8(test_vec[i].r3));
simde_test_arm_neon_assert_equal_p8x16(r5, simde_vld1q_p8(test_vec[i].r5));
simde_test_arm_neon_assert_equal_p8x16(r7, simde_vld1q_p8(test_vec[i].r7));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_poly8x16_t a = simde_test_arm_neon_random_p8x16();
simde_poly8x16_t b = simde_test_arm_neon_random_p8x16();
simde_poly8x16_t r0 = simde_vsliq_n_p8(a, b, 0);
simde_poly8x16_t r3 = simde_vsliq_n_p8(a, b, 3);
simde_poly8x16_t r5 = simde_vsliq_n_p8(a, b, 5);
simde_poly8x16_t r7 = simde_vsliq_n_p8(a, b, 7);
simde_test_arm_neon_write_p8x16(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_p8x16(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_p8x16(2, r0, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_p8x16(2, r3, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_p8x16(2, r5, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_p8x16(2, r7, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vsliq_n_p16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
simde_poly16_t a[8];
simde_poly16_t b[8];
simde_poly16_t r3[8];
simde_poly16_t r6[8];
simde_poly16_t r10[8];
simde_poly16_t r13[8];
simde_poly16_t r15[8];
} test_vec[] = {
{ { SIMDE_POLY16_C( 54932), SIMDE_POLY16_C( 2052), SIMDE_POLY16_C( 30900), SIMDE_POLY16_C( 7957), SIMDE_POLY16_C( 53988), SIMDE_POLY16_C( 54164), SIMDE_POLY16_C( 41244), SIMDE_POLY16_C( 57663) },
{ SIMDE_POLY16_C( 22926), SIMDE_POLY16_C( 51202), SIMDE_POLY16_C( 3783), SIMDE_POLY16_C( 62722), SIMDE_POLY16_C( 47770), SIMDE_POLY16_C( 44849), SIMDE_POLY16_C( 38117), SIMDE_POLY16_C( 19359) },
{ SIMDE_POLY16_C( 52340), SIMDE_POLY16_C( 16404), SIMDE_POLY16_C( 30268), SIMDE_POLY16_C( 43029), SIMDE_POLY16_C( 54484), SIMDE_POLY16_C( 31116), SIMDE_POLY16_C( 42796), SIMDE_POLY16_C( 23807) },
{ SIMDE_POLY16_C( 25492), SIMDE_POLY16_C( 132), SIMDE_POLY16_C( 45556), SIMDE_POLY16_C( 16533), SIMDE_POLY16_C( 42660), SIMDE_POLY16_C( 52308), SIMDE_POLY16_C( 14684), SIMDE_POLY16_C( 59391) },
{ SIMDE_POLY16_C( 14996), SIMDE_POLY16_C( 2052), SIMDE_POLY16_C( 7348), SIMDE_POLY16_C( 2837), SIMDE_POLY16_C( 27364), SIMDE_POLY16_C( 51092), SIMDE_POLY16_C( 38172), SIMDE_POLY16_C( 32063) },
{ SIMDE_POLY16_C( 54932), SIMDE_POLY16_C( 18436), SIMDE_POLY16_C( 63668), SIMDE_POLY16_C( 24341), SIMDE_POLY16_C( 21220), SIMDE_POLY16_C( 13204), SIMDE_POLY16_C( 41244), SIMDE_POLY16_C( 57663) },
{ SIMDE_POLY16_C( 22164), SIMDE_POLY16_C( 2052), SIMDE_POLY16_C( 63668), SIMDE_POLY16_C( 7957), SIMDE_POLY16_C( 21220), SIMDE_POLY16_C( 54164), SIMDE_POLY16_C( 41244), SIMDE_POLY16_C( 57663) } },
{ { SIMDE_POLY16_C( 55983), SIMDE_POLY16_C( 3761), SIMDE_POLY16_C( 17325), SIMDE_POLY16_C( 1501), SIMDE_POLY16_C( 20550), SIMDE_POLY16_C( 44898), SIMDE_POLY16_C( 2169), SIMDE_POLY16_C( 48672) },
{ SIMDE_POLY16_C( 59886), SIMDE_POLY16_C( 11886), SIMDE_POLY16_C( 50059), SIMDE_POLY16_C( 39013), SIMDE_POLY16_C( 4828), SIMDE_POLY16_C( 28010), SIMDE_POLY16_C( 2847), SIMDE_POLY16_C( 15306) },
{ SIMDE_POLY16_C( 20343), SIMDE_POLY16_C( 29553), SIMDE_POLY16_C( 7261), SIMDE_POLY16_C( 49965), SIMDE_POLY16_C( 38630), SIMDE_POLY16_C( 27474), SIMDE_POLY16_C( 22777), SIMDE_POLY16_C( 56912) },
{ SIMDE_POLY16_C( 31663), SIMDE_POLY16_C( 39857), SIMDE_POLY16_C( 58093), SIMDE_POLY16_C( 6493), SIMDE_POLY16_C( 46854), SIMDE_POLY16_C( 23202), SIMDE_POLY16_C( 51193), SIMDE_POLY16_C( 62112) },
{ SIMDE_POLY16_C( 47791), SIMDE_POLY16_C( 47793), SIMDE_POLY16_C( 12205), SIMDE_POLY16_C( 38365), SIMDE_POLY16_C( 28742), SIMDE_POLY16_C( 43874), SIMDE_POLY16_C( 31865), SIMDE_POLY16_C( 10784) },
{ SIMDE_POLY16_C( 55983), SIMDE_POLY16_C( 52913), SIMDE_POLY16_C( 25517), SIMDE_POLY16_C( 42461), SIMDE_POLY16_C( 36934), SIMDE_POLY16_C( 20322), SIMDE_POLY16_C( 59513), SIMDE_POLY16_C( 24096) },
{ SIMDE_POLY16_C( 23215), SIMDE_POLY16_C( 3761), SIMDE_POLY16_C( 50093), SIMDE_POLY16_C( 34269), SIMDE_POLY16_C( 20550), SIMDE_POLY16_C( 12130), SIMDE_POLY16_C( 34937), SIMDE_POLY16_C( 15904) } },
{ { SIMDE_POLY16_C( 17536), SIMDE_POLY16_C( 59891), SIMDE_POLY16_C( 42463), SIMDE_POLY16_C( 3164), SIMDE_POLY16_C( 10034), SIMDE_POLY16_C( 15752), SIMDE_POLY16_C( 13926), SIMDE_POLY16_C( 51179) },
{ SIMDE_POLY16_C( 16067), SIMDE_POLY16_C( 15431), SIMDE_POLY16_C( 15067), SIMDE_POLY16_C( 39231), SIMDE_POLY16_C( 52443), SIMDE_POLY16_C( 53059), SIMDE_POLY16_C( 35282), SIMDE_POLY16_C( 4686) },
{ SIMDE_POLY16_C( 63000), SIMDE_POLY16_C( 57915), SIMDE_POLY16_C( 55007), SIMDE_POLY16_C( 51708), SIMDE_POLY16_C( 26330), SIMDE_POLY16_C( 31256), SIMDE_POLY16_C( 20118), SIMDE_POLY16_C( 37491) },
{ SIMDE_POLY16_C( 45248), SIMDE_POLY16_C( 4595), SIMDE_POLY16_C( 46815), SIMDE_POLY16_C( 20444), SIMDE_POLY16_C( 14066), SIMDE_POLY16_C( 53448), SIMDE_POLY16_C( 29862), SIMDE_POLY16_C( 37803) },
{ SIMDE_POLY16_C( 3200), SIMDE_POLY16_C( 7667), SIMDE_POLY16_C( 28127), SIMDE_POLY16_C( 64604), SIMDE_POLY16_C( 28466), SIMDE_POLY16_C( 3464), SIMDE_POLY16_C( 19046), SIMDE_POLY16_C( 15339) },
{ SIMDE_POLY16_C( 25728), SIMDE_POLY16_C( 59891), SIMDE_POLY16_C( 26079), SIMDE_POLY16_C( 60508), SIMDE_POLY16_C( 26418), SIMDE_POLY16_C( 32136), SIMDE_POLY16_C( 22118), SIMDE_POLY16_C( 51179) },
{ SIMDE_POLY16_C( 50304), SIMDE_POLY16_C( 59891), SIMDE_POLY16_C( 42463), SIMDE_POLY16_C( 35932), SIMDE_POLY16_C( 42802), SIMDE_POLY16_C( 48520), SIMDE_POLY16_C( 13926), SIMDE_POLY16_C( 18411) } },
{ { SIMDE_POLY16_C( 55903), SIMDE_POLY16_C( 22857), SIMDE_POLY16_C( 39133), SIMDE_POLY16_C( 33408), SIMDE_POLY16_C( 16011), SIMDE_POLY16_C( 990), SIMDE_POLY16_C( 21485), SIMDE_POLY16_C( 53727) },
{ SIMDE_POLY16_C( 10331), SIMDE_POLY16_C( 5549), SIMDE_POLY16_C( 17252), SIMDE_POLY16_C( 48442), SIMDE_POLY16_C( 3492), SIMDE_POLY16_C( 61577), SIMDE_POLY16_C( 18795), SIMDE_POLY16_C( 38317) },
{ SIMDE_POLY16_C( 17119), SIMDE_POLY16_C( 44393), SIMDE_POLY16_C( 6949), SIMDE_POLY16_C( 59856), SIMDE_POLY16_C( 27939), SIMDE_POLY16_C( 33870), SIMDE_POLY16_C( 19293), SIMDE_POLY16_C( 44399) },
{ SIMDE_POLY16_C( 5855), SIMDE_POLY16_C( 27465), SIMDE_POLY16_C( 55581), SIMDE_POLY16_C( 20096), SIMDE_POLY16_C( 26891), SIMDE_POLY16_C( 8798), SIMDE_POLY16_C( 23277), SIMDE_POLY16_C( 27487) },
{ SIMDE_POLY16_C( 28255), SIMDE_POLY16_C( 46409), SIMDE_POLY16_C( 37085), SIMDE_POLY16_C( 60032), SIMDE_POLY16_C( 37515), SIMDE_POLY16_C( 10206), SIMDE_POLY16_C( 45037), SIMDE_POLY16_C( 46559) },
{ SIMDE_POLY16_C( 31327), SIMDE_POLY16_C( 47433), SIMDE_POLY16_C( 39133), SIMDE_POLY16_C( 17024), SIMDE_POLY16_C( 40587), SIMDE_POLY16_C( 9182), SIMDE_POLY16_C( 29677), SIMDE_POLY16_C( 45535) },
{ SIMDE_POLY16_C( 55903), SIMDE_POLY16_C( 55625), SIMDE_POLY16_C( 6365), SIMDE_POLY16_C( 640), SIMDE_POLY16_C( 16011), SIMDE_POLY16_C( 33758), SIMDE_POLY16_C( 54253), SIMDE_POLY16_C( 53727) } },
{ { SIMDE_POLY16_C( 30910), SIMDE_POLY16_C( 36057), SIMDE_POLY16_C( 28028), SIMDE_POLY16_C( 65285), SIMDE_POLY16_C( 30944), SIMDE_POLY16_C( 29925), SIMDE_POLY16_C( 64087), SIMDE_POLY16_C( 51797) },
{ SIMDE_POLY16_C( 21033), SIMDE_POLY16_C( 43881), SIMDE_POLY16_C( 63534), SIMDE_POLY16_C( 35658), SIMDE_POLY16_C( 41153), SIMDE_POLY16_C( 27208), SIMDE_POLY16_C( 27863), SIMDE_POLY16_C( 40336) },
{ SIMDE_POLY16_C( 37198), SIMDE_POLY16_C( 23369), SIMDE_POLY16_C( 49524), SIMDE_POLY16_C( 23125), SIMDE_POLY16_C( 1544), SIMDE_POLY16_C( 21061), SIMDE_POLY16_C( 26303), SIMDE_POLY16_C( 60549) },
{ SIMDE_POLY16_C( 35454), SIMDE_POLY16_C( 55897), SIMDE_POLY16_C( 3004), SIMDE_POLY16_C( 53893), SIMDE_POLY16_C( 12384), SIMDE_POLY16_C( 37413), SIMDE_POLY16_C( 13783), SIMDE_POLY16_C( 25621) },
{ SIMDE_POLY16_C( 42174), SIMDE_POLY16_C( 42201), SIMDE_POLY16_C( 47484), SIMDE_POLY16_C( 11013), SIMDE_POLY16_C( 1248), SIMDE_POLY16_C( 8421), SIMDE_POLY16_C( 24151), SIMDE_POLY16_C( 16981) },
{ SIMDE_POLY16_C( 14526), SIMDE_POLY16_C( 11481), SIMDE_POLY16_C( 52604), SIMDE_POLY16_C( 24325), SIMDE_POLY16_C( 14560), SIMDE_POLY16_C( 5349), SIMDE_POLY16_C( 64087), SIMDE_POLY16_C( 2645) },
{ SIMDE_POLY16_C( 63678), SIMDE_POLY16_C( 36057), SIMDE_POLY16_C( 28028), SIMDE_POLY16_C( 32517), SIMDE_POLY16_C( 63712), SIMDE_POLY16_C( 29925), SIMDE_POLY16_C( 64087), SIMDE_POLY16_C( 19029) } },
{ { SIMDE_POLY16_C( 2698), SIMDE_POLY16_C( 52795), SIMDE_POLY16_C( 47428), SIMDE_POLY16_C( 57027), SIMDE_POLY16_C( 39964), SIMDE_POLY16_C( 36120), SIMDE_POLY16_C( 60475), SIMDE_POLY16_C( 45338) },
{ SIMDE_POLY16_C( 21185), SIMDE_POLY16_C( 2661), SIMDE_POLY16_C( 53801), SIMDE_POLY16_C( 24352), SIMDE_POLY16_C( 21787), SIMDE_POLY16_C( 30325), SIMDE_POLY16_C( 60200), SIMDE_POLY16_C( 19373) },
{ SIMDE_POLY16_C( 38410), SIMDE_POLY16_C( 21291), SIMDE_POLY16_C( 37196), SIMDE_POLY16_C( 63747), SIMDE_POLY16_C( 43228), SIMDE_POLY16_C( 45992), SIMDE_POLY16_C( 22851), SIMDE_POLY16_C( 23914) },
{ SIMDE_POLY16_C( 45130), SIMDE_POLY16_C( 39291), SIMDE_POLY16_C( 35396), SIMDE_POLY16_C( 51203), SIMDE_POLY16_C( 18140), SIMDE_POLY16_C( 40280), SIMDE_POLY16_C( 51771), SIMDE_POLY16_C( 60250) },
{ SIMDE_POLY16_C( 1674), SIMDE_POLY16_C( 38459), SIMDE_POLY16_C( 42308), SIMDE_POLY16_C( 33475), SIMDE_POLY16_C( 27676), SIMDE_POLY16_C( 54552), SIMDE_POLY16_C( 41019), SIMDE_POLY16_C( 46362) },
{ SIMDE_POLY16_C( 10890), SIMDE_POLY16_C( 44603), SIMDE_POLY16_C( 14660), SIMDE_POLY16_C( 7875), SIMDE_POLY16_C( 31772), SIMDE_POLY16_C( 44312), SIMDE_POLY16_C( 3131), SIMDE_POLY16_C( 45338) },
{ SIMDE_POLY16_C( 35466), SIMDE_POLY16_C( 52795), SIMDE_POLY16_C( 47428), SIMDE_POLY16_C( 24259), SIMDE_POLY16_C( 39964), SIMDE_POLY16_C( 36120), SIMDE_POLY16_C( 27707), SIMDE_POLY16_C( 45338) } },
{ { SIMDE_POLY16_C( 20622), SIMDE_POLY16_C( 35405), SIMDE_POLY16_C( 42684), SIMDE_POLY16_C( 64877), SIMDE_POLY16_C( 29368), SIMDE_POLY16_C( 10266), SIMDE_POLY16_C( 24647), SIMDE_POLY16_C( 64280) },
{ SIMDE_POLY16_C( 31576), SIMDE_POLY16_C( 19446), SIMDE_POLY16_C( 44288), SIMDE_POLY16_C( 56822), SIMDE_POLY16_C( 32174), SIMDE_POLY16_C( 17103), SIMDE_POLY16_C( 18667), SIMDE_POLY16_C( 20678) },
{ SIMDE_POLY16_C( 56006), SIMDE_POLY16_C( 24501), SIMDE_POLY16_C( 26628), SIMDE_POLY16_C( 61365), SIMDE_POLY16_C( 60784), SIMDE_POLY16_C( 5754), SIMDE_POLY16_C( 18271), SIMDE_POLY16_C( 34352) },
{ SIMDE_POLY16_C( 54798), SIMDE_POLY16_C( 64909), SIMDE_POLY16_C( 16444), SIMDE_POLY16_C( 32173), SIMDE_POLY16_C( 27576), SIMDE_POLY16_C( 46042), SIMDE_POLY16_C( 15047), SIMDE_POLY16_C( 12696) },
{ SIMDE_POLY16_C( 24718), SIMDE_POLY16_C( 55885), SIMDE_POLY16_C( 700), SIMDE_POLY16_C( 55661), SIMDE_POLY16_C( 47800), SIMDE_POLY16_C( 15386), SIMDE_POLY16_C( 44103), SIMDE_POLY16_C( 6936) },
{ SIMDE_POLY16_C( 4238), SIMDE_POLY16_C( 51789), SIMDE_POLY16_C( 1724), SIMDE_POLY16_C( 56685), SIMDE_POLY16_C( 53944), SIMDE_POLY16_C( 59418), SIMDE_POLY16_C( 24647), SIMDE_POLY16_C( 56088) },
{ SIMDE_POLY16_C( 20622), SIMDE_POLY16_C( 2637), SIMDE_POLY16_C( 9916), SIMDE_POLY16_C( 32109), SIMDE_POLY16_C( 29368), SIMDE_POLY16_C( 43034), SIMDE_POLY16_C( 57415), SIMDE_POLY16_C( 31512) } },
{ { SIMDE_POLY16_C( 47232), SIMDE_POLY16_C( 355), SIMDE_POLY16_C( 64050), SIMDE_POLY16_C( 59843), SIMDE_POLY16_C( 9532), SIMDE_POLY16_C( 42900), SIMDE_POLY16_C( 36704), SIMDE_POLY16_C( 46935) },
{ SIMDE_POLY16_C( 18854), SIMDE_POLY16_C( 61891), SIMDE_POLY16_C( 57306), SIMDE_POLY16_C( 15820), SIMDE_POLY16_C( 62408), SIMDE_POLY16_C( 25140), SIMDE_POLY16_C( 4068), SIMDE_POLY16_C( 24825) },
{ SIMDE_POLY16_C( 19760), SIMDE_POLY16_C( 36379), SIMDE_POLY16_C( 65234), SIMDE_POLY16_C( 61027), SIMDE_POLY16_C( 40516), SIMDE_POLY16_C( 4516), SIMDE_POLY16_C( 32544), SIMDE_POLY16_C( 1999) },
{ SIMDE_POLY16_C( 27008), SIMDE_POLY16_C( 28899), SIMDE_POLY16_C( 63154), SIMDE_POLY16_C( 29443), SIMDE_POLY16_C( 62012), SIMDE_POLY16_C( 36116), SIMDE_POLY16_C( 63776), SIMDE_POLY16_C( 15959) },
{ SIMDE_POLY16_C( 39040), SIMDE_POLY16_C( 3427), SIMDE_POLY16_C( 27186), SIMDE_POLY16_C( 12739), SIMDE_POLY16_C( 8508), SIMDE_POLY16_C( 54164), SIMDE_POLY16_C( 37728), SIMDE_POLY16_C( 59223) },
{ SIMDE_POLY16_C( 55424), SIMDE_POLY16_C( 24931), SIMDE_POLY16_C( 23090), SIMDE_POLY16_C( 35267), SIMDE_POLY16_C( 1340), SIMDE_POLY16_C( 34708), SIMDE_POLY16_C( 36704), SIMDE_POLY16_C( 14167) },
{ SIMDE_POLY16_C( 14464), SIMDE_POLY16_C( 33123), SIMDE_POLY16_C( 31282), SIMDE_POLY16_C( 27075), SIMDE_POLY16_C( 9532), SIMDE_POLY16_C( 10132), SIMDE_POLY16_C( 3936), SIMDE_POLY16_C( 46935) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_poly16x8_t a = simde_vld1q_p16(test_vec[i].a);
simde_poly16x8_t b = simde_vld1q_p16(test_vec[i].b);
simde_poly16x8_t r3 = simde_vsliq_n_p16(a, b, 3);
simde_poly16x8_t r6 = simde_vsliq_n_p16(a, b, 6);
simde_poly16x8_t r10 = simde_vsliq_n_p16(a, b, 10);
simde_poly16x8_t r13 = simde_vsliq_n_p16(a, b, 13);
simde_poly16x8_t r15 = simde_vsliq_n_p16(a, b, 15);
simde_test_arm_neon_assert_equal_p16x8(r3, simde_vld1q_p16(test_vec[i].r3));
simde_test_arm_neon_assert_equal_p16x8(r6, simde_vld1q_p16(test_vec[i].r6));
simde_test_arm_neon_assert_equal_p16x8(r10, simde_vld1q_p16(test_vec[i].r10));
simde_test_arm_neon_assert_equal_p16x8(r13, simde_vld1q_p16(test_vec[i].r13));
simde_test_arm_neon_assert_equal_p16x8(r15, simde_vld1q_p16(test_vec[i].r15));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_poly16x8_t a = simde_test_arm_neon_random_p16x8();
simde_poly16x8_t b = simde_test_arm_neon_random_p16x8();
simde_poly16x8_t r3 = simde_vsliq_n_p16(a, b, 3);
simde_poly16x8_t r6 = simde_vsliq_n_p16(a, b, 6);
simde_poly16x8_t r10 = simde_vsliq_n_p16(a, b, 10);
simde_poly16x8_t r13 = simde_vsliq_n_p16(a, b, 13);
simde_poly16x8_t r15 = simde_vsliq_n_p16(a, b, 15);
simde_test_arm_neon_write_p16x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_p16x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_p16x8(2, r3, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_p16x8(2, r6, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_p16x8(2, r10, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_p16x8(2, r13, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_p16x8(2, r15, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vsliq_n_p64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
simde_poly64_t a[2];
simde_poly64_t b[2];
simde_poly64_t r13[2];
simde_poly64_t r26[2];
simde_poly64_t r39[2];
simde_poly64_t r52[2];
simde_poly64_t r63[2];
} test_vec[] = {
{ { SIMDE_POLY64_C( 3326354101924670590), SIMDE_POLY64_C(15812941646549698216) },
{ SIMDE_POLY64_C(18151090002998169439), SIMDE_POLY64_C( 1380667824062628123) },
{ SIMDE_POLY64_C(12972070462018022526), SIMDE_POLY64_C( 2576697537094444712) },
{ SIMDE_POLY64_C(13955360284637015166), SIMDE_POLY64_C( 5231003553959724712) },
{ SIMDE_POLY64_C( 7838427115654622334), SIMDE_POLY64_C( 594630893316032168) },
{ SIMDE_POLY64_C(17724362110628146302), SIMDE_POLY64_C( 1275322049397737128) },
{ SIMDE_POLY64_C(12549726138779446398), SIMDE_POLY64_C(15812941646549698216) } },
{ { SIMDE_POLY64_C( 5869328896938516263), SIMDE_POLY64_C( 2222189733952536719) },
{ SIMDE_POLY64_C(12411628851339405478), SIMDE_POLY64_C( 942836641027284248) },
{ SIMDE_POLY64_C(16056959959070727975), SIMDE_POLY64_C(12978740484919984271) },
{ SIMDE_POLY64_C(13330739158301581095), SIMDE_POLY64_C(13255955676427108495) },
{ SIMDE_POLY64_C( 690267940543831847), SIMDE_POLY64_C(15253283237737447567) },
{ SIMDE_POLY64_C( 9972108157473038119), SIMDE_POLY64_C(15097981068604784783) },
{ SIMDE_POLY64_C( 5869328896938516263), SIMDE_POLY64_C( 2222189733952536719) } },
{ { SIMDE_POLY64_C(15272376107936314541), SIMDE_POLY64_C( 7392787741455680135) },
{ SIMDE_POLY64_C( 9420840874243141019), SIMDE_POLY64_C( 6038106548576691917) },
{ SIMDE_POLY64_C(12797981472756823213), SIMDE_POLY64_C( 8447984324952302215) },
{ SIMDE_POLY64_C( 8217653932499203245), SIMDE_POLY64_C(12150569524748616327) },
{ SIMDE_POLY64_C( 6851890001671943341), SIMDE_POLY64_C(17281269205359133319) },
{ SIMDE_POLY64_C(15686707273654400173), SIMDE_POLY64_C( 7843147704192729735) },
{ SIMDE_POLY64_C(15272376107936314541), SIMDE_POLY64_C(16616159778310455943) } },
{ { SIMDE_POLY64_C(17788547161097733072), SIMDE_POLY64_C(10303315733532817032) },
{ SIMDE_POLY64_C( 9530739437947880088), SIMDE_POLY64_C( 9539080515559423601) },
{ SIMDE_POLY64_C( 9196555730211242960), SIMDE_POLY64_C( 3739687229137499784) },
{ SIMDE_POLY64_C( 1681744860744483792), SIMDE_POLY64_C(13922618736527455880) },
{ SIMDE_POLY64_C(15582820183151182800), SIMDE_POLY64_C(16320825774362506888) },
{ SIMDE_POLY64_C( 2994222385185653712), SIMDE_POLY64_C(16653391208125216392) },
{ SIMDE_POLY64_C( 8565175124242957264), SIMDE_POLY64_C(10303315733532817032) } },
{ { SIMDE_POLY64_C(11269734078394947120), SIMDE_POLY64_C(11079511464515323691) },
{ SIMDE_POLY64_C( 4631258017608531081), SIMDE_POLY64_C( 2950484057785924872) },
{ SIMDE_POLY64_C(12759864702248498736), SIMDE_POLY64_C( 5130664822783936299) },
{ SIMDE_POLY64_C( 9559719181400167984), SIMDE_POLY64_C( 8723228335687976747) },
{ SIMDE_POLY64_C( 6790941082614519344), SIMDE_POLY64_C(16446728547236431659) },
{ SIMDE_POLY64_C(14453779014945887792), SIMDE_POLY64_C(15024664738091878187) },
{ SIMDE_POLY64_C(11269734078394947120), SIMDE_POLY64_C( 1856139427660547883) } },
{ { SIMDE_POLY64_C( 7998503011676121860), SIMDE_POLY64_C(12436442786690204518) },
{ SIMDE_POLY64_C(10507257933463575756), SIMDE_POLY64_C( 890983024616133747) },
{ SIMDE_POLY64_C( 2949143004844755716), SIMDE_POLY64_C(12469028540094767974) },
{ SIMDE_POLY64_C(12591503202443651844), SIMDE_POLY64_C( 6659864326580700006) },
{ SIMDE_POLY64_C(13848118176700230404), SIMDE_POLY64_C(10586337451585012582) },
{ SIMDE_POLY64_C(14753902452731865860), SIMDE_POLY64_C( 5131604191095260006) },
{ SIMDE_POLY64_C( 7998503011676121860), SIMDE_POLY64_C(12436442786690204518) } },
{ { SIMDE_POLY64_C(10515578012670966780), SIMDE_POLY64_C(17680525830101447828) },
{ SIMDE_POLY64_C(11288336922296194998), SIMDE_POLY64_C(16689682725274606802) },
{ SIMDE_POLY64_C( 528025944447179772), SIMDE_POLY64_C(13060555188091901076) },
{ SIMDE_POLY64_C( 9050423663222406140), SIMDE_POLY64_C( 952473333433152660) },
{ SIMDE_POLY64_C( 3606217256912632828), SIMDE_POLY64_C(18135548271896081556) },
{ SIMDE_POLY64_C( 8894282146817588220), SIMDE_POLY64_C(14784711269702218900) },
{ SIMDE_POLY64_C( 1292205975816190972), SIMDE_POLY64_C( 8457153793246672020) } },
{ { SIMDE_POLY64_C( 2303077286822012679), SIMDE_POLY64_C( 138581218363046567) },
{ SIMDE_POLY64_C(18411670028825252116), SIMDE_POLY64_C( 8225054175440624625) },
{ SIMDE_POLY64_C( 7821329487171323655), SIMDE_POLY64_C(12134448022314433191) },
{ SIMDE_POLY64_C( 6788990914251187975), SIMDE_POLY64_C(14341129652734655143) },
{ SIMDE_POLY64_C(16926931031184631559), SIMDE_POLY64_C(13667854094844426919) },
{ SIMDE_POLY64_C( 1244731374389946119), SIMDE_POLY64_C(13770977290413537959) },
{ SIMDE_POLY64_C( 2303077286822012679), SIMDE_POLY64_C( 9361953255217822375) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_poly64x2_t a = simde_vld1q_p64(test_vec[i].a);
simde_poly64x2_t b = simde_vld1q_p64(test_vec[i].b);
simde_poly64x2_t r13 = simde_vsliq_n_p64(a, b, 13);
simde_poly64x2_t r26 = simde_vsliq_n_p64(a, b, 26);
simde_poly64x2_t r39 = simde_vsliq_n_p64(a, b, 39);
simde_poly64x2_t r52 = simde_vsliq_n_p64(a, b, 52);
simde_poly64x2_t r63 = simde_vsliq_n_p64(a, b, 63);
simde_test_arm_neon_assert_equal_p64x2(r13, simde_vld1q_p64(test_vec[i].r13));
simde_test_arm_neon_assert_equal_p64x2(r26, simde_vld1q_p64(test_vec[i].r26));
simde_test_arm_neon_assert_equal_p64x2(r39, simde_vld1q_p64(test_vec[i].r39));
simde_test_arm_neon_assert_equal_p64x2(r52, simde_vld1q_p64(test_vec[i].r52));
simde_test_arm_neon_assert_equal_p64x2(r63, simde_vld1q_p64(test_vec[i].r63));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_poly64x2_t a = simde_test_arm_neon_random_p64x2();
simde_poly64x2_t b = simde_test_arm_neon_random_p64x2();
simde_poly64x2_t r13 = simde_vsliq_n_p64(a, b, 13);
simde_poly64x2_t r26 = simde_vsliq_n_p64(a, b, 26);
simde_poly64x2_t r39 = simde_vsliq_n_p64(a, b, 39);
simde_poly64x2_t r52 = simde_vsliq_n_p64(a, b, 52);
simde_poly64x2_t r63 = simde_vsliq_n_p64(a, b, 63);
simde_test_arm_neon_write_p64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_p64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_p64x2(2, r13, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_p64x2(2, r26, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_p64x2(2, r39, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_p64x2(2, r52, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_p64x2(2, r63, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
SIMDE_TEST_FUNC_LIST_BEGIN
SIMDE_TEST_FUNC_LIST_ENTRY(vsli_n_s8)
SIMDE_TEST_FUNC_LIST_ENTRY(vsli_n_s16)
SIMDE_TEST_FUNC_LIST_ENTRY(vsli_n_s32)
SIMDE_TEST_FUNC_LIST_ENTRY(vsli_n_s64)
SIMDE_TEST_FUNC_LIST_ENTRY(vsli_n_u8)
SIMDE_TEST_FUNC_LIST_ENTRY(vsli_n_u16)
SIMDE_TEST_FUNC_LIST_ENTRY(vsli_n_u32)
SIMDE_TEST_FUNC_LIST_ENTRY(vsli_n_u64)
SIMDE_TEST_FUNC_LIST_ENTRY(vsliq_n_s8)
SIMDE_TEST_FUNC_LIST_ENTRY(vsliq_n_s16)
SIMDE_TEST_FUNC_LIST_ENTRY(vsliq_n_s32)
SIMDE_TEST_FUNC_LIST_ENTRY(vsliq_n_s64)
SIMDE_TEST_FUNC_LIST_ENTRY(vsliq_n_u8)
SIMDE_TEST_FUNC_LIST_ENTRY(vsliq_n_u16)
SIMDE_TEST_FUNC_LIST_ENTRY(vsliq_n_u32)
SIMDE_TEST_FUNC_LIST_ENTRY(vsliq_n_u64)
SIMDE_TEST_FUNC_LIST_ENTRY(vslid_n_s64)
SIMDE_TEST_FUNC_LIST_ENTRY(vslid_n_u64)
SIMDE_TEST_FUNC_LIST_ENTRY(vsli_n_p8)
SIMDE_TEST_FUNC_LIST_ENTRY(vsli_n_p16)
SIMDE_TEST_FUNC_LIST_ENTRY(vsli_n_p64)
SIMDE_TEST_FUNC_LIST_ENTRY(vsliq_n_p8)
SIMDE_TEST_FUNC_LIST_ENTRY(vsliq_n_p16)
SIMDE_TEST_FUNC_LIST_ENTRY(vsliq_n_p64)
SIMDE_TEST_FUNC_LIST_END
#include <test/arm/neon/test-neon-footer.h>