libdpf/thirdparty/simde/test/arm/neon/qrshl.c
Ryan Henry 3f10e05176 Update googletest to 1.18.0 and SIMDe to 0.8.2.
Googletest 1.18 asks for CMake 3.13 or newer, so configuring the tests no longer warns that CMake compatibility below 3.10 is deprecated.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-24 14:30:19 -06:00

1759 lines
80 KiB
C

#define SIMDE_TEST_ARM_NEON_INSN qrshl
#include "test-neon.h"
/* Check that both of these work */
#if defined(__cplusplus)
#include "../../../simde/arm/neon/qrshl.h"
#else
#include "../../../simde/arm/neon.h"
#endif
#if 0
#define PROBABILITY 80
#define probability(p) (rand() < (((int64_t) RAND_MAX * (p)) / 100))
#endif
static int
test_simde_vqrshlb_s8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
int8_t a;
int8_t b;
int8_t r;
} test_vec[] = {
{ INT8_C( 50),
INT8_C( 41),
INT8_MAX },
{ INT8_C( 25),
-INT8_C( 6),
INT8_C( 0) },
{ INT8_C( 8),
-INT8_C( 56),
INT8_C( 0) },
{ -INT8_C( 120),
INT8_C( 7),
INT8_MIN },
{ -INT8_C( 116),
INT8_C( 23),
INT8_MIN },
{ -INT8_C( 123),
INT8_C( 8),
INT8_MIN },
{ INT8_C( 63),
-INT8_C( 58),
INT8_C( 0) },
{ INT8_C( 7),
INT8_C( 0),
INT8_C( 7) },
{ INT8_MAX,
-INT8_C( 1),
INT8_C( 64) },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
int8_t r = simde_vqrshlb_s8(test_vec[i].a, test_vec[i].b);
simde_assert_equal_i8(r, test_vec[i].r);
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_int8_t a = simde_test_arm_neon_random_i8();
simde_int8_t b = simde_test_arm_neon_random_i8();
simde_int8_t r = simde_vqrshlb_s8(a, b);
simde_test_arm_neon_write_i8(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_i8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i8(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vqrshlh_s16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
int16_t a;
int16_t b;
int16_t r;
} test_vec[] = {
{ -INT16_C( 18529),
-INT16_C( 16129),
-INT16_C( 9264) },
{ INT16_C( 23969),
INT16_C( 5),
INT16_MAX },
{ INT16_C( 12527),
INT16_C( 19725),
INT16_MAX },
{ -INT16_C( 22762),
-INT16_C( 16),
INT16_C( 0) },
{ -INT16_C( 17650),
-INT16_C( 19012),
INT16_C( 0) },
{ -INT16_C( 18897),
-INT16_C( 2),
-INT16_C( 4724) },
{ -INT16_C( 19983),
-INT16_C( 27798),
INT16_MIN },
{ INT16_C( 329),
INT16_C( 14),
INT16_MAX },
{ INT16_MAX,
-INT16_C( 1),
INT16_C( 16384) },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
int16_t r = simde_vqrshlh_s16(test_vec[i].a, test_vec[i].b);
simde_assert_equal_i16(r, test_vec[i].r);
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_int16_t a = simde_test_arm_neon_random_i16();
simde_int16_t b = simde_test_arm_neon_random_i16();
simde_int16_t r = simde_vqrshlh_s16(a, b);
simde_test_arm_neon_write_i16(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_i16(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i16(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vqrshls_s32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
int32_t a;
int32_t b;
int32_t r;
} test_vec[] = {
{ -INT32_C( 356193628),
-INT32_C( 6),
-INT32_C( 5565525) },
{ -INT32_C( 1204375858),
INT32_C( 57),
INT32_MIN },
{ -INT32_C( 1282375307),
INT32_C( 36),
INT32_MIN },
{ INT32_C( 66359825),
INT32_C( 46),
INT32_MAX },
{ -INT32_C( 79322588),
-INT32_C( 55),
INT32_C( 0) },
{ -INT32_C( 930923386),
INT32_C( 9),
INT32_MIN },
{ -INT32_C( 649560211),
-INT32_C( 27),
-INT32_C( 5) },
{ INT32_C( 1204135454),
INT32_C( 63),
INT32_MAX },
{ INT32_C( 1162581765),
INT32_C( 32),
INT32_MAX },
{ INT32_C( 155224493),
INT32_C( 32),
INT32_MAX },
{ INT32_C( 109880828),
INT32_C( 32),
INT32_MAX },
{ INT32_C( 882539136),
INT32_C( 32),
INT32_MAX },
{ -INT32_C( 25440898),
INT32_C( 32),
INT32_MIN },
{ -INT32_C( 1324715201),
INT32_C( 32),
INT32_MIN },
{ -INT32_C( 2085551108),
INT32_C( 32),
INT32_MIN },
{ INT32_C( 435262094),
INT32_C( 32),
INT32_MAX },
{ INT32_MAX,
-INT32_C( 1),
INT32_C( 1073741824) },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
int32_t r = simde_vqrshls_s32(test_vec[i].a, test_vec[i].b);
simde_assert_equal_i32(r, test_vec[i].r);
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_int32_t a = simde_test_arm_neon_random_i32();
simde_int32_t b = simde_test_arm_neon_random_i32();
simde_int32_t r = simde_vqrshls_s32(a, b);
simde_test_arm_neon_write_i32(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_i32(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i32(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vqrshld_s64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
int64_t a;
int64_t b;
int64_t r;
} test_vec[] = {
{ INT64_C( 4843512680152437875),
INT64_C( 63),
INT64_MAX },
{ INT64_C( 8241406571090019417),
INT64_C( 56),
INT64_MAX },
{ -INT64_C( 7297452753530989252),
-INT64_C( 8),
-INT64_C( 28505674818480427) },
{ -INT64_C( 7093894782106403155),
INT64_C( 12),
INT64_MIN },
{ -INT64_C( 5066332558751241991),
-INT64_C( 16),
-INT64_C( 77306099834461) },
{ INT64_C( 1160675192825562685),
INT64_C( 48),
INT64_MAX },
{ INT64_C( 3559677482238416902),
-INT64_C( 17),
INT64_C( 27158183916004) },
{ INT64_C( 3143776020433277350),
INT64_C( 21),
INT64_MAX },
{ INT64_MAX,
-INT64_C( 1),
INT64_C( 4611686018427387904) },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
int64_t r = simde_vqrshld_s64(test_vec[i].a, test_vec[i].b);
simde_assert_equal_i64(r, test_vec[i].r);
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_int64_t a = simde_test_arm_neon_random_i64();
simde_int64_t b = simde_test_arm_neon_random_i64();
simde_int64_t r = simde_vqrshld_s64(a, b);
simde_test_arm_neon_write_i64(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_i64(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_i64(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vqrshlb_u8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
uint8_t a;
int8_t b;
uint8_t r;
} test_vec[] = {
{ UINT8_C( 156),
INT8_C( 7),
UINT8_C( 255) },
{ UINT8_C( 128),
-INT8_C( 7),
UINT8_C( 1) },
{ UINT8_C( 191),
INT8_C( 0),
UINT8_C( 191) },
{ UINT8_C( 212),
INT8_C( 0),
UINT8_C( 212) },
{ UINT8_C( 45),
INT8_C( 1),
UINT8_C( 90) },
{ UINT8_C( 141),
-INT8_C( 2),
UINT8_C( 35) },
{ UINT8_C( 0),
-INT8_C( 3),
UINT8_C( 0) },
{ UINT8_C( 147),
-INT8_C( 8),
UINT8_C( 1) },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
uint8_t r = simde_vqrshlb_u8(test_vec[i].a, test_vec[i].b);
simde_assert_equal_u8(r, test_vec[i].r);
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_uint8_t a = simde_test_arm_neon_random_u8();
simde_int8_t b = simde_test_arm_neon_random_i8();
simde_uint8_t r = simde_vqrshlb_u8(a, b);
simde_test_arm_neon_write_u8(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_i8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u8(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vqrshlh_u16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
uint16_t a;
int16_t b;
uint16_t r;
} test_vec[] = {
{ UINT16_C( 6825),
-INT16_C( 7),
UINT16_C( 53) },
{ UINT16_C( 37778),
INT16_C( 4),
UINT16_C( 65535) },
{ UINT16_C( 5210),
INT16_C( 10),
UINT16_C( 65535) },
{ UINT16_C( 58556),
-INT16_C( 21),
UINT16_C( 0) },
{ UINT16_C( 42502),
-INT16_C( 24),
UINT16_C( 0) },
{ UINT16_C( 63509),
-INT16_C( 32),
UINT16_C( 0) },
{ UINT16_C( 47814),
-INT16_C( 3),
UINT16_C( 5977) },
{ UINT16_C( 52229),
INT16_C( 4),
UINT16_C( 65535) },
{ UINT16_C( 60609),
INT16_C( 16),
UINT16_C( 65535) },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
uint16_t r = simde_vqrshlh_u16(test_vec[i].a, test_vec[i].b);
simde_assert_equal_u16(r, test_vec[i].r);
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_uint16_t a = simde_test_arm_neon_random_u16();
simde_int16_t b = simde_test_arm_neon_random_i16();
simde_uint16_t r = simde_vqrshlh_u16(a, b);
simde_test_arm_neon_write_u16(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_i16(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u16(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vqrshls_u32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
uint32_t a;
int32_t b;
uint32_t r;
} test_vec[] = {
{ UINT32_C( 266226573),
INT32_C( 376254835),
UINT32_MAX },
{ UINT32_C( 627439137),
-INT32_C( 30),
UINT32_C( 1) },
{ UINT32_C( 1026024828),
INT32_C( 827959370),
UINT32_MAX },
{ UINT32_C( 1847505906),
-INT32_C( 13),
UINT32_C( 225526) },
{ UINT32_C( 912395655),
INT32_C( 1671239939),
UINT32_MAX },
{ UINT32_C( 2010933546),
-INT32_C( 2),
UINT32_C( 502733387) },
{ UINT32_C( 2631640868),
INT32_C( 1562231698),
UINT32_C( 0) },
{ UINT32_C( 468197513),
-INT32_C( 24),
UINT32_C( 28) },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
uint32_t r = simde_vqrshls_u32(test_vec[i].a, test_vec[i].b);
simde_assert_equal_u32(r, test_vec[i].r);
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_uint32_t a = simde_test_arm_neon_random_u32();
simde_int32_t b = simde_test_arm_neon_random_i32();
simde_uint32_t r = simde_vqrshls_u32(a, b);
simde_test_arm_neon_write_u32(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_i32(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u32(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vqrshld_u64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
uint64_t a;
int64_t b;
uint64_t r;
} test_vec[] = {
{ UINT64_C( 2962349988052721578),
INT64_C( 5539606120659599506),
UINT64_C( 0) },
{ UINT64_C(10064468895855897213),
INT64_C( 16),
UINT64_MAX },
{ UINT64_C(15743453338776996870),
INT64_C( 3803046405739062919),
UINT64_C( 0) },
{ UINT64_C( 5520169503289739711),
INT64_C( 31),
UINT64_MAX },
{ UINT64_C( 5174950593436841605),
INT64_C( 6612268300308619863),
UINT64_MAX },
{ UINT64_C(13897644625553180665),
-INT64_C( 12),
UINT64_C( 3392979644910444) },
{ UINT64_C(15140102277279441050),
-INT64_C( 8156124063209764011),
UINT64_MAX },
{ UINT64_C( 9024129550253675895),
INT64_C( 26),
UINT64_MAX },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
uint64_t r = simde_vqrshld_u64(test_vec[i].a, test_vec[i].b);
simde_assert_equal_u64(r, test_vec[i].r);
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_uint64_t a = simde_test_arm_neon_random_u64();
simde_int64_t b = simde_test_arm_neon_random_i64();
simde_uint64_t r = simde_vqrshld_u64(a, b);
simde_test_arm_neon_write_u64(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_i64(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u64(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vqrshl_s8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
int8_t a[8];
int8_t b[8];
int8_t r[8];
} test_vec[] = {
{ { -INT8_C( 87), -INT8_C( 1), INT8_C( 80), INT8_C( 77),
INT8_C( 56), -INT8_C( 54), INT8_C( 102), INT8_C( 111) },
{ INT8_C( 8), INT8_C( 3), -INT8_C( 7), INT8_C( 2),
INT8_C( 1), INT8_C( 7), INT8_C( 4), -INT8_C( 7) },
{ INT8_MIN, -INT8_C( 8), INT8_C( 1), INT8_MAX,
INT8_C( 112), INT8_MIN, INT8_MAX, INT8_C( 1) } },
{ { INT8_C( 42), INT8_C( 74), -INT8_C( 106), -INT8_C( 29),
-INT8_C( 94), -INT8_C( 66), -INT8_C( 22), INT8_C( 88) },
{ INT8_C( 5), INT8_C( 4), -INT8_C( 5), INT8_C( 1),
-INT8_C( 7), -INT8_C( 6), -INT8_C( 4), INT8_C( 0) },
{ INT8_MAX, INT8_MAX, -INT8_C( 3), -INT8_C( 58),
-INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 88) } },
{ { INT8_MIN, INT8_C( 100), INT8_C( 4), INT8_C( 14),
INT8_C( 92), INT8_C( 74), INT8_C( 59), -INT8_C( 98) },
{ -INT8_C( 3), INT8_C( 8), INT8_C( 8), INT8_C( 6),
INT8_C( 5), INT8_C( 5), INT8_C( 5), -INT8_C( 6) },
{ -INT8_C( 16), INT8_MAX, INT8_MAX, INT8_MAX,
INT8_MAX, INT8_MAX, INT8_MAX, -INT8_C( 2) } },
{ { INT8_C( 40), INT8_C( 61), INT8_C( 73), -INT8_C( 94),
INT8_C( 120), INT8_C( 65), INT8_C( 61), -INT8_C( 71) },
{ INT8_C( 7), INT8_C( 1), -INT8_C( 6), -INT8_C( 8),
INT8_C( 6), -INT8_C( 5), -INT8_C( 4), -INT8_C( 6) },
{ INT8_MAX, INT8_C( 122), INT8_C( 1), INT8_C( 0),
INT8_MAX, INT8_C( 2), INT8_C( 4), -INT8_C( 1) } },
{ { INT8_C( 32), -INT8_C( 33), -INT8_C( 42), -INT8_C( 124),
INT8_C( 13), -INT8_C( 93), INT8_C( 29), INT8_C( 93) },
{ -INT8_C( 8), -INT8_C( 1), INT8_C( 1), -INT8_C( 1),
INT8_C( 7), -INT8_C( 2), INT8_C( 0), INT8_C( 6) },
{ INT8_C( 0), -INT8_C( 16), -INT8_C( 84), -INT8_C( 62),
INT8_MAX, -INT8_C( 23), INT8_C( 29), INT8_MAX } },
{ { INT8_C( 109), -INT8_C( 121), -INT8_C( 67), -INT8_C( 26),
INT8_C( 116), -INT8_C( 14), -INT8_C( 107), INT8_C( 120) },
{ -INT8_C( 8), INT8_C( 1), -INT8_C( 7), INT8_C( 2),
INT8_C( 1), -INT8_C( 5), INT8_C( 2), INT8_C( 2) },
{ INT8_C( 0), INT8_MIN, -INT8_C( 1), -INT8_C( 104),
INT8_MAX, INT8_C( 0), INT8_MIN, INT8_MAX } },
{ { -INT8_C( 75), INT8_C( 9), INT8_C( 17), INT8_C( 9),
-INT8_C( 82), INT8_C( 82), -INT8_C( 91), -INT8_C( 24) },
{ INT8_C( 1), INT8_C( 7), INT8_C( 4), -INT8_C( 4),
INT8_C( 0), INT8_C( 6), -INT8_C( 8), -INT8_C( 7) },
{ INT8_MIN, INT8_MAX, INT8_MAX, INT8_C( 1),
-INT8_C( 82), INT8_MAX, INT8_C( 0), INT8_C( 0) } },
{ { -INT8_C( 3), -INT8_C( 107), INT8_C( 50), -INT8_C( 31),
INT8_MIN, INT8_C( 61), INT8_C( 53), -INT8_C( 4) },
{ -INT8_C( 5), INT8_C( 5), INT8_C( 6), INT8_C( 2),
-INT8_C( 2), INT8_C( 5), -INT8_C( 6), -INT8_C( 5) },
{ INT8_C( 0), INT8_MIN, INT8_MAX, -INT8_C( 124),
-INT8_C( 32), INT8_MAX, INT8_C( 1), INT8_C( 0) } },
{ { INT8_MAX, INT8_MAX, INT8_MAX, INT8_MAX,
INT8_MAX, INT8_MAX, INT8_MAX, INT8_MAX },
{ -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1),
-INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1) },
{ INT8_C( 64), INT8_C( 64), INT8_C( 64), INT8_C( 64),
INT8_C( 64), INT8_C( 64), INT8_C( 64), INT8_C( 64) } },
};
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 r = simde_vqrshl_s8(a, b);
simde_test_arm_neon_assert_equal_i8x8(r, simde_vld1_s8(test_vec[i].r));
}
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 r = simde_vqrshl_s8(a, b);
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, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vqrshl_s16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
int16_t a[4];
int16_t b[4];
int16_t r[4];
} test_vec[] = {
{ { INT16_C( 31263), INT16_C( 18737), INT16_C( 14706), -INT16_C( 22084) },
{ INT16_C( 0), -INT16_C( 6), INT16_C( 5), INT16_C( 11) },
{ INT16_C( 31263), INT16_C( 293), INT16_MAX, INT16_MIN } },
{ { -INT16_C( 27185), INT16_C( 1410), INT16_C( 26995), -INT16_C( 8974) },
{ -INT16_C( 15), INT16_C( 9), -INT16_C( 4), INT16_C( 4) },
{ -INT16_C( 1), INT16_MAX, INT16_C( 1687), INT16_MIN } },
{ { -INT16_C( 5300), INT16_C( 1064), -INT16_C( 4694), INT16_C( 25472) },
{ INT16_C( 3), INT16_C( 0), INT16_C( 5), INT16_C( 8) },
{ INT16_MIN, INT16_C( 1064), INT16_MIN, INT16_MAX } },
{ { -INT16_C( 9080), INT16_C( 16802), -INT16_C( 10592), -INT16_C( 30376) },
{ -INT16_C( 4), -INT16_C( 8), INT16_C( 0), INT16_C( 16) },
{ -INT16_C( 567), INT16_C( 66), -INT16_C( 10592), INT16_MIN } },
{ { -INT16_C( 10167), INT16_C( 25018), INT16_C( 28423), -INT16_C( 9608) },
{ -INT16_C( 2), -INT16_C( 4), -INT16_C( 6), -INT16_C( 8) },
{ -INT16_C( 2542), INT16_C( 1564), INT16_C( 444), -INT16_C( 38) } },
{ { INT16_C( 32142), -INT16_C( 28370), INT16_C( 24856), INT16_C( 26195) },
{ -INT16_C( 3), -INT16_C( 8), INT16_C( 15), INT16_C( 9) },
{ INT16_C( 4018), -INT16_C( 111), INT16_MAX, INT16_MAX } },
{ { -INT16_C( 23494), -INT16_C( 25691), -INT16_C( 8401), -INT16_C( 31132) },
{ INT16_C( 3), -INT16_C( 13), -INT16_C( 16), INT16_C( 14) },
{ INT16_MIN, -INT16_C( 3), INT16_C( 0), INT16_MIN } },
{ { INT16_C( 14453), -INT16_C( 12196), INT16_C( 27445), INT16_C( 31840) },
{ INT16_C( 14), INT16_C( 5), INT16_C( 13), -INT16_C( 9) },
{ INT16_MAX, INT16_MIN, INT16_MAX, INT16_C( 62) } },
{ { INT16_MAX, INT16_MAX, INT16_MAX, INT16_MAX },
{ -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1) },
{ INT16_C( 16384), INT16_C( 16384), INT16_C( 16384), INT16_C( 16384) } },
};
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 r = simde_vqrshl_s16(a, b);
simde_test_arm_neon_assert_equal_i16x4(r, simde_vld1_s16(test_vec[i].r));
}
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 r = simde_vqrshl_s16(a, b);
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, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vqrshl_s32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
int32_t a[2];
int32_t b[2];
int32_t r[2];
} test_vec[] = {
{ { INT32_C( 37316345), INT32_C( 852588016) },
{ -INT32_C( 21), INT32_C( 22) },
{ INT32_C( 18), INT32_MAX } },
{ { INT32_C( 1713047364), -INT32_C( 718155773) },
{ -INT32_C( 2), INT32_C( 18) },
{ INT32_C( 428261841), INT32_MIN } },
{ { INT32_C( 2011282434), -INT32_C( 1644508231) },
{ INT32_C( 12), -INT32_C( 21) },
{ INT32_MAX, -INT32_C( 784) } },
{ { -INT32_C( 8819381), -INT32_C( 112184656) },
{ -INT32_C( 12), -INT32_C( 21) },
{ -INT32_C( 2153), -INT32_C( 53) } },
{ { INT32_C( 305438996), INT32_C( 1662430416) },
{ INT32_C( 29), -INT32_C( 19) },
{ INT32_MAX, INT32_C( 3171) } },
{ { INT32_C( 1246050521), -INT32_C( 703046011) },
{ INT32_C( 11), INT32_C( 11) },
{ INT32_MAX, INT32_MIN } },
{ { -INT32_C( 129492298), -INT32_C( 1643446120) },
{ INT32_C( 13), INT32_C( 25) },
{ INT32_MIN, INT32_MIN } },
{ { INT32_C( 58593943), -INT32_C( 594339506) },
{ -INT32_C( 21), -INT32_C( 9) },
{ INT32_C( 28), -INT32_C( 1160819) } },
{ { INT32_MAX, INT32_MAX },
{ -INT32_C( 1), -INT32_C( 1) },
{ INT32_C( 1073741824), INT32_C( 1073741824) } },
};
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 r = simde_vqrshl_s32(a, b);
simde_test_arm_neon_assert_equal_i32x2(r, simde_vld1_s32(test_vec[i].r));
}
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 r = simde_vqrshl_s32(a, b);
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, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vqrshl_s64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
int64_t a[1];
int64_t b[1];
int64_t r[1];
} test_vec[] = {
{ { INT64_C( 2379025802943267314) },
{ -INT64_C( 3) },
{ INT64_C( 297378225367908414) } },
{ { -INT64_C( 7880843795017100943) },
{ INT64_C( 13) },
{ INT64_MIN } },
{ { INT64_C( 5060086036473607234) },
{ -INT64_C( 12) },
{ INT64_C( 1235372567498439) } },
{ { -INT64_C( 1251288881944570923) },
{ INT64_C( 59) },
{ INT64_MIN } },
{ { -INT64_C( 818197169458855311) },
{ -INT64_C( 46) },
{ -INT64_C( 11627) } },
{ { -INT64_C( 3470264563169298453) },
{ -INT64_C( 56) },
{ -INT64_C( 48) } },
{ { -INT64_C( 6566310065777805324) },
{ -INT64_C( 54) },
{ -INT64_C( 365) } },
{ { INT64_C( 8846445702649439056) },
{ -INT64_C( 5) },
{ INT64_C( 276451428207794971) } },
{ { INT64_MAX },
{ -INT64_C( 1) },
{ INT64_C( 4611686018427387904) } },
};
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 r = simde_vqrshl_s64(a, b);
simde_test_arm_neon_assert_equal_i64x1(r, simde_vld1_s64(test_vec[i].r));
}
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 r = simde_vqrshl_s64(a, b);
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, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vqrshl_u8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
uint8_t a[8];
int8_t b[8];
uint8_t r[8];
} test_vec[] = {
{ { UINT8_C( 17), UINT8_C( 254), UINT8_C( 166), UINT8_C( 242),
UINT8_C( 224), UINT8_C( 96), UINT8_C( 134), UINT8_C( 31) },
{ -INT8_C( 2), INT8_C( 6), -INT8_C( 5), -INT8_C( 2),
-INT8_C( 1), INT8_C( 0), -INT8_C( 4), INT8_C( 4) },
{ UINT8_C( 4), UINT8_C( 255), UINT8_C( 5), UINT8_C( 61),
UINT8_C( 112), UINT8_C( 96), UINT8_C( 8), UINT8_C( 255) } },
{ { UINT8_C( 236), UINT8_C( 17), UINT8_C( 172), UINT8_C( 17),
UINT8_C( 72), UINT8_C( 97), UINT8_C( 108), UINT8_C( 128) },
{ INT8_C( 6), INT8_C( 0), INT8_C( 6), INT8_C( 7),
-INT8_C( 4), -INT8_C( 5), INT8_C( 1), -INT8_C( 7) },
{ UINT8_C( 255), UINT8_C( 17), UINT8_C( 255), UINT8_C( 255),
UINT8_C( 5), UINT8_C( 3), UINT8_C( 216), UINT8_C( 1) } },
{ { UINT8_C( 101), UINT8_C( 167), UINT8_C( 60), UINT8_C( 143),
UINT8_C( 234), UINT8_C( 177), UINT8_C( 216), UINT8_C( 221) },
{ -INT8_C( 3), -INT8_C( 8), INT8_C( 3), -INT8_C( 6),
INT8_C( 3), INT8_C( 5), -INT8_C( 8), INT8_C( 5) },
{ UINT8_C( 13), UINT8_C( 1), UINT8_C( 255), UINT8_C( 2),
UINT8_C( 255), UINT8_C( 255), UINT8_C( 1), UINT8_C( 255) } },
{ { UINT8_C( 9), UINT8_C( 223), UINT8_C( 27), UINT8_C( 204),
UINT8_C( 106), UINT8_C( 241), UINT8_C( 32), UINT8_C( 220) },
{ -INT8_C( 5), INT8_C( 8), INT8_C( 3), INT8_C( 4),
-INT8_C( 4), INT8_C( 6), INT8_C( 6), -INT8_C( 8) },
{ UINT8_C( 0), UINT8_C( 255), UINT8_C( 216), UINT8_C( 255),
UINT8_C( 7), UINT8_C( 255), UINT8_C( 255), UINT8_C( 1) } },
{ { UINT8_C( 175), UINT8_C( 114), UINT8_C( 53), UINT8_C( 46),
UINT8_C( 26), UINT8_C( 170), UINT8_C( 171), UINT8_C( 213) },
{ -INT8_C( 6), -INT8_C( 6), -INT8_C( 4), INT8_C( 3),
INT8_C( 1), -INT8_C( 2), -INT8_C( 3), -INT8_C( 8) },
{ UINT8_C( 3), UINT8_C( 2), UINT8_C( 3), UINT8_C( 255),
UINT8_C( 52), UINT8_C( 43), UINT8_C( 21), UINT8_C( 1) } },
{ { UINT8_C( 37), UINT8_C( 113), UINT8_C( 207), UINT8_C( 209),
UINT8_C( 209), UINT8_C( 8), UINT8_C( 239), UINT8_C( 42) },
{ -INT8_C( 8), -INT8_C( 6), -INT8_C( 7), -INT8_C( 5),
INT8_C( 2), INT8_C( 7), INT8_C( 1), -INT8_C( 5) },
{ UINT8_C( 0), UINT8_C( 2), UINT8_C( 2), UINT8_C( 7),
UINT8_C( 255), UINT8_C( 255), UINT8_C( 255), UINT8_C( 1) } },
{ { UINT8_C( 249), UINT8_C( 98), UINT8_C( 62), UINT8_C( 112),
UINT8_C( 21), UINT8_C( 89), UINT8_C( 159), UINT8_C( 208) },
{ INT8_C( 4), -INT8_C( 3), INT8_C( 8), INT8_C( 0),
-INT8_C( 4), -INT8_C( 6), -INT8_C( 3), INT8_C( 2) },
{ UINT8_C( 255), UINT8_C( 12), UINT8_C( 255), UINT8_C( 112),
UINT8_C( 1), UINT8_C( 1), UINT8_C( 20), UINT8_C( 255) } },
{ { UINT8_C( 38), UINT8_C( 128), UINT8_C( 239), UINT8_C( 139),
UINT8_C( 165), UINT8_C( 233), UINT8_C( 134), UINT8_C( 247) },
{ -INT8_C( 3), INT8_C( 5), INT8_C( 6), INT8_C( 3),
-INT8_C( 5), INT8_C( 4), INT8_C( 1), INT8_C( 7) },
{ UINT8_C( 5), UINT8_C( 255), UINT8_C( 255), UINT8_C( 255),
UINT8_C( 5), UINT8_C( 255), UINT8_C( 255), UINT8_C( 255) } },
};
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_int8x8_t b = simde_vld1_s8(test_vec[i].b);
simde_uint8x8_t r = simde_vqrshl_u8(a, b);
simde_test_arm_neon_assert_equal_u8x8(r, simde_vld1_u8(test_vec[i].r));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_uint8x8_t a = simde_test_arm_neon_random_u8x8();
simde_int8x8_t b = simde_test_arm_neon_random_i8x8();
simde_uint8x8_t r = simde_vqrshl_u8(a, b);
simde_test_arm_neon_write_u8x8(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_u8x8(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vqrshl_u16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
uint16_t a[4];
int16_t b[4];
uint16_t r[4];
} test_vec[] = {
{ { UINT16_C( 36529), UINT16_C( 29829), UINT16_C( 2096), UINT16_C( 2729) },
{ INT16_C( 0), INT16_C( 4), INT16_C( 9), -INT16_C( 4) },
{ UINT16_C( 36529), UINT16_C( 65535), UINT16_C( 65535), UINT16_C( 171) } },
{ { UINT16_C( 39946), UINT16_C( 27950), UINT16_C( 23605), UINT16_C( 4911) },
{ INT16_C( 11), -INT16_C( 14), -INT16_C( 7), INT16_C( 9) },
{ UINT16_C( 65535), UINT16_C( 2), UINT16_C( 184), UINT16_C( 65535) } },
{ { UINT16_C( 42859), UINT16_C( 2240), UINT16_C( 20043), UINT16_C( 10036) },
{ INT16_C( 8), INT16_C( 14), -INT16_C( 15), -INT16_C( 12) },
{ UINT16_C( 65535), UINT16_C( 65535), UINT16_C( 1), UINT16_C( 2) } },
{ { UINT16_C( 50980), UINT16_C( 165), UINT16_C( 10039), UINT16_C( 30538) },
{ INT16_C( 8), -INT16_C( 8), INT16_C( 11), -INT16_C( 9) },
{ UINT16_C( 65535), UINT16_C( 1), UINT16_C( 65535), UINT16_C( 60) } },
{ { UINT16_C( 61605), UINT16_C( 27801), UINT16_C( 14514), UINT16_C( 31459) },
{ -INT16_C( 2), INT16_C( 9), INT16_C( 7), INT16_C( 13) },
{ UINT16_C( 15401), UINT16_C( 65535), UINT16_C( 65535), UINT16_C( 65535) } },
{ { UINT16_C( 27895), UINT16_C( 11683), UINT16_C( 16781), UINT16_C( 38533) },
{ -INT16_C( 10), -INT16_C( 4), INT16_C( 16), -INT16_C( 10) },
{ UINT16_C( 27), UINT16_C( 730), UINT16_C( 65535), UINT16_C( 38) } },
{ { UINT16_C( 53996), UINT16_C( 31874), UINT16_C( 57883), UINT16_C( 4747) },
{ -INT16_C( 16), INT16_C( 8), -INT16_C( 9), INT16_C( 9) },
{ UINT16_C( 1), UINT16_C( 65535), UINT16_C( 113), UINT16_C( 65535) } },
{ { UINT16_C( 37059), UINT16_C( 57524), UINT16_C( 51263), UINT16_C( 61052) },
{ INT16_C( 6), -INT16_C( 11), -INT16_C( 1), -INT16_C( 6) },
{ UINT16_C( 65535), UINT16_C( 28), UINT16_C( 25632), UINT16_C( 954) } },
};
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_int16x4_t b = simde_vld1_s16(test_vec[i].b);
simde_uint16x4_t r = simde_vqrshl_u16(a, b);
simde_test_arm_neon_assert_equal_u16x4(r, simde_vld1_u16(test_vec[i].r));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_uint16x4_t a = simde_test_arm_neon_random_u16x4();
simde_int16x4_t b = simde_test_arm_neon_random_i16x4();
simde_uint16x4_t r = simde_vqrshl_u16(a, b);
simde_test_arm_neon_write_u16x4(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_u16x4(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vqrshl_u32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
uint32_t a[2];
int32_t b[2];
uint32_t r[2];
} test_vec[] = {
{ { UINT32_C( 4032142366), UINT32_C( 2503991721) },
{ INT32_C( 23), -INT32_C( 11) },
{ UINT32_C( 4294967295), UINT32_C( 1222652) } },
{ { UINT32_C( 1849889977), UINT32_C( 1539239213) },
{ INT32_C( 3), -INT32_C( 31) },
{ UINT32_C( 4294967295), UINT32_C( 1) } },
{ { UINT32_C( 3780982194), UINT32_C( 1551554012) },
{ INT32_C( 8), INT32_C( 30) },
{ UINT32_C( 4294967295), UINT32_C( 4294967295) } },
{ { UINT32_C( 457931350), UINT32_C( 2322708363) },
{ -INT32_C( 24), -INT32_C( 15) },
{ UINT32_C( 27), UINT32_C( 70883) } },
{ { UINT32_C( 1302772324), UINT32_C( 3149457440) },
{ -INT32_C( 8), INT32_C( 31) },
{ UINT32_C( 5088954), UINT32_C( 4294967295) } },
{ { UINT32_C( 2656566271), UINT32_C( 10727285) },
{ -INT32_C( 11), INT32_C( 23) },
{ UINT32_C( 1297151), UINT32_C( 4294967295) } },
{ { UINT32_C( 580186040), UINT32_C( 879645142) },
{ INT32_C( 26), INT32_C( 8) },
{ UINT32_C( 4294967295), UINT32_C( 4294967295) } },
{ { UINT32_C( 2842364758), UINT32_C( 627566619) },
{ -INT32_C( 19), -INT32_C( 17) },
{ UINT32_C( 5421), UINT32_C( 4788) } },
};
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_int32x2_t b = simde_vld1_s32(test_vec[i].b);
simde_uint32x2_t r = simde_vqrshl_u32(a, b);
simde_test_arm_neon_assert_equal_u32x2(r, simde_vld1_u32(test_vec[i].r));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_uint32x2_t a = simde_test_arm_neon_random_u32x2();
simde_int32x2_t b = simde_test_arm_neon_random_i32x2();
simde_uint32x2_t r = simde_vqrshl_u32(a, b);
simde_test_arm_neon_write_u32x2(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_u32x2(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vqrshl_u64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
uint64_t a[1];
int64_t b[1];
uint64_t r[1];
} test_vec[] = {
{ { UINT64_C(10606652271688138073) },
{ -INT64_C( 24) },
{ UINT64_C( 632205740910) } },
{ { UINT64_C( 6951000685328207734) },
{ -INT64_C( 41) },
{ UINT64_C( 3160949) } },
{ { UINT64_C( 2652753700446653166) },
{ INT64_C( 16) },
{ UINT64_C(18446744073709551615) } },
{ { UINT64_C( 2887850072060195408) },
{ INT64_C( 8) },
{ UINT64_C(18446744073709551615) } },
{ { UINT64_C( 3003532981166020057) },
{ -INT64_C( 18) },
{ UINT64_C( 11457569050469) } },
{ { UINT64_C( 2467308484911859140) },
{ -INT64_C( 4) },
{ UINT64_C( 154206780306991196) } },
{ { UINT64_C(10329885492628171968) },
{ INT64_C( 8) },
{ UINT64_C(18446744073709551615) } },
{ { UINT64_C( 2016469675685954892) },
{ -INT64_C( 62) },
{ UINT64_C( 0) } },
};
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_int64x1_t b = simde_vld1_s64(test_vec[i].b);
simde_uint64x1_t r = simde_vqrshl_u64(a, b);
simde_test_arm_neon_assert_equal_u64x1(r, simde_vld1_u64(test_vec[i].r));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_uint64x1_t a = simde_test_arm_neon_random_u64x1();
simde_int64x1_t b = simde_test_arm_neon_random_i64x1();
simde_uint64x1_t r = simde_vqrshl_u64(a, b);
simde_test_arm_neon_write_u64x1(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_u64x1(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vqrshlq_s8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
int8_t a[16];
int8_t b[16];
int8_t r[16];
} test_vec[] = {
{ { INT8_C( 40), -INT8_C( 12), -INT8_C( 107), INT8_C( 91),
INT8_C( 39), INT8_C( 70), -INT8_C( 66), -INT8_C( 32),
INT8_C( 44), INT8_C( 106), INT8_C( 13), -INT8_C( 17),
INT8_C( 42), -INT8_C( 33), INT8_C( 0), INT8_C( 99) },
{ -INT8_C( 1), INT8_C( 5), INT8_C( 7), -INT8_C( 6),
INT8_C( 5), INT8_C( 3), -INT8_C( 4), -INT8_C( 2),
INT8_C( 8), INT8_C( 7), -INT8_C( 8), -INT8_C( 8),
INT8_C( 8), INT8_C( 4), INT8_C( 4), -INT8_C( 7) },
{ INT8_C( 20), INT8_MIN, INT8_MIN, INT8_C( 1),
INT8_MAX, INT8_MAX, -INT8_C( 4), -INT8_C( 8),
INT8_MAX, INT8_MAX, INT8_C( 0), INT8_C( 0),
INT8_MAX, INT8_MIN, INT8_C( 0), INT8_C( 1) } },
{ { INT8_C( 13), -INT8_C( 18), -INT8_C( 109), INT8_C( 117),
-INT8_C( 115), INT8_C( 11), INT8_C( 28), INT8_C( 34),
INT8_C( 84), INT8_C( 24), -INT8_C( 56), INT8_C( 69),
INT8_C( 112), -INT8_C( 93), -INT8_C( 57), INT8_C( 46) },
{ INT8_C( 3), INT8_C( 1), -INT8_C( 6), INT8_C( 4),
-INT8_C( 7), INT8_C( 1), INT8_C( 3), -INT8_C( 4),
INT8_C( 6), INT8_C( 1), -INT8_C( 2), -INT8_C( 3),
INT8_C( 0), INT8_C( 6), INT8_C( 3), INT8_C( 8) },
{ INT8_C( 104), -INT8_C( 36), -INT8_C( 2), INT8_MAX,
-INT8_C( 1), INT8_C( 22), INT8_MAX, INT8_C( 2),
INT8_MAX, INT8_C( 48), -INT8_C( 14), INT8_C( 9),
INT8_C( 112), INT8_MIN, INT8_MIN, INT8_MAX } },
{ { -INT8_C( 20), INT8_C( 92), -INT8_C( 120), INT8_C( 62),
-INT8_C( 85), INT8_C( 61), -INT8_C( 9), -INT8_C( 121),
INT8_C( 18), -INT8_C( 16), -INT8_C( 124), -INT8_C( 109),
INT8_C( 101), INT8_C( 14), -INT8_C( 15), -INT8_C( 69) },
{ INT8_C( 2), -INT8_C( 3), INT8_C( 3), INT8_C( 2),
-INT8_C( 2), -INT8_C( 2), -INT8_C( 2), INT8_C( 6),
INT8_C( 0), INT8_C( 2), INT8_C( 4), INT8_C( 5),
-INT8_C( 8), -INT8_C( 3), -INT8_C( 1), INT8_C( 8) },
{ -INT8_C( 80), INT8_C( 12), INT8_MIN, INT8_MAX,
-INT8_C( 21), INT8_C( 15), -INT8_C( 2), INT8_MIN,
INT8_C( 18), -INT8_C( 64), INT8_MIN, INT8_MIN,
INT8_C( 0), INT8_C( 2), -INT8_C( 7), INT8_MIN } },
{ { INT8_C( 38), INT8_C( 60), -INT8_C( 70), INT8_C( 91),
INT8_C( 120), -INT8_C( 121), INT8_C( 71), -INT8_C( 22),
INT8_C( 92), INT8_C( 8), INT8_C( 124), -INT8_C( 117),
INT8_C( 115), INT8_C( 44), -INT8_C( 93), INT8_C( 66) },
{ INT8_C( 1), INT8_C( 5), INT8_C( 2), INT8_C( 8),
-INT8_C( 6), -INT8_C( 4), INT8_C( 8), -INT8_C( 2),
INT8_C( 5), INT8_C( 4), -INT8_C( 2), INT8_C( 2),
INT8_C( 8), INT8_C( 0), -INT8_C( 5), INT8_C( 0) },
{ INT8_C( 76), INT8_MAX, INT8_MIN, INT8_MAX,
INT8_C( 2), -INT8_C( 8), INT8_MAX, -INT8_C( 5),
INT8_MAX, INT8_MAX, INT8_C( 31), INT8_MIN,
INT8_MAX, INT8_C( 44), -INT8_C( 3), INT8_C( 66) } },
{ { INT8_C( 122), -INT8_C( 112), -INT8_C( 124), INT8_C( 42),
INT8_C( 87), -INT8_C( 117), INT8_C( 56), -INT8_C( 93),
INT8_C( 78), INT8_C( 31), -INT8_C( 3), -INT8_C( 50),
INT8_C( 116), INT8_C( 68), INT8_C( 64), INT8_C( 69) },
{ INT8_C( 2), INT8_C( 4), -INT8_C( 7), INT8_C( 4),
-INT8_C( 3), -INT8_C( 8), INT8_C( 8), INT8_C( 1),
-INT8_C( 5), -INT8_C( 1), INT8_C( 6), -INT8_C( 3),
-INT8_C( 3), INT8_C( 5), INT8_C( 2), INT8_C( 1) },
{ INT8_MAX, INT8_MIN, -INT8_C( 1), INT8_MAX,
INT8_C( 11), INT8_C( 0), INT8_MAX, INT8_MIN,
INT8_C( 2), INT8_C( 16), INT8_MIN, -INT8_C( 6),
INT8_C( 15), INT8_MAX, INT8_MAX, INT8_MAX } },
{ { -INT8_C( 34), -INT8_C( 5), -INT8_C( 85), -INT8_C( 77),
INT8_C( 98), INT8_C( 107), INT8_C( 84), -INT8_C( 115),
-INT8_C( 127), -INT8_C( 1), -INT8_C( 33), INT8_C( 111),
INT8_C( 33), INT8_C( 97), INT8_C( 46), INT8_C( 76) },
{ INT8_C( 8), INT8_C( 4), INT8_C( 0), -INT8_C( 7),
INT8_C( 2), -INT8_C( 6), INT8_C( 4), -INT8_C( 8),
INT8_C( 4), INT8_C( 6), INT8_C( 4), -INT8_C( 8),
INT8_C( 1), -INT8_C( 5), -INT8_C( 6), -INT8_C( 7) },
{ INT8_MIN, -INT8_C( 80), -INT8_C( 85), -INT8_C( 1),
INT8_MAX, INT8_C( 2), INT8_MAX, INT8_C( 0),
INT8_MIN, -INT8_C( 64), INT8_MIN, INT8_C( 0),
INT8_C( 66), INT8_C( 3), INT8_C( 1), INT8_C( 1) } },
{ { -INT8_C( 69), -INT8_C( 87), INT8_C( 96), INT8_C( 21),
INT8_C( 66), -INT8_C( 29), -INT8_C( 72), -INT8_C( 116),
-INT8_C( 125), INT8_C( 72), INT8_C( 98), INT8_C( 60),
INT8_C( 99), INT8_C( 102), -INT8_C( 72), -INT8_C( 39) },
{ INT8_C( 2), -INT8_C( 3), -INT8_C( 6), -INT8_C( 3),
-INT8_C( 3), INT8_C( 4), INT8_C( 4), -INT8_C( 2),
INT8_C( 0), -INT8_C( 5), INT8_C( 1), INT8_C( 5),
-INT8_C( 3), -INT8_C( 3), -INT8_C( 7), -INT8_C( 7) },
{ INT8_MIN, -INT8_C( 11), INT8_C( 2), INT8_C( 3),
INT8_C( 8), INT8_MIN, INT8_MIN, -INT8_C( 29),
-INT8_C( 125), INT8_C( 2), INT8_MAX, INT8_MAX,
INT8_C( 12), INT8_C( 13), -INT8_C( 1), INT8_C( 0) } },
{ { -INT8_C( 121), INT8_C( 38), INT8_C( 117), INT8_C( 37),
-INT8_C( 14), -INT8_C( 96), INT8_C( 74), INT8_C( 115),
-INT8_C( 24), INT8_C( 64), INT8_C( 105), -INT8_C( 122),
-INT8_C( 82), INT8_C( 2), INT8_C( 119), INT8_C( 84) },
{ INT8_C( 5), INT8_C( 1), INT8_C( 1), INT8_C( 3),
-INT8_C( 1), INT8_C( 3), INT8_C( 8), INT8_C( 2),
INT8_C( 0), -INT8_C( 4), INT8_C( 8), INT8_C( 3),
INT8_C( 0), INT8_C( 0), -INT8_C( 6), -INT8_C( 1) },
{ INT8_MIN, INT8_C( 76), INT8_MAX, INT8_MAX,
-INT8_C( 7), INT8_MIN, INT8_MAX, INT8_MAX,
-INT8_C( 24), INT8_C( 4), INT8_MAX, INT8_MIN,
-INT8_C( 82), INT8_C( 2), INT8_C( 2), INT8_C( 42) } },
{ { INT8_MAX, INT8_MAX, INT8_MAX, INT8_MAX,
INT8_MAX, INT8_MAX, INT8_MAX, INT8_MAX,
INT8_MAX, INT8_MAX, INT8_MAX, INT8_MAX,
INT8_MAX, INT8_MAX, INT8_MAX, INT8_MAX },
{ -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1),
-INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1),
-INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1),
-INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1) },
{ INT8_C( 64), INT8_C( 64), INT8_C( 64), INT8_C( 64),
INT8_C( 64), INT8_C( 64), INT8_C( 64), INT8_C( 64),
INT8_C( 64), INT8_C( 64), INT8_C( 64), INT8_C( 64),
INT8_C( 64), INT8_C( 64), INT8_C( 64), INT8_C( 64) } },
};
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 r = simde_vqrshlq_s8(a, b);
simde_test_arm_neon_assert_equal_i8x16(r, simde_vld1q_s8(test_vec[i].r));
}
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 r = simde_vqrshlq_s8(a, b);
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, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vqrshlq_s16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
int16_t a[8];
int16_t b[8];
int16_t r[8];
} test_vec[] = {
{ { INT16_C( 17), -INT16_C( 18060), INT16_C( 2082), INT16_C( 3026),
-INT16_C( 23678), INT16_C( 13144), -INT16_C( 19898), INT16_C( 26465) },
{ -INT16_C( 9), INT16_C( 4), -INT16_C( 9), -INT16_C( 7),
INT16_C( 6), -INT16_C( 8), -INT16_C( 5), -INT16_C( 7) },
{ INT16_C( 0), INT16_MIN, INT16_C( 4), INT16_C( 24),
INT16_MIN, INT16_C( 51), -INT16_C( 622), INT16_C( 207) } },
{ { -INT16_C( 31358), INT16_C( 28497), -INT16_C( 24101), -INT16_C( 29556),
INT16_C( 23640), INT16_C( 26523), INT16_C( 30555), INT16_C( 32733) },
{ INT16_C( 8), INT16_C( 12), INT16_C( 11), -INT16_C( 9),
-INT16_C( 8), -INT16_C( 11), INT16_C( 4), -INT16_C( 3) },
{ INT16_MIN, INT16_MAX, INT16_MIN, -INT16_C( 58),
INT16_C( 92), INT16_C( 13), INT16_MAX, INT16_C( 4092) } },
{ { -INT16_C( 25371), -INT16_C( 28626), -INT16_C( 10661), -INT16_C( 29662),
INT16_C( 8039), INT16_C( 27599), INT16_C( 27158), INT16_C( 14531) },
{ INT16_C( 0), -INT16_C( 10), INT16_C( 2), INT16_C( 11),
-INT16_C( 2), -INT16_C( 9), INT16_C( 15), INT16_C( 6) },
{ -INT16_C( 25371), -INT16_C( 28), INT16_MIN, INT16_MIN,
INT16_C( 2010), INT16_C( 54), INT16_MAX, INT16_MAX } },
{ { INT16_C( 29383), INT16_C( 13775), INT16_C( 1669), INT16_C( 16370),
-INT16_C( 31950), -INT16_C( 10488), -INT16_C( 4281), -INT16_C( 15443) },
{ INT16_C( 6), -INT16_C( 14), INT16_C( 6), -INT16_C( 13),
-INT16_C( 7), INT16_C( 5), INT16_C( 12), -INT16_C( 2) },
{ INT16_MAX, INT16_C( 1), INT16_MAX, INT16_C( 2),
-INT16_C( 250), INT16_MIN, INT16_MIN, -INT16_C( 3861) } },
{ { -INT16_C( 16008), INT16_C( 6576), INT16_C( 25375), -INT16_C( 2472),
-INT16_C( 22062), -INT16_C( 1594), -INT16_C( 33), -INT16_C( 29140) },
{ -INT16_C( 10), -INT16_C( 16), -INT16_C( 14), INT16_C( 15),
-INT16_C( 11), -INT16_C( 13), INT16_C( 3), -INT16_C( 13) },
{ -INT16_C( 16), INT16_C( 0), INT16_C( 2), INT16_MIN,
-INT16_C( 11), INT16_C( 0), -INT16_C( 264), -INT16_C( 4) } },
{ { -INT16_C( 17438), INT16_C( 21035), -INT16_C( 4482), -INT16_C( 5337),
-INT16_C( 25235), -INT16_C( 6754), -INT16_C( 9668), -INT16_C( 27862) },
{ -INT16_C( 1), -INT16_C( 15), INT16_C( 5), -INT16_C( 4),
-INT16_C( 5), INT16_C( 14), -INT16_C( 8), -INT16_C( 9) },
{ -INT16_C( 8719), INT16_C( 1), INT16_MIN, -INT16_C( 334),
-INT16_C( 789), INT16_MIN, -INT16_C( 38), -INT16_C( 54) } },
{ { INT16_C( 10172), -INT16_C( 6237), -INT16_C( 25431), -INT16_C( 30731),
-INT16_C( 2806), -INT16_C( 24307), -INT16_C( 1303), -INT16_C( 17051) },
{ -INT16_C( 4), INT16_C( 13), -INT16_C( 11), -INT16_C( 1),
INT16_C( 10), INT16_C( 7), -INT16_C( 16), INT16_C( 1) },
{ INT16_C( 636), INT16_MIN, -INT16_C( 12), -INT16_C( 15365),
INT16_MIN, INT16_MIN, INT16_C( 0), INT16_MIN } },
{ { -INT16_C( 1297), INT16_C( 6102), INT16_C( 12306), INT16_C( 23191),
-INT16_C( 2630), -INT16_C( 28109), -INT16_C( 20844), INT16_C( 271) },
{ INT16_C( 3), INT16_C( 15), INT16_C( 8), INT16_C( 6),
INT16_C( 0), INT16_C( 15), -INT16_C( 5), -INT16_C( 13) },
{ -INT16_C( 10376), INT16_MAX, INT16_MAX, INT16_MAX,
-INT16_C( 2630), INT16_MIN, -INT16_C( 651), INT16_C( 0) } },
{ { INT16_MAX, INT16_MAX, INT16_MAX, INT16_MAX,
INT16_MAX, INT16_MAX, INT16_MAX, INT16_MAX },
{ -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1),
-INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1) },
{ INT16_C( 16384), INT16_C( 16384), INT16_C( 16384), INT16_C( 16384),
INT16_C( 16384), INT16_C( 16384), INT16_C( 16384), INT16_C( 16384) } },
};
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 r = simde_vqrshlq_s16(a, b);
simde_test_arm_neon_assert_equal_i16x8(r, simde_vld1q_s16(test_vec[i].r));
}
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 r = simde_vqrshlq_s16(a, b);
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, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vqrshlq_s32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
int32_t a[4];
int32_t b[4];
int32_t r[4];
} test_vec[] = {
{ { INT32_C( 1814886595), -INT32_C( 1646956830), INT32_C( 1237502269), INT32_C( 534733024) },
{ -INT32_C( 21), -INT32_C( 25), INT32_C( 31), -INT32_C( 11) },
{ INT32_C( 865), -INT32_C( 49), INT32_MAX, INT32_C( 261100) } },
{ { INT32_C( 1736113552), INT32_C( 1258318563), INT32_C( 1069774949), INT32_C( 755812542) },
{ -INT32_C( 32), INT32_C( 8), INT32_C( 32), INT32_C( 19) },
{ INT32_C( 0), INT32_MAX, INT32_MAX, INT32_MAX } },
{ { -INT32_C( 1923447339), -INT32_C( 1220148547), -INT32_C( 1485011002), -INT32_C( 1143271085) },
{ -INT32_C( 30), -INT32_C( 24), -INT32_C( 25), INT32_C( 30) },
{ -INT32_C( 2), -INT32_C( 73), -INT32_C( 44), INT32_MIN } },
{ { INT32_C( 1865665830), INT32_C( 2143927441), -INT32_C( 1135678127), INT32_C( 123259338) },
{ INT32_C( 20), -INT32_C( 9), -INT32_C( 31), -INT32_C( 14) },
{ INT32_MAX, INT32_C( 4187358), -INT32_C( 1), INT32_C( 7523) } },
{ { INT32_C( 3352422), -INT32_C( 698249524), INT32_C( 1806447909), INT32_C( 800823842) },
{ -INT32_C( 6), INT32_C( 4), -INT32_C( 6), INT32_C( 32) },
{ INT32_C( 52382), INT32_MIN, INT32_C( 28225749), INT32_MAX } },
{ { -INT32_C( 337342704), INT32_C( 1303521110), INT32_C( 425408117), INT32_C( 231996299) },
{ -INT32_C( 32), -INT32_C( 16), -INT32_C( 31), INT32_C( 2) },
{ INT32_C( 0), INT32_C( 19890), INT32_C( 0), INT32_C( 927985196) } },
{ { -INT32_C( 529877133), -INT32_C( 1960225014), -INT32_C( 1757285913), INT32_C( 1764816475) },
{ INT32_C( 20), -INT32_C( 6), INT32_C( 32), INT32_C( 24) },
{ INT32_MIN, -INT32_C( 30628516), INT32_MIN, INT32_MAX } },
{ { INT32_C( 219035158), INT32_C( 2118934887), INT32_C( 641686675), INT32_C( 264846024) },
{ INT32_C( 6), INT32_C( 28), -INT32_C( 1), INT32_C( 12) },
{ INT32_MAX, INT32_MAX, INT32_C( 320843338), INT32_MAX } },
{ { INT32_MAX, INT32_MAX, INT32_MAX, INT32_MAX },
{ -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1) },
{ INT32_C( 1073741824), INT32_C( 1073741824), INT32_C( 1073741824), INT32_C( 1073741824) } },
};
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 r = simde_vqrshlq_s32(a, b);
simde_test_arm_neon_assert_equal_i32x4(r, simde_vld1q_s32(test_vec[i].r));
}
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 r = simde_vqrshlq_s32(a, b);
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, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vqrshlq_s64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
int64_t a[2];
int64_t b[2];
int64_t r[2];
} test_vec[] = {
{ { -INT64_C( 5414884328532004708), -INT64_C( 7732031084687741673) },
{ -INT64_C( 63), INT64_C( 61) },
{ -INT64_C( 1), INT64_MIN } },
{ { INT64_C( 3932969372243887233), -INT64_C( 7443478377457562434) },
{ -INT64_C( 45), -INT64_C( 1) },
{ INT64_C( 111782), -INT64_C( 3721739188728781217) } },
{ { -INT64_C( 4624332781887269652), INT64_C( 9194359439567769551) },
{ INT64_C( 18), INT64_C( 12) },
{ INT64_MIN, INT64_MAX } },
{ { INT64_C( 1303116637892605202), INT64_C( 2411425157371539502) },
{ -INT64_C( 35), -INT64_C( 12) },
{ INT64_C( 37925686), INT64_C( 588726845061411) } },
{ { -INT64_C( 5953546370211056151), INT64_C( 4807810721811645268) },
{ -INT64_C( 15), INT64_C( 44) },
{ -INT64_C( 181687816473726), INT64_MAX } },
{ { -INT64_C( 671209687377174666), -INT64_C( 2105758642682840471) },
{ INT64_C( 35), INT64_C( 6) },
{ INT64_MIN, INT64_MIN } },
{ { -INT64_C( 1318546396640194493), INT64_C( 4726180957159977633) },
{ INT64_C( 33), INT64_C( 3) },
{ INT64_MIN, INT64_MAX } },
{ { INT64_C( 570160631599597498), INT64_C( 7291438976119207855) },
{ -INT64_C( 54), INT64_C( 30) },
{ INT64_C( 32), INT64_MAX } },
{ { INT64_MAX, INT64_MAX },
{ -INT64_C( 1), -INT64_C( 1) },
{ INT64_C( 4611686018427387904), INT64_C( 4611686018427387904) } },
};
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 r = simde_vqrshlq_s64(a, b);
simde_test_arm_neon_assert_equal_i64x2(r, simde_vld1q_s64(test_vec[i].r));
}
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 r = simde_vqrshlq_s64(a, b);
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, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vqrshlq_u8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
uint8_t a[16];
int8_t b[16];
uint8_t r[16];
} test_vec[] = {
{ { UINT8_C( 48), UINT8_C( 110), UINT8_C( 160), UINT8_C( 230),
UINT8_C( 244), UINT8_C( 14), UINT8_C( 38), UINT8_C( 180),
UINT8_C( 44), UINT8_C( 4), UINT8_C( 143), UINT8_C( 172),
UINT8_C( 51), UINT8_C( 77), UINT8_C( 188), UINT8_C( 81) },
{ INT8_C( 2), -INT8_C( 3), INT8_C( 1), INT8_C( 7),
INT8_C( 1), -INT8_C( 7), -INT8_C( 3), -INT8_C( 3),
-INT8_C( 6), -INT8_C( 6), INT8_C( 0), -INT8_C( 5),
-INT8_C( 7), INT8_C( 0), INT8_C( 1), -INT8_C( 7) },
{ UINT8_C( 192), UINT8_C( 14), UINT8_C( 255), UINT8_C( 255),
UINT8_C( 255), UINT8_C( 0), UINT8_C( 5), UINT8_C( 23),
UINT8_C( 1), UINT8_C( 0), UINT8_C( 143), UINT8_C( 5),
UINT8_C( 0), UINT8_C( 77), UINT8_C( 255), UINT8_C( 1) } },
{ { UINT8_C( 145), UINT8_C( 198), UINT8_C( 59), UINT8_C( 229),
UINT8_C( 193), UINT8_C( 40), UINT8_C( 202), UINT8_C( 18),
UINT8_C( 189), UINT8_C( 226), UINT8_C( 53), UINT8_C( 190),
UINT8_C( 171), UINT8_C( 119), UINT8_C( 184), UINT8_C( 228) },
{ -INT8_C( 5), INT8_C( 2), INT8_C( 3), -INT8_C( 1),
-INT8_C( 6), INT8_C( 6), INT8_C( 0), INT8_C( 5),
INT8_C( 5), INT8_C( 1), -INT8_C( 3), INT8_C( 1),
-INT8_C( 5), INT8_C( 7), -INT8_C( 4), INT8_C( 4) },
{ UINT8_C( 5), UINT8_C( 255), UINT8_C( 255), UINT8_C( 115),
UINT8_C( 3), UINT8_C( 255), UINT8_C( 202), UINT8_C( 255),
UINT8_C( 255), UINT8_C( 255), UINT8_C( 7), UINT8_C( 255),
UINT8_C( 5), UINT8_C( 255), UINT8_C( 12), UINT8_C( 255) } },
{ { UINT8_C( 144), UINT8_C( 70), UINT8_C( 74), UINT8_C( 4),
UINT8_C( 109), UINT8_C( 142), UINT8_C( 116), UINT8_C( 159),
UINT8_C( 142), UINT8_C( 25), UINT8_C( 177), UINT8_C( 177),
UINT8_C( 76), UINT8_C( 150), UINT8_C( 86), UINT8_C( 238) },
{ INT8_C( 0), -INT8_C( 3), INT8_C( 3), -INT8_C( 3),
INT8_C( 5), -INT8_C( 4), -INT8_C( 3), -INT8_C( 2),
INT8_C( 3), -INT8_C( 4), -INT8_C( 3), INT8_C( 3),
INT8_C( 1), INT8_C( 5), INT8_C( 7), INT8_C( 5) },
{ UINT8_C( 144), UINT8_C( 9), UINT8_C( 255), UINT8_C( 1),
UINT8_C( 255), UINT8_C( 9), UINT8_C( 15), UINT8_C( 40),
UINT8_C( 255), UINT8_C( 2), UINT8_C( 22), UINT8_C( 255),
UINT8_C( 152), UINT8_C( 255), UINT8_C( 255), UINT8_C( 255) } },
{ { UINT8_C( 199), UINT8_C( 104), UINT8_C( 74), UINT8_C( 67),
UINT8_C( 128), UINT8_C( 140), UINT8_C( 56), UINT8_C( 104),
UINT8_C( 88), UINT8_C( 100), UINT8_C( 110), UINT8_C( 42),
UINT8_C( 123), UINT8_C( 111), UINT8_C( 252), UINT8_C( 156) },
{ -INT8_C( 8), INT8_C( 0), -INT8_C( 7), -INT8_C( 1),
-INT8_C( 8), INT8_C( 4), -INT8_C( 5), INT8_C( 4),
-INT8_C( 2), INT8_C( 5), INT8_C( 0), -INT8_C( 6),
INT8_C( 5), -INT8_C( 8), INT8_C( 8), INT8_C( 5) },
{ UINT8_C( 1), UINT8_C( 104), UINT8_C( 1), UINT8_C( 34),
UINT8_C( 1), UINT8_C( 255), UINT8_C( 2), UINT8_C( 255),
UINT8_C( 22), UINT8_C( 255), UINT8_C( 110), UINT8_C( 1),
UINT8_C( 255), UINT8_C( 0), UINT8_C( 255), UINT8_C( 255) } },
{ { UINT8_C( 140), UINT8_C( 24), UINT8_C( 20), UINT8_C( 116),
UINT8_C( 5), UINT8_C( 138), UINT8_C( 42), UINT8_C( 115),
UINT8_C( 111), UINT8_C( 129), UINT8_C( 142), UINT8_C( 213),
UINT8_C( 155), UINT8_C( 130), UINT8_C( 150), UINT8_C( 231) },
{ INT8_C( 2), -INT8_C( 8), -INT8_C( 8), -INT8_C( 6),
INT8_C( 1), -INT8_C( 5), INT8_C( 1), INT8_C( 2),
-INT8_C( 1), -INT8_C( 2), INT8_C( 5), INT8_C( 5),
-INT8_C( 3), INT8_C( 6), -INT8_C( 1), -INT8_C( 6) },
{ UINT8_C( 255), UINT8_C( 0), UINT8_C( 0), UINT8_C( 2),
UINT8_C( 10), UINT8_C( 4), UINT8_C( 84), UINT8_C( 255),
UINT8_C( 56), UINT8_C( 32), UINT8_C( 255), UINT8_C( 255),
UINT8_C( 19), UINT8_C( 255), UINT8_C( 75), UINT8_C( 4) } },
{ { UINT8_C( 123), UINT8_C( 36), UINT8_C( 41), UINT8_C( 105),
UINT8_C( 46), UINT8_C( 64), UINT8_C( 195), UINT8_C( 242),
UINT8_C( 155), UINT8_C( 176), UINT8_C( 255), UINT8_C( 148),
UINT8_C( 51), UINT8_C( 35), UINT8_C( 168), UINT8_C( 226) },
{ INT8_C( 0), INT8_C( 6), INT8_C( 5), -INT8_C( 6),
INT8_C( 1), -INT8_C( 5), -INT8_C( 4), INT8_C( 2),
INT8_C( 6), INT8_C( 3), -INT8_C( 1), INT8_C( 7),
-INT8_C( 2), -INT8_C( 2), -INT8_C( 1), INT8_C( 4) },
{ UINT8_C( 123), UINT8_C( 255), UINT8_C( 255), UINT8_C( 2),
UINT8_C( 92), UINT8_C( 2), UINT8_C( 12), UINT8_C( 255),
UINT8_C( 255), UINT8_C( 255), UINT8_C( 128), UINT8_C( 255),
UINT8_C( 13), UINT8_C( 9), UINT8_C( 84), UINT8_C( 255) } },
{ { UINT8_C( 209), UINT8_C( 246), UINT8_C( 234), UINT8_C( 223),
UINT8_C( 203), UINT8_C( 186), UINT8_C( 139), UINT8_C( 148),
UINT8_C( 180), UINT8_C( 18), UINT8_C( 7), UINT8_C( 172),
UINT8_C( 225), UINT8_C( 26), UINT8_C( 149), UINT8_C( 28) },
{ INT8_C( 5), -INT8_C( 1), INT8_C( 4), INT8_C( 1),
INT8_C( 1), INT8_C( 1), INT8_C( 7), -INT8_C( 5),
-INT8_C( 2), INT8_C( 4), -INT8_C( 7), INT8_C( 1),
-INT8_C( 3), -INT8_C( 2), INT8_C( 7), INT8_C( 0) },
{ UINT8_C( 255), UINT8_C( 123), UINT8_C( 255), UINT8_C( 255),
UINT8_C( 255), UINT8_C( 255), UINT8_C( 255), UINT8_C( 5),
UINT8_C( 45), UINT8_C( 255), UINT8_C( 0), UINT8_C( 255),
UINT8_C( 28), UINT8_C( 7), UINT8_C( 255), UINT8_C( 28) } },
{ { UINT8_C( 186), UINT8_C( 147), UINT8_C( 83), UINT8_C( 114),
UINT8_C( 130), UINT8_C( 80), UINT8_C( 252), UINT8_C( 63),
UINT8_C( 137), UINT8_C( 214), UINT8_C( 119), UINT8_C( 227),
UINT8_C( 29), UINT8_C( 181), UINT8_C( 148), UINT8_C( 21) },
{ INT8_C( 2), INT8_C( 0), INT8_C( 4), INT8_C( 1),
INT8_C( 8), -INT8_C( 6), INT8_C( 3), INT8_C( 6),
INT8_C( 5), -INT8_C( 2), -INT8_C( 6), INT8_C( 0),
INT8_C( 6), INT8_C( 5), INT8_C( 0), INT8_C( 7) },
{ UINT8_C( 255), UINT8_C( 147), UINT8_C( 255), UINT8_C( 228),
UINT8_C( 255), UINT8_C( 1), UINT8_C( 255), UINT8_C( 255),
UINT8_C( 255), UINT8_C( 54), UINT8_C( 2), UINT8_C( 227),
UINT8_C( 255), UINT8_C( 255), UINT8_C( 148), UINT8_C( 255) } },
};
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_int8x16_t b = simde_vld1q_s8(test_vec[i].b);
simde_uint8x16_t r = simde_vqrshlq_u8(a, b);
simde_test_arm_neon_assert_equal_u8x16(r, simde_vld1q_u8(test_vec[i].r));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_uint8x16_t a = simde_test_arm_neon_random_u8x16();
simde_int8x16_t b = simde_test_arm_neon_random_i8x16();
simde_uint8x16_t r = simde_vqrshlq_u8(a, b);
simde_test_arm_neon_write_u8x16(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_u8x16(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vqrshlq_u16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
uint16_t a[8];
int16_t b[8];
uint16_t r[8];
} test_vec[] = {
{ { UINT16_C( 61506), UINT16_C( 19083), UINT16_C( 60908), UINT16_C( 40546),
UINT16_C( 29927), UINT16_C( 62112), UINT16_C( 60795), UINT16_C( 39381) },
{ INT16_C( 5), -INT16_C( 9), -INT16_C( 2), -INT16_C( 8),
-INT16_C( 7), -INT16_C( 4), INT16_C( 4), -INT16_C( 9) },
{ UINT16_C( 65535), UINT16_C( 37), UINT16_C( 15227), UINT16_C( 158),
UINT16_C( 234), UINT16_C( 3882), UINT16_C( 65535), UINT16_C( 77) } },
{ { UINT16_C( 52703), UINT16_C( 30753), UINT16_C( 21922), UINT16_C( 13244),
UINT16_C( 23660), UINT16_C( 33835), UINT16_C( 6910), UINT16_C( 21793) },
{ -INT16_C( 11), -INT16_C( 12), INT16_C( 15), INT16_C( 11),
INT16_C( 6), -INT16_C( 1), -INT16_C( 16), -INT16_C( 1) },
{ UINT16_C( 26), UINT16_C( 8), UINT16_C( 65535), UINT16_C( 65535),
UINT16_C( 65535), UINT16_C( 16918), UINT16_C( 0), UINT16_C( 10897) } },
{ { UINT16_C( 49424), UINT16_C( 1272), UINT16_C( 11256), UINT16_C( 15451),
UINT16_C( 38439), UINT16_C( 22519), UINT16_C( 53624), UINT16_C( 56406) },
{ -INT16_C( 11), -INT16_C( 3), INT16_C( 10), -INT16_C( 10),
INT16_C( 12), INT16_C( 3), INT16_C( 9), INT16_C( 6) },
{ UINT16_C( 24), UINT16_C( 159), UINT16_C( 65535), UINT16_C( 15),
UINT16_C( 65535), UINT16_C( 65535), UINT16_C( 65535), UINT16_C( 65535) } },
{ { UINT16_C( 34648), UINT16_C( 38658), UINT16_C( 18124), UINT16_C( 29610),
UINT16_C( 34257), UINT16_C( 23288), UINT16_C( 2479), UINT16_C( 51223) },
{ -INT16_C( 11), -INT16_C( 3), INT16_C( 4), -INT16_C( 10),
INT16_C( 7), -INT16_C( 7), INT16_C( 10), INT16_C( 5) },
{ UINT16_C( 17), UINT16_C( 4832), UINT16_C( 65535), UINT16_C( 29),
UINT16_C( 65535), UINT16_C( 182), UINT16_C( 65535), UINT16_C( 65535) } },
{ { UINT16_C( 34910), UINT16_C( 29561), UINT16_C( 57208), UINT16_C( 321),
UINT16_C( 59682), UINT16_C( 10906), UINT16_C( 56329), UINT16_C( 122) },
{ -INT16_C( 9), INT16_C( 4), -INT16_C( 16), -INT16_C( 1),
INT16_C( 10), -INT16_C( 7), -INT16_C( 1), -INT16_C( 1) },
{ UINT16_C( 68), UINT16_C( 65535), UINT16_C( 1), UINT16_C( 161),
UINT16_C( 65535), UINT16_C( 85), UINT16_C( 28165), UINT16_C( 61) } },
{ { UINT16_C( 17592), UINT16_C( 628), UINT16_C( 30585), UINT16_C( 18746),
UINT16_C( 2909), UINT16_C( 4209), UINT16_C( 6780), UINT16_C( 29795) },
{ -INT16_C( 12), INT16_C( 9), -INT16_C( 11), -INT16_C( 9),
INT16_C( 8), INT16_C( 0), INT16_C( 1), INT16_C( 7) },
{ UINT16_C( 4), UINT16_C( 65535), UINT16_C( 15), UINT16_C( 37),
UINT16_C( 65535), UINT16_C( 4209), UINT16_C( 13560), UINT16_C( 65535) } },
{ { UINT16_C( 27761), UINT16_C( 46906), UINT16_C( 25315), UINT16_C( 54517),
UINT16_C( 3930), UINT16_C( 38934), UINT16_C( 33158), UINT16_C( 15978) },
{ -INT16_C( 5), INT16_C( 3), -INT16_C( 14), -INT16_C( 8),
-INT16_C( 13), INT16_C( 16), -INT16_C( 1), -INT16_C( 15) },
{ UINT16_C( 868), UINT16_C( 65535), UINT16_C( 2), UINT16_C( 213),
UINT16_C( 0), UINT16_C( 65535), UINT16_C( 16579), UINT16_C( 0) } },
{ { UINT16_C( 52730), UINT16_C( 21619), UINT16_C( 31344), UINT16_C( 36500),
UINT16_C( 25393), UINT16_C( 44945), UINT16_C( 18048), UINT16_C( 31672) },
{ -INT16_C( 6), -INT16_C( 9), -INT16_C( 7), INT16_C( 1),
INT16_C( 8), -INT16_C( 5), INT16_C( 0), INT16_C( 7) },
{ UINT16_C( 824), UINT16_C( 42), UINT16_C( 245), UINT16_C( 65535),
UINT16_C( 65535), UINT16_C( 1405), UINT16_C( 18048), UINT16_C( 65535) } },
};
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_int16x8_t b = simde_vld1q_s16(test_vec[i].b);
simde_uint16x8_t r = simde_vqrshlq_u16(a, b);
simde_test_arm_neon_assert_equal_u16x8(r, simde_vld1q_u16(test_vec[i].r));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_uint16x8_t a = simde_test_arm_neon_random_u16x8();
simde_int16x8_t b = simde_test_arm_neon_random_i16x8();
simde_uint16x8_t r = simde_vqrshlq_u16(a, b);
simde_test_arm_neon_write_u16x8(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_u16x8(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vqrshlq_u32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
uint32_t a[4];
int32_t b[4];
uint32_t r[4];
} test_vec[] = {
{ { UINT32_C( 1500975547), UINT32_C( 2108068888), UINT32_C( 2683398431), UINT32_C( 367549241) },
{ INT32_C( 32), INT32_C( 4), INT32_C( 12), INT32_C( 7) },
{ UINT32_C( 4294967295), UINT32_C( 4294967295), UINT32_C( 4294967295), UINT32_C( 4294967295) } },
{ { UINT32_C( 3541445283), UINT32_C( 2942869736), UINT32_C( 2791986498), UINT32_C( 3847214939) },
{ -INT32_C( 15), -INT32_C( 2), INT32_C( 3), -INT32_C( 5) },
{ UINT32_C( 108076), UINT32_C( 735717434), UINT32_C( 4294967295), UINT32_C( 120225467) } },
{ { UINT32_C( 2758985098), UINT32_C( 1301200120), UINT32_C( 2500937308), UINT32_C( 1482943544) },
{ -INT32_C( 15), INT32_C( 26), INT32_C( 4), -INT32_C( 31) },
{ UINT32_C( 84198), UINT32_C( 4294967295), UINT32_C( 4294967295), UINT32_C( 1) } },
{ { UINT32_C( 1695104610), UINT32_C( 2154042730), UINT32_C( 1247813531), UINT32_C( 539880566) },
{ -INT32_C( 5), -INT32_C( 21), INT32_C( 12), INT32_C( 6) },
{ UINT32_C( 52972019), UINT32_C( 1027), UINT32_C( 4294967295), UINT32_C( 4294967295) } },
{ { UINT32_C( 4087492662), UINT32_C( 442729018), UINT32_C( 640768667), UINT32_C( 1635123388) },
{ INT32_C( 7), -INT32_C( 3), INT32_C( 7), INT32_C( 31) },
{ UINT32_C( 4294967295), UINT32_C( 55341127), UINT32_C( 4294967295), UINT32_C( 4294967295) } },
{ { UINT32_C( 4260977946), UINT32_C( 2996827211), UINT32_C( 864415427), UINT32_C( 4108108071) },
{ -INT32_C( 16), INT32_C( 7), INT32_C( 10), -INT32_C( 27) },
{ UINT32_C( 65017), UINT32_C( 4294967295), UINT32_C( 4294967295), UINT32_C( 31) } },
{ { UINT32_C( 4249729102), UINT32_C( 3434311192), UINT32_C( 2916969933), UINT32_C( 1847713867) },
{ -INT32_C( 31), -INT32_C( 15), -INT32_C( 21), -INT32_C( 21) },
{ UINT32_C( 2), UINT32_C( 104807), UINT32_C( 1391), UINT32_C( 881) } },
{ { UINT32_C( 2544619547), UINT32_C( 3247194592), UINT32_C( 2391939879), UINT32_C( 2988854179) },
{ INT32_C( 5), INT32_C( 5), INT32_C( 30), -INT32_C( 29) },
{ UINT32_C( 4294967295), UINT32_C( 4294967295), UINT32_C( 4294967295), UINT32_C( 6) } },
};
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_int32x4_t b = simde_vld1q_s32(test_vec[i].b);
simde_uint32x4_t r = simde_vqrshlq_u32(a, b);
simde_test_arm_neon_assert_equal_u32x4(r, simde_vld1q_u32(test_vec[i].r));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_uint32x4_t a = simde_test_arm_neon_random_u32x4();
simde_int32x4_t b = simde_test_arm_neon_random_i32x4();
simde_uint32x4_t r = simde_vqrshlq_u32(a, b);
simde_test_arm_neon_write_u32x4(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_u32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vqrshlq_u64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
uint64_t a[2];
int64_t b[2];
uint64_t r[2];
} test_vec[] = {
{ { UINT64_C(12257908650438209556), UINT64_C( 734662789645664798) },
{ -INT64_C( 53), -INT64_C( 24) },
{ UINT64_C( 1361), UINT64_C( 43789314607) } },
{ { UINT64_C(15401328157929644581), UINT64_C(11927978306316211307) },
{ INT64_C( 54), -INT64_C( 26) },
{ UINT64_C(18446744073709551615), UINT64_C( 177740727459) } },
{ { UINT64_C( 9806006901024356755), UINT64_C( 2220988353704575177) },
{ INT64_C( 18), INT64_C( 48) },
{ UINT64_C(18446744073709551615), UINT64_C(18446744073709551615) } },
{ { UINT64_C(17911317278255258189), UINT64_C(16943905161406011814) },
{ INT64_C( 60), INT64_C( 1) },
{ UINT64_C(18446744073709551615), UINT64_C(18446744073709551615) } },
{ { UINT64_C( 2887718461795313073), UINT64_C(17639433086009224754) },
{ INT64_C( 32), INT64_C( 23) },
{ UINT64_C(18446744073709551615), UINT64_C(18446744073709551615) } },
{ { UINT64_C( 5907043747386205374), UINT64_C(11542381187061170644) },
{ INT64_C( 57), -INT64_C( 15) },
{ UINT64_C(18446744073709551615), UINT64_C( 352245519624670) } },
{ { UINT64_C(15325393461537196969), UINT64_C(16407202451519969415) },
{ -INT64_C( 15), -INT64_C( 50) },
{ UINT64_C( 467693892258826), UINT64_C( 14573) } },
{ { UINT64_C(17890801295880430688), UINT64_C(12355916188791687384) },
{ -INT64_C( 38), -INT64_C( 25) },
{ UINT64_C( 65086356), UINT64_C( 368234997654) } },
};
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_int64x2_t b = simde_vld1q_s64(test_vec[i].b);
simde_uint64x2_t r = simde_vqrshlq_u64(a, b);
simde_test_arm_neon_assert_equal_u64x2(r, simde_vld1q_u64(test_vec[i].r));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_uint64x2_t a = simde_test_arm_neon_random_u64x2();
simde_int64x2_t b = simde_test_arm_neon_random_i64x2();
simde_uint64x2_t r = simde_vqrshlq_u64(a, b);
simde_test_arm_neon_write_u64x2(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_u64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
SIMDE_TEST_FUNC_LIST_BEGIN
SIMDE_TEST_FUNC_LIST_ENTRY(vqrshlb_s8)
SIMDE_TEST_FUNC_LIST_ENTRY(vqrshlh_s16)
SIMDE_TEST_FUNC_LIST_ENTRY(vqrshls_s32)
SIMDE_TEST_FUNC_LIST_ENTRY(vqrshld_s64)
SIMDE_TEST_FUNC_LIST_ENTRY(vqrshlb_u8)
SIMDE_TEST_FUNC_LIST_ENTRY(vqrshlh_u16)
SIMDE_TEST_FUNC_LIST_ENTRY(vqrshls_u32)
SIMDE_TEST_FUNC_LIST_ENTRY(vqrshld_u64)
SIMDE_TEST_FUNC_LIST_ENTRY(vqrshl_s8)
SIMDE_TEST_FUNC_LIST_ENTRY(vqrshl_s16)
SIMDE_TEST_FUNC_LIST_ENTRY(vqrshl_s32)
SIMDE_TEST_FUNC_LIST_ENTRY(vqrshl_s64)
SIMDE_TEST_FUNC_LIST_ENTRY(vqrshl_u8)
SIMDE_TEST_FUNC_LIST_ENTRY(vqrshl_u16)
SIMDE_TEST_FUNC_LIST_ENTRY(vqrshl_u32)
SIMDE_TEST_FUNC_LIST_ENTRY(vqrshl_u64)
SIMDE_TEST_FUNC_LIST_ENTRY(vqrshlq_s8)
SIMDE_TEST_FUNC_LIST_ENTRY(vqrshlq_s16)
SIMDE_TEST_FUNC_LIST_ENTRY(vqrshlq_s32)
SIMDE_TEST_FUNC_LIST_ENTRY(vqrshlq_s64)
SIMDE_TEST_FUNC_LIST_ENTRY(vqrshlq_u8)
SIMDE_TEST_FUNC_LIST_ENTRY(vqrshlq_u16)
SIMDE_TEST_FUNC_LIST_ENTRY(vqrshlq_u32)
SIMDE_TEST_FUNC_LIST_ENTRY(vqrshlq_u64)
SIMDE_TEST_FUNC_LIST_END
#include "test-neon-footer.h"