Initial import of libdpf.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
commit
e4e666f459
4563 changed files with 1690372 additions and 0 deletions
1
thirdparty/simde/test/mips/declare-suites.h
vendored
Normal file
1
thirdparty/simde/test/mips/declare-suites.h
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
SIMDE_TEST_DECLARE_SUITE(msa)
|
||||
1
thirdparty/simde/test/mips/meson.build
vendored
Normal file
1
thirdparty/simde/test/mips/meson.build
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
subdir('msa')
|
||||
269
thirdparty/simde/test/mips/msa/add_a.c
vendored
Normal file
269
thirdparty/simde/test/mips/msa/add_a.c
vendored
Normal file
|
|
@ -0,0 +1,269 @@
|
|||
#define SIMDE_TEST_MIPS_MSA_INSN add_a
|
||||
|
||||
#include "test-msa.h"
|
||||
#include "../../../simde/mips/msa/add_a.h"
|
||||
|
||||
static int
|
||||
test_simde_add_a_b (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
int8_t a[16];
|
||||
int8_t b[16];
|
||||
int8_t r[16];
|
||||
} test_vec[] = {
|
||||
{ { -INT8_C( 87), -INT8_C( 78), INT8_C( 87), -INT8_C( 18), -INT8_C( 51), INT8_C( 101), -INT8_C( 94), INT8_C( 94),
|
||||
-INT8_C( 28), INT8_C( 86), -INT8_C( 70), -INT8_C( 30), -INT8_C( 14), INT8_C( 19), -INT8_C( 74), -INT8_C( 122) },
|
||||
{ INT8_C( 25), INT8_C( 95), INT8_C( 48), INT8_C( 122), INT8_C( 1), INT8_C( 54), -INT8_C( 71), -INT8_C( 112),
|
||||
-INT8_C( 24), -INT8_C( 64), -INT8_C( 97), -INT8_C( 71), -INT8_C( 86), INT8_C( 70), INT8_C( 16), INT8_C( 83) },
|
||||
{ INT8_C( 112), -INT8_C( 83), -INT8_C( 121), -INT8_C( 116), INT8_C( 52), -INT8_C( 101), -INT8_C( 91), -INT8_C( 50),
|
||||
INT8_C( 52), -INT8_C( 106), -INT8_C( 89), INT8_C( 101), INT8_C( 100), INT8_C( 89), INT8_C( 90), -INT8_C( 51) } },
|
||||
{ { -INT8_C( 8), INT8_C( 103), INT8_C( 66), -INT8_C( 59), -INT8_C( 51), -INT8_C( 28), INT8_C( 36), -INT8_C( 79),
|
||||
INT8_C( 58), -INT8_C( 34), -INT8_C( 109), INT8_C( 44), -INT8_C( 15), INT8_C( 73), -INT8_C( 78), INT8_C( 10) },
|
||||
{ -INT8_C( 88), -INT8_C( 30), -INT8_C( 123), -INT8_C( 87), INT8_C( 25), INT8_C( 62), INT8_C( 57), INT8_C( 1),
|
||||
-INT8_C( 1), -INT8_C( 40), -INT8_C( 70), -INT8_C( 87), INT8_C( 31), -INT8_C( 54), -INT8_C( 4), INT8_C( 23) },
|
||||
{ INT8_C( 96), -INT8_C( 123), -INT8_C( 67), -INT8_C( 110), INT8_C( 76), INT8_C( 90), INT8_C( 93), INT8_C( 80),
|
||||
INT8_C( 59), INT8_C( 74), -INT8_C( 77), -INT8_C( 125), INT8_C( 46), INT8_MAX, INT8_C( 82), INT8_C( 33) } },
|
||||
{ { INT8_C( 50), INT8_C( 62), -INT8_C( 35), -INT8_C( 1), INT8_C( 34), INT8_C( 1), -INT8_C( 80), INT8_C( 92),
|
||||
-INT8_C( 33), INT8_C( 67), -INT8_C( 120), -INT8_C( 47), -INT8_C( 115), INT8_C( 59), -INT8_C( 37), INT8_C( 53) },
|
||||
{ INT8_C( 29), INT8_C( 96), -INT8_C( 33), INT8_C( 54), -INT8_C( 97), INT8_C( 24), INT8_C( 55), -INT8_C( 98),
|
||||
-INT8_C( 15), -INT8_C( 14), INT8_C( 71), INT8_C( 16), -INT8_C( 68), INT8_C( 67), INT8_C( 39), -INT8_C( 18) },
|
||||
{ INT8_C( 79), -INT8_C( 98), INT8_C( 68), INT8_C( 55), -INT8_C( 125), INT8_C( 25), -INT8_C( 121), -INT8_C( 66),
|
||||
INT8_C( 48), INT8_C( 81), -INT8_C( 65), INT8_C( 63), -INT8_C( 73), INT8_C( 126), INT8_C( 76), INT8_C( 71) } },
|
||||
{ { -INT8_C( 126), INT8_C( 4), -INT8_C( 19), -INT8_C( 92), INT8_C( 5), -INT8_C( 99), INT8_C( 1), -INT8_C( 27),
|
||||
-INT8_C( 31), -INT8_C( 119), -INT8_C( 74), INT8_C( 110), -INT8_C( 60), -INT8_C( 111), -INT8_C( 93), -INT8_C( 30) },
|
||||
{ -INT8_C( 14), -INT8_C( 126), INT8_C( 24), -INT8_C( 111), -INT8_C( 101), INT8_C( 80), INT8_C( 47), -INT8_C( 116),
|
||||
INT8_C( 66), INT8_C( 118), -INT8_C( 100), -INT8_C( 2), -INT8_C( 71), -INT8_C( 61), -INT8_C( 19), INT8_C( 59) },
|
||||
{ -INT8_C( 116), -INT8_C( 126), INT8_C( 43), -INT8_C( 53), INT8_C( 106), -INT8_C( 77), INT8_C( 48), -INT8_C( 113),
|
||||
INT8_C( 97), -INT8_C( 19), -INT8_C( 82), INT8_C( 112), -INT8_C( 125), -INT8_C( 84), INT8_C( 112), INT8_C( 89) } },
|
||||
{ { -INT8_C( 56), -INT8_C( 38), -INT8_C( 32), -INT8_C( 51), INT8_C( 120), -INT8_C( 31), -INT8_C( 78), INT8_C( 89),
|
||||
INT8_C( 106), INT8_C( 104), -INT8_C( 57), INT8_C( 47), -INT8_C( 6), INT8_C( 106), INT8_C( 17), -INT8_C( 20) },
|
||||
{ -INT8_C( 19), INT8_C( 41), INT8_C( 125), -INT8_C( 120), INT8_C( 121), -INT8_C( 84), INT8_C( 20), -INT8_C( 69),
|
||||
INT8_C( 34), -INT8_C( 80), -INT8_C( 70), -INT8_C( 37), INT8_C( 115), -INT8_C( 89), INT8_C( 23), INT8_C( 59) },
|
||||
{ INT8_C( 75), INT8_C( 79), -INT8_C( 99), -INT8_C( 85), -INT8_C( 15), INT8_C( 115), INT8_C( 98), -INT8_C( 98),
|
||||
-INT8_C( 116), -INT8_C( 72), INT8_MAX, INT8_C( 84), INT8_C( 121), -INT8_C( 61), INT8_C( 40), INT8_C( 79) } },
|
||||
{ { -INT8_C( 127), -INT8_C( 9), INT8_C( 9), -INT8_C( 7), -INT8_C( 40), -INT8_C( 69), INT8_C( 82), INT8_C( 66),
|
||||
INT8_C( 36), INT8_C( 25), INT8_C( 113), INT8_C( 30), -INT8_C( 124), -INT8_C( 126), INT8_C( 10), INT8_C( 113) },
|
||||
{ -INT8_C( 84), -INT8_C( 121), -INT8_C( 7), INT8_C( 37), INT8_C( 51), INT8_C( 13), -INT8_C( 31), INT8_C( 85),
|
||||
-INT8_C( 67), -INT8_C( 101), INT8_C( 48), INT8_C( 48), INT8_C( 66), INT8_C( 71), INT8_C( 108), -INT8_C( 61) },
|
||||
{ -INT8_C( 45), -INT8_C( 126), INT8_C( 16), INT8_C( 44), INT8_C( 91), INT8_C( 82), INT8_C( 113), -INT8_C( 105),
|
||||
INT8_C( 103), INT8_C( 126), -INT8_C( 95), INT8_C( 78), -INT8_C( 66), -INT8_C( 59), INT8_C( 118), -INT8_C( 82) } },
|
||||
{ { INT8_C( 62), INT8_C( 117), -INT8_C( 67), INT8_C( 22), INT8_C( 48), INT8_C( 15), INT8_C( 89), INT8_C( 84),
|
||||
INT8_C( 41), -INT8_C( 54), INT8_C( 114), -INT8_C( 83), INT8_C( 77), INT8_C( 124), INT8_C( 30), -INT8_C( 7) },
|
||||
{ INT8_C( 3), INT8_C( 23), INT8_C( 30), INT8_C( 54), INT8_C( 36), -INT8_C( 1), -INT8_C( 117), -INT8_C( 31),
|
||||
-INT8_C( 102), -INT8_C( 68), INT8_C( 17), -INT8_C( 36), INT8_C( 3), INT8_C( 125), -INT8_C( 96), INT8_C( 66) },
|
||||
{ INT8_C( 65), -INT8_C( 116), INT8_C( 97), INT8_C( 76), INT8_C( 84), INT8_C( 16), -INT8_C( 50), INT8_C( 115),
|
||||
-INT8_C( 113), INT8_C( 122), -INT8_C( 125), INT8_C( 119), INT8_C( 80), -INT8_C( 7), INT8_C( 126), INT8_C( 73) } },
|
||||
{ { -INT8_C( 14), INT8_C( 93), INT8_C( 88), INT8_C( 35), INT8_C( 108), -INT8_C( 79), INT8_C( 119), -INT8_C( 107),
|
||||
INT8_C( 124), -INT8_C( 22), INT8_C( 66), -INT8_C( 55), INT8_C( 102), INT8_C( 96), -INT8_C( 62), INT8_C( 106) },
|
||||
{ INT8_C( 119), -INT8_C( 32), -INT8_C( 96), -INT8_C( 101), -INT8_C( 32), INT8_C( 44), INT8_C( 124), INT8_C( 122),
|
||||
-INT8_C( 24), -INT8_C( 114), INT8_C( 87), -INT8_C( 21), INT8_C( 11), -INT8_C( 9), INT8_C( 45), -INT8_C( 2) },
|
||||
{ -INT8_C( 123), INT8_C( 125), -INT8_C( 72), -INT8_C( 120), -INT8_C( 116), INT8_C( 123), -INT8_C( 13), -INT8_C( 27),
|
||||
-INT8_C( 108), -INT8_C( 120), -INT8_C( 103), INT8_C( 76), INT8_C( 113), INT8_C( 105), INT8_C( 107), INT8_C( 108) } }
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_v16i8 a = simde_msa_ld_b(test_vec[i].a, 0);
|
||||
simde_v16i8 b = simde_msa_ld_b(test_vec[i].b, 0);
|
||||
simde_v16i8 r = simde_msa_add_a_b(a, b);
|
||||
|
||||
simde_test_msa_v16i8_assert_equal(r, simde_msa_ld_b(test_vec[i].r, 0));
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_v16i8 a = simde_test_msa_v16i8_random();
|
||||
simde_v16i8 b = simde_test_msa_v16i8_random();
|
||||
simde_v16i8 r = simde_msa_add_a_b(a, b);
|
||||
|
||||
simde_test_msa_v16i8_write(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_msa_v16i8_write(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v16i8_write(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_add_a_h (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
int16_t a[8];
|
||||
int16_t b[8];
|
||||
int16_t r[8];
|
||||
} test_vec[] = {
|
||||
{ { -INT16_C( 31148), -INT16_C( 16351), -INT16_C( 26569), -INT16_C( 19626), -INT16_C( 26494), -INT16_C( 5764), INT16_C( 16121), INT16_C( 28755) },
|
||||
{ -INT16_C( 3297), -INT16_C( 244), -INT16_C( 30689), INT16_C( 1913), -INT16_C( 12266), INT16_C( 8947), INT16_C( 8391), INT16_C( 6944) },
|
||||
{ -INT16_C( 31091), INT16_C( 16595), -INT16_C( 8278), INT16_C( 21539), -INT16_C( 26776), INT16_C( 14711), INT16_C( 24512), -INT16_C( 29837) } },
|
||||
{ { INT16_C( 16806), -INT16_C( 8484), INT16_C( 13017), INT16_C( 23697), INT16_C( 3786), -INT16_C( 15547), -INT16_C( 26548), INT16_C( 27444) },
|
||||
{ INT16_C( 16523), -INT16_C( 21654), -INT16_C( 6968), -INT16_C( 8270), -INT16_C( 23116), INT16_C( 31745), INT16_C( 8646), INT16_C( 27799) },
|
||||
{ -INT16_C( 32207), INT16_C( 30138), INT16_C( 19985), INT16_C( 31967), INT16_C( 26902), -INT16_C( 18244), -INT16_C( 30342), -INT16_C( 10293) } },
|
||||
{ { INT16_C( 29538), INT16_C( 15178), -INT16_C( 9051), INT16_C( 28823), -INT16_C( 8982), INT16_C( 13875), INT16_C( 26484), INT16_C( 162) },
|
||||
{ INT16_C( 3239), INT16_C( 28843), INT16_C( 24048), -INT16_C( 23217), INT16_C( 20483), -INT16_C( 14047), -INT16_C( 18319), -INT16_C( 11467) },
|
||||
{ -INT16_C( 32759), -INT16_C( 21515), -INT16_C( 32437), -INT16_C( 13496), INT16_C( 29465), INT16_C( 27922), -INT16_C( 20733), INT16_C( 11629) } },
|
||||
{ { -INT16_C( 32724), -INT16_C( 12018), -INT16_C( 22948), INT16_C( 17985), INT16_C( 30082), -INT16_C( 2180), INT16_C( 7900), -INT16_C( 31497) },
|
||||
{ -INT16_C( 24021), INT16_C( 7156), INT16_C( 17407), INT16_C( 704), -INT16_C( 7789), INT16_C( 1227), INT16_C( 410), -INT16_C( 14633) },
|
||||
{ -INT16_C( 8791), INT16_C( 19174), -INT16_C( 25181), INT16_C( 18689), -INT16_C( 27665), INT16_C( 3407), INT16_C( 8310), -INT16_C( 19406) } },
|
||||
{ { -INT16_C( 6783), -INT16_C( 8809), -INT16_C( 9845), INT16_C( 3619), -INT16_C( 24754), INT16_C( 10757), -INT16_C( 834), -INT16_C( 5714) },
|
||||
{ -INT16_C( 23906), -INT16_C( 25340), -INT16_C( 14875), INT16_C( 30880), INT16_C( 27558), INT16_C( 16508), INT16_C( 21356), -INT16_C( 4858) },
|
||||
{ INT16_C( 30689), -INT16_C( 31387), INT16_C( 24720), -INT16_C( 31037), -INT16_C( 13224), INT16_C( 27265), INT16_C( 22190), INT16_C( 10572) } },
|
||||
{ { -INT16_C( 25031), -INT16_C( 15158), -INT16_C( 4745), -INT16_C( 14894), -INT16_C( 10355), INT16_C( 19439), -INT16_C( 24877), INT16_C( 28980) },
|
||||
{ INT16_C( 14400), INT16_C( 9743), -INT16_C( 20483), -INT16_C( 23394), INT16_C( 6938), -INT16_C( 30748), -INT16_C( 5266), -INT16_C( 22668) },
|
||||
{ -INT16_C( 26105), INT16_C( 24901), INT16_C( 25228), -INT16_C( 27248), INT16_C( 17293), -INT16_C( 15349), INT16_C( 30143), -INT16_C( 13888) } },
|
||||
{ { INT16_C( 16265), INT16_C( 108), INT16_C( 15916), -INT16_C( 17979), -INT16_C( 19434), -INT16_C( 5884), INT16_C( 14418), -INT16_C( 27813) },
|
||||
{ INT16_C( 27249), INT16_C( 28345), INT16_C( 22297), INT16_C( 13074), -INT16_C( 2190), -INT16_C( 7750), INT16_C( 12258), INT16_C( 27528) },
|
||||
{ -INT16_C( 22022), INT16_C( 28453), -INT16_C( 27323), INT16_C( 31053), INT16_C( 21624), INT16_C( 13634), INT16_C( 26676), -INT16_C( 10195) } },
|
||||
{ { -INT16_C( 2962), -INT16_C( 26005), INT16_C( 12339), INT16_C( 18772), INT16_C( 22756), INT16_C( 14130), -INT16_C( 29295), INT16_C( 714) },
|
||||
{ -INT16_C( 31753), INT16_C( 4208), -INT16_C( 31782), INT16_C( 19780), -INT16_C( 390), INT16_C( 23598), -INT16_C( 18899), -INT16_C( 25657) },
|
||||
{ -INT16_C( 30821), INT16_C( 30213), -INT16_C( 21415), -INT16_C( 26984), INT16_C( 23146), -INT16_C( 27808), -INT16_C( 17342), INT16_C( 26371) } }
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_v8i16 a = simde_msa_ld_h(test_vec[i].a, 0);
|
||||
simde_v8i16 b = simde_msa_ld_h(test_vec[i].b, 0);
|
||||
simde_v8i16 r = simde_msa_add_a_h(a, b);
|
||||
|
||||
simde_test_msa_v8i16_assert_equal(r, simde_msa_ld_h(test_vec[i].r, 0));
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_v8i16 a = simde_test_msa_v8i16_random();
|
||||
simde_v8i16 b = simde_test_msa_v8i16_random();
|
||||
simde_v8i16 r = simde_msa_add_a_h(a, b);
|
||||
|
||||
simde_test_msa_v8i16_write(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_msa_v8i16_write(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v8i16_write(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_add_a_w (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
int32_t a[4];
|
||||
int32_t b[4];
|
||||
int32_t r[4];
|
||||
} test_vec[] = {
|
||||
{ { -INT32_C( 566873429), INT32_C( 1176996450), INT32_C( 1937594850), -INT32_C( 562739225) },
|
||||
{ -INT32_C( 1511004470), -INT32_C( 470666391), INT32_C( 1597972529), -INT32_C( 2114320682) },
|
||||
{ INT32_C( 2077877899), INT32_C( 1647662841), -INT32_C( 759399917), -INT32_C( 1617907389) } },
|
||||
{ { -INT32_C( 1705037768), -INT32_C( 1646229830), -INT32_C( 955228448), INT32_C( 1889896101) },
|
||||
{ -INT32_C( 720006036), -INT32_C( 105379897), -INT32_C( 44501209), INT32_C( 897536765) },
|
||||
{ -INT32_C( 1869923492), INT32_C( 1751609727), INT32_C( 999729657), -INT32_C( 1507534430) } },
|
||||
{ { INT32_C( 1037033091), INT32_C( 1171959653), -INT32_C( 1290999027), -INT32_C( 584863375) },
|
||||
{ INT32_C( 229783622), INT32_C( 1711696447), INT32_C( 1583570529), INT32_C( 882107057) },
|
||||
{ INT32_C( 1266816713), -INT32_C( 1411311196), -INT32_C( 1420397740), INT32_C( 1466970432) } },
|
||||
{ { INT32_C( 644965057), INT32_C( 527125521), -INT32_C( 1462601929), INT32_C( 1854272808) },
|
||||
{ INT32_C( 1820079917), INT32_C( 47350433), -INT32_C( 1839188511), -INT32_C( 641273064) },
|
||||
{ -INT32_C( 1829922322), INT32_C( 574475954), -INT32_C( 993176856), -INT32_C( 1799421424) } },
|
||||
{ { INT32_C( 1728001877), -INT32_C( 1165661565), INT32_C( 157439969), INT32_C( 2037966668) },
|
||||
{ -INT32_C( 1075448802), INT32_C( 1472313206), INT32_C( 99164653), INT32_C( 1776201492) },
|
||||
{ -INT32_C( 1491516617), -INT32_C( 1656992525), INT32_C( 256604622), -INT32_C( 480799136) } },
|
||||
{ { INT32_C( 1792073191), INT32_C( 673535303), -INT32_C( 114194515), -INT32_C( 1921799825) },
|
||||
{ INT32_C( 340613277), -INT32_C( 43315696), INT32_C( 1141003568), -INT32_C( 340860924) },
|
||||
{ INT32_C( 2132686468), INT32_C( 716850999), INT32_C( 1255198083), -INT32_C( 2032306547) } },
|
||||
{ { INT32_C( 72777405), -INT32_C( 2144568365), INT32_C( 1903844610), -INT32_C( 1526731513) },
|
||||
{ INT32_C( 1438141509), -INT32_C( 1974328230), INT32_C( 2110739577), -INT32_C( 244744908) },
|
||||
{ INT32_C( 1510918914), -INT32_C( 176070701), -INT32_C( 280383109), INT32_C( 1771476421) } },
|
||||
{ { -INT32_C( 822755333), INT32_C( 1011818810), -INT32_C( 2035365505), -INT32_C( 81089098) },
|
||||
{ INT32_C( 1397875705), -INT32_C( 2132892921), INT32_C( 754822648), INT32_C( 622749226) },
|
||||
{ -INT32_C( 2074336258), -INT32_C( 1150255565), -INT32_C( 1504779143), INT32_C( 703838324) } }
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_v4i32 a = simde_msa_ld_w(test_vec[i].a, 0);
|
||||
simde_v4i32 b = simde_msa_ld_w(test_vec[i].b, 0);
|
||||
simde_v4i32 r = simde_msa_add_a_w(a, b);
|
||||
|
||||
simde_test_msa_v4i32_assert_equal(r, simde_msa_ld_w(test_vec[i].r, 0));
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_v4i32 a = simde_test_msa_v4i32_random();
|
||||
simde_v4i32 b = simde_test_msa_v4i32_random();
|
||||
simde_v4i32 r = simde_msa_add_a_w(a, b);
|
||||
|
||||
simde_test_msa_v4i32_write(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_msa_v4i32_write(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v4i32_write(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_add_a_d (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
int64_t a[2];
|
||||
int64_t b[2];
|
||||
int64_t r[2];
|
||||
} test_vec[] = {
|
||||
{ { -INT64_C( 5432394253505195227), -INT64_C( 1099611718747010549) },
|
||||
{ -INT64_C( 6210989790691389881), INT64_C( 6349499549422636238) },
|
||||
{ -INT64_C( 6803360029512966508), INT64_C( 7449111268169646787) } },
|
||||
{ { INT64_C( 6913117044979732743), -INT64_C( 2989020643931968867) },
|
||||
{ -INT64_C( 5168175337671636757), INT64_C( 1750437977373285567) },
|
||||
{ -INT64_C( 6365451691058182116), INT64_C( 4739458621305254434) } },
|
||||
{ { -INT64_C( 967916212689042977), INT64_C( 8923050949783040623) },
|
||||
{ -INT64_C( 5947743357700080941), -INT64_C( 3268511672312060549) },
|
||||
{ INT64_C( 6915659570389123918), -INT64_C( 6255181451614450444) } },
|
||||
{ { -INT64_C( 6038598960555886358), -INT64_C( 7470485773940442808) },
|
||||
{ INT64_C( 4905768860484201338), -INT64_C( 8667894790130453521) },
|
||||
{ -INT64_C( 7502376252669463920), -INT64_C( 2308363509638655287) } },
|
||||
{ { -INT64_C( 7397733783278536085), -INT64_C( 428188858531643215) },
|
||||
{ INT64_C( 2034912546470847279), -INT64_C( 1419278738557825751) },
|
||||
{ -INT64_C( 9014097743960168252), INT64_C( 1847467597089468966) } },
|
||||
{ { -INT64_C( 4802268712145710225), -INT64_C( 4655524026281374742) },
|
||||
{ INT64_C( 7345078779069908388), INT64_C( 1328976004448513283) },
|
||||
{ -INT64_C( 6299396582493933003), INT64_C( 5984500030729888025) } },
|
||||
{ { -INT64_C( 2714213788569958773), INT64_C( 7946505655341582584) },
|
||||
{ -INT64_C( 500410871655169939), INT64_C( 4382265984115685659) },
|
||||
{ INT64_C( 3214624660225128712), -INT64_C( 6117972434252283373) } },
|
||||
{ { -INT64_C( 4053475166719270155), INT64_C( 1795413064712913841) },
|
||||
{ INT64_C( 8324568940466481814), -INT64_C( 1660137266343771128) },
|
||||
{ -INT64_C( 6068699966523799647), INT64_C( 3455550331056684969) } }
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_v2i64 a = simde_msa_ld_d(test_vec[i].a, 0);
|
||||
simde_v2i64 b = simde_msa_ld_d(test_vec[i].b, 0);
|
||||
simde_v2i64 r = simde_msa_add_a_d(a, b);
|
||||
|
||||
simde_test_msa_v2i64_assert_equal(r, simde_msa_ld_d(test_vec[i].r, 0));
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_v2i64 a = simde_test_msa_v2i64_random();
|
||||
simde_v2i64 b = simde_test_msa_v2i64_random();
|
||||
simde_v2i64 r = simde_msa_add_a_d(a, b);
|
||||
|
||||
simde_test_msa_v2i64_write(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_msa_v2i64_write(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v2i64_write(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
SIMDE_TEST_FUNC_LIST_BEGIN
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(add_a_b)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(add_a_h)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(add_a_w)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(add_a_d)
|
||||
SIMDE_TEST_FUNC_LIST_END
|
||||
|
||||
#include "test-msa-footer.h"
|
||||
529
thirdparty/simde/test/mips/msa/adds.c
vendored
Normal file
529
thirdparty/simde/test/mips/msa/adds.c
vendored
Normal file
|
|
@ -0,0 +1,529 @@
|
|||
#define SIMDE_TEST_MIPS_MSA_INSN adds
|
||||
|
||||
#include "test-msa.h"
|
||||
#include "../../../simde/mips/msa/adds.h"
|
||||
|
||||
static int
|
||||
test_simde_adds_s_b (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
int8_t a[16];
|
||||
int8_t b[16];
|
||||
int8_t r[16];
|
||||
} test_vec[] = {
|
||||
{ { -INT8_C( 53), -INT8_C( 15), INT8_C( 120), -INT8_C( 91), INT8_C( 31), INT8_C( 83), -INT8_C( 2), -INT8_C( 62),
|
||||
-INT8_C( 117), -INT8_C( 67), -INT8_C( 40), -INT8_C( 64), -INT8_C( 94), INT8_C( 63), INT8_C( 23), -INT8_C( 126) },
|
||||
{ -INT8_C( 74), INT8_C( 103), -INT8_C( 35), INT8_C( 48), INT8_C( 33), INT8_C( 34), INT8_C( 120), INT8_C( 39),
|
||||
-INT8_C( 72), -INT8_C( 77), INT8_C( 53), -INT8_C( 64), INT8_C( 1), INT8_C( 112), -INT8_C( 47), -INT8_C( 52) },
|
||||
{ -INT8_C( 127), INT8_C( 88), INT8_C( 85), -INT8_C( 43), INT8_C( 64), INT8_C( 117), INT8_C( 118), -INT8_C( 23),
|
||||
INT8_MIN, INT8_MIN, INT8_C( 13), INT8_MIN, -INT8_C( 93), INT8_MAX, -INT8_C( 24), INT8_MIN } },
|
||||
{ { INT8_C( 97), INT8_C( 73), INT8_C( 113), INT8_MIN, -INT8_C( 100), INT8_C( 111), INT8_C( 67), INT8_C( 39),
|
||||
INT8_C( 45), INT8_C( 27), -INT8_C( 24), -INT8_C( 49), INT8_C( 90), -INT8_C( 1), INT8_C( 81), INT8_C( 16) },
|
||||
{ INT8_C( 102), INT8_C( 46), INT8_C( 64), -INT8_C( 121), INT8_C( 80), -INT8_C( 72), -INT8_C( 82), INT8_C( 8),
|
||||
INT8_C( 107), -INT8_C( 29), -INT8_C( 56), INT8_C( 108), INT8_C( 83), -INT8_C( 102), INT8_C( 56), -INT8_C( 76) },
|
||||
{ INT8_MAX, INT8_C( 119), INT8_MAX, INT8_MIN, -INT8_C( 20), INT8_C( 39), -INT8_C( 15), INT8_C( 47),
|
||||
INT8_MAX, -INT8_C( 2), -INT8_C( 80), INT8_C( 59), INT8_MAX, -INT8_C( 103), INT8_MAX, -INT8_C( 60) } },
|
||||
{ { -INT8_C( 29), -INT8_C( 87), INT8_C( 53), INT8_MIN, INT8_C( 25), INT8_C( 120), -INT8_C( 89), INT8_C( 70),
|
||||
-INT8_C( 109), -INT8_C( 113), INT8_C( 21), -INT8_C( 19), -INT8_C( 114), INT8_C( 102), -INT8_C( 3), -INT8_C( 12) },
|
||||
{ -INT8_C( 108), INT8_C( 61), INT8_C( 123), -INT8_C( 28), -INT8_C( 11), INT8_C( 42), -INT8_C( 20), INT8_C( 96),
|
||||
INT8_C( 13), -INT8_C( 75), -INT8_C( 52), INT8_C( 97), INT8_C( 79), INT8_C( 4), INT8_C( 21), INT8_C( 50) },
|
||||
{ INT8_MIN, -INT8_C( 26), INT8_MAX, INT8_MIN, INT8_C( 14), INT8_MAX, -INT8_C( 109), INT8_MAX,
|
||||
-INT8_C( 96), INT8_MIN, -INT8_C( 31), INT8_C( 78), -INT8_C( 35), INT8_C( 106), INT8_C( 18), INT8_C( 38) } },
|
||||
{ { -INT8_C( 83), INT8_C( 74), -INT8_C( 78), -INT8_C( 58), -INT8_C( 62), INT8_C( 90), INT8_C( 12), INT8_C( 85),
|
||||
-INT8_C( 23), INT8_C( 33), INT8_C( 66), INT8_C( 120), -INT8_C( 121), INT8_C( 63), INT8_C( 108), INT8_C( 27) },
|
||||
{ INT8_C( 124), -INT8_C( 24), -INT8_C( 1), INT8_C( 113), INT8_C( 18), -INT8_C( 20), -INT8_C( 47), INT8_C( 31),
|
||||
-INT8_C( 95), -INT8_C( 99), INT8_MIN, -INT8_C( 16), -INT8_C( 95), -INT8_C( 106), INT8_C( 34), INT8_C( 79) },
|
||||
{ INT8_C( 41), INT8_C( 50), -INT8_C( 79), INT8_C( 55), -INT8_C( 44), INT8_C( 70), -INT8_C( 35), INT8_C( 116),
|
||||
-INT8_C( 118), -INT8_C( 66), -INT8_C( 62), INT8_C( 104), INT8_MIN, -INT8_C( 43), INT8_MAX, INT8_C( 106) } },
|
||||
{ { -INT8_C( 32), -INT8_C( 43), INT8_C( 21), -INT8_C( 93), INT8_C( 47), INT8_C( 34), -INT8_C( 8), INT8_C( 24),
|
||||
INT8_C( 67), INT8_C( 59), -INT8_C( 112), -INT8_C( 53), INT8_C( 122), -INT8_C( 3), -INT8_C( 26), -INT8_C( 9) },
|
||||
{ -INT8_C( 27), -INT8_C( 26), INT8_C( 104), -INT8_C( 9), -INT8_C( 46), INT8_C( 58), INT8_C( 22), INT8_C( 115),
|
||||
-INT8_C( 41), -INT8_C( 105), INT8_C( 99), INT8_C( 121), INT8_C( 45), -INT8_C( 123), -INT8_C( 56), INT8_C( 13) },
|
||||
{ -INT8_C( 59), -INT8_C( 69), INT8_C( 125), -INT8_C( 102), INT8_C( 1), INT8_C( 92), INT8_C( 14), INT8_MAX,
|
||||
INT8_C( 26), -INT8_C( 46), -INT8_C( 13), INT8_C( 68), INT8_MAX, -INT8_C( 126), -INT8_C( 82), INT8_C( 4) } },
|
||||
{ { INT8_C( 90), -INT8_C( 35), -INT8_C( 80), -INT8_C( 119), -INT8_C( 1), -INT8_C( 87), -INT8_C( 94), INT8_C( 67),
|
||||
-INT8_C( 28), INT8_C( 50), INT8_C( 14), INT8_C( 94), INT8_C( 47), -INT8_C( 12), INT8_C( 85), INT8_C( 20) },
|
||||
{ -INT8_C( 38), -INT8_C( 66), INT8_C( 11), -INT8_C( 84), -INT8_C( 8), INT8_C( 34), INT8_C( 31), -INT8_C( 49),
|
||||
-INT8_C( 71), -INT8_C( 126), INT8_C( 72), -INT8_C( 26), INT8_C( 8), INT8_C( 16), -INT8_C( 13), INT8_C( 98) },
|
||||
{ INT8_C( 52), -INT8_C( 101), -INT8_C( 69), INT8_MIN, -INT8_C( 9), -INT8_C( 53), -INT8_C( 63), INT8_C( 18),
|
||||
-INT8_C( 99), -INT8_C( 76), INT8_C( 86), INT8_C( 68), INT8_C( 55), INT8_C( 4), INT8_C( 72), INT8_C( 118) } },
|
||||
{ { -INT8_C( 18), -INT8_C( 92), -INT8_C( 20), -INT8_C( 19), INT8_C( 77), -INT8_C( 114), INT8_C( 48), INT8_C( 49),
|
||||
-INT8_C( 64), INT8_C( 62), -INT8_C( 113), -INT8_C( 16), INT8_C( 51), -INT8_C( 27), INT8_C( 4), INT8_C( 13) },
|
||||
{ -INT8_C( 93), INT8_C( 16), -INT8_C( 70), -INT8_C( 101), INT8_C( 50), -INT8_C( 39), INT8_C( 106), -INT8_C( 21),
|
||||
INT8_C( 92), -INT8_C( 77), -INT8_C( 47), INT8_C( 100), -INT8_C( 61), -INT8_C( 60), -INT8_C( 58), -INT8_C( 79) },
|
||||
{ -INT8_C( 111), -INT8_C( 76), -INT8_C( 90), -INT8_C( 120), INT8_MAX, INT8_MIN, INT8_MAX, INT8_C( 28),
|
||||
INT8_C( 28), -INT8_C( 15), INT8_MIN, INT8_C( 84), -INT8_C( 10), -INT8_C( 87), -INT8_C( 54), -INT8_C( 66) } },
|
||||
{ { INT8_C( 104), -INT8_C( 78), -INT8_C( 97), -INT8_C( 75), INT8_C( 64), -INT8_C( 49), -INT8_C( 26), INT8_C( 1),
|
||||
INT8_C( 14), INT8_C( 118), -INT8_C( 15), INT8_C( 65), INT8_C( 91), -INT8_C( 11), INT8_C( 78), -INT8_C( 2) },
|
||||
{ INT8_C( 5), INT8_C( 8), -INT8_C( 103), INT8_C( 55), -INT8_C( 30), INT8_C( 3), INT8_C( 34), INT8_C( 62),
|
||||
-INT8_C( 74), -INT8_C( 13), -INT8_C( 94), INT8_C( 122), -INT8_C( 72), INT8_C( 104), INT8_C( 43), INT8_C( 32) },
|
||||
{ INT8_C( 109), -INT8_C( 70), INT8_MIN, -INT8_C( 20), INT8_C( 34), -INT8_C( 46), INT8_C( 8), INT8_C( 63),
|
||||
-INT8_C( 60), INT8_C( 105), -INT8_C( 109), INT8_MAX, INT8_C( 19), INT8_C( 93), INT8_C( 121), INT8_C( 30) } },
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_v16i8 a = simde_msa_ld_b(test_vec[i].a, 0);
|
||||
simde_v16i8 b = simde_msa_ld_b(test_vec[i].b, 0);
|
||||
simde_v16i8 r = simde_msa_adds_s_b(a, b);
|
||||
|
||||
simde_test_msa_v16i8_assert_equal(r, simde_msa_ld_b(test_vec[i].r, 0));
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_v16i8 a = simde_test_msa_v16i8_random();
|
||||
simde_v16i8 b = simde_test_msa_v16i8_random();
|
||||
simde_v16i8 r = simde_msa_adds_s_b(a, b);
|
||||
|
||||
simde_test_msa_v16i8_write(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_msa_v16i8_write(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v16i8_write(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_adds_s_h (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
int16_t a[8];
|
||||
int16_t b[8];
|
||||
int16_t r[8];
|
||||
} test_vec[] = {
|
||||
{ { -INT16_C( 13797), INT16_C( 23510), -INT16_C( 17254), -INT16_C( 22436), INT16_C( 19762), -INT16_C( 29207), INT16_C( 14147), INT16_C( 18571) },
|
||||
{ INT16_C( 9280), INT16_C( 8832), -INT16_C( 24024), -INT16_C( 8608), INT16_C( 662), INT16_C( 20056), -INT16_C( 31638), -INT16_C( 31378) },
|
||||
{ -INT16_C( 4517), INT16_C( 32342), INT16_MIN, -INT16_C( 31044), INT16_C( 20424), -INT16_C( 9151), -INT16_C( 17491), -INT16_C( 12807) } },
|
||||
{ { INT16_C( 17486), -INT16_C( 5919), INT16_C( 15617), INT16_C( 13200), INT16_C( 31115), -INT16_C( 12607), INT16_C( 19633), -INT16_C( 3818) },
|
||||
{ -INT16_C( 27023), -INT16_C( 26349), INT16_C( 29497), -INT16_C( 12425), -INT16_C( 12171), -INT16_C( 8419), -INT16_C( 29868), -INT16_C( 23963) },
|
||||
{ -INT16_C( 9537), -INT16_C( 32268), INT16_MAX, INT16_C( 775), INT16_C( 18944), -INT16_C( 21026), -INT16_C( 10235), -INT16_C( 27781) } },
|
||||
{ { INT16_C( 18128), -INT16_C( 11893), INT16_C( 7043), INT16_C( 3588), -INT16_C( 14955), INT16_C( 18140), -INT16_C( 3310), -INT16_C( 31945) },
|
||||
{ INT16_C( 19081), -INT16_C( 15844), -INT16_C( 27715), INT16_C( 12945), -INT16_C( 20893), -INT16_C( 18671), INT16_C( 30266), INT16_C( 2650) },
|
||||
{ INT16_MAX, -INT16_C( 27737), -INT16_C( 20672), INT16_C( 16533), INT16_MIN, -INT16_C( 531), INT16_C( 26956), -INT16_C( 29295) } },
|
||||
{ { -INT16_C( 6724), INT16_C( 16603), -INT16_C( 8448), -INT16_C( 27314), INT16_C( 11173), -INT16_C( 18469), INT16_C( 4638), -INT16_C( 22726) },
|
||||
{ INT16_C( 22108), INT16_C( 6506), -INT16_C( 1047), INT16_C( 19787), INT16_C( 23978), -INT16_C( 7164), INT16_C( 24275), -INT16_C( 28434) },
|
||||
{ INT16_C( 15384), INT16_C( 23109), -INT16_C( 9495), -INT16_C( 7527), INT16_MAX, -INT16_C( 25633), INT16_C( 28913), INT16_MIN } },
|
||||
{ { -INT16_C( 14013), INT16_C( 17616), INT16_C( 7848), INT16_C( 19929), -INT16_C( 19127), INT16_C( 26372), INT16_C( 16071), INT16_C( 9231) },
|
||||
{ INT16_C( 31124), INT16_C( 32317), -INT16_C( 30348), INT16_C( 7883), -INT16_C( 12314), -INT16_C( 18174), -INT16_C( 4050), INT16_C( 29001) },
|
||||
{ INT16_C( 17111), INT16_MAX, -INT16_C( 22500), INT16_C( 27812), -INT16_C( 31441), INT16_C( 8198), INT16_C( 12021), INT16_MAX } },
|
||||
{ { INT16_C( 6585), INT16_C( 25269), -INT16_C( 28872), -INT16_C( 32337), -INT16_C( 19388), INT16_C( 3049), -INT16_C( 1806), -INT16_C( 30929) },
|
||||
{ INT16_C( 28017), -INT16_C( 6907), -INT16_C( 12042), -INT16_C( 9212), INT16_C( 1695), -INT16_C( 12907), -INT16_C( 8201), -INT16_C( 20417) },
|
||||
{ INT16_MAX, INT16_C( 18362), INT16_MIN, INT16_MIN, -INT16_C( 17693), -INT16_C( 9858), -INT16_C( 10007), INT16_MIN } },
|
||||
{ { -INT16_C( 2824), INT16_C( 12306), -INT16_C( 15741), -INT16_C( 14414), -INT16_C( 25738), INT16_C( 26835), INT16_C( 659), INT16_C( 1263) },
|
||||
{ -INT16_C( 2961), INT16_C( 26089), -INT16_C( 4668), INT16_C( 25665), -INT16_C( 10252), -INT16_C( 5327), INT16_C( 28854), -INT16_C( 20837) },
|
||||
{ -INT16_C( 5785), INT16_MAX, -INT16_C( 20409), INT16_C( 11251), INT16_MIN, INT16_C( 21508), INT16_C( 29513), -INT16_C( 19574) } },
|
||||
{ { -INT16_C( 20891), -INT16_C( 5921), -INT16_C( 28304), -INT16_C( 6480), -INT16_C( 31956), -INT16_C( 16562), INT16_C( 16005), -INT16_C( 2621) },
|
||||
{ -INT16_C( 21454), -INT16_C( 2214), -INT16_C( 25446), -INT16_C( 29093), -INT16_C( 29581), INT16_C( 10617), INT16_C( 5373), INT16_C( 25303) },
|
||||
{ INT16_MIN, -INT16_C( 8135), INT16_MIN, INT16_MIN, INT16_MIN, -INT16_C( 5945), INT16_C( 21378), INT16_C( 22682) } },
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_v8i16 a = simde_msa_ld_h(test_vec[i].a, 0);
|
||||
simde_v8i16 b = simde_msa_ld_h(test_vec[i].b, 0);
|
||||
simde_v8i16 r = simde_msa_adds_s_h(a, b);
|
||||
|
||||
simde_test_msa_v8i16_assert_equal(r, simde_msa_ld_h(test_vec[i].r, 0));
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_v8i16 a = simde_test_msa_v8i16_random();
|
||||
simde_v8i16 b = simde_test_msa_v8i16_random();
|
||||
simde_v8i16 r = simde_msa_adds_s_h(a, b);
|
||||
|
||||
simde_test_msa_v8i16_write(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_msa_v8i16_write(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v8i16_write(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_adds_s_w (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
int32_t a[4];
|
||||
int32_t b[4];
|
||||
int32_t r[4];
|
||||
} test_vec[] = {
|
||||
{ { INT32_C( 843757250), INT32_C( 1931016775), INT32_C( 53634941), -INT32_C( 671550043) },
|
||||
{ INT32_C( 1020154530), INT32_C( 1640638958), -INT32_C( 1282784330), INT32_C( 437609047) },
|
||||
{ INT32_C( 1863911780), INT32_MAX, -INT32_C( 1229149389), -INT32_C( 233940996) } },
|
||||
{ { INT32_C( 1615617816), -INT32_C( 674011814), INT32_C( 1910113996), -INT32_C( 1656171781) },
|
||||
{ INT32_C( 332994341), -INT32_C( 160062656), INT32_C( 1051328486), INT32_C( 2052636257) },
|
||||
{ INT32_C( 1948612157), -INT32_C( 834074470), INT32_MAX, INT32_C( 396464476) } },
|
||||
{ { INT32_C( 2027594782), -INT32_C( 716198647), -INT32_C( 1354356045), INT32_C( 558665724) },
|
||||
{ -INT32_C( 432724314), -INT32_C( 1327650103), INT32_C( 200181417), INT32_C( 1669678661) },
|
||||
{ INT32_C( 1594870468), -INT32_C( 2043848750), -INT32_C( 1154174628), INT32_MAX } },
|
||||
{ { -INT32_C( 186949654), -INT32_C( 1060558324), INT32_C( 1366233172), INT32_C( 1165147039) },
|
||||
{ -INT32_C( 1423202335), -INT32_C( 77920175), -INT32_C( 737785457), INT32_C( 2033683343) },
|
||||
{ -INT32_C( 1610151989), -INT32_C( 1138478499), INT32_C( 628447715), INT32_MAX } },
|
||||
{ { -INT32_C( 160623894), -INT32_C( 1850329284), -INT32_C( 421386937), -INT32_C( 1037347615) },
|
||||
{ INT32_C( 1299011324), -INT32_C( 297220001), -INT32_C( 1597878767), -INT32_C( 1021642279) },
|
||||
{ INT32_C( 1138387430), INT32_MIN, -INT32_C( 2019265704), -INT32_C( 2058989894) } },
|
||||
{ { INT32_C( 1203406603), INT32_C( 98070718), INT32_C( 2011937430), INT32_C( 188290575) },
|
||||
{ -INT32_C( 866605203), -INT32_C( 2118475409), -INT32_C( 920552209), -INT32_C( 2138293387) },
|
||||
{ INT32_C( 336801400), -INT32_C( 2020404691), INT32_C( 1091385221), -INT32_C( 1950002812) } },
|
||||
{ { -INT32_C( 2117646653), INT32_C( 1300734135), INT32_C( 1774482010), -INT32_C( 160105079) },
|
||||
{ INT32_C( 348310948), INT32_C( 1570077806), INT32_C( 1831253752), -INT32_C( 1242713102) },
|
||||
{ -INT32_C( 1769335705), INT32_MAX, INT32_MAX, -INT32_C( 1402818181) } },
|
||||
{ { -INT32_C( 1338592007), -INT32_C( 1342325420), -INT32_C( 1189560016), INT32_C( 1672449471) },
|
||||
{ -INT32_C( 931696294), -INT32_C( 450556691), -INT32_C( 1252897597), -INT32_C( 127254529) },
|
||||
{ INT32_MIN, -INT32_C( 1792882111), INT32_MIN, INT32_C( 1545194942) } },
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_v4i32 a = simde_msa_ld_w(test_vec[i].a, 0);
|
||||
simde_v4i32 b = simde_msa_ld_w(test_vec[i].b, 0);
|
||||
simde_v4i32 r = simde_msa_adds_s_w(a, b);
|
||||
|
||||
simde_test_msa_v4i32_assert_equal(r, simde_msa_ld_w(test_vec[i].r, 0));
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_v4i32 a = simde_test_msa_v4i32_random();
|
||||
simde_v4i32 b = simde_test_msa_v4i32_random();
|
||||
simde_v4i32 r = simde_msa_adds_s_w(a, b);
|
||||
|
||||
simde_test_msa_v4i32_write(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_msa_v4i32_write(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v4i32_write(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_adds_s_d (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
int64_t a[2];
|
||||
int64_t b[2];
|
||||
int64_t r[2];
|
||||
} test_vec[] = {
|
||||
{ { -INT64_C( 8144858477200039693), -INT64_C( 681461243058909336) },
|
||||
{ -INT64_C( 3370412095907691929), -INT64_C( 4816616525278049488) },
|
||||
{ INT64_MIN, -INT64_C( 5498077768336958824) } },
|
||||
{ { -INT64_C( 2342438639121346415), INT64_C( 2422814255905948684) },
|
||||
{ INT64_C( 8174787870535802258), INT64_C( 8845290571269470521) },
|
||||
{ INT64_C( 5832349231414455843), INT64_MAX } },
|
||||
{ { -INT64_C( 3535634936282626408), INT64_C( 1694785596946904234) },
|
||||
{ -INT64_C( 2223041362457462157), INT64_C( 2848708798143842084) },
|
||||
{ -INT64_C( 5758676298740088565), INT64_C( 4543494395090746318) } },
|
||||
{ { -INT64_C( 9008283544246029973), -INT64_C( 236882592041307366) },
|
||||
{ -INT64_C( 4687727580916125849), -INT64_C( 1921537881767422561) },
|
||||
{ INT64_MIN, -INT64_C( 2158420473808729927) } },
|
||||
{ { -INT64_C( 3702223111008842683), INT64_C( 6487191116002854530) },
|
||||
{ INT64_C( 3524166287945742736), INT64_C( 5517106389033333808) },
|
||||
{ -INT64_C( 178056823063099947), INT64_MAX } },
|
||||
{ { INT64_C( 3800485799723115328), -INT64_C( 2604129198700287601) },
|
||||
{ -INT64_C( 3404458944913651969), INT64_C( 1366292536367980194) },
|
||||
{ INT64_C( 396026854809463359), -INT64_C( 1237836662332307407) } },
|
||||
{ { -INT64_C( 534588702206959698), INT64_C( 1806039216358609899) },
|
||||
{ -INT64_C( 6481126247292660067), INT64_C( 4786277007460632968) },
|
||||
{ -INT64_C( 7015714949499619765), INT64_C( 6592316223819242867) } },
|
||||
{ { INT64_C( 2091137190588477605), INT64_C( 8375397707670585353) },
|
||||
{ -INT64_C( 2944299383238040199), INT64_C( 6709975011634082632) },
|
||||
{ -INT64_C( 853162192649562594), INT64_MAX } },
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_v2i64 a = simde_msa_ld_d(test_vec[i].a, 0);
|
||||
simde_v2i64 b = simde_msa_ld_d(test_vec[i].b, 0);
|
||||
simde_v2i64 r = simde_msa_adds_s_d(a, b);
|
||||
|
||||
simde_test_msa_v2i64_assert_equal(r, simde_msa_ld_d(test_vec[i].r, 0));
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_v2i64 a = simde_test_msa_v2i64_random();
|
||||
simde_v2i64 b = simde_test_msa_v2i64_random();
|
||||
simde_v2i64 r = simde_msa_adds_s_d(a, b);
|
||||
|
||||
simde_test_msa_v2i64_write(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_msa_v2i64_write(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v2i64_write(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_adds_u_b (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
uint8_t a[16];
|
||||
uint8_t b[16];
|
||||
uint8_t r[16];
|
||||
} test_vec[] = {
|
||||
{ { UINT8_C(103), UINT8_C(213), UINT8_C( 35), UINT8_C(195), UINT8_C(162), UINT8_C(240), UINT8_C(148), UINT8_C(186),
|
||||
UINT8_C( 33), UINT8_C( 62), UINT8_C(108), UINT8_C(147), UINT8_C(233), UINT8_C(188), UINT8_C(250), UINT8_C(178) },
|
||||
{ UINT8_C( 54), UINT8_C( 78), UINT8_C( 87), UINT8_C( 62), UINT8_C(205), UINT8_C(213), UINT8_C( 88), UINT8_C( 70),
|
||||
UINT8_C( 7), UINT8_C( 86), UINT8_C( 90), UINT8_C(114), UINT8_C(214), UINT8_C( 61), UINT8_C(210), UINT8_C( 61) },
|
||||
{ UINT8_C(157), UINT8_MAX, UINT8_C(122), UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_C(236), UINT8_MAX,
|
||||
UINT8_C( 40), UINT8_C(148), UINT8_C(198), UINT8_MAX, UINT8_MAX, UINT8_C(249), UINT8_MAX, UINT8_C(239) } },
|
||||
{ { UINT8_C( 18), UINT8_C(245), UINT8_C( 0), UINT8_C(180), UINT8_C(229), UINT8_C(148), UINT8_C(110), UINT8_C( 6),
|
||||
UINT8_C(210), UINT8_C(218), UINT8_C(153), UINT8_C(187), UINT8_C(150), UINT8_C(147), UINT8_C(110), UINT8_C(204) },
|
||||
{ UINT8_C(225), UINT8_C(197), UINT8_C( 11), UINT8_C(175), UINT8_C(154), UINT8_C( 99), UINT8_C(245), UINT8_C(162),
|
||||
UINT8_C(186), UINT8_C( 80), UINT8_C( 20), UINT8_C(144), UINT8_C(141), UINT8_C(230), UINT8_C(206), UINT8_C(159) },
|
||||
{ UINT8_C(243), UINT8_MAX, UINT8_C( 11), UINT8_MAX, UINT8_MAX, UINT8_C(247), UINT8_MAX, UINT8_C(168),
|
||||
UINT8_MAX, UINT8_MAX, UINT8_C(173), UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_MAX } },
|
||||
{ { UINT8_C(219), UINT8_C(206), UINT8_C( 84), UINT8_C(192), UINT8_C( 99), UINT8_C(194), UINT8_C(199), UINT8_C( 53),
|
||||
UINT8_C(157), UINT8_C( 96), UINT8_C(241), UINT8_C( 51), UINT8_C(244), UINT8_C( 95), UINT8_C( 0), UINT8_C(213) },
|
||||
{ UINT8_C( 36), UINT8_C( 11), UINT8_C(132), UINT8_C(190), UINT8_C(110), UINT8_C(122), UINT8_C( 96), UINT8_C( 40),
|
||||
UINT8_C(202), UINT8_C(116), UINT8_C(185), UINT8_C( 87), UINT8_C( 90), UINT8_C(135), UINT8_C(246), UINT8_C( 53) },
|
||||
{ UINT8_MAX, UINT8_C(217), UINT8_C(216), UINT8_MAX, UINT8_C(209), UINT8_MAX, UINT8_MAX, UINT8_C( 93),
|
||||
UINT8_MAX, UINT8_C(212), UINT8_MAX, UINT8_C(138), UINT8_MAX, UINT8_C(230), UINT8_C(246), UINT8_MAX } },
|
||||
{ { UINT8_C( 85), UINT8_C( 74), UINT8_C(246), UINT8_C(184), UINT8_C( 13), UINT8_C(189), UINT8_C(238), UINT8_C(170),
|
||||
UINT8_C( 29), UINT8_C(223), UINT8_C(221), UINT8_C( 17), UINT8_C( 62), UINT8_C(221), UINT8_C(231), UINT8_C( 98) },
|
||||
{ UINT8_C(232), UINT8_C(107), UINT8_C( 32), UINT8_C( 87), UINT8_C(229), UINT8_C(129), UINT8_C(127), UINT8_C(175),
|
||||
UINT8_C(245), UINT8_C( 56), UINT8_C( 6), UINT8_C( 80), UINT8_C(191), UINT8_C(253), UINT8_C(133), UINT8_C( 21) },
|
||||
{ UINT8_MAX, UINT8_C(181), UINT8_MAX, UINT8_MAX, UINT8_C(242), UINT8_MAX, UINT8_MAX, UINT8_MAX,
|
||||
UINT8_MAX, UINT8_MAX, UINT8_C(227), UINT8_C( 97), UINT8_C(253), UINT8_MAX, UINT8_MAX, UINT8_C(119) } },
|
||||
{ { UINT8_C( 71), UINT8_C(123), UINT8_C(205), UINT8_C( 84), UINT8_C( 56), UINT8_C(187), UINT8_C(254), UINT8_C( 86),
|
||||
UINT8_C(154), UINT8_C(220), UINT8_C(103), UINT8_C(216), UINT8_C(185), UINT8_C( 78), UINT8_C( 58), UINT8_C(162) },
|
||||
{ UINT8_C(186), UINT8_C( 91), UINT8_C(249), UINT8_C(159), UINT8_C(220), UINT8_C(120), UINT8_C( 79), UINT8_C(209),
|
||||
UINT8_C(177), UINT8_C( 85), UINT8_C( 33), UINT8_C(112), UINT8_C( 82), UINT8_C(167), UINT8_C(133), UINT8_C(154) },
|
||||
{ UINT8_MAX, UINT8_C(214), UINT8_MAX, UINT8_C(243), UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_MAX,
|
||||
UINT8_MAX, UINT8_MAX, UINT8_C(136), UINT8_MAX, UINT8_MAX, UINT8_C(245), UINT8_C(191), UINT8_MAX } },
|
||||
{ { UINT8_C( 34), UINT8_C( 83), UINT8_C(238), UINT8_C( 91), UINT8_C( 14), UINT8_C(237), UINT8_C(177), UINT8_C(169),
|
||||
UINT8_C(201), UINT8_C( 24), UINT8_C(129), UINT8_C(130), UINT8_C(103), UINT8_C(188), UINT8_C( 36), UINT8_C( 33) },
|
||||
{ UINT8_C( 23), UINT8_C( 29), UINT8_C(192), UINT8_C(243), UINT8_C(150), UINT8_C( 15), UINT8_C(196), UINT8_C( 71),
|
||||
UINT8_C(101), UINT8_C(230), UINT8_C(183), UINT8_C(183), UINT8_C(141), UINT8_C( 61), UINT8_C( 81), UINT8_C(175) },
|
||||
{ UINT8_C( 57), UINT8_C(112), UINT8_MAX, UINT8_MAX, UINT8_C(164), UINT8_C(252), UINT8_MAX, UINT8_C(240),
|
||||
UINT8_MAX, UINT8_C(254), UINT8_MAX, UINT8_MAX, UINT8_C(244), UINT8_C(249), UINT8_C(117), UINT8_C(208) } },
|
||||
{ { UINT8_C(144), UINT8_C( 64), UINT8_C( 10), UINT8_C(158), UINT8_C( 45), UINT8_C(187), UINT8_C( 71), UINT8_C(246),
|
||||
UINT8_C(212), UINT8_C(201), UINT8_C(120), UINT8_C( 59), UINT8_C(133), UINT8_C(157), UINT8_C( 92), UINT8_C(156) },
|
||||
{ UINT8_C(186), UINT8_C( 28), UINT8_C(143), UINT8_C( 80), UINT8_C( 44), UINT8_C( 83), UINT8_C(151), UINT8_C(145),
|
||||
UINT8_C( 57), UINT8_C( 79), UINT8_C( 72), UINT8_C(198), UINT8_C(140), UINT8_C(154), UINT8_C(118), UINT8_C( 28) },
|
||||
{ UINT8_MAX, UINT8_C( 92), UINT8_C(153), UINT8_C(238), UINT8_C( 89), UINT8_MAX, UINT8_C(222), UINT8_MAX,
|
||||
UINT8_MAX, UINT8_MAX, UINT8_C(192), UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_C(210), UINT8_C(184) } },
|
||||
{ { UINT8_C(218), UINT8_C(128), UINT8_C(186), UINT8_C( 7), UINT8_C( 60), UINT8_C( 2), UINT8_C(253), UINT8_C( 16),
|
||||
UINT8_C(203), UINT8_C(117), UINT8_C( 75), UINT8_C( 80), UINT8_C( 18), UINT8_C(167), UINT8_C(236), UINT8_C(205) },
|
||||
{ UINT8_C(195), UINT8_C(123), UINT8_C( 29), UINT8_C(239), UINT8_C(206), UINT8_C(181), UINT8_C(128), UINT8_C( 8),
|
||||
UINT8_C( 4), UINT8_C(201), UINT8_C(206), UINT8_C(144), UINT8_C( 99), UINT8_C( 68), UINT8_C(172), UINT8_C( 61) },
|
||||
{ UINT8_MAX, UINT8_C(251), UINT8_C(215), UINT8_C(246), UINT8_MAX, UINT8_C(183), UINT8_MAX, UINT8_C( 24),
|
||||
UINT8_C(207), UINT8_MAX, UINT8_MAX, UINT8_C(224), UINT8_C(117), UINT8_C(235), UINT8_MAX, UINT8_MAX } },
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_v16u8 a = simde_x_msa_ld_u_b(test_vec[i].a, 0);
|
||||
simde_v16u8 b = simde_x_msa_ld_u_b(test_vec[i].b, 0);
|
||||
simde_v16u8 r = simde_msa_adds_u_b(a, b);
|
||||
|
||||
simde_test_msa_v16u8_assert_equal(r, simde_x_msa_ld_u_b(test_vec[i].r, 0));
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_v16u8 a = simde_test_msa_v16u8_random();
|
||||
simde_v16u8 b = simde_test_msa_v16u8_random();
|
||||
simde_v16u8 r = simde_msa_adds_u_b(a, b);
|
||||
|
||||
simde_test_msa_v16u8_write(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_msa_v16u8_write(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v16u8_write(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_adds_u_h (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
uint16_t a[8];
|
||||
uint16_t b[8];
|
||||
uint16_t r[8];
|
||||
} test_vec[] = {
|
||||
{ { UINT16_C(26309), UINT16_C( 324), UINT16_C(16744), UINT16_C(13073), UINT16_C(23734), UINT16_C(51587), UINT16_C(28419), UINT16_C(50838) },
|
||||
{ UINT16_C(46058), UINT16_C(47542), UINT16_C(13928), UINT16_C(27841), UINT16_C(36863), UINT16_C(25340), UINT16_C(43220), UINT16_C(39327) },
|
||||
{ UINT16_MAX, UINT16_C(47866), UINT16_C(30672), UINT16_C(40914), UINT16_C(60597), UINT16_MAX, UINT16_MAX, UINT16_MAX } },
|
||||
{ { UINT16_C(58127), UINT16_C(30618), UINT16_C(43812), UINT16_C(56235), UINT16_C(11783), UINT16_C( 2724), UINT16_C(15006), UINT16_C(35024) },
|
||||
{ UINT16_C(34541), UINT16_C(22081), UINT16_C( 701), UINT16_C(48322), UINT16_C(49042), UINT16_C(26143), UINT16_C(48743), UINT16_C(30463) },
|
||||
{ UINT16_MAX, UINT16_C(52699), UINT16_C(44513), UINT16_MAX, UINT16_C(60825), UINT16_C(28867), UINT16_C(63749), UINT16_C(65487) } },
|
||||
{ { UINT16_C(39330), UINT16_C(50926), UINT16_C(39236), UINT16_C(19361), UINT16_C(17863), UINT16_C(25941), UINT16_C( 9599), UINT16_C(28142) },
|
||||
{ UINT16_C(12204), UINT16_C(27075), UINT16_C(34098), UINT16_C(50213), UINT16_C(17476), UINT16_C(44074), UINT16_C(10499), UINT16_C(42274) },
|
||||
{ UINT16_C(51534), UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_C(35339), UINT16_MAX, UINT16_C(20098), UINT16_MAX } },
|
||||
{ { UINT16_C( 4290), UINT16_C( 1643), UINT16_C( 3497), UINT16_C(29009), UINT16_C(42578), UINT16_C(53974), UINT16_C(50379), UINT16_C(30527) },
|
||||
{ UINT16_C( 756), UINT16_C( 9952), UINT16_C( 1671), UINT16_C(52458), UINT16_C( 5194), UINT16_C(19832), UINT16_C(39485), UINT16_C(65522) },
|
||||
{ UINT16_C( 5046), UINT16_C(11595), UINT16_C( 5168), UINT16_MAX, UINT16_C(47772), UINT16_MAX, UINT16_MAX, UINT16_MAX } },
|
||||
{ { UINT16_C(24235), UINT16_C(21509), UINT16_C(22123), UINT16_C(48581), UINT16_C(40188), UINT16_C(51087), UINT16_C(52832), UINT16_C(21567) },
|
||||
{ UINT16_C( 8144), UINT16_C(22650), UINT16_C(25637), UINT16_C(28708), UINT16_C(40056), UINT16_C(46525), UINT16_C(45110), UINT16_C(57780) },
|
||||
{ UINT16_C(32379), UINT16_C(44159), UINT16_C(47760), UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX } },
|
||||
{ { UINT16_C(47374), UINT16_C(31030), UINT16_C(64271), UINT16_C( 2870), UINT16_C(50839), UINT16_C(63699), UINT16_C( 4756), UINT16_C(25932) },
|
||||
{ UINT16_C(50993), UINT16_C(22461), UINT16_C(57643), UINT16_C(42183), UINT16_C(33917), UINT16_C(45913), UINT16_C( 3636), UINT16_C(17045) },
|
||||
{ UINT16_MAX, UINT16_C(53491), UINT16_MAX, UINT16_C(45053), UINT16_MAX, UINT16_MAX, UINT16_C( 8392), UINT16_C(42977) } },
|
||||
{ { UINT16_C(52167), UINT16_C(55227), UINT16_C(62150), UINT16_C(24290), UINT16_C(46520), UINT16_C(19542), UINT16_C(41671), UINT16_C(63921) },
|
||||
{ UINT16_C(28265), UINT16_C(38224), UINT16_C( 5967), UINT16_C(52281), UINT16_C(37531), UINT16_C(53376), UINT16_C( 5536), UINT16_C(26642) },
|
||||
{ UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_C(47207), UINT16_MAX } },
|
||||
{ { UINT16_C(52960), UINT16_C(42559), UINT16_C( 8640), UINT16_C(30724), UINT16_C(23255), UINT16_C(40644), UINT16_C(30461), UINT16_C(26263) },
|
||||
{ UINT16_C(59364), UINT16_C(13563), UINT16_C(13566), UINT16_C(39424), UINT16_C(32967), UINT16_C(26474), UINT16_C(31893), UINT16_C(30159) },
|
||||
{ UINT16_MAX, UINT16_C(56122), UINT16_C(22206), UINT16_MAX, UINT16_C(56222), UINT16_MAX, UINT16_C(62354), UINT16_C(56422) } },
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_v8u16 a = simde_x_msa_ld_u_h(test_vec[i].a, 0);
|
||||
simde_v8u16 b = simde_x_msa_ld_u_h(test_vec[i].b, 0);
|
||||
simde_v8u16 r = simde_msa_adds_u_h(a, b);
|
||||
|
||||
simde_test_msa_v8u16_assert_equal(r, simde_x_msa_ld_u_h(test_vec[i].r, 0));
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_v8u16 a = simde_test_msa_v8u16_random();
|
||||
simde_v8u16 b = simde_test_msa_v8u16_random();
|
||||
simde_v8u16 r = simde_msa_adds_u_h(a, b);
|
||||
|
||||
simde_test_msa_v8u16_write(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_msa_v8u16_write(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v8u16_write(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_adds_u_w (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
uint32_t a[4];
|
||||
uint32_t b[4];
|
||||
uint32_t r[4];
|
||||
} test_vec[] = {
|
||||
{ { UINT32_C( 169610826), UINT32_C( 125968432), UINT32_C(2024097659), UINT32_C(2715696573) },
|
||||
{ UINT32_C( 601217572), UINT32_C(3585988110), UINT32_C(3963430742), UINT32_C(3999337635) },
|
||||
{ UINT32_C( 770828398), UINT32_C(3711956542), UINT32_MAX, UINT32_MAX } },
|
||||
{ { UINT32_C(1274576155), UINT32_C( 424835998), UINT32_C(2140272578), UINT32_C(1495297844) },
|
||||
{ UINT32_C(1484584521), UINT32_C( 573389260), UINT32_C( 51276384), UINT32_C(2465296503) },
|
||||
{ UINT32_C(2759160676), UINT32_C( 998225258), UINT32_C(2191548962), UINT32_C(3960594347) } },
|
||||
{ { UINT32_C(2346576621), UINT32_C( 665071461), UINT32_C(1537619238), UINT32_C(4004824741) },
|
||||
{ UINT32_C(2286301372), UINT32_C(3383456873), UINT32_C(1439480286), UINT32_C( 401063465) },
|
||||
{ UINT32_MAX, UINT32_C(4048528334), UINT32_C(2977099524), UINT32_MAX } },
|
||||
{ { UINT32_C( 228770984), UINT32_C( 439633907), UINT32_C( 561371772), UINT32_C(1561340320) },
|
||||
{ UINT32_C(3269809753), UINT32_C(2844496074), UINT32_C(1946048330), UINT32_C(3179996693) },
|
||||
{ UINT32_C(3498580737), UINT32_C(3284129981), UINT32_C(2507420102), UINT32_MAX } },
|
||||
{ { UINT32_C(2664050090), UINT32_C(4038655604), UINT32_C(2031234520), UINT32_C(2950046294) },
|
||||
{ UINT32_C(1131527032), UINT32_C(2532113484), UINT32_C(1762257491), UINT32_C(2066126032) },
|
||||
{ UINT32_C(3795577122), UINT32_MAX, UINT32_C(3793492011), UINT32_MAX } },
|
||||
{ { UINT32_C( 890892737), UINT32_C(3357921775), UINT32_C(1413560318), UINT32_C(3523417945) },
|
||||
{ UINT32_C( 504722642), UINT32_C(3283353968), UINT32_C(3157049067), UINT32_C( 322392914) },
|
||||
{ UINT32_C(1395615379), UINT32_MAX, UINT32_MAX, UINT32_C(3845810859) } },
|
||||
{ { UINT32_C( 860377156), UINT32_C( 536571169), UINT32_C(4268965029), UINT32_C( 651195987) },
|
||||
{ UINT32_C(1514464746), UINT32_C(3525179878), UINT32_C( 160320183), UINT32_C(3776759197) },
|
||||
{ UINT32_C(2374841902), UINT32_C(4061751047), UINT32_MAX, UINT32_MAX } },
|
||||
{ { UINT32_C( 907306005), UINT32_C(1985286353), UINT32_C(2692073548), UINT32_C( 684082494) },
|
||||
{ UINT32_C( 293734955), UINT32_C(3135479555), UINT32_C(2260955625), UINT32_C(1265098550) },
|
||||
{ UINT32_C(1201040960), UINT32_MAX, UINT32_MAX, UINT32_C(1949181044) } },
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_v4u32 a = simde_x_msa_ld_u_w(test_vec[i].a, 0);
|
||||
simde_v4u32 b = simde_x_msa_ld_u_w(test_vec[i].b, 0);
|
||||
simde_v4u32 r = simde_msa_adds_u_w(a, b);
|
||||
|
||||
simde_test_msa_v4u32_assert_equal(r, simde_x_msa_ld_u_w(test_vec[i].r, 0));
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_v4u32 a = simde_test_msa_v4u32_random();
|
||||
simde_v4u32 b = simde_test_msa_v4u32_random();
|
||||
simde_v4u32 r = simde_msa_adds_u_w(a, b);
|
||||
|
||||
simde_test_msa_v4u32_write(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_msa_v4u32_write(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v4u32_write(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_adds_u_d (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
uint64_t a[2];
|
||||
uint64_t b[2];
|
||||
uint64_t r[2];
|
||||
} test_vec[] = {
|
||||
{ { UINT64_C(15603801231099788355), UINT64_C( 8143702500260184222) },
|
||||
{ UINT64_C( 1082946550084306505), UINT64_C(17102979966747200215) },
|
||||
{ UINT64_C(16686747781184094860), UINT64_MAX } },
|
||||
{ { UINT64_C( 5827251858808429433), UINT64_C(16016262169392600718) },
|
||||
{ UINT64_C( 427051617018890423), UINT64_C(18055895730367988732) },
|
||||
{ UINT64_C( 6254303475827319856), UINT64_MAX } },
|
||||
{ { UINT64_C(12847042562933888584), UINT64_C( 6820645181688608308) },
|
||||
{ UINT64_C(18431026571134161300), UINT64_C(10387051473214495660) },
|
||||
{ UINT64_MAX, UINT64_C(17207696654903103968) } },
|
||||
{ { UINT64_C( 4009843057150797518), UINT64_C(10182541970128251977) },
|
||||
{ UINT64_C( 6952176513723632505), UINT64_C( 2867864254265696499) },
|
||||
{ UINT64_C(10962019570874430023), UINT64_C(13050406224393948476) } },
|
||||
{ { UINT64_C( 8292461900891510489), UINT64_C( 3850774205740291306) },
|
||||
{ UINT64_C(14578482774759554877), UINT64_C( 7695474811744935500) },
|
||||
{ UINT64_MAX, UINT64_C(11546249017485226806) } },
|
||||
{ { UINT64_C(10287447106310825255), UINT64_C( 1684594587784521583) },
|
||||
{ UINT64_C( 9890285476718907808), UINT64_C( 4626315127089350456) },
|
||||
{ UINT64_MAX, UINT64_C( 6310909714873872039) } },
|
||||
{ { UINT64_C( 4832175296387054302), UINT64_C( 175304352971260028) },
|
||||
{ UINT64_C( 767225818336819167), UINT64_C(12275132307556520706) },
|
||||
{ UINT64_C( 5599401114723873469), UINT64_C(12450436660527780734) } },
|
||||
{ { UINT64_C(13662016092097997697), UINT64_C(13051293001753757627) },
|
||||
{ UINT64_C( 6184699390055323896), UINT64_C( 3440972964360660810) },
|
||||
{ UINT64_MAX, UINT64_C(16492265966114418437) } },
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_v2u64 a = simde_x_msa_ld_u_d(test_vec[i].a, 0);
|
||||
simde_v2u64 b = simde_x_msa_ld_u_d(test_vec[i].b, 0);
|
||||
simde_v2u64 r = simde_msa_adds_u_d(a, b);
|
||||
|
||||
simde_test_msa_v2u64_assert_equal(r, simde_x_msa_ld_u_d(test_vec[i].r, 0));
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_v2u64 a = simde_test_msa_v2u64_random();
|
||||
simde_v2u64 b = simde_test_msa_v2u64_random();
|
||||
simde_v2u64 r = simde_msa_adds_u_d(a, b);
|
||||
|
||||
simde_test_msa_v2u64_write(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_msa_v2u64_write(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v2u64_write(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
SIMDE_TEST_FUNC_LIST_BEGIN
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(adds_s_b)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(adds_s_h)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(adds_s_w)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(adds_s_d)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(adds_u_b)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(adds_u_h)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(adds_u_w)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(adds_u_d)
|
||||
SIMDE_TEST_FUNC_LIST_END
|
||||
|
||||
#include "test-msa-footer.h"
|
||||
269
thirdparty/simde/test/mips/msa/adds_a.c
vendored
Normal file
269
thirdparty/simde/test/mips/msa/adds_a.c
vendored
Normal file
|
|
@ -0,0 +1,269 @@
|
|||
#define SIMDE_TEST_MIPS_MSA_INSN adds_a
|
||||
|
||||
#include "test-msa.h"
|
||||
#include "../../../simde/mips/msa/adds_a.h"
|
||||
|
||||
static int
|
||||
test_simde_adds_a_b (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
int8_t a[16];
|
||||
int8_t b[16];
|
||||
int8_t r[16];
|
||||
} test_vec[] = {
|
||||
{ { INT8_C( 57), -INT8_C( 54), -INT8_C( 115), INT8_C( 76), -INT8_C( 73), INT8_C( 22), -INT8_C( 47), INT8_C( 83),
|
||||
-INT8_C( 105), INT8_C( 34), INT8_C( 81), INT8_C( 109), INT8_C( 105), -INT8_C( 102), INT8_C( 63), -INT8_C( 33) },
|
||||
{ -INT8_C( 82), -INT8_C( 125), INT8_C( 9), -INT8_C( 89), -INT8_C( 31), -INT8_C( 2), INT8_C( 83), INT8_C( 98),
|
||||
-INT8_C( 110), INT8_C( 40), -INT8_C( 15), INT8_C( 54), -INT8_C( 113), -INT8_C( 10), INT8_C( 26), -INT8_C( 56) },
|
||||
{ INT8_MAX, INT8_MAX, INT8_C( 124), INT8_MAX, INT8_C( 104), INT8_C( 24), INT8_MAX, INT8_MAX,
|
||||
INT8_MAX, INT8_C( 74), INT8_C( 96), INT8_MAX, INT8_MAX, INT8_C( 112), INT8_C( 89), INT8_C( 89) } },
|
||||
{ { -INT8_C( 63), -INT8_C( 88), INT8_C( 21), INT8_C( 120), -INT8_C( 66), -INT8_C( 26), -INT8_C( 53), INT8_C( 85),
|
||||
INT8_C( 9), INT8_C( 29), -INT8_C( 62), INT8_C( 114), -INT8_C( 73), INT8_C( 2), INT8_C( 81), INT8_C( 101) },
|
||||
{ -INT8_C( 123), INT8_C( 90), INT8_C( 12), INT8_C( 102), INT8_C( 88), INT8_C( 96), -INT8_C( 56), -INT8_C( 21),
|
||||
-INT8_C( 120), -INT8_C( 70), INT8_C( 33), INT8_C( 23), -INT8_C( 80), INT8_C( 60), -INT8_C( 32), INT8_C( 113) },
|
||||
{ INT8_MAX, INT8_MAX, INT8_C( 33), INT8_MAX, INT8_MAX, INT8_C( 122), INT8_C( 109), INT8_C( 106),
|
||||
INT8_MAX, INT8_C( 99), INT8_C( 95), INT8_MAX, INT8_MAX, INT8_C( 62), INT8_C( 113), INT8_MAX } },
|
||||
{ { -INT8_C( 28), -INT8_C( 11), -INT8_C( 23), -INT8_C( 94), -INT8_C( 37), -INT8_C( 75), -INT8_C( 9), -INT8_C( 28),
|
||||
-INT8_C( 46), -INT8_C( 70), INT8_C( 87), -INT8_C( 119), -INT8_C( 68), -INT8_C( 88), -INT8_C( 17), INT8_C( 65) },
|
||||
{ INT8_C( 3), -INT8_C( 5), -INT8_C( 88), INT8_C( 91), INT8_C( 91), INT8_C( 112), INT8_C( 70), -INT8_C( 28),
|
||||
INT8_C( 42), INT8_C( 104), -INT8_C( 5), -INT8_C( 37), -INT8_C( 92), -INT8_C( 37), INT8_C( 76), -INT8_C( 120) },
|
||||
{ INT8_C( 31), INT8_C( 16), INT8_C( 111), INT8_MAX, INT8_MAX, INT8_MAX, INT8_C( 79), INT8_C( 56),
|
||||
INT8_C( 88), INT8_MAX, INT8_C( 92), INT8_MAX, INT8_MAX, INT8_C( 125), INT8_C( 93), INT8_MAX } },
|
||||
{ { -INT8_C( 48), INT8_C( 54), INT8_C( 42), -INT8_C( 84), -INT8_C( 21), INT8_C( 33), -INT8_C( 112), -INT8_C( 67),
|
||||
-INT8_C( 37), -INT8_C( 25), INT8_C( 70), -INT8_C( 105), -INT8_C( 112), INT8_C( 53), -INT8_C( 39), -INT8_C( 109) },
|
||||
{ INT8_C( 49), -INT8_C( 127), -INT8_C( 18), -INT8_C( 116), -INT8_C( 15), INT8_C( 53), INT8_C( 112), INT8_C( 28),
|
||||
-INT8_C( 99), INT8_C( 108), -INT8_C( 9), INT8_C( 65), INT8_C( 71), INT8_C( 67), -INT8_C( 55), INT8_C( 24) },
|
||||
{ INT8_C( 97), INT8_MAX, INT8_C( 60), INT8_MAX, INT8_C( 36), INT8_C( 86), INT8_MAX, INT8_C( 95),
|
||||
INT8_MAX, INT8_MAX, INT8_C( 79), INT8_MAX, INT8_MAX, INT8_C( 120), INT8_C( 94), INT8_MAX } },
|
||||
{ { INT8_C( 121), -INT8_C( 13), -INT8_C( 60), INT8_C( 100), INT8_C( 20), INT8_C( 84), INT8_C( 33), -INT8_C( 16),
|
||||
INT8_C( 60), INT8_C( 104), -INT8_C( 121), -INT8_C( 52), -INT8_C( 99), INT8_C( 96), INT8_C( 95), -INT8_C( 50) },
|
||||
{ -INT8_C( 31), INT8_C( 77), INT8_C( 91), -INT8_C( 45), -INT8_C( 126), -INT8_C( 53), -INT8_C( 17), INT8_C( 31),
|
||||
INT8_C( 55), -INT8_C( 26), INT8_C( 96), INT8_MAX, INT8_C( 41), INT8_C( 41), -INT8_C( 105), -INT8_C( 93) },
|
||||
{ INT8_MAX, INT8_C( 90), INT8_MAX, INT8_MAX, INT8_MAX, INT8_MAX, INT8_C( 50), INT8_C( 47),
|
||||
INT8_C( 115), INT8_MAX, INT8_MAX, INT8_MAX, INT8_MAX, INT8_MAX, INT8_MAX, INT8_MAX } },
|
||||
{ { INT8_C( 28), INT8_C( 91), INT8_C( 7), INT8_C( 49), -INT8_C( 81), INT8_C( 41), INT8_C( 33), -INT8_C( 21),
|
||||
-INT8_C( 111), -INT8_C( 88), -INT8_C( 73), INT8_C( 46), INT8_C( 9), INT8_C( 22), -INT8_C( 3), -INT8_C( 22) },
|
||||
{ INT8_C( 100), INT8_C( 88), -INT8_C( 67), -INT8_C( 26), INT8_C( 35), -INT8_C( 84), INT8_C( 6), INT8_C( 91),
|
||||
-INT8_C( 110), INT8_C( 102), -INT8_C( 38), -INT8_C( 68), -INT8_C( 112), INT8_C( 113), INT8_C( 95), -INT8_C( 84) },
|
||||
{ INT8_MAX, INT8_MAX, INT8_C( 74), INT8_C( 75), INT8_C( 116), INT8_C( 125), INT8_C( 39), INT8_C( 112),
|
||||
INT8_MAX, INT8_MAX, INT8_C( 111), INT8_C( 114), INT8_C( 121), INT8_MAX, INT8_C( 98), INT8_C( 106) } },
|
||||
{ { -INT8_C( 52), INT8_C( 102), -INT8_C( 35), INT8_C( 123), -INT8_C( 113), -INT8_C( 2), INT8_C( 103), INT8_C( 32),
|
||||
-INT8_C( 89), INT8_C( 30), INT8_C( 79), -INT8_C( 80), INT8_C( 53), INT8_C( 76), -INT8_C( 102), -INT8_C( 103) },
|
||||
{ -INT8_C( 92), INT8_C( 88), INT8_MAX, -INT8_C( 57), INT8_C( 4), -INT8_C( 123), INT8_C( 34), -INT8_C( 105),
|
||||
-INT8_C( 20), -INT8_C( 4), INT8_C( 83), INT8_C( 124), INT8_C( 109), -INT8_C( 78), INT8_C( 40), INT8_C( 57) },
|
||||
{ INT8_MAX, INT8_MAX, INT8_MAX, INT8_MAX, INT8_C( 117), INT8_C( 125), INT8_MAX, INT8_MAX,
|
||||
INT8_C( 109), INT8_C( 34), INT8_MAX, INT8_MAX, INT8_MAX, INT8_MAX, INT8_MAX, INT8_MAX } },
|
||||
{ { INT8_C( 24), INT8_C( 6), -INT8_C( 75), -INT8_C( 88), INT8_C( 4), INT8_C( 28), -INT8_C( 56), -INT8_C( 85),
|
||||
INT8_C( 58), INT8_C( 23), INT8_C( 91), INT8_C( 111), INT8_C( 99), -INT8_C( 10), INT8_C( 8), INT8_C( 7) },
|
||||
{ INT8_C( 78), -INT8_C( 120), -INT8_C( 49), INT8_C( 82), INT8_C( 13), -INT8_C( 15), -INT8_C( 23), -INT8_C( 7),
|
||||
-INT8_C( 18), INT8_C( 60), INT8_C( 117), INT8_C( 91), -INT8_C( 18), -INT8_C( 98), -INT8_C( 107), INT8_C( 7) },
|
||||
{ INT8_C( 102), INT8_C( 126), INT8_C( 124), INT8_MAX, INT8_C( 17), INT8_C( 43), INT8_C( 79), INT8_C( 92),
|
||||
INT8_C( 76), INT8_C( 83), INT8_MAX, INT8_MAX, INT8_C( 117), INT8_C( 108), INT8_C( 115), INT8_C( 14) } },
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_v16i8 a = simde_msa_ld_b(test_vec[i].a, 0);
|
||||
simde_v16i8 b = simde_msa_ld_b(test_vec[i].b, 0);
|
||||
simde_v16i8 r = simde_msa_adds_a_b(a, b);
|
||||
|
||||
simde_test_msa_v16i8_assert_equal(r, simde_msa_ld_b(test_vec[i].r, 0));
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_v16i8 a = simde_test_msa_v16i8_random();
|
||||
simde_v16i8 b = simde_test_msa_v16i8_random();
|
||||
simde_v16i8 r = simde_msa_adds_a_b(a, b);
|
||||
|
||||
simde_test_msa_v16i8_write(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_msa_v16i8_write(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v16i8_write(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_adds_a_h (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
int16_t a[8];
|
||||
int16_t b[8];
|
||||
int16_t r[8];
|
||||
} test_vec[] = {
|
||||
{ { INT16_C( 19108), -INT16_C( 22353), INT16_C( 30566), -INT16_C( 24492), -INT16_C( 20593), -INT16_C( 3568), INT16_C( 6309), -INT16_C( 3078) },
|
||||
{ -INT16_C( 13920), -INT16_C( 20922), INT16_C( 12218), -INT16_C( 22361), INT16_C( 7532), INT16_C( 23044), -INT16_C( 26181), INT16_C( 24417) },
|
||||
{ INT16_MAX, INT16_MAX, INT16_MAX, INT16_MAX, INT16_C( 28125), INT16_C( 26612), INT16_C( 32490), INT16_C( 27495) } },
|
||||
{ { INT16_C( 4323), INT16_C( 18695), INT16_C( 23432), INT16_C( 6121), -INT16_C( 1781), -INT16_C( 20471), INT16_C( 786), -INT16_C( 19804) },
|
||||
{ -INT16_C( 5428), -INT16_C( 30880), INT16_C( 2073), -INT16_C( 31441), INT16_C( 13093), -INT16_C( 7968), INT16_C( 16844), -INT16_C( 20673) },
|
||||
{ INT16_C( 9751), INT16_MAX, INT16_C( 25505), INT16_MAX, INT16_C( 14874), INT16_C( 28439), INT16_C( 17630), INT16_MAX } },
|
||||
{ { INT16_C( 18002), -INT16_C( 9480), -INT16_C( 7518), -INT16_C( 21007), -INT16_C( 1317), -INT16_C( 4771), INT16_C( 510), -INT16_C( 13664) },
|
||||
{ INT16_C( 235), INT16_C( 1361), -INT16_C( 32504), INT16_C( 11658), INT16_C( 27316), -INT16_C( 32499), INT16_C( 19628), -INT16_C( 464) },
|
||||
{ INT16_C( 18237), INT16_C( 10841), INT16_MAX, INT16_C( 32665), INT16_C( 28633), INT16_MAX, INT16_C( 20138), INT16_C( 14128) } },
|
||||
{ { INT16_C( 10643), INT16_C( 13784), -INT16_C( 14069), -INT16_C( 6430), INT16_C( 16323), -INT16_C( 15916), INT16_C( 29761), INT16_C( 11404) },
|
||||
{ -INT16_C( 8844), INT16_C( 32049), -INT16_C( 17314), INT16_C( 5034), -INT16_C( 18394), -INT16_C( 11628), -INT16_C( 15356), -INT16_C( 26672) },
|
||||
{ INT16_C( 19487), INT16_MAX, INT16_C( 31383), INT16_C( 11464), INT16_MAX, INT16_C( 27544), INT16_MAX, INT16_MAX } },
|
||||
{ { -INT16_C( 22291), -INT16_C( 1844), -INT16_C( 20879), INT16_C( 13791), -INT16_C( 19474), INT16_C( 12278), -INT16_C( 32217), -INT16_C( 25765) },
|
||||
{ -INT16_C( 29344), -INT16_C( 16872), -INT16_C( 15543), INT16_C( 28625), INT16_C( 25979), INT16_C( 32578), INT16_C( 4650), INT16_C( 5911) },
|
||||
{ INT16_MAX, INT16_C( 18716), INT16_MAX, INT16_MAX, INT16_MAX, INT16_MAX, INT16_MAX, INT16_C( 31676) } },
|
||||
{ { -INT16_C( 7237), INT16_C( 11280), -INT16_C( 4206), -INT16_C( 32671), INT16_C( 22690), -INT16_C( 13905), INT16_C( 2778), INT16_C( 14948) },
|
||||
{ INT16_C( 32151), -INT16_C( 7943), -INT16_C( 13760), -INT16_C( 17584), -INT16_C( 28112), INT16_C( 23098), INT16_C( 20900), INT16_C( 24433) },
|
||||
{ INT16_MAX, INT16_C( 19223), INT16_C( 17966), INT16_MAX, INT16_MAX, INT16_MAX, INT16_C( 23678), INT16_MAX } },
|
||||
{ { -INT16_C( 32459), -INT16_C( 14452), -INT16_C( 4752), INT16_C( 4679), -INT16_C( 2491), INT16_C( 8411), INT16_C( 16384), -INT16_C( 26534) },
|
||||
{ INT16_C( 21437), -INT16_C( 648), -INT16_C( 14306), INT16_C( 20152), -INT16_C( 3494), -INT16_C( 88), INT16_C( 6468), INT16_C( 31070) },
|
||||
{ INT16_MAX, INT16_C( 15100), INT16_C( 19058), INT16_C( 24831), INT16_C( 5985), INT16_C( 8499), INT16_C( 22852), INT16_MAX } },
|
||||
{ { -INT16_C( 5477), INT16_C( 2880), -INT16_C( 30760), INT16_C( 7454), -INT16_C( 1667), INT16_C( 32061), -INT16_C( 26567), -INT16_C( 2539) },
|
||||
{ -INT16_C( 28949), INT16_C( 2547), -INT16_C( 21674), -INT16_C( 20137), -INT16_C( 98), -INT16_C( 7504), INT16_C( 3609), -INT16_C( 19365) },
|
||||
{ INT16_MAX, INT16_C( 5427), INT16_MAX, INT16_C( 27591), INT16_C( 1765), INT16_MAX, INT16_C( 30176), INT16_C( 21904) } },
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_v8i16 a = simde_msa_ld_h(test_vec[i].a, 0);
|
||||
simde_v8i16 b = simde_msa_ld_h(test_vec[i].b, 0);
|
||||
simde_v8i16 r = simde_msa_adds_a_h(a, b);
|
||||
|
||||
simde_test_msa_v8i16_assert_equal(r, simde_msa_ld_h(test_vec[i].r, 0));
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_v8i16 a = simde_test_msa_v8i16_random();
|
||||
simde_v8i16 b = simde_test_msa_v8i16_random();
|
||||
simde_v8i16 r = simde_msa_adds_a_h(a, b);
|
||||
|
||||
simde_test_msa_v8i16_write(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_msa_v8i16_write(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v8i16_write(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_adds_a_w (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
int32_t a[4];
|
||||
int32_t b[4];
|
||||
int32_t r[4];
|
||||
} test_vec[] = {
|
||||
{ { -INT32_C( 775971847), -INT32_C( 1611735774), INT32_C( 270281943), -INT32_C( 1358482748) },
|
||||
{ INT32_C( 381287104), INT32_C( 1153896614), INT32_C( 690386704), INT32_C( 2145223046) },
|
||||
{ INT32_C( 1157258951), INT32_MAX, INT32_C( 960668647), INT32_MAX } },
|
||||
{ { INT32_C( 1045470236), INT32_C( 1373453946), INT32_C( 778172778), -INT32_C( 337745877) },
|
||||
{ INT32_C( 151164771), -INT32_C( 1219638873), -INT32_C( 941591743), INT32_C( 273071604) },
|
||||
{ INT32_C( 1196635007), INT32_MAX, INT32_C( 1719764521), INT32_C( 610817481) } },
|
||||
{ { -INT32_C( 733047206), INT32_C( 1059400660), INT32_C( 1349355044), INT32_C( 1379617775) },
|
||||
{ -INT32_C( 1973731870), INT32_C( 1212262407), INT32_C( 252650011), INT32_C( 958354911) },
|
||||
{ INT32_MAX, INT32_MAX, INT32_C( 1602005055), INT32_MAX } },
|
||||
{ { -INT32_C( 1089638933), -INT32_C( 1124191592), -INT32_C( 1475580743), -INT32_C( 1694873417) },
|
||||
{ -INT32_C( 1943775867), INT32_C( 416572925), INT32_C( 1730667399), INT32_C( 597706296) },
|
||||
{ INT32_MAX, INT32_C( 1540764517), INT32_MAX, INT32_MAX } },
|
||||
{ { INT32_C( 1273212595), -INT32_C( 1727536672), INT32_C( 88151117), -INT32_C( 509658276) },
|
||||
{ -INT32_C( 1922120816), -INT32_C( 1331346904), INT32_C( 1578617894), -INT32_C( 981289198) },
|
||||
{ INT32_MAX, INT32_MAX, INT32_C( 1666769011), INT32_C( 1490947474) } },
|
||||
{ { INT32_C( 1175479653), -INT32_C( 1797318586), -INT32_C( 2003230420), -INT32_C( 311871396) },
|
||||
{ INT32_C( 595253243), INT32_C( 1087578138), -INT32_C( 6362388), INT32_C( 130293922) },
|
||||
{ INT32_C( 1770732896), INT32_MAX, INT32_C( 2009592808), INT32_C( 442165318) } },
|
||||
{ { -INT32_C( 867314299), INT32_C( 425733613), -INT32_C( 1432225458), INT32_C( 748096049) },
|
||||
{ -INT32_C( 61926686), INT32_C( 507257650), -INT32_C( 1356998131), -INT32_C( 2135432453) },
|
||||
{ INT32_C( 929240985), INT32_C( 932991263), INT32_MAX, INT32_MAX } },
|
||||
{ { -INT32_C( 1538521929), INT32_C( 2143136817), -INT32_C( 701866331), INT32_C( 1241694568) },
|
||||
{ INT32_C( 88494803), -INT32_C( 2111536523), INT32_C( 1479688541), -INT32_C( 623318749) },
|
||||
{ INT32_C( 1627016732), INT32_MAX, INT32_MAX, INT32_C( 1865013317) } },
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_v4i32 a = simde_msa_ld_w(test_vec[i].a, 0);
|
||||
simde_v4i32 b = simde_msa_ld_w(test_vec[i].b, 0);
|
||||
simde_v4i32 r = simde_msa_adds_a_w(a, b);
|
||||
|
||||
simde_test_msa_v4i32_assert_equal(r, simde_msa_ld_w(test_vec[i].r, 0));
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_v4i32 a = simde_test_msa_v4i32_random();
|
||||
simde_v4i32 b = simde_test_msa_v4i32_random();
|
||||
simde_v4i32 r = simde_msa_adds_a_w(a, b);
|
||||
|
||||
simde_test_msa_v4i32_write(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_msa_v4i32_write(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v4i32_write(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_adds_a_d (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
int64_t a[2];
|
||||
int64_t b[2];
|
||||
int64_t r[2];
|
||||
} test_vec[] = {
|
||||
{ { INT64_C( 8619392506196272621), INT64_C( 6722836897431668889) },
|
||||
{ INT64_C( 8257779916416979874), -INT64_C( 6717501796714361912) },
|
||||
{ INT64_MAX, INT64_MAX } },
|
||||
{ { INT64_C( 1878106050553529800), INT64_C( 5768944747206696488) },
|
||||
{ -INT64_C( 4430696538663587077), -INT64_C( 5106390446889873716) },
|
||||
{ INT64_C( 6308802589217116877), INT64_MAX } },
|
||||
{ { INT64_C( 7733915600494453689), -INT64_C( 3116723109028335423) },
|
||||
{ -INT64_C( 983359053643831649), INT64_C( 3918296042725116086) },
|
||||
{ INT64_C( 8717274654138285338), INT64_C( 7035019151753451509) } },
|
||||
{ { -INT64_C( 2943168229533502599), INT64_C( 1144201759146001460) },
|
||||
{ -INT64_C( 1926412342645963221), -INT64_C( 4197656889698502901) },
|
||||
{ INT64_C( 4869580572179465820), INT64_C( 5341858648844504361) } },
|
||||
{ { INT64_C( 2922177497925758880), INT64_C( 246597198131090412) },
|
||||
{ INT64_C( 2517397941448348892), INT64_C( 675936221891558479) },
|
||||
{ INT64_C( 5439575439374107772), INT64_C( 922533420022648891) } },
|
||||
{ { INT64_C( 8697379467611333527), -INT64_C( 2667747265928108001) },
|
||||
{ INT64_C( 3931595090163945046), INT64_C( 4161946874855700816) },
|
||||
{ INT64_MAX, INT64_C( 6829694140783808817) } },
|
||||
{ { -INT64_C( 1433701806281293545), -INT64_C( 8703244550771839137) },
|
||||
{ INT64_C( 4560321160527747883), INT64_C( 7392300688416971708) },
|
||||
{ INT64_C( 5994022966809041428), INT64_MAX } },
|
||||
{ { INT64_C( 3527483788827908667), -INT64_C( 2248487310418127085) },
|
||||
{ -INT64_C( 139827905282523168), -INT64_C( 212246689587984553) },
|
||||
{ INT64_C( 3667311694110431835), INT64_C( 2460734000006111638) } },
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_v2i64 a = simde_msa_ld_d(test_vec[i].a, 0);
|
||||
simde_v2i64 b = simde_msa_ld_d(test_vec[i].b, 0);
|
||||
simde_v2i64 r = simde_msa_adds_a_d(a, b);
|
||||
|
||||
simde_test_msa_v2i64_assert_equal(r, simde_msa_ld_d(test_vec[i].r, 0));
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_v2i64 a = simde_test_msa_v2i64_random();
|
||||
simde_v2i64 b = simde_test_msa_v2i64_random();
|
||||
simde_v2i64 r = simde_msa_adds_a_d(a, b);
|
||||
|
||||
simde_test_msa_v2i64_write(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_msa_v2i64_write(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v2i64_write(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
SIMDE_TEST_FUNC_LIST_BEGIN
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(adds_a_b)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(adds_a_h)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(adds_a_w)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(adds_a_d)
|
||||
SIMDE_TEST_FUNC_LIST_END
|
||||
|
||||
#include "test-msa-footer.h"
|
||||
269
thirdparty/simde/test/mips/msa/addv.c
vendored
Normal file
269
thirdparty/simde/test/mips/msa/addv.c
vendored
Normal file
|
|
@ -0,0 +1,269 @@
|
|||
#define SIMDE_TEST_MIPS_MSA_INSN addv
|
||||
|
||||
#include "test-msa.h"
|
||||
#include "../../../simde/mips/msa/addv.h"
|
||||
|
||||
static int
|
||||
test_simde_addv_b (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
int8_t a[16];
|
||||
int8_t b[16];
|
||||
int8_t r[16];
|
||||
} test_vec[] = {
|
||||
{ { -INT8_C( 116), -INT8_C( 28), INT8_C( 38), -INT8_C( 19), INT8_C( 23), -INT8_C( 59), INT8_C( 57), -INT8_C( 37),
|
||||
INT8_MAX, INT8_C( 18), INT8_C( 39), INT8_C( 113), -INT8_C( 93), INT8_C( 38), -INT8_C( 44), INT8_C( 71) },
|
||||
{ -INT8_C( 60), -INT8_C( 1), -INT8_C( 16), INT8_C( 42), INT8_C( 50), -INT8_C( 68), -INT8_C( 61), -INT8_C( 9),
|
||||
-INT8_C( 74), -INT8_C( 49), -INT8_C( 110), -INT8_C( 120), -INT8_C( 35), -INT8_C( 56), INT8_C( 16), INT8_C( 105) },
|
||||
{ INT8_C( 80), -INT8_C( 29), INT8_C( 22), INT8_C( 23), INT8_C( 73), -INT8_C( 127), -INT8_C( 4), -INT8_C( 46),
|
||||
INT8_C( 53), -INT8_C( 31), -INT8_C( 71), -INT8_C( 7), INT8_MIN, -INT8_C( 18), -INT8_C( 28), -INT8_C( 80) } },
|
||||
{ { -INT8_C( 84), INT8_C( 54), INT8_C( 86), -INT8_C( 61), -INT8_C( 5), -INT8_C( 113), -INT8_C( 97), INT8_C( 123),
|
||||
-INT8_C( 94), -INT8_C( 58), -INT8_C( 20), INT8_C( 69), -INT8_C( 19), -INT8_C( 64), -INT8_C( 116), -INT8_C( 79) },
|
||||
{ -INT8_C( 65), INT8_C( 124), -INT8_C( 37), -INT8_C( 14), INT8_C( 56), -INT8_C( 97), -INT8_C( 23), -INT8_C( 17),
|
||||
INT8_C( 110), INT8_C( 124), INT8_C( 119), INT8_C( 75), INT8_C( 68), -INT8_C( 121), -INT8_C( 75), -INT8_C( 15) },
|
||||
{ INT8_C( 107), -INT8_C( 78), INT8_C( 49), -INT8_C( 75), INT8_C( 51), INT8_C( 46), -INT8_C( 120), INT8_C( 106),
|
||||
INT8_C( 16), INT8_C( 66), INT8_C( 99), -INT8_C( 112), INT8_C( 49), INT8_C( 71), INT8_C( 65), -INT8_C( 94) } },
|
||||
{ { -INT8_C( 67), INT8_C( 11), -INT8_C( 76), -INT8_C( 72), -INT8_C( 101), INT8_C( 83), INT8_C( 51), INT8_C( 61),
|
||||
INT8_C( 26), INT8_C( 31), -INT8_C( 126), INT8_C( 7), -INT8_C( 33), INT8_C( 14), -INT8_C( 72), -INT8_C( 97) },
|
||||
{ -INT8_C( 118), -INT8_C( 109), -INT8_C( 111), -INT8_C( 61), INT8_C( 50), INT8_C( 122), -INT8_C( 78), -INT8_C( 96),
|
||||
-INT8_C( 10), INT8_C( 41), -INT8_C( 20), INT8_C( 59), -INT8_C( 80), -INT8_C( 95), INT8_C( 44), INT8_C( 109) },
|
||||
{ INT8_C( 71), -INT8_C( 98), INT8_C( 69), INT8_C( 123), -INT8_C( 51), -INT8_C( 51), -INT8_C( 27), -INT8_C( 35),
|
||||
INT8_C( 16), INT8_C( 72), INT8_C( 110), INT8_C( 66), -INT8_C( 113), -INT8_C( 81), -INT8_C( 28), INT8_C( 12) } },
|
||||
{ { -INT8_C( 84), -INT8_C( 32), INT8_C( 37), INT8_C( 71), INT8_C( 52), INT8_C( 89), -INT8_C( 124), INT8_C( 78),
|
||||
INT8_C( 120), INT8_C( 6), INT8_C( 85), INT8_C( 88), INT8_C( 20), INT8_C( 13), -INT8_C( 9), -INT8_C( 97) },
|
||||
{ -INT8_C( 96), -INT8_C( 120), INT8_C( 98), -INT8_C( 45), INT8_C( 2), INT8_C( 20), INT8_C( 115), -INT8_C( 7),
|
||||
INT8_C( 61), INT8_C( 95), INT8_C( 52), -INT8_C( 19), INT8_C( 0), INT8_C( 96), INT8_C( 90), -INT8_C( 83) },
|
||||
{ INT8_C( 76), INT8_C( 104), -INT8_C( 121), INT8_C( 26), INT8_C( 54), INT8_C( 109), -INT8_C( 9), INT8_C( 71),
|
||||
-INT8_C( 75), INT8_C( 101), -INT8_C( 119), INT8_C( 69), INT8_C( 20), INT8_C( 109), INT8_C( 81), INT8_C( 76) } },
|
||||
{ { INT8_C( 64), INT8_MAX, -INT8_C( 12), INT8_C( 116), -INT8_C( 40), INT8_C( 121), -INT8_C( 62), INT8_C( 81),
|
||||
INT8_MAX, INT8_C( 23), -INT8_C( 87), -INT8_C( 108), INT8_C( 36), -INT8_C( 96), INT8_C( 51), -INT8_C( 59) },
|
||||
{ INT8_C( 40), -INT8_C( 107), -INT8_C( 104), INT8_C( 42), -INT8_C( 87), INT8_C( 11), INT8_C( 35), -INT8_C( 26),
|
||||
INT8_C( 107), INT8_C( 87), -INT8_C( 45), INT8_C( 107), -INT8_C( 73), INT8_C( 45), INT8_C( 24), -INT8_C( 8) },
|
||||
{ INT8_C( 104), INT8_C( 20), -INT8_C( 116), -INT8_C( 98), -INT8_C( 127), -INT8_C( 124), -INT8_C( 27), INT8_C( 55),
|
||||
-INT8_C( 22), INT8_C( 110), INT8_C( 124), -INT8_C( 1), -INT8_C( 37), -INT8_C( 51), INT8_C( 75), -INT8_C( 67) } },
|
||||
{ { -INT8_C( 84), INT8_C( 13), INT8_C( 108), -INT8_C( 123), -INT8_C( 122), INT8_C( 47), -INT8_C( 42), INT8_C( 5),
|
||||
INT8_C( 70), INT8_MAX, -INT8_C( 103), INT8_C( 107), INT8_C( 31), -INT8_C( 52), INT8_C( 48), INT8_C( 71) },
|
||||
{ INT8_C( 97), -INT8_C( 56), INT8_C( 113), INT8_C( 10), -INT8_C( 45), -INT8_C( 107), -INT8_C( 16), INT8_C( 62),
|
||||
-INT8_C( 20), -INT8_C( 61), -INT8_C( 86), -INT8_C( 92), -INT8_C( 16), -INT8_C( 62), -INT8_C( 100), -INT8_C( 99) },
|
||||
{ INT8_C( 13), -INT8_C( 43), -INT8_C( 35), -INT8_C( 113), INT8_C( 89), -INT8_C( 60), -INT8_C( 58), INT8_C( 67),
|
||||
INT8_C( 50), INT8_C( 66), INT8_C( 67), INT8_C( 15), INT8_C( 15), -INT8_C( 114), -INT8_C( 52), -INT8_C( 28) } },
|
||||
{ { -INT8_C( 49), INT8_C( 8), INT8_C( 34), INT8_C( 85), INT8_C( 55), -INT8_C( 8), INT8_C( 91), INT8_C( 126),
|
||||
INT8_C( 119), -INT8_C( 12), -INT8_C( 23), -INT8_C( 106), -INT8_C( 63), INT8_C( 25), -INT8_C( 35), INT8_C( 34) },
|
||||
{ -INT8_C( 31), INT8_C( 78), INT8_C( 45), -INT8_C( 76), -INT8_C( 29), INT8_C( 29), -INT8_C( 13), -INT8_C( 48),
|
||||
-INT8_C( 31), -INT8_C( 99), INT8_C( 116), -INT8_C( 47), INT8_C( 95), INT8_C( 16), INT8_C( 110), INT8_C( 47) },
|
||||
{ -INT8_C( 80), INT8_C( 86), INT8_C( 79), INT8_C( 9), INT8_C( 26), INT8_C( 21), INT8_C( 78), INT8_C( 78),
|
||||
INT8_C( 88), -INT8_C( 111), INT8_C( 93), INT8_C( 103), INT8_C( 32), INT8_C( 41), INT8_C( 75), INT8_C( 81) } },
|
||||
{ { INT8_C( 24), -INT8_C( 112), -INT8_C( 124), INT8_C( 80), -INT8_C( 120), -INT8_C( 33), -INT8_C( 50), -INT8_C( 1),
|
||||
-INT8_C( 44), -INT8_C( 73), -INT8_C( 107), -INT8_C( 107), -INT8_C( 48), INT8_C( 114), -INT8_C( 73), -INT8_C( 79) },
|
||||
{ -INT8_C( 63), -INT8_C( 28), INT8_C( 101), -INT8_C( 92), INT8_C( 2), INT8_C( 88), INT8_C( 116), -INT8_C( 29),
|
||||
-INT8_C( 11), -INT8_C( 24), -INT8_C( 76), INT8_C( 85), -INT8_C( 8), INT8_C( 35), -INT8_C( 124), INT8_C( 17) },
|
||||
{ -INT8_C( 39), INT8_C( 116), -INT8_C( 23), -INT8_C( 12), -INT8_C( 118), INT8_C( 55), INT8_C( 66), -INT8_C( 30),
|
||||
-INT8_C( 55), -INT8_C( 97), INT8_C( 73), -INT8_C( 22), -INT8_C( 56), -INT8_C( 107), INT8_C( 59), -INT8_C( 62) } }
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_v16i8 a = simde_msa_ld_b(test_vec[i].a, 0);
|
||||
simde_v16i8 b = simde_msa_ld_b(test_vec[i].b, 0);
|
||||
simde_v16i8 r = simde_msa_addv_b(a, b);
|
||||
|
||||
simde_test_msa_v16i8_assert_equal(r, simde_msa_ld_b(test_vec[i].r, 0));
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_v16i8 a = simde_test_msa_v16i8_random();
|
||||
simde_v16i8 b = simde_test_msa_v16i8_random();
|
||||
simde_v16i8 r = simde_msa_addv_b(a, b);
|
||||
|
||||
simde_test_msa_v16i8_write(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_msa_v16i8_write(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v16i8_write(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_addv_h (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
int16_t a[8];
|
||||
int16_t b[8];
|
||||
int16_t r[8];
|
||||
} test_vec[] = {
|
||||
{ { -INT16_C( 30997), -INT16_C( 1599), -INT16_C( 12412), -INT16_C( 899), -INT16_C( 5872), -INT16_C( 18922), INT16_C( 5928), -INT16_C( 31405) },
|
||||
{ -INT16_C( 20798), INT16_C( 9201), -INT16_C( 20369), -INT16_C( 22053), -INT16_C( 10807), -INT16_C( 1995), -INT16_C( 18801), INT16_C( 31602) },
|
||||
{ INT16_C( 13741), INT16_C( 7602), INT16_C( 32755), -INT16_C( 22952), -INT16_C( 16679), -INT16_C( 20917), -INT16_C( 12873), INT16_C( 197) } },
|
||||
{ { INT16_C( 13372), -INT16_C( 16268), -INT16_C( 3837), INT16_C( 5052), -INT16_C( 11301), INT16_C( 969), INT16_C( 7402), -INT16_C( 21368) },
|
||||
{ INT16_C( 31179), INT16_C( 15056), -INT16_C( 21718), -INT16_C( 3101), INT16_C( 6272), INT16_C( 4332), INT16_C( 24270), INT16_C( 2955) },
|
||||
{ -INT16_C( 20985), -INT16_C( 1212), -INT16_C( 25555), INT16_C( 1951), -INT16_C( 5029), INT16_C( 5301), INT16_C( 31672), -INT16_C( 18413) } },
|
||||
{ { -INT16_C( 110), -INT16_C( 27189), -INT16_C( 30480), -INT16_C( 13400), INT16_C( 29019), INT16_C( 17871), INT16_C( 22414), INT16_C( 23026) },
|
||||
{ -INT16_C( 15663), -INT16_C( 1133), INT16_C( 30317), -INT16_C( 4370), -INT16_C( 9586), INT16_C( 23806), -INT16_C( 30407), -INT16_C( 13465) },
|
||||
{ -INT16_C( 15773), -INT16_C( 28322), -INT16_C( 163), -INT16_C( 17770), INT16_C( 19433), -INT16_C( 23859), -INT16_C( 7993), INT16_C( 9561) } },
|
||||
{ { INT16_C( 13192), INT16_C( 30817), INT16_C( 2491), INT16_C( 5700), INT16_C( 4987), INT16_C( 2395), INT16_C( 19818), INT16_C( 15202) },
|
||||
{ -INT16_C( 2801), INT16_C( 32054), INT16_C( 9579), -INT16_C( 1685), INT16_C( 27135), INT16_C( 14421), -INT16_C( 16910), INT16_C( 31236) },
|
||||
{ INT16_C( 10391), -INT16_C( 2665), INT16_C( 12070), INT16_C( 4015), INT16_C( 32122), INT16_C( 16816), INT16_C( 2908), -INT16_C( 19098) } },
|
||||
{ { INT16_C( 26096), -INT16_C( 21518), INT16_C( 13934), -INT16_C( 5695), INT16_C( 7241), -INT16_C( 19214), INT16_C( 21610), INT16_C( 31215) },
|
||||
{ INT16_C( 9801), -INT16_C( 19210), INT16_C( 24907), INT16_C( 19117), INT16_C( 970), -INT16_C( 17277), -INT16_C( 30784), -INT16_C( 20426) },
|
||||
{ -INT16_C( 29639), INT16_C( 24808), -INT16_C( 26695), INT16_C( 13422), INT16_C( 8211), INT16_C( 29045), -INT16_C( 9174), INT16_C( 10789) } },
|
||||
{ { INT16_C( 10732), INT16_C( 23131), INT16_C( 7263), -INT16_C( 22204), INT16_C( 13880), -INT16_C( 23971), INT16_C( 19595), -INT16_C( 11236) },
|
||||
{ INT16_C( 4722), -INT16_C( 17015), INT16_C( 13940), INT16_C( 15880), -INT16_C( 29895), -INT16_C( 1541), INT16_C( 12562), -INT16_C( 343) },
|
||||
{ INT16_C( 15454), INT16_C( 6116), INT16_C( 21203), -INT16_C( 6324), -INT16_C( 16015), -INT16_C( 25512), INT16_C( 32157), -INT16_C( 11579) } },
|
||||
{ { INT16_C( 1114), -INT16_C( 17832), -INT16_C( 25568), INT16_C( 22883), -INT16_C( 16173), INT16_C( 24315), INT16_C( 5900), INT16_C( 32562) },
|
||||
{ -INT16_C( 17622), -INT16_C( 25028), INT16_C( 17650), INT16_C( 11228), -INT16_C( 10289), -INT16_C( 7899), -INT16_C( 12791), INT16_C( 25567) },
|
||||
{ -INT16_C( 16508), INT16_C( 22676), -INT16_C( 7918), -INT16_C( 31425), -INT16_C( 26462), INT16_C( 16416), -INT16_C( 6891), -INT16_C( 7407) } },
|
||||
{ { INT16_C( 14547), -INT16_C( 3299), -INT16_C( 32556), -INT16_C( 22708), INT16_C( 18496), INT16_C( 19717), INT16_C( 14431), -INT16_C( 30260) },
|
||||
{ INT16_C( 2291), -INT16_C( 6873), INT16_C( 1101), INT16_C( 7185), INT16_C( 14043), -INT16_C( 6914), -INT16_C( 8956), -INT16_C( 10424) },
|
||||
{ INT16_C( 16838), -INT16_C( 10172), -INT16_C( 31455), -INT16_C( 15523), INT16_C( 32539), INT16_C( 12803), INT16_C( 5475), INT16_C( 24852) } }
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_v8i16 a = simde_msa_ld_h(test_vec[i].a, 0);
|
||||
simde_v8i16 b = simde_msa_ld_h(test_vec[i].b, 0);
|
||||
simde_v8i16 r = simde_msa_addv_h(a, b);
|
||||
|
||||
simde_test_msa_v8i16_assert_equal(r, simde_msa_ld_h(test_vec[i].r, 0));
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_v8i16 a = simde_test_msa_v8i16_random();
|
||||
simde_v8i16 b = simde_test_msa_v8i16_random();
|
||||
simde_v8i16 r = simde_msa_addv_h(a, b);
|
||||
|
||||
simde_test_msa_v8i16_write(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_msa_v8i16_write(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v8i16_write(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_addv_w (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
int32_t a[4];
|
||||
int32_t b[4];
|
||||
int32_t r[4];
|
||||
} test_vec[] = {
|
||||
{ { INT32_C( 1971869139), INT32_C( 1122487640), -INT32_C( 505886277), INT32_C( 974474570) },
|
||||
{ INT32_C( 690202255), -INT32_C( 117222443), -INT32_C( 169288089), INT32_C( 402966340) },
|
||||
{ -INT32_C( 1632895902), INT32_C( 1005265197), -INT32_C( 675174366), INT32_C( 1377440910) } },
|
||||
{ { INT32_C( 1972210716), INT32_C( 347567193), -INT32_C( 2013884611), INT32_C( 1824590813) },
|
||||
{ -INT32_C( 2036996943), -INT32_C( 1619027912), -INT32_C( 1147901833), INT32_C( 1288935727) },
|
||||
{ -INT32_C( 64786227), -INT32_C( 1271460719), INT32_C( 1133180852), -INT32_C( 1181440756) } },
|
||||
{ { INT32_C( 2143379493), INT32_C( 294877396), -INT32_C( 459699961), INT32_C( 1162893972) },
|
||||
{ INT32_C( 2009916991), -INT32_C( 183088258), -INT32_C( 474895437), INT32_C( 1764721732) },
|
||||
{ -INT32_C( 141670812), INT32_C( 111789138), -INT32_C( 934595398), -INT32_C( 1367351592) } },
|
||||
{ { -INT32_C( 1175916315), INT32_C( 1875606632), -INT32_C( 1705745403), -INT32_C( 35674946) },
|
||||
{ INT32_C( 158641034), -INT32_C( 1426158601), INT32_C( 2056105782), INT32_C( 434355252) },
|
||||
{ -INT32_C( 1017275281), INT32_C( 449448031), INT32_C( 350360379), INT32_C( 398680306) } },
|
||||
{ { INT32_C( 349359276), INT32_C( 1300536648), -INT32_C( 1058547711), INT32_C( 129877884) },
|
||||
{ INT32_C( 1762669170), -INT32_C( 216789315), -INT32_C( 227696194), INT32_C( 168513630) },
|
||||
{ INT32_C( 2112028446), INT32_C( 1083747333), -INT32_C( 1286243905), INT32_C( 298391514) } },
|
||||
{ { INT32_C( 1679809820), INT32_C( 2092082043), -INT32_C( 147023493), -INT32_C( 738264480) },
|
||||
{ -INT32_C( 381940180), -INT32_C( 606318563), INT32_C( 1355631090), -INT32_C( 1235560295) },
|
||||
{ INT32_C( 1297869640), INT32_C( 1485763480), INT32_C( 1208607597), -INT32_C( 1973824775) } },
|
||||
{ { INT32_C( 807041461), -INT32_C( 1750217700), -INT32_C( 963647130), INT32_C( 261721571) },
|
||||
{ -INT32_C( 1174874468), INT32_C( 412406822), -INT32_C( 1217896163), -INT32_C( 294796487) },
|
||||
{ -INT32_C( 367833007), -INT32_C( 1337810878), INT32_C( 2113424003), -INT32_C( 33074916) } },
|
||||
{ { INT32_C( 1495238460), -INT32_C( 1158624172), -INT32_C( 1719631947), -INT32_C( 1448601075) },
|
||||
{ INT32_C( 375562736), -INT32_C( 1825573259), -INT32_C( 1874159785), -INT32_C( 1753303206) },
|
||||
{ INT32_C( 1870801196), INT32_C( 1310769865), INT32_C( 701175564), INT32_C( 1093063015) } }
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_v4i32 a = simde_msa_ld_w(test_vec[i].a, 0);
|
||||
simde_v4i32 b = simde_msa_ld_w(test_vec[i].b, 0);
|
||||
simde_v4i32 r = simde_msa_addv_w(a, b);
|
||||
|
||||
simde_test_msa_v4i32_assert_equal(r, simde_msa_ld_w(test_vec[i].r, 0));
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_v4i32 a = simde_test_msa_v4i32_random();
|
||||
simde_v4i32 b = simde_test_msa_v4i32_random();
|
||||
simde_v4i32 r = simde_msa_addv_w(a, b);
|
||||
|
||||
simde_test_msa_v4i32_write(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_msa_v4i32_write(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v4i32_write(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_addv_d (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
int64_t a[2];
|
||||
int64_t b[2];
|
||||
int64_t r[2];
|
||||
} test_vec[] = {
|
||||
{ { INT64_C( 2255424257447206206), -INT64_C( 2948062358972871328) },
|
||||
{ -INT64_C( 4248552037686609919), INT64_C( 5306879780364571828) },
|
||||
{ -INT64_C( 1993127780239403713), INT64_C( 2358817421391700500) } },
|
||||
{ { -INT64_C( 2956287189448878735), INT64_C( 1419576245091545589) },
|
||||
{ INT64_C( 8143797566728479185), -INT64_C( 7116490961181451800) },
|
||||
{ INT64_C( 5187510377279600450), -INT64_C( 5696914716089906211) } },
|
||||
{ { INT64_C( 3965262521739778491), INT64_C( 8379166610506861091) },
|
||||
{ INT64_C( 5807311898159600488), -INT64_C( 587015805221005552) },
|
||||
{ -INT64_C( 8674169653810172637), INT64_C( 7792150805285855539) } },
|
||||
{ { -INT64_C( 1868378377163353447), INT64_C( 6093481261078881657) },
|
||||
{ INT64_C( 787586752934724407), INT64_C( 5502309894810186280) },
|
||||
{ -INT64_C( 1080791624228629040), -INT64_C( 6850952917820483679) } },
|
||||
{ { INT64_C( 3250817952196822131), -INT64_C( 3197596845596854178) },
|
||||
{ INT64_C( 5918680069209987358), -INT64_C( 103279827561780590) },
|
||||
{ INT64_C( 9169498021406809489), -INT64_C( 3300876673158634768) } },
|
||||
{ { INT64_C( 5726698497969010839), -INT64_C( 4901540797807410294) },
|
||||
{ INT64_C( 6904290686432210003), INT64_C( 3668803785958131553) },
|
||||
{ -INT64_C( 5815754889308330774), -INT64_C( 1232737011849278741) } },
|
||||
{ { -INT64_C( 419408225646076179), INT64_C( 6129990640158689465) },
|
||||
{ INT64_C( 4517854646707152518), INT64_C( 8716739669333268011) },
|
||||
{ INT64_C( 4098446421061076339), -INT64_C( 3600013764217594140) } },
|
||||
{ { INT64_C( 2710467053366965555), INT64_C( 6819452419944791371) },
|
||||
{ INT64_C( 5084954419002439285), INT64_C( 269095370276781241) },
|
||||
{ INT64_C( 7795421472369404840), INT64_C( 7088547790221572612) } }
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_v2i64 a = simde_msa_ld_d(test_vec[i].a, 0);
|
||||
simde_v2i64 b = simde_msa_ld_d(test_vec[i].b, 0);
|
||||
simde_v2i64 r = simde_msa_addv_d(a, b);
|
||||
|
||||
simde_test_msa_v2i64_assert_equal(r, simde_msa_ld_d(test_vec[i].r, 0));
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_v2i64 a = simde_test_msa_v2i64_random();
|
||||
simde_v2i64 b = simde_test_msa_v2i64_random();
|
||||
simde_v2i64 r = simde_msa_addv_d(a, b);
|
||||
|
||||
simde_test_msa_v2i64_write(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_msa_v2i64_write(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v2i64_write(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
SIMDE_TEST_FUNC_LIST_BEGIN
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(addv_b)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(addv_h)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(addv_w)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(addv_d)
|
||||
SIMDE_TEST_FUNC_LIST_END
|
||||
|
||||
#include "test-msa-footer.h"
|
||||
333
thirdparty/simde/test/mips/msa/addvi.c
vendored
Normal file
333
thirdparty/simde/test/mips/msa/addvi.c
vendored
Normal file
|
|
@ -0,0 +1,333 @@
|
|||
#define SIMDE_TEST_MIPS_MSA_INSN addvi
|
||||
|
||||
#include "test-msa.h"
|
||||
#include "../../../simde/mips/msa/addvi.h"
|
||||
|
||||
static int
|
||||
test_simde_addvi_b (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
int8_t a[16];
|
||||
int8_t r3[16];
|
||||
int8_t r17[16];
|
||||
int8_t r29[16];
|
||||
} test_vec[] = {
|
||||
{ { INT8_C( 79), -INT8_C( 20), -INT8_C( 1), INT8_C( 31), INT8_C( 18), INT8_C( 24), INT8_C( 46), -INT8_C( 99),
|
||||
-INT8_C( 71), INT8_C( 81), INT8_C( 7), -INT8_C( 117), -INT8_C( 53), INT8_C( 76), -INT8_C( 40), INT8_C( 23) },
|
||||
{ INT8_C( 82), -INT8_C( 17), INT8_C( 2), INT8_C( 34), INT8_C( 21), INT8_C( 27), INT8_C( 49), -INT8_C( 96),
|
||||
-INT8_C( 68), INT8_C( 84), INT8_C( 10), -INT8_C( 114), -INT8_C( 50), INT8_C( 79), -INT8_C( 37), INT8_C( 26) },
|
||||
{ INT8_C( 96), -INT8_C( 3), INT8_C( 16), INT8_C( 48), INT8_C( 35), INT8_C( 41), INT8_C( 63), -INT8_C( 82),
|
||||
-INT8_C( 54), INT8_C( 98), INT8_C( 24), -INT8_C( 100), -INT8_C( 36), INT8_C( 93), -INT8_C( 23), INT8_C( 40) },
|
||||
{ INT8_C( 108), INT8_C( 9), INT8_C( 28), INT8_C( 60), INT8_C( 47), INT8_C( 53), INT8_C( 75), -INT8_C( 70),
|
||||
-INT8_C( 42), INT8_C( 110), INT8_C( 36), -INT8_C( 88), -INT8_C( 24), INT8_C( 105), -INT8_C( 11), INT8_C( 52) } },
|
||||
{ { -INT8_C( 112), -INT8_C( 17), -INT8_C( 121), INT8_C( 54), -INT8_C( 93), -INT8_C( 22), -INT8_C( 1), INT8_C( 112),
|
||||
INT8_C( 85), INT8_C( 125), INT8_C( 66), INT8_C( 49), INT8_C( 24), INT8_C( 75), -INT8_C( 66), INT8_C( 104) },
|
||||
{ -INT8_C( 109), -INT8_C( 14), -INT8_C( 118), INT8_C( 57), -INT8_C( 90), -INT8_C( 19), INT8_C( 2), INT8_C( 115),
|
||||
INT8_C( 88), INT8_MIN, INT8_C( 69), INT8_C( 52), INT8_C( 27), INT8_C( 78), -INT8_C( 63), INT8_C( 107) },
|
||||
{ -INT8_C( 95), INT8_C( 0), -INT8_C( 104), INT8_C( 71), -INT8_C( 76), -INT8_C( 5), INT8_C( 16), -INT8_C( 127),
|
||||
INT8_C( 102), -INT8_C( 114), INT8_C( 83), INT8_C( 66), INT8_C( 41), INT8_C( 92), -INT8_C( 49), INT8_C( 121) },
|
||||
{ -INT8_C( 83), INT8_C( 12), -INT8_C( 92), INT8_C( 83), -INT8_C( 64), INT8_C( 7), INT8_C( 28), -INT8_C( 115),
|
||||
INT8_C( 114), -INT8_C( 102), INT8_C( 95), INT8_C( 78), INT8_C( 53), INT8_C( 104), -INT8_C( 37), -INT8_C( 123) } },
|
||||
{ { INT8_C( 55), -INT8_C( 67), -INT8_C( 121), INT8_C( 73), -INT8_C( 43), -INT8_C( 75), -INT8_C( 25), -INT8_C( 114),
|
||||
INT8_C( 6), -INT8_C( 18), INT8_C( 25), -INT8_C( 47), INT8_C( 58), -INT8_C( 15), -INT8_C( 24), -INT8_C( 53) },
|
||||
{ INT8_C( 58), -INT8_C( 64), -INT8_C( 118), INT8_C( 76), -INT8_C( 40), -INT8_C( 72), -INT8_C( 22), -INT8_C( 111),
|
||||
INT8_C( 9), -INT8_C( 15), INT8_C( 28), -INT8_C( 44), INT8_C( 61), -INT8_C( 12), -INT8_C( 21), -INT8_C( 50) },
|
||||
{ INT8_C( 72), -INT8_C( 50), -INT8_C( 104), INT8_C( 90), -INT8_C( 26), -INT8_C( 58), -INT8_C( 8), -INT8_C( 97),
|
||||
INT8_C( 23), -INT8_C( 1), INT8_C( 42), -INT8_C( 30), INT8_C( 75), INT8_C( 2), -INT8_C( 7), -INT8_C( 36) },
|
||||
{ INT8_C( 84), -INT8_C( 38), -INT8_C( 92), INT8_C( 102), -INT8_C( 14), -INT8_C( 46), INT8_C( 4), -INT8_C( 85),
|
||||
INT8_C( 35), INT8_C( 11), INT8_C( 54), -INT8_C( 18), INT8_C( 87), INT8_C( 14), INT8_C( 5), -INT8_C( 24) } },
|
||||
{ { -INT8_C( 31), INT8_C( 111), INT8_C( 1), -INT8_C( 124), INT8_C( 89), INT8_C( 0), -INT8_C( 12), -INT8_C( 82),
|
||||
INT8_C( 125), INT8_C( 54), -INT8_C( 33), -INT8_C( 106), -INT8_C( 126), -INT8_C( 99), -INT8_C( 2), -INT8_C( 71) },
|
||||
{ -INT8_C( 28), INT8_C( 114), INT8_C( 4), -INT8_C( 121), INT8_C( 92), INT8_C( 3), -INT8_C( 9), -INT8_C( 79),
|
||||
INT8_MIN, INT8_C( 57), -INT8_C( 30), -INT8_C( 103), -INT8_C( 123), -INT8_C( 96), INT8_C( 1), -INT8_C( 68) },
|
||||
{ -INT8_C( 14), INT8_MIN, INT8_C( 18), -INT8_C( 107), INT8_C( 106), INT8_C( 17), INT8_C( 5), -INT8_C( 65),
|
||||
-INT8_C( 114), INT8_C( 71), -INT8_C( 16), -INT8_C( 89), -INT8_C( 109), -INT8_C( 82), INT8_C( 15), -INT8_C( 54) },
|
||||
{ -INT8_C( 2), -INT8_C( 116), INT8_C( 30), -INT8_C( 95), INT8_C( 118), INT8_C( 29), INT8_C( 17), -INT8_C( 53),
|
||||
-INT8_C( 102), INT8_C( 83), -INT8_C( 4), -INT8_C( 77), -INT8_C( 97), -INT8_C( 70), INT8_C( 27), -INT8_C( 42) } },
|
||||
{ { INT8_C( 90), -INT8_C( 123), INT8_C( 3), INT8_C( 48), INT8_C( 58), -INT8_C( 22), -INT8_C( 66), INT8_C( 64),
|
||||
-INT8_C( 40), -INT8_C( 40), INT8_C( 17), INT8_C( 18), -INT8_C( 55), -INT8_C( 7), -INT8_C( 35), -INT8_C( 86) },
|
||||
{ INT8_C( 93), -INT8_C( 120), INT8_C( 6), INT8_C( 51), INT8_C( 61), -INT8_C( 19), -INT8_C( 63), INT8_C( 67),
|
||||
-INT8_C( 37), -INT8_C( 37), INT8_C( 20), INT8_C( 21), -INT8_C( 52), -INT8_C( 4), -INT8_C( 32), -INT8_C( 83) },
|
||||
{ INT8_C( 107), -INT8_C( 106), INT8_C( 20), INT8_C( 65), INT8_C( 75), -INT8_C( 5), -INT8_C( 49), INT8_C( 81),
|
||||
-INT8_C( 23), -INT8_C( 23), INT8_C( 34), INT8_C( 35), -INT8_C( 38), INT8_C( 10), -INT8_C( 18), -INT8_C( 69) },
|
||||
{ INT8_C( 119), -INT8_C( 94), INT8_C( 32), INT8_C( 77), INT8_C( 87), INT8_C( 7), -INT8_C( 37), INT8_C( 93),
|
||||
-INT8_C( 11), -INT8_C( 11), INT8_C( 46), INT8_C( 47), -INT8_C( 26), INT8_C( 22), -INT8_C( 6), -INT8_C( 57) } },
|
||||
{ { INT8_C( 104), -INT8_C( 34), INT8_C( 46), -INT8_C( 63), -INT8_C( 34), INT8_C( 34), INT8_C( 111), INT8_C( 92),
|
||||
INT8_C( 89), INT8_C( 78), -INT8_C( 14), -INT8_C( 37), -INT8_C( 21), -INT8_C( 16), -INT8_C( 108), INT8_C( 69) },
|
||||
{ INT8_C( 107), -INT8_C( 31), INT8_C( 49), -INT8_C( 60), -INT8_C( 31), INT8_C( 37), INT8_C( 114), INT8_C( 95),
|
||||
INT8_C( 92), INT8_C( 81), -INT8_C( 11), -INT8_C( 34), -INT8_C( 18), -INT8_C( 13), -INT8_C( 105), INT8_C( 72) },
|
||||
{ INT8_C( 121), -INT8_C( 17), INT8_C( 63), -INT8_C( 46), -INT8_C( 17), INT8_C( 51), INT8_MIN, INT8_C( 109),
|
||||
INT8_C( 106), INT8_C( 95), INT8_C( 3), -INT8_C( 20), -INT8_C( 4), INT8_C( 1), -INT8_C( 91), INT8_C( 86) },
|
||||
{ -INT8_C( 123), -INT8_C( 5), INT8_C( 75), -INT8_C( 34), -INT8_C( 5), INT8_C( 63), -INT8_C( 116), INT8_C( 121),
|
||||
INT8_C( 118), INT8_C( 107), INT8_C( 15), -INT8_C( 8), INT8_C( 8), INT8_C( 13), -INT8_C( 79), INT8_C( 98) } },
|
||||
{ { INT8_C( 117), -INT8_C( 105), INT8_C( 117), -INT8_C( 81), -INT8_C( 127), INT8_C( 52), -INT8_C( 17), INT8_C( 89),
|
||||
INT8_C( 12), INT8_C( 0), INT8_C( 108), -INT8_C( 43), -INT8_C( 7), INT8_C( 73), INT8_MIN, INT8_C( 97) },
|
||||
{ INT8_C( 120), -INT8_C( 102), INT8_C( 120), -INT8_C( 78), -INT8_C( 124), INT8_C( 55), -INT8_C( 14), INT8_C( 92),
|
||||
INT8_C( 15), INT8_C( 3), INT8_C( 111), -INT8_C( 40), -INT8_C( 4), INT8_C( 76), -INT8_C( 125), INT8_C( 100) },
|
||||
{ -INT8_C( 122), -INT8_C( 88), -INT8_C( 122), -INT8_C( 64), -INT8_C( 110), INT8_C( 69), INT8_C( 0), INT8_C( 106),
|
||||
INT8_C( 29), INT8_C( 17), INT8_C( 125), -INT8_C( 26), INT8_C( 10), INT8_C( 90), -INT8_C( 111), INT8_C( 114) },
|
||||
{ -INT8_C( 110), -INT8_C( 76), -INT8_C( 110), -INT8_C( 52), -INT8_C( 98), INT8_C( 81), INT8_C( 12), INT8_C( 118),
|
||||
INT8_C( 41), INT8_C( 29), -INT8_C( 119), -INT8_C( 14), INT8_C( 22), INT8_C( 102), -INT8_C( 99), INT8_C( 126) } },
|
||||
{ { INT8_C( 40), -INT8_C( 82), INT8_C( 34), INT8_C( 6), -INT8_C( 47), -INT8_C( 111), INT8_C( 98), INT8_C( 42),
|
||||
-INT8_C( 33), INT8_C( 84), INT8_C( 5), -INT8_C( 54), INT8_C( 68), -INT8_C( 103), INT8_C( 15), -INT8_C( 71) },
|
||||
{ INT8_C( 43), -INT8_C( 79), INT8_C( 37), INT8_C( 9), -INT8_C( 44), -INT8_C( 108), INT8_C( 101), INT8_C( 45),
|
||||
-INT8_C( 30), INT8_C( 87), INT8_C( 8), -INT8_C( 51), INT8_C( 71), -INT8_C( 100), INT8_C( 18), -INT8_C( 68) },
|
||||
{ INT8_C( 57), -INT8_C( 65), INT8_C( 51), INT8_C( 23), -INT8_C( 30), -INT8_C( 94), INT8_C( 115), INT8_C( 59),
|
||||
-INT8_C( 16), INT8_C( 101), INT8_C( 22), -INT8_C( 37), INT8_C( 85), -INT8_C( 86), INT8_C( 32), -INT8_C( 54) },
|
||||
{ INT8_C( 69), -INT8_C( 53), INT8_C( 63), INT8_C( 35), -INT8_C( 18), -INT8_C( 82), INT8_MAX, INT8_C( 71),
|
||||
-INT8_C( 4), INT8_C( 113), INT8_C( 34), -INT8_C( 25), INT8_C( 97), -INT8_C( 74), INT8_C( 44), -INT8_C( 42) } }
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_v16i8 a = simde_msa_ld_b(test_vec[i].a, 0);
|
||||
simde_v16i8 r3 = simde_msa_addvi_b(a, 3);
|
||||
simde_v16i8 r17 = simde_msa_addvi_b(a, 17);
|
||||
simde_v16i8 r29 = simde_msa_addvi_b(a, 29);
|
||||
|
||||
simde_test_msa_v16i8_assert_equal( r3, simde_msa_ld_b(test_vec[i].r3 , 0));
|
||||
simde_test_msa_v16i8_assert_equal(r17, simde_msa_ld_b(test_vec[i].r17, 0));
|
||||
simde_test_msa_v16i8_assert_equal(r29, simde_msa_ld_b(test_vec[i].r29, 0));
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_v16i8 a = simde_test_msa_v16i8_random();
|
||||
simde_v16i8 r3 = simde_msa_addvi_b(a, 3);
|
||||
simde_v16i8 r17 = simde_msa_addvi_b(a, 17);
|
||||
simde_v16i8 r29 = simde_msa_addvi_b(a, 29);
|
||||
|
||||
simde_test_msa_v16i8_write(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_msa_v16i8_write(2, r3, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v16i8_write(2, r17, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v16i8_write(2, r29, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_addvi_h (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
int16_t a[8];
|
||||
int16_t r3[8];
|
||||
int16_t r17[8];
|
||||
int16_t r29[8];
|
||||
} test_vec[] = {
|
||||
{ { INT16_C( 16989), -INT16_C( 12326), INT16_C( 29939), INT16_C( 3154), -INT16_C( 30101), INT16_C( 13133), INT16_C( 10430), -INT16_C( 7772) },
|
||||
{ INT16_C( 16992), -INT16_C( 12323), INT16_C( 29942), INT16_C( 3157), -INT16_C( 30098), INT16_C( 13136), INT16_C( 10433), -INT16_C( 7769) },
|
||||
{ INT16_C( 17006), -INT16_C( 12309), INT16_C( 29956), INT16_C( 3171), -INT16_C( 30084), INT16_C( 13150), INT16_C( 10447), -INT16_C( 7755) },
|
||||
{ INT16_C( 17018), -INT16_C( 12297), INT16_C( 29968), INT16_C( 3183), -INT16_C( 30072), INT16_C( 13162), INT16_C( 10459), -INT16_C( 7743) } },
|
||||
{ { -INT16_C( 11094), -INT16_C( 2870), INT16_C( 2203), INT16_C( 25357), -INT16_C( 27214), INT16_C( 19476), -INT16_C( 4045), -INT16_C( 28512) },
|
||||
{ -INT16_C( 11091), -INT16_C( 2867), INT16_C( 2206), INT16_C( 25360), -INT16_C( 27211), INT16_C( 19479), -INT16_C( 4042), -INT16_C( 28509) },
|
||||
{ -INT16_C( 11077), -INT16_C( 2853), INT16_C( 2220), INT16_C( 25374), -INT16_C( 27197), INT16_C( 19493), -INT16_C( 4028), -INT16_C( 28495) },
|
||||
{ -INT16_C( 11065), -INT16_C( 2841), INT16_C( 2232), INT16_C( 25386), -INT16_C( 27185), INT16_C( 19505), -INT16_C( 4016), -INT16_C( 28483) } },
|
||||
{ { INT16_C( 31538), INT16_C( 9567), -INT16_C( 19985), INT16_C( 23346), INT16_C( 32571), -INT16_C( 1394), INT16_C( 13223), INT16_C( 21211) },
|
||||
{ INT16_C( 31541), INT16_C( 9570), -INT16_C( 19982), INT16_C( 23349), INT16_C( 32574), -INT16_C( 1391), INT16_C( 13226), INT16_C( 21214) },
|
||||
{ INT16_C( 31555), INT16_C( 9584), -INT16_C( 19968), INT16_C( 23363), INT16_C( 32588), -INT16_C( 1377), INT16_C( 13240), INT16_C( 21228) },
|
||||
{ INT16_C( 31567), INT16_C( 9596), -INT16_C( 19956), INT16_C( 23375), INT16_C( 32600), -INT16_C( 1365), INT16_C( 13252), INT16_C( 21240) } },
|
||||
{ { -INT16_C( 23289), -INT16_C( 23994), INT16_C( 21421), INT16_C( 24325), INT16_C( 6632), INT16_C( 7083), INT16_C( 19465), INT16_C( 15275) },
|
||||
{ -INT16_C( 23286), -INT16_C( 23991), INT16_C( 21424), INT16_C( 24328), INT16_C( 6635), INT16_C( 7086), INT16_C( 19468), INT16_C( 15278) },
|
||||
{ -INT16_C( 23272), -INT16_C( 23977), INT16_C( 21438), INT16_C( 24342), INT16_C( 6649), INT16_C( 7100), INT16_C( 19482), INT16_C( 15292) },
|
||||
{ -INT16_C( 23260), -INT16_C( 23965), INT16_C( 21450), INT16_C( 24354), INT16_C( 6661), INT16_C( 7112), INT16_C( 19494), INT16_C( 15304) } },
|
||||
{ { INT16_C( 3015), -INT16_C( 18847), -INT16_C( 27716), -INT16_C( 2031), -INT16_C( 24558), -INT16_C( 17678), -INT16_C( 12845), -INT16_C( 9716) },
|
||||
{ INT16_C( 3018), -INT16_C( 18844), -INT16_C( 27713), -INT16_C( 2028), -INT16_C( 24555), -INT16_C( 17675), -INT16_C( 12842), -INT16_C( 9713) },
|
||||
{ INT16_C( 3032), -INT16_C( 18830), -INT16_C( 27699), -INT16_C( 2014), -INT16_C( 24541), -INT16_C( 17661), -INT16_C( 12828), -INT16_C( 9699) },
|
||||
{ INT16_C( 3044), -INT16_C( 18818), -INT16_C( 27687), -INT16_C( 2002), -INT16_C( 24529), -INT16_C( 17649), -INT16_C( 12816), -INT16_C( 9687) } },
|
||||
{ { INT16_C( 21106), INT16_C( 8060), -INT16_C( 32347), -INT16_C( 29058), INT16_C( 10651), -INT16_C( 23383), INT16_C( 21877), INT16_C( 15584) },
|
||||
{ INT16_C( 21109), INT16_C( 8063), -INT16_C( 32344), -INT16_C( 29055), INT16_C( 10654), -INT16_C( 23380), INT16_C( 21880), INT16_C( 15587) },
|
||||
{ INT16_C( 21123), INT16_C( 8077), -INT16_C( 32330), -INT16_C( 29041), INT16_C( 10668), -INT16_C( 23366), INT16_C( 21894), INT16_C( 15601) },
|
||||
{ INT16_C( 21135), INT16_C( 8089), -INT16_C( 32318), -INT16_C( 29029), INT16_C( 10680), -INT16_C( 23354), INT16_C( 21906), INT16_C( 15613) } },
|
||||
{ { INT16_C( 16736), INT16_C( 7411), INT16_C( 1236), -INT16_C( 6636), INT16_C( 1700), INT16_C( 30624), -INT16_C( 21293), INT16_C( 17745) },
|
||||
{ INT16_C( 16739), INT16_C( 7414), INT16_C( 1239), -INT16_C( 6633), INT16_C( 1703), INT16_C( 30627), -INT16_C( 21290), INT16_C( 17748) },
|
||||
{ INT16_C( 16753), INT16_C( 7428), INT16_C( 1253), -INT16_C( 6619), INT16_C( 1717), INT16_C( 30641), -INT16_C( 21276), INT16_C( 17762) },
|
||||
{ INT16_C( 16765), INT16_C( 7440), INT16_C( 1265), -INT16_C( 6607), INT16_C( 1729), INT16_C( 30653), -INT16_C( 21264), INT16_C( 17774) } },
|
||||
{ { -INT16_C( 12802), -INT16_C( 23452), -INT16_C( 7601), -INT16_C( 5582), -INT16_C( 9460), -INT16_C( 32370), INT16_C( 28208), -INT16_C( 28482) },
|
||||
{ -INT16_C( 12799), -INT16_C( 23449), -INT16_C( 7598), -INT16_C( 5579), -INT16_C( 9457), -INT16_C( 32367), INT16_C( 28211), -INT16_C( 28479) },
|
||||
{ -INT16_C( 12785), -INT16_C( 23435), -INT16_C( 7584), -INT16_C( 5565), -INT16_C( 9443), -INT16_C( 32353), INT16_C( 28225), -INT16_C( 28465) },
|
||||
{ -INT16_C( 12773), -INT16_C( 23423), -INT16_C( 7572), -INT16_C( 5553), -INT16_C( 9431), -INT16_C( 32341), INT16_C( 28237), -INT16_C( 28453) } }
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_v8i16 a = simde_msa_ld_h(test_vec[i].a, 0);
|
||||
simde_v8i16 r3 = simde_msa_addvi_h(a, 3);
|
||||
simde_v8i16 r17 = simde_msa_addvi_h(a, 17);
|
||||
simde_v8i16 r29 = simde_msa_addvi_h(a, 29);
|
||||
|
||||
simde_test_msa_v8i16_assert_equal( r3, simde_msa_ld_h(test_vec[i].r3 , 0));
|
||||
simde_test_msa_v8i16_assert_equal(r17, simde_msa_ld_h(test_vec[i].r17, 0));
|
||||
simde_test_msa_v8i16_assert_equal(r29, simde_msa_ld_h(test_vec[i].r29, 0));
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_v8i16 a = simde_test_msa_v8i16_random();
|
||||
simde_v8i16 r3 = simde_msa_addvi_h(a, 3);
|
||||
simde_v8i16 r17 = simde_msa_addvi_h(a, 17);
|
||||
simde_v8i16 r29 = simde_msa_addvi_h(a, 29);
|
||||
|
||||
simde_test_msa_v8i16_write(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_msa_v8i16_write(2, r3, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v8i16_write(2, r17, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v8i16_write(2, r29, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_addvi_w (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
int32_t a[4];
|
||||
int32_t r3[4];
|
||||
int32_t r17[4];
|
||||
int32_t r29[4];
|
||||
} test_vec[] = {
|
||||
{ { -INT32_C( 2085768785), INT32_C( 1516945845), -INT32_C( 1680799032), -INT32_C( 1243536457) },
|
||||
{ -INT32_C( 2085768782), INT32_C( 1516945848), -INT32_C( 1680799029), -INT32_C( 1243536454) },
|
||||
{ -INT32_C( 2085768768), INT32_C( 1516945862), -INT32_C( 1680799015), -INT32_C( 1243536440) },
|
||||
{ -INT32_C( 2085768756), INT32_C( 1516945874), -INT32_C( 1680799003), -INT32_C( 1243536428) } },
|
||||
{ { INT32_C( 1062815216), INT32_C( 875137832), -INT32_C( 1749698457), -INT32_C( 701992154) },
|
||||
{ INT32_C( 1062815219), INT32_C( 875137835), -INT32_C( 1749698454), -INT32_C( 701992151) },
|
||||
{ INT32_C( 1062815233), INT32_C( 875137849), -INT32_C( 1749698440), -INT32_C( 701992137) },
|
||||
{ INT32_C( 1062815245), INT32_C( 875137861), -INT32_C( 1749698428), -INT32_C( 701992125) } },
|
||||
{ { -INT32_C( 631646940), INT32_C( 1580516246), -INT32_C( 2047212082), INT32_C( 423287592) },
|
||||
{ -INT32_C( 631646937), INT32_C( 1580516249), -INT32_C( 2047212079), INT32_C( 423287595) },
|
||||
{ -INT32_C( 631646923), INT32_C( 1580516263), -INT32_C( 2047212065), INT32_C( 423287609) },
|
||||
{ -INT32_C( 631646911), INT32_C( 1580516275), -INT32_C( 2047212053), INT32_C( 423287621) } },
|
||||
{ { INT32_C( 1213764640), -INT32_C( 2038660577), INT32_C( 1612591674), -INT32_C( 902412635) },
|
||||
{ INT32_C( 1213764643), -INT32_C( 2038660574), INT32_C( 1612591677), -INT32_C( 902412632) },
|
||||
{ INT32_C( 1213764657), -INT32_C( 2038660560), INT32_C( 1612591691), -INT32_C( 902412618) },
|
||||
{ INT32_C( 1213764669), -INT32_C( 2038660548), INT32_C( 1612591703), -INT32_C( 902412606) } },
|
||||
{ { -INT32_C( 1314615269), INT32_C( 554752083), INT32_C( 111545053), INT32_C( 85975525) },
|
||||
{ -INT32_C( 1314615266), INT32_C( 554752086), INT32_C( 111545056), INT32_C( 85975528) },
|
||||
{ -INT32_C( 1314615252), INT32_C( 554752100), INT32_C( 111545070), INT32_C( 85975542) },
|
||||
{ -INT32_C( 1314615240), INT32_C( 554752112), INT32_C( 111545082), INT32_C( 85975554) } },
|
||||
{ { -INT32_C( 1806796939), INT32_C( 857459449), -INT32_C( 1567344132), -INT32_C( 1704146305) },
|
||||
{ -INT32_C( 1806796936), INT32_C( 857459452), -INT32_C( 1567344129), -INT32_C( 1704146302) },
|
||||
{ -INT32_C( 1806796922), INT32_C( 857459466), -INT32_C( 1567344115), -INT32_C( 1704146288) },
|
||||
{ -INT32_C( 1806796910), INT32_C( 857459478), -INT32_C( 1567344103), -INT32_C( 1704146276) } },
|
||||
{ { -INT32_C( 1370812326), -INT32_C( 976266264), INT32_C( 1254848101), -INT32_C( 867112361) },
|
||||
{ -INT32_C( 1370812323), -INT32_C( 976266261), INT32_C( 1254848104), -INT32_C( 867112358) },
|
||||
{ -INT32_C( 1370812309), -INT32_C( 976266247), INT32_C( 1254848118), -INT32_C( 867112344) },
|
||||
{ -INT32_C( 1370812297), -INT32_C( 976266235), INT32_C( 1254848130), -INT32_C( 867112332) } },
|
||||
{ { INT32_C( 1533058658), INT32_C( 1703902056), INT32_C( 856105908), INT32_C( 1221424109) },
|
||||
{ INT32_C( 1533058661), INT32_C( 1703902059), INT32_C( 856105911), INT32_C( 1221424112) },
|
||||
{ INT32_C( 1533058675), INT32_C( 1703902073), INT32_C( 856105925), INT32_C( 1221424126) },
|
||||
{ INT32_C( 1533058687), INT32_C( 1703902085), INT32_C( 856105937), INT32_C( 1221424138) } }
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_v4i32 a = simde_msa_ld_w(test_vec[i].a, 0);
|
||||
simde_v4i32 r3 = simde_msa_addvi_w(a, 3);
|
||||
simde_v4i32 r17 = simde_msa_addvi_w(a, 17);
|
||||
simde_v4i32 r29 = simde_msa_addvi_w(a, 29);
|
||||
|
||||
simde_test_msa_v4i32_assert_equal( r3, simde_msa_ld_w(test_vec[i].r3 , 0));
|
||||
simde_test_msa_v4i32_assert_equal(r17, simde_msa_ld_w(test_vec[i].r17, 0));
|
||||
simde_test_msa_v4i32_assert_equal(r29, simde_msa_ld_w(test_vec[i].r29, 0));
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_v4i32 a = simde_test_msa_v4i32_random();
|
||||
simde_v4i32 r3 = simde_msa_addvi_w(a, 3);
|
||||
simde_v4i32 r17 = simde_msa_addvi_w(a, 17);
|
||||
simde_v4i32 r29 = simde_msa_addvi_w(a, 29);
|
||||
|
||||
simde_test_msa_v4i32_write(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_msa_v4i32_write(2, r3, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v4i32_write(2, r17, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v4i32_write(2, r29, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_addvi_d (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
int64_t a[2];
|
||||
int64_t r3[2];
|
||||
int64_t r17[2];
|
||||
int64_t r29[2];
|
||||
} test_vec[] = {
|
||||
{ { -INT64_C( 2724460670740981373), INT64_C( 5214733952184810555) },
|
||||
{ -INT64_C( 2724460670740981370), INT64_C( 5214733952184810558) },
|
||||
{ -INT64_C( 2724460670740981356), INT64_C( 5214733952184810572) },
|
||||
{ -INT64_C( 2724460670740981344), INT64_C( 5214733952184810584) } },
|
||||
{ { -INT64_C( 1161872377586073838), -INT64_C( 2482626499100612778) },
|
||||
{ -INT64_C( 1161872377586073835), -INT64_C( 2482626499100612775) },
|
||||
{ -INT64_C( 1161872377586073821), -INT64_C( 2482626499100612761) },
|
||||
{ -INT64_C( 1161872377586073809), -INT64_C( 2482626499100612749) } },
|
||||
{ { -INT64_C( 9054636277365178103), INT64_C( 262180679475100788) },
|
||||
{ -INT64_C( 9054636277365178100), INT64_C( 262180679475100791) },
|
||||
{ -INT64_C( 9054636277365178086), INT64_C( 262180679475100805) },
|
||||
{ -INT64_C( 9054636277365178074), INT64_C( 262180679475100817) } },
|
||||
{ { -INT64_C( 3432764936047147214), INT64_C( 8609931885089685061) },
|
||||
{ -INT64_C( 3432764936047147211), INT64_C( 8609931885089685064) },
|
||||
{ -INT64_C( 3432764936047147197), INT64_C( 8609931885089685078) },
|
||||
{ -INT64_C( 3432764936047147185), INT64_C( 8609931885089685090) } },
|
||||
{ { -INT64_C( 5626600962103327711), -INT64_C( 6504130850269102136) },
|
||||
{ -INT64_C( 5626600962103327708), -INT64_C( 6504130850269102133) },
|
||||
{ -INT64_C( 5626600962103327694), -INT64_C( 6504130850269102119) },
|
||||
{ -INT64_C( 5626600962103327682), -INT64_C( 6504130850269102107) } },
|
||||
{ { -INT64_C( 2503316841853469961), INT64_C( 1644932021605914349) },
|
||||
{ -INT64_C( 2503316841853469958), INT64_C( 1644932021605914352) },
|
||||
{ -INT64_C( 2503316841853469944), INT64_C( 1644932021605914366) },
|
||||
{ -INT64_C( 2503316841853469932), INT64_C( 1644932021605914378) } },
|
||||
{ { -INT64_C( 2474330981474056004), INT64_C( 6665699520914306408) },
|
||||
{ -INT64_C( 2474330981474056001), INT64_C( 6665699520914306411) },
|
||||
{ -INT64_C( 2474330981474055987), INT64_C( 6665699520914306425) },
|
||||
{ -INT64_C( 2474330981474055975), INT64_C( 6665699520914306437) } },
|
||||
{ { -INT64_C( 1224681121786260596), INT64_C( 3562661170106760549) },
|
||||
{ -INT64_C( 1224681121786260593), INT64_C( 3562661170106760552) },
|
||||
{ -INT64_C( 1224681121786260579), INT64_C( 3562661170106760566) },
|
||||
{ -INT64_C( 1224681121786260567), INT64_C( 3562661170106760578) } }
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_v2i64 a = simde_msa_ld_d(test_vec[i].a, 0);
|
||||
simde_v2i64 r3 = simde_msa_addvi_d(a, 3);
|
||||
simde_v2i64 r17 = simde_msa_addvi_d(a, 17);
|
||||
simde_v2i64 r29 = simde_msa_addvi_d(a, 29);
|
||||
|
||||
simde_test_msa_v2i64_assert_equal( r3, simde_msa_ld_d(test_vec[i].r3 , 0));
|
||||
simde_test_msa_v2i64_assert_equal(r17, simde_msa_ld_d(test_vec[i].r17, 0));
|
||||
simde_test_msa_v2i64_assert_equal(r29, simde_msa_ld_d(test_vec[i].r29, 0));
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_v2i64 a = simde_test_msa_v2i64_random();
|
||||
simde_v2i64 r3 = simde_msa_addvi_d(a, 3);
|
||||
simde_v2i64 r17 = simde_msa_addvi_d(a, 17);
|
||||
simde_v2i64 r29 = simde_msa_addvi_d(a, 29);
|
||||
|
||||
simde_test_msa_v2i64_write(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_msa_v2i64_write(2, r3, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v2i64_write(2, r17, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v2i64_write(2, r29, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
SIMDE_TEST_FUNC_LIST_BEGIN
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(addvi_b)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(addvi_h)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(addvi_w)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(addvi_d)
|
||||
SIMDE_TEST_FUNC_LIST_END
|
||||
|
||||
#include "test-msa-footer.h"
|
||||
92
thirdparty/simde/test/mips/msa/and.c
vendored
Normal file
92
thirdparty/simde/test/mips/msa/and.c
vendored
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
#define SIMDE_TEST_MIPS_MSA_INSN and
|
||||
|
||||
#include "test-msa.h"
|
||||
#include "../../../simde/mips/msa/and.h"
|
||||
|
||||
static int
|
||||
test_simde_and_v (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
uint8_t a[16];
|
||||
uint8_t b[16];
|
||||
uint8_t r[16];
|
||||
} test_vec[] = {
|
||||
{ { UINT8_C( 4), UINT8_C(166), UINT8_C(206), UINT8_C(113), UINT8_C(106), UINT8_C(124), UINT8_C(117), UINT8_C( 15),
|
||||
UINT8_C(161), UINT8_C( 59), UINT8_C(172), UINT8_C(152), UINT8_C( 68), UINT8_C( 9), UINT8_C(246), UINT8_C(112) },
|
||||
{ UINT8_C( 82), UINT8_C(177), UINT8_C( 43), UINT8_C(254), UINT8_C(120), UINT8_C(241), UINT8_C( 32), UINT8_C( 34),
|
||||
UINT8_C(198), UINT8_C(158), UINT8_C(232), UINT8_C( 3), UINT8_C( 18), UINT8_C(230), UINT8_C(120), UINT8_C( 23) },
|
||||
{ UINT8_C( 0), UINT8_C(160), UINT8_C( 10), UINT8_C(112), UINT8_C(104), UINT8_C(112), UINT8_C( 32), UINT8_C( 2),
|
||||
UINT8_C(128), UINT8_C( 26), UINT8_C(168), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(112), UINT8_C( 16) } },
|
||||
{ { UINT8_C(140), UINT8_C( 70), UINT8_C(136), UINT8_C(246), UINT8_C(194), UINT8_C(254), UINT8_C( 6), UINT8_C( 99),
|
||||
UINT8_C( 57), UINT8_C(178), UINT8_C(251), UINT8_C(125), UINT8_C(187), UINT8_C(241), UINT8_C(238), UINT8_C( 14) },
|
||||
{ UINT8_C(163), UINT8_C( 25), UINT8_C( 12), UINT8_C( 27), UINT8_C( 10), UINT8_C( 45), UINT8_C( 62), UINT8_C(208),
|
||||
UINT8_C(203), UINT8_C( 38), UINT8_C(212), UINT8_C(221), UINT8_C( 12), UINT8_C( 76), UINT8_C(244), UINT8_C(152) },
|
||||
{ UINT8_C(128), UINT8_C( 0), UINT8_C( 8), UINT8_C( 18), UINT8_C( 2), UINT8_C( 44), UINT8_C( 6), UINT8_C( 64),
|
||||
UINT8_C( 9), UINT8_C( 34), UINT8_C(208), UINT8_C( 93), UINT8_C( 8), UINT8_C( 64), UINT8_C(228), UINT8_C( 8) } },
|
||||
{ { UINT8_C(146), UINT8_C(125), UINT8_C(143), UINT8_C( 85), UINT8_C(123), UINT8_C(149), UINT8_C(184), UINT8_C(180),
|
||||
UINT8_C( 71), UINT8_C(180), UINT8_C( 50), UINT8_C( 2), UINT8_C(165), UINT8_C( 32), UINT8_C( 16), UINT8_C( 72) },
|
||||
{ UINT8_C( 57), UINT8_C( 29), UINT8_C(100), UINT8_C( 67), UINT8_C( 74), UINT8_C(162), UINT8_C( 20), UINT8_C( 21),
|
||||
UINT8_C(200), UINT8_C(232), UINT8_C(242), UINT8_C(213), UINT8_C( 52), UINT8_C(231), UINT8_C(109), UINT8_C(198) },
|
||||
{ UINT8_C( 16), UINT8_C( 29), UINT8_C( 4), UINT8_C( 65), UINT8_C( 74), UINT8_C(128), UINT8_C( 16), UINT8_C( 20),
|
||||
UINT8_C( 64), UINT8_C(160), UINT8_C( 50), UINT8_C( 0), UINT8_C( 36), UINT8_C( 32), UINT8_C( 0), UINT8_C( 64) } },
|
||||
{ { UINT8_C(100), UINT8_C(252), UINT8_C( 27), UINT8_C(223), UINT8_C(145), UINT8_C(212), UINT8_C(147), UINT8_C(216),
|
||||
UINT8_C(136), UINT8_C(197), UINT8_C(219), UINT8_C( 45), UINT8_C(229), UINT8_C(235), UINT8_C(118), UINT8_C( 30) },
|
||||
{ UINT8_C( 8), UINT8_C(218), UINT8_C( 98), UINT8_C( 82), UINT8_C(124), UINT8_C(118), UINT8_C(103), UINT8_C( 68),
|
||||
UINT8_C( 94), UINT8_C( 90), UINT8_C( 25), UINT8_C(146), UINT8_C( 65), UINT8_C(135), UINT8_C( 88), UINT8_C(165) },
|
||||
{ UINT8_C( 0), UINT8_C(216), UINT8_C( 2), UINT8_C( 82), UINT8_C( 16), UINT8_C( 84), UINT8_C( 3), UINT8_C( 64),
|
||||
UINT8_C( 8), UINT8_C( 64), UINT8_C( 25), UINT8_C( 0), UINT8_C( 65), UINT8_C(131), UINT8_C( 80), UINT8_C( 4) } },
|
||||
{ { UINT8_C(131), UINT8_C(116), UINT8_C(132), UINT8_C( 21), UINT8_C( 72), UINT8_C( 23), UINT8_C(237), UINT8_C(208),
|
||||
UINT8_C(221), UINT8_C(200), UINT8_C(253), UINT8_C(194), UINT8_C(180), UINT8_C(115), UINT8_C(225), UINT8_C(188) },
|
||||
{ UINT8_C( 77), UINT8_C( 67), UINT8_C( 15), UINT8_C(201), UINT8_C(185), UINT8_C(118), UINT8_C( 14), UINT8_C( 23),
|
||||
UINT8_C(208), UINT8_C( 39), UINT8_C(169), UINT8_C( 17), UINT8_C(174), UINT8_C( 1), UINT8_C(182), UINT8_C( 50) },
|
||||
{ UINT8_C( 1), UINT8_C( 64), UINT8_C( 4), UINT8_C( 1), UINT8_C( 8), UINT8_C( 22), UINT8_C( 12), UINT8_C( 16),
|
||||
UINT8_C(208), UINT8_C( 0), UINT8_C(169), UINT8_C( 0), UINT8_C(164), UINT8_C( 1), UINT8_C(160), UINT8_C( 48) } },
|
||||
{ { UINT8_C(117), UINT8_C( 58), UINT8_C( 71), UINT8_C(189), UINT8_C( 82), UINT8_C( 52), UINT8_C(141), UINT8_C( 47),
|
||||
UINT8_C(253), UINT8_C(139), UINT8_C(241), UINT8_C(177), UINT8_C(254), UINT8_C(210), UINT8_C(109), UINT8_C( 76) },
|
||||
{ UINT8_C( 21), UINT8_C(124), UINT8_C( 21), UINT8_C(206), UINT8_C(243), UINT8_C( 35), UINT8_C(229), UINT8_C(195),
|
||||
UINT8_C( 75), UINT8_C(142), UINT8_C(213), UINT8_C(249), UINT8_C(144), UINT8_C(139), UINT8_C( 43), UINT8_C( 5) },
|
||||
{ UINT8_C( 21), UINT8_C( 56), UINT8_C( 5), UINT8_C(140), UINT8_C( 82), UINT8_C( 32), UINT8_C(133), UINT8_C( 3),
|
||||
UINT8_C( 73), UINT8_C(138), UINT8_C(209), UINT8_C(177), UINT8_C(144), UINT8_C(130), UINT8_C( 41), UINT8_C( 4) } },
|
||||
{ { UINT8_C(198), UINT8_C(114), UINT8_C(195), UINT8_C( 24), UINT8_C(167), UINT8_C( 80), UINT8_C( 71), UINT8_C(164),
|
||||
UINT8_C(219), UINT8_C( 56), UINT8_C( 85), UINT8_C(218), UINT8_C( 11), UINT8_C(194), UINT8_C( 38), UINT8_C( 32) },
|
||||
{ UINT8_C( 63), UINT8_C( 59), UINT8_C(239), UINT8_C( 50), UINT8_C( 95), UINT8_C(212), UINT8_C(245), UINT8_C(170),
|
||||
UINT8_C( 99), UINT8_C(202), UINT8_C(163), UINT8_C(243), UINT8_C( 86), UINT8_C(207), UINT8_C(248), UINT8_C( 28) },
|
||||
{ UINT8_C( 6), UINT8_C( 50), UINT8_C(195), UINT8_C( 16), UINT8_C( 7), UINT8_C( 80), UINT8_C( 69), UINT8_C(160),
|
||||
UINT8_C( 67), UINT8_C( 8), UINT8_C( 1), UINT8_C(210), UINT8_C( 2), UINT8_C(194), UINT8_C( 32), UINT8_C( 0) } },
|
||||
{ { UINT8_C( 65), UINT8_C(187), UINT8_C( 52), UINT8_C(232), UINT8_C( 12), UINT8_C(123), UINT8_C(140), UINT8_C(231),
|
||||
UINT8_C(179), UINT8_C(225), UINT8_C(193), UINT8_C(190), UINT8_C(164), UINT8_C(231), UINT8_C(223), UINT8_C(227) },
|
||||
{ UINT8_C( 35), UINT8_C(206), UINT8_C( 21), UINT8_C(130), UINT8_C(162), UINT8_C( 10), UINT8_C( 44), UINT8_C( 5),
|
||||
UINT8_C(213), UINT8_C(207), UINT8_C(248), UINT8_C( 43), UINT8_C(158), UINT8_C(241), UINT8_C( 71), UINT8_C(224) },
|
||||
{ UINT8_C( 1), UINT8_C(138), UINT8_C( 20), UINT8_C(128), UINT8_C( 0), UINT8_C( 10), UINT8_C( 12), UINT8_C( 5),
|
||||
UINT8_C(145), UINT8_C(193), UINT8_C(192), UINT8_C( 42), UINT8_C(132), UINT8_C(225), UINT8_C( 71), UINT8_C(224) } },
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_v16u8 a = simde_x_msa_ld_u_b(test_vec[i].a, 0);
|
||||
simde_v16u8 b = simde_x_msa_ld_u_b(test_vec[i].b, 0);
|
||||
simde_v16u8 r = simde_msa_and_v(a, b);
|
||||
|
||||
simde_test_msa_v16u8_assert_equal(r, simde_x_msa_ld_u_b(test_vec[i].r, 0));
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_v16u8 a = simde_test_msa_v16u8_random();
|
||||
simde_v16u8 b = simde_test_msa_v16u8_random();
|
||||
simde_v16u8 r = simde_msa_and_v(a, b);
|
||||
|
||||
simde_test_msa_v16u8_write(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_msa_v16u8_write(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v16u8_write(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
SIMDE_TEST_FUNC_LIST_BEGIN
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(and_v)
|
||||
SIMDE_TEST_FUNC_LIST_END
|
||||
|
||||
#include "test-msa-footer.h"
|
||||
114
thirdparty/simde/test/mips/msa/andi.c
vendored
Normal file
114
thirdparty/simde/test/mips/msa/andi.c
vendored
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
#define SIMDE_TEST_MIPS_MSA_INSN andi
|
||||
|
||||
#include "test-msa.h"
|
||||
#include "../../../simde/mips/msa/andi.h"
|
||||
|
||||
static int
|
||||
test_simde_andi_b (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
uint8_t a[16];
|
||||
uint8_t r43[16];
|
||||
uint8_t r13[16];
|
||||
uint8_t r161[16];
|
||||
} test_vec[] = {
|
||||
{ { UINT8_C(112), UINT8_C( 96), UINT8_C(174), UINT8_C(211), UINT8_C( 64), UINT8_C(113), UINT8_C(100), UINT8_C( 91),
|
||||
UINT8_C(206), UINT8_C(229), UINT8_C(168), UINT8_C( 89), UINT8_C( 3), UINT8_C(203), UINT8_C(194), UINT8_C(209) },
|
||||
{ UINT8_C( 32), UINT8_C( 32), UINT8_C( 42), UINT8_C( 3), UINT8_C( 0), UINT8_C( 33), UINT8_C( 32), UINT8_C( 11),
|
||||
UINT8_C( 10), UINT8_C( 33), UINT8_C( 40), UINT8_C( 9), UINT8_C( 3), UINT8_C( 11), UINT8_C( 2), UINT8_C( 1) },
|
||||
{ UINT8_C( 0), UINT8_C( 0), UINT8_C( 12), UINT8_C( 1), UINT8_C( 0), UINT8_C( 1), UINT8_C( 4), UINT8_C( 9),
|
||||
UINT8_C( 12), UINT8_C( 5), UINT8_C( 8), UINT8_C( 9), UINT8_C( 1), UINT8_C( 9), UINT8_C( 0), UINT8_C( 1) },
|
||||
{ UINT8_C( 32), UINT8_C( 32), UINT8_C(160), UINT8_C(129), UINT8_C( 0), UINT8_C( 33), UINT8_C( 32), UINT8_C( 1),
|
||||
UINT8_C(128), UINT8_C(161), UINT8_C(160), UINT8_C( 1), UINT8_C( 1), UINT8_C(129), UINT8_C(128), UINT8_C(129) } },
|
||||
{ { UINT8_C(141), UINT8_C(121), UINT8_C( 20), UINT8_C(133), UINT8_C(205), UINT8_C(177), UINT8_C(104), UINT8_C( 42),
|
||||
UINT8_C( 75), UINT8_C(131), UINT8_C( 40), UINT8_C(252), UINT8_C(190), UINT8_C(105), UINT8_C(132), UINT8_C( 47) },
|
||||
{ UINT8_C( 9), UINT8_C( 41), UINT8_C( 0), UINT8_C( 1), UINT8_C( 9), UINT8_C( 33), UINT8_C( 40), UINT8_C( 42),
|
||||
UINT8_C( 11), UINT8_C( 3), UINT8_C( 40), UINT8_C( 40), UINT8_C( 42), UINT8_C( 41), UINT8_C( 0), UINT8_C( 43) },
|
||||
{ UINT8_C( 13), UINT8_C( 9), UINT8_C( 4), UINT8_C( 5), UINT8_C( 13), UINT8_C( 1), UINT8_C( 8), UINT8_C( 8),
|
||||
UINT8_C( 9), UINT8_C( 1), UINT8_C( 8), UINT8_C( 12), UINT8_C( 12), UINT8_C( 9), UINT8_C( 4), UINT8_C( 13) },
|
||||
{ UINT8_C(129), UINT8_C( 33), UINT8_C( 0), UINT8_C(129), UINT8_C(129), UINT8_C(161), UINT8_C( 32), UINT8_C( 32),
|
||||
UINT8_C( 1), UINT8_C(129), UINT8_C( 32), UINT8_C(160), UINT8_C(160), UINT8_C( 33), UINT8_C(128), UINT8_C( 33) } },
|
||||
{ { UINT8_C(201), UINT8_C( 50), UINT8_C( 2), UINT8_C( 9), UINT8_C(164), UINT8_C(102), UINT8_C(100), UINT8_C(114),
|
||||
UINT8_C( 76), UINT8_C( 12), UINT8_C(203), UINT8_C( 79), UINT8_C(215), UINT8_C(142), UINT8_C( 32), UINT8_C(100) },
|
||||
{ UINT8_C( 9), UINT8_C( 34), UINT8_C( 2), UINT8_C( 9), UINT8_C( 32), UINT8_C( 34), UINT8_C( 32), UINT8_C( 34),
|
||||
UINT8_C( 8), UINT8_C( 8), UINT8_C( 11), UINT8_C( 11), UINT8_C( 3), UINT8_C( 10), UINT8_C( 32), UINT8_C( 32) },
|
||||
{ UINT8_C( 9), UINT8_C( 0), UINT8_C( 0), UINT8_C( 9), UINT8_C( 4), UINT8_C( 4), UINT8_C( 4), UINT8_C( 0),
|
||||
UINT8_C( 12), UINT8_C( 12), UINT8_C( 9), UINT8_C( 13), UINT8_C( 5), UINT8_C( 12), UINT8_C( 0), UINT8_C( 4) },
|
||||
{ UINT8_C(129), UINT8_C( 32), UINT8_C( 0), UINT8_C( 1), UINT8_C(160), UINT8_C( 32), UINT8_C( 32), UINT8_C( 32),
|
||||
UINT8_C( 0), UINT8_C( 0), UINT8_C(129), UINT8_C( 1), UINT8_C(129), UINT8_C(128), UINT8_C( 32), UINT8_C( 32) } },
|
||||
{ { UINT8_C( 7), UINT8_C( 53), UINT8_C(234), UINT8_C(212), UINT8_C(230), UINT8_C( 82), UINT8_MAX, UINT8_C( 49),
|
||||
UINT8_C(214), UINT8_C( 39), UINT8_C( 45), UINT8_C(148), UINT8_C(144), UINT8_C(177), UINT8_C(195), UINT8_C( 89) },
|
||||
{ UINT8_C( 3), UINT8_C( 33), UINT8_C( 42), UINT8_C( 0), UINT8_C( 34), UINT8_C( 2), UINT8_C( 43), UINT8_C( 33),
|
||||
UINT8_C( 2), UINT8_C( 35), UINT8_C( 41), UINT8_C( 0), UINT8_C( 0), UINT8_C( 33), UINT8_C( 3), UINT8_C( 9) },
|
||||
{ UINT8_C( 5), UINT8_C( 5), UINT8_C( 8), UINT8_C( 4), UINT8_C( 4), UINT8_C( 0), UINT8_C( 13), UINT8_C( 1),
|
||||
UINT8_C( 4), UINT8_C( 5), UINT8_C( 13), UINT8_C( 4), UINT8_C( 0), UINT8_C( 1), UINT8_C( 1), UINT8_C( 9) },
|
||||
{ UINT8_C( 1), UINT8_C( 33), UINT8_C(160), UINT8_C(128), UINT8_C(160), UINT8_C( 0), UINT8_C(161), UINT8_C( 33),
|
||||
UINT8_C(128), UINT8_C( 33), UINT8_C( 33), UINT8_C(128), UINT8_C(128), UINT8_C(161), UINT8_C(129), UINT8_C( 1) } },
|
||||
{ { UINT8_C(227), UINT8_C(198), UINT8_C( 98), UINT8_C(135), UINT8_C( 44), UINT8_C(198), UINT8_C(250), UINT8_C(120),
|
||||
UINT8_C(211), UINT8_C(197), UINT8_C(200), UINT8_C(170), UINT8_C( 83), UINT8_C(232), UINT8_C( 15), UINT8_C( 91) },
|
||||
{ UINT8_C( 35), UINT8_C( 2), UINT8_C( 34), UINT8_C( 3), UINT8_C( 40), UINT8_C( 2), UINT8_C( 42), UINT8_C( 40),
|
||||
UINT8_C( 3), UINT8_C( 1), UINT8_C( 8), UINT8_C( 42), UINT8_C( 3), UINT8_C( 40), UINT8_C( 11), UINT8_C( 11) },
|
||||
{ UINT8_C( 1), UINT8_C( 4), UINT8_C( 0), UINT8_C( 5), UINT8_C( 12), UINT8_C( 4), UINT8_C( 8), UINT8_C( 8),
|
||||
UINT8_C( 1), UINT8_C( 5), UINT8_C( 8), UINT8_C( 8), UINT8_C( 1), UINT8_C( 8), UINT8_C( 13), UINT8_C( 9) },
|
||||
{ UINT8_C(161), UINT8_C(128), UINT8_C( 32), UINT8_C(129), UINT8_C( 32), UINT8_C(128), UINT8_C(160), UINT8_C( 32),
|
||||
UINT8_C(129), UINT8_C(129), UINT8_C(128), UINT8_C(160), UINT8_C( 1), UINT8_C(160), UINT8_C( 1), UINT8_C( 1) } },
|
||||
{ { UINT8_C( 29), UINT8_C(249), UINT8_C( 47), UINT8_C( 3), UINT8_C( 75), UINT8_C( 46), UINT8_C( 52), UINT8_C( 33),
|
||||
UINT8_C( 86), UINT8_C( 97), UINT8_C(182), UINT8_C(230), UINT8_C( 18), UINT8_C(121), UINT8_C( 64), UINT8_C(246) },
|
||||
{ UINT8_C( 9), UINT8_C( 41), UINT8_C( 43), UINT8_C( 3), UINT8_C( 11), UINT8_C( 42), UINT8_C( 32), UINT8_C( 33),
|
||||
UINT8_C( 2), UINT8_C( 33), UINT8_C( 34), UINT8_C( 34), UINT8_C( 2), UINT8_C( 41), UINT8_C( 0), UINT8_C( 34) },
|
||||
{ UINT8_C( 13), UINT8_C( 9), UINT8_C( 13), UINT8_C( 1), UINT8_C( 9), UINT8_C( 12), UINT8_C( 4), UINT8_C( 1),
|
||||
UINT8_C( 4), UINT8_C( 1), UINT8_C( 4), UINT8_C( 4), UINT8_C( 0), UINT8_C( 9), UINT8_C( 0), UINT8_C( 4) },
|
||||
{ UINT8_C( 1), UINT8_C(161), UINT8_C( 33), UINT8_C( 1), UINT8_C( 1), UINT8_C( 32), UINT8_C( 32), UINT8_C( 33),
|
||||
UINT8_C( 0), UINT8_C( 33), UINT8_C(160), UINT8_C(160), UINT8_C( 0), UINT8_C( 33), UINT8_C( 0), UINT8_C(160) } },
|
||||
{ { UINT8_C( 63), UINT8_C(162), UINT8_C(125), UINT8_C(108), UINT8_C(105), UINT8_C(119), UINT8_C(228), UINT8_C( 60),
|
||||
UINT8_C( 61), UINT8_C(172), UINT8_C(230), UINT8_C(144), UINT8_C(149), UINT8_C(245), UINT8_C(235), UINT8_C(178) },
|
||||
{ UINT8_C( 43), UINT8_C( 34), UINT8_C( 41), UINT8_C( 40), UINT8_C( 41), UINT8_C( 35), UINT8_C( 32), UINT8_C( 40),
|
||||
UINT8_C( 41), UINT8_C( 40), UINT8_C( 34), UINT8_C( 0), UINT8_C( 1), UINT8_C( 33), UINT8_C( 43), UINT8_C( 34) },
|
||||
{ UINT8_C( 13), UINT8_C( 0), UINT8_C( 13), UINT8_C( 12), UINT8_C( 9), UINT8_C( 5), UINT8_C( 4), UINT8_C( 12),
|
||||
UINT8_C( 13), UINT8_C( 12), UINT8_C( 4), UINT8_C( 0), UINT8_C( 5), UINT8_C( 5), UINT8_C( 9), UINT8_C( 0) },
|
||||
{ UINT8_C( 33), UINT8_C(160), UINT8_C( 33), UINT8_C( 32), UINT8_C( 33), UINT8_C( 33), UINT8_C(160), UINT8_C( 32),
|
||||
UINT8_C( 33), UINT8_C(160), UINT8_C(160), UINT8_C(128), UINT8_C(129), UINT8_C(161), UINT8_C(161), UINT8_C(160) } },
|
||||
{ { UINT8_C(238), UINT8_C( 27), UINT8_C(182), UINT8_C( 58), UINT8_C( 73), UINT8_C(234), UINT8_C( 91), UINT8_C(159),
|
||||
UINT8_C( 76), UINT8_C( 17), UINT8_C(134), UINT8_C( 94), UINT8_C(139), UINT8_C(198), UINT8_C( 84), UINT8_C(202) },
|
||||
{ UINT8_C( 42), UINT8_C( 11), UINT8_C( 34), UINT8_C( 42), UINT8_C( 9), UINT8_C( 42), UINT8_C( 11), UINT8_C( 11),
|
||||
UINT8_C( 8), UINT8_C( 1), UINT8_C( 2), UINT8_C( 10), UINT8_C( 11), UINT8_C( 2), UINT8_C( 0), UINT8_C( 10) },
|
||||
{ UINT8_C( 12), UINT8_C( 9), UINT8_C( 4), UINT8_C( 8), UINT8_C( 9), UINT8_C( 8), UINT8_C( 9), UINT8_C( 13),
|
||||
UINT8_C( 12), UINT8_C( 1), UINT8_C( 4), UINT8_C( 12), UINT8_C( 9), UINT8_C( 4), UINT8_C( 4), UINT8_C( 8) },
|
||||
{ UINT8_C(160), UINT8_C( 1), UINT8_C(160), UINT8_C( 32), UINT8_C( 1), UINT8_C(160), UINT8_C( 1), UINT8_C(129),
|
||||
UINT8_C( 0), UINT8_C( 1), UINT8_C(128), UINT8_C( 0), UINT8_C(129), UINT8_C(128), UINT8_C( 0), UINT8_C(128) } },
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_v16u8 a = simde_x_msa_ld_u_b(test_vec[i].a, 0);
|
||||
simde_v16u8 r43 = simde_msa_andi_b(a, 43);
|
||||
simde_v16u8 r13 = simde_msa_andi_b(a, 13);
|
||||
simde_v16u8 r161 = simde_msa_andi_b(a, 161);
|
||||
|
||||
simde_test_msa_v16u8_assert_equal( r43, simde_x_msa_ld_u_b(test_vec[i].r43 , 0));
|
||||
simde_test_msa_v16u8_assert_equal( r13, simde_x_msa_ld_u_b(test_vec[i].r13 , 0));
|
||||
simde_test_msa_v16u8_assert_equal(r161, simde_x_msa_ld_u_b(test_vec[i].r161, 0));
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_v16u8 a = simde_test_msa_v16u8_random();
|
||||
simde_v16u8 r43 = simde_msa_andi_b(a, 43);
|
||||
simde_v16u8 r13 = simde_msa_andi_b(a, 13);
|
||||
simde_v16u8 r161 = simde_msa_andi_b(a, 161);
|
||||
|
||||
simde_test_msa_v16u8_write(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_msa_v16u8_write(2, r43, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v16u8_write(2, r13, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v16u8_write(2, r161, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
SIMDE_TEST_FUNC_LIST_BEGIN
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(andi_b)
|
||||
SIMDE_TEST_FUNC_LIST_END
|
||||
|
||||
#include "test-msa-footer.h"
|
||||
204
thirdparty/simde/test/mips/msa/ld.c
vendored
Normal file
204
thirdparty/simde/test/mips/msa/ld.c
vendored
Normal file
|
|
@ -0,0 +1,204 @@
|
|||
#define SIMDE_TEST_MIPS_MSA_INSN ld
|
||||
|
||||
#include "test-msa.h"
|
||||
#include "../../../simde/mips/msa/ld.h"
|
||||
|
||||
static int
|
||||
test_simde_ld_b (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
int8_t a[32];
|
||||
int8_t r0[16];
|
||||
int8_t r4[16];
|
||||
int8_t r6[16];
|
||||
} test_vec[] = {
|
||||
{ { -INT8_C( 4), -INT8_C( 4), INT8_C( 50), INT8_C( 32), INT8_C( 26), -INT8_C( 60), -INT8_C( 125), -INT8_C( 46),
|
||||
-INT8_C( 36), INT8_C( 1), INT8_C( 53), INT8_C( 76), -INT8_C( 77), -INT8_C( 51), -INT8_C( 115), INT8_C( 116),
|
||||
INT8_C( 109), -INT8_C( 96), INT8_C( 102), INT8_C( 29), INT8_C( 124), -INT8_C( 9), -INT8_C( 19), INT8_C( 90),
|
||||
INT8_C( 31), -INT8_C( 94), INT8_C( 12), INT8_C( 48), INT8_C( 56), -INT8_C( 23), -INT8_C( 66), INT8_C( 52) },
|
||||
{ -INT8_C( 4), -INT8_C( 4), INT8_C( 50), INT8_C( 32), INT8_C( 26), -INT8_C( 60), -INT8_C( 125), -INT8_C( 46),
|
||||
-INT8_C( 36), INT8_C( 1), INT8_C( 53), INT8_C( 76), -INT8_C( 77), -INT8_C( 51), -INT8_C( 115), INT8_C( 116) },
|
||||
{ INT8_C( 26), -INT8_C( 60), -INT8_C( 125), -INT8_C( 46), -INT8_C( 36), INT8_C( 1), INT8_C( 53), INT8_C( 76),
|
||||
-INT8_C( 77), -INT8_C( 51), -INT8_C( 115), INT8_C( 116), INT8_C( 109), -INT8_C( 96), INT8_C( 102), INT8_C( 29) },
|
||||
{ -INT8_C( 125), -INT8_C( 46), -INT8_C( 36), INT8_C( 1), INT8_C( 53), INT8_C( 76), -INT8_C( 77), -INT8_C( 51),
|
||||
-INT8_C( 115), INT8_C( 116), INT8_C( 109), -INT8_C( 96), INT8_C( 102), INT8_C( 29), INT8_C( 124), -INT8_C( 9) } }
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_v16i8 r0 = simde_msa_ld_b(test_vec[0].a, 0);
|
||||
simde_v16i8 r4 = simde_msa_ld_b(test_vec[0].a, 4);
|
||||
simde_v16i8 r6 = simde_msa_ld_b(test_vec[0].a, 6);
|
||||
|
||||
simde_test_msa_v16i8_assert_equal(r0, simde_msa_ld_b(test_vec[i].r0, 0));
|
||||
simde_test_msa_v16i8_assert_equal(r4, simde_msa_ld_b(test_vec[i].r4, 0));
|
||||
simde_test_msa_v16i8_assert_equal(r6, simde_msa_ld_b(test_vec[i].r6, 0));
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
int8_t a[32];
|
||||
simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
|
||||
|
||||
simde_v16i8 r0 = simde_msa_ld_b(a, 0);
|
||||
simde_v16i8 r4 = simde_msa_ld_b(a, 4);
|
||||
simde_v16i8 r6 = simde_msa_ld_b(a, 6);
|
||||
|
||||
simde_test_codegen_write_vi8(2, sizeof(a) / sizeof(a[0]), a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_msa_v16i8_write(2, r0, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v16i8_write(2, r4, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v16i8_write(2, r6, SIMDE_TEST_VEC_POS_LAST);
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_ld_h (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
int16_t a[32];
|
||||
int16_t r0[8];
|
||||
int16_t r4[8];
|
||||
int16_t r6[8];
|
||||
} test_vec[] = {
|
||||
{ { INT16_C( 16557), -INT16_C( 23369), INT16_C( 10278), -INT16_C( 11242), -INT16_C( 20137), -INT16_C( 29297), INT16_C( 16850), INT16_C( 1170),
|
||||
-INT16_C( 17850), INT16_C( 24888), INT16_C( 31634), -INT16_C( 25943), INT16_C( 22377), INT16_C( 30863), INT16_C( 4378), -INT16_C( 14367),
|
||||
-INT16_C( 26543), INT16_C( 30571), -INT16_C( 32320), INT16_C( 6219), -INT16_C( 9678), INT16_C( 1189), INT16_C( 14108), INT16_C( 25097),
|
||||
INT16_C( 16881), -INT16_C( 31548), INT16_C( 28093), INT16_C( 9758), -INT16_C( 21052), -INT16_C( 8546), INT16_C( 32703), INT16_C( 4261) },
|
||||
{ INT16_C( 16557), -INT16_C( 23369), INT16_C( 10278), -INT16_C( 11242), -INT16_C( 20137), -INT16_C( 29297), INT16_C( 16850), INT16_C( 1170) },
|
||||
{ INT16_C( 10278), -INT16_C( 11242), -INT16_C( 20137), -INT16_C( 29297), INT16_C( 16850), INT16_C( 1170), -INT16_C( 17850), INT16_C( 24888) },
|
||||
{ -INT16_C( 11242), -INT16_C( 20137), -INT16_C( 29297), INT16_C( 16850), INT16_C( 1170), -INT16_C( 17850), INT16_C( 24888), INT16_C( 31634) } }
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_v8i16 r0 = simde_msa_ld_h(test_vec[0].a, 0);
|
||||
simde_v8i16 r4 = simde_msa_ld_h(test_vec[0].a, 4);
|
||||
simde_v8i16 r6 = simde_msa_ld_h(test_vec[0].a, 6);
|
||||
|
||||
simde_test_msa_v8i16_assert_equal(r0, simde_msa_ld_h(test_vec[i].r0, 0));
|
||||
simde_test_msa_v8i16_assert_equal(r4, simde_msa_ld_h(test_vec[i].r4, 0));
|
||||
simde_test_msa_v8i16_assert_equal(r6, simde_msa_ld_h(test_vec[i].r6, 0));
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
int16_t a[32];
|
||||
simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
|
||||
|
||||
simde_v8i16 r0 = simde_msa_ld_h(a, 0);
|
||||
simde_v8i16 r4 = simde_msa_ld_h(a, 4);
|
||||
simde_v8i16 r6 = simde_msa_ld_h(a, 6);
|
||||
|
||||
simde_test_codegen_write_vi16(2, sizeof(a) / sizeof(a[0]), a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_msa_v8i16_write(2, r0, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v8i16_write(2, r4, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v8i16_write(2, r6, SIMDE_TEST_VEC_POS_LAST);
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_ld_w (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
int32_t a[32];
|
||||
int32_t r0[4];
|
||||
int32_t r4[4];
|
||||
int32_t r12[4];
|
||||
} test_vec[] = {
|
||||
{ { -INT32_C( 1249417923), -INT32_C( 1869806461), -INT32_C( 873572522), -INT32_C( 766434583), INT32_C( 153610813), INT32_C( 167269473), -INT32_C( 1035482236), INT32_C( 1077113603),
|
||||
INT32_C( 1542896344), INT32_C( 367821759), -INT32_C( 1008674086), INT32_C( 982856188), INT32_C( 2084813851), -INT32_C( 1786430704), INT32_C( 173526022), INT32_C( 407538495),
|
||||
INT32_C( 74661957), -INT32_C( 1659215933), INT32_C( 912390713), INT32_C( 1198585388), -INT32_C( 1010519117), -INT32_C( 195540498), INT32_C( 1442754582), -INT32_C( 2140321477),
|
||||
INT32_C( 1300619657), INT32_C( 2062196544), -INT32_C( 978302055), -INT32_C( 183689150), -INT32_C( 1044852269), INT32_C( 817172762), -INT32_C( 58280767), -INT32_C( 2038631427) },
|
||||
{ -INT32_C( 1249417923), -INT32_C( 1869806461), -INT32_C( 873572522), -INT32_C( 766434583) },
|
||||
{ -INT32_C( 1869806461), -INT32_C( 873572522), -INT32_C( 766434583), INT32_C( 153610813) },
|
||||
{ -INT32_C( 766434583), INT32_C( 153610813), INT32_C( 167269473), -INT32_C( 1035482236) } }
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_v4i32 r0 = simde_msa_ld_w(test_vec[0].a, 0);
|
||||
simde_v4i32 r4 = simde_msa_ld_w(test_vec[0].a, 4);
|
||||
simde_v4i32 r6 = simde_msa_ld_w(test_vec[0].a, 12);
|
||||
|
||||
simde_test_msa_v4i32_assert_equal(r0, simde_msa_ld_w(test_vec[i].r0, 0));
|
||||
simde_test_msa_v4i32_assert_equal(r4, simde_msa_ld_w(test_vec[i].r4, 0));
|
||||
simde_test_msa_v4i32_assert_equal(r6, simde_msa_ld_w(test_vec[i].r12, 0));
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
int32_t a[32];
|
||||
simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
|
||||
|
||||
simde_v4i32 r0 = simde_msa_ld_w(a, 0);
|
||||
simde_v4i32 r4 = simde_msa_ld_w(a, 4);
|
||||
simde_v4i32 r12 = simde_msa_ld_w(a, 12);
|
||||
|
||||
simde_test_codegen_write_vi32(2, sizeof(a) / sizeof(a[0]), a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_msa_v4i32_write(2, r0, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v4i32_write(2, r4, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v4i32_write(2, r12, SIMDE_TEST_VEC_POS_LAST);
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_ld_d (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
int64_t a[32];
|
||||
int64_t r0[2];
|
||||
int64_t r8[2];
|
||||
int64_t r16[2];
|
||||
} test_vec[] = {
|
||||
{ { INT64_C( 4219800970639638996), INT64_C( 3620907703842324233), -INT64_C( 3807608719861876259), INT64_C( 8565920855828704860),
|
||||
INT64_C( 8871838867427930949), INT64_C( 714391375256624985), -INT64_C( 2101727995428217600), INT64_C( 2661659125930040536),
|
||||
-INT64_C( 1099958483672204081), -INT64_C( 8539507099847589304), INT64_C( 9212509583368748656), INT64_C( 2509299829511428),
|
||||
-INT64_C( 8868435127827361178), -INT64_C( 7452484143541611136), -INT64_C( 7846844434740205837), INT64_C( 7254877881077535869),
|
||||
INT64_C( 7877725856966176914), -INT64_C( 5430766376434840606), INT64_C( 1608746700473577776), -INT64_C( 2458838632786244994),
|
||||
INT64_C( 8052153066682269795), INT64_C( 8052185715862746442), -INT64_C( 577161717152280755), -INT64_C( 7461247193006751156),
|
||||
INT64_C( 7534704824938930067), INT64_C( 8325522000381676251), -INT64_C( 8669050794158671551), INT64_C( 857815295163507738),
|
||||
INT64_C( 5852634934252720050), INT64_C( 2261078445954739142), INT64_C( 3202493723402943151), -INT64_C( 3156352490002476881) },
|
||||
{ INT64_C( 4219800970639638996), INT64_C( 3620907703842324233) },
|
||||
{ INT64_C( 3620907703842324233), -INT64_C( 3807608719861876259) },
|
||||
{ -INT64_C( 3807608719861876259), INT64_C( 8565920855828704860) } }
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_v2i64 r0 = simde_msa_ld_d(test_vec[0].a, 0);
|
||||
simde_v2i64 r4 = simde_msa_ld_d(test_vec[0].a, 8);
|
||||
simde_v2i64 r6 = simde_msa_ld_d(test_vec[0].a, 16);
|
||||
|
||||
simde_test_msa_v2i64_assert_equal(r0, simde_msa_ld_d(test_vec[i].r0, 0));
|
||||
simde_test_msa_v2i64_assert_equal(r4, simde_msa_ld_d(test_vec[i].r8, 0));
|
||||
simde_test_msa_v2i64_assert_equal(r6, simde_msa_ld_d(test_vec[i].r16, 0));
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
int64_t a[32];
|
||||
simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
|
||||
|
||||
simde_v2i64 r0 = simde_msa_ld_d(a, 0);
|
||||
simde_v2i64 r8 = simde_msa_ld_d(a, 8);
|
||||
simde_v2i64 r16 = simde_msa_ld_d(a, 16);
|
||||
|
||||
simde_test_codegen_write_vi64(2, sizeof(a) / sizeof(a[0]), a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_msa_v2i64_write(2, r0, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v2i64_write(2, r8, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v2i64_write(2, r16, SIMDE_TEST_VEC_POS_LAST);
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
SIMDE_TEST_FUNC_LIST_BEGIN
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(ld_b)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(ld_h)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(ld_w)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(ld_d)
|
||||
SIMDE_TEST_FUNC_LIST_END
|
||||
|
||||
#include "test-msa-footer.h"
|
||||
151
thirdparty/simde/test/mips/msa/madd.c
vendored
Normal file
151
thirdparty/simde/test/mips/msa/madd.c
vendored
Normal file
|
|
@ -0,0 +1,151 @@
|
|||
#define SIMDE_TEST_MIPS_MSA_INSN madd
|
||||
|
||||
#include "test-msa.h"
|
||||
#include "../../../simde/mips/msa/madd.h"
|
||||
|
||||
static int
|
||||
test_simde_fmadd_w (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
simde_float32 a[4];
|
||||
simde_float32 b[4];
|
||||
simde_float32 c[4];
|
||||
simde_float32 r[4];
|
||||
} test_vec[] = {
|
||||
{ { SIMDE_FLOAT32_C( -524.41), SIMDE_FLOAT32_C( -776.23), SIMDE_FLOAT32_C( -545.16), SIMDE_FLOAT32_C( -321.65) },
|
||||
{ SIMDE_FLOAT32_C( 543.34), SIMDE_FLOAT32_C( -181.67), SIMDE_FLOAT32_C( 287.64), SIMDE_FLOAT32_C( -673.71) },
|
||||
{ SIMDE_FLOAT32_C( 675.91), SIMDE_FLOAT32_C( -488.56), SIMDE_FLOAT32_C( 4.92), SIMDE_FLOAT32_C( 540.27) },
|
||||
{ SIMDE_FLOAT32_C(366724.53), SIMDE_FLOAT32_C( 87980.46), SIMDE_FLOAT32_C( 870.03), SIMDE_FLOAT32_C(-364306.97) } },
|
||||
{ { SIMDE_FLOAT32_C( -934.54), SIMDE_FLOAT32_C( -473.44), SIMDE_FLOAT32_C( -657.44), SIMDE_FLOAT32_C( 588.19) },
|
||||
{ SIMDE_FLOAT32_C( -958.10), SIMDE_FLOAT32_C( 689.98), SIMDE_FLOAT32_C( 754.71), SIMDE_FLOAT32_C( -87.63) },
|
||||
{ SIMDE_FLOAT32_C( -855.49), SIMDE_FLOAT32_C( -863.92), SIMDE_FLOAT32_C( -336.54), SIMDE_FLOAT32_C( 366.73) },
|
||||
{ SIMDE_FLOAT32_C(818710.38), SIMDE_FLOAT32_C(-596560.94), SIMDE_FLOAT32_C(-254647.56), SIMDE_FLOAT32_C(-31548.36) } },
|
||||
{ { SIMDE_FLOAT32_C( -656.71), SIMDE_FLOAT32_C( 592.19), SIMDE_FLOAT32_C( 956.68), SIMDE_FLOAT32_C( 767.49) },
|
||||
{ SIMDE_FLOAT32_C( 275.39), SIMDE_FLOAT32_C( -573.54), SIMDE_FLOAT32_C( 943.26), SIMDE_FLOAT32_C( 750.98) },
|
||||
{ SIMDE_FLOAT32_C( -349.78), SIMDE_FLOAT32_C( -601.91), SIMDE_FLOAT32_C( -570.67), SIMDE_FLOAT32_C( -806.44) },
|
||||
{ SIMDE_FLOAT32_C(-96982.63), SIMDE_FLOAT32_C(345811.62), SIMDE_FLOAT32_C(-537333.50), SIMDE_FLOAT32_C(-604852.81) } },
|
||||
{ { SIMDE_FLOAT32_C( 216.43), SIMDE_FLOAT32_C( 716.97), SIMDE_FLOAT32_C( -480.15), SIMDE_FLOAT32_C( -107.67) },
|
||||
{ SIMDE_FLOAT32_C( -771.59), SIMDE_FLOAT32_C( 524.77), SIMDE_FLOAT32_C( -567.39), SIMDE_FLOAT32_C( -706.13) },
|
||||
{ SIMDE_FLOAT32_C( -948.66), SIMDE_FLOAT32_C( -224.83), SIMDE_FLOAT32_C( 882.06), SIMDE_FLOAT32_C( -906.77) },
|
||||
{ SIMDE_FLOAT32_C(732193.00), SIMDE_FLOAT32_C(-117267.08), SIMDE_FLOAT32_C(-500952.19), SIMDE_FLOAT32_C(640189.88) } },
|
||||
{ { SIMDE_FLOAT32_C( -534.85), SIMDE_FLOAT32_C( 636.77), SIMDE_FLOAT32_C( 5.60), SIMDE_FLOAT32_C( -390.34) },
|
||||
{ SIMDE_FLOAT32_C( 772.85), SIMDE_FLOAT32_C( 669.06), SIMDE_FLOAT32_C( 976.38), SIMDE_FLOAT32_C( -883.85) },
|
||||
{ SIMDE_FLOAT32_C( 261.25), SIMDE_FLOAT32_C( 933.06), SIMDE_FLOAT32_C( 883.64), SIMDE_FLOAT32_C( -463.36) },
|
||||
{ SIMDE_FLOAT32_C(201372.20), SIMDE_FLOAT32_C(624909.88), SIMDE_FLOAT32_C(862774.06), SIMDE_FLOAT32_C(409150.38) } },
|
||||
{ { SIMDE_FLOAT32_C( -640.48), SIMDE_FLOAT32_C( 826.90), SIMDE_FLOAT32_C( -712.38), SIMDE_FLOAT32_C( 9.74) },
|
||||
{ SIMDE_FLOAT32_C( -775.01), SIMDE_FLOAT32_C( -283.06), SIMDE_FLOAT32_C( 203.30), SIMDE_FLOAT32_C( 441.41) },
|
||||
{ SIMDE_FLOAT32_C( -566.09), SIMDE_FLOAT32_C( 723.15), SIMDE_FLOAT32_C( -666.25), SIMDE_FLOAT32_C( -337.68) },
|
||||
{ SIMDE_FLOAT32_C(438084.97), SIMDE_FLOAT32_C(-203867.94), SIMDE_FLOAT32_C(-136161.00), SIMDE_FLOAT32_C(-149045.59) } },
|
||||
{ { SIMDE_FLOAT32_C( 247.93), SIMDE_FLOAT32_C( -233.64), SIMDE_FLOAT32_C( -43.81), SIMDE_FLOAT32_C( 299.26) },
|
||||
{ SIMDE_FLOAT32_C( 541.53), SIMDE_FLOAT32_C( -161.75), SIMDE_FLOAT32_C( 392.50), SIMDE_FLOAT32_C( -993.33) },
|
||||
{ SIMDE_FLOAT32_C( -524.98), SIMDE_FLOAT32_C( -601.90), SIMDE_FLOAT32_C( -383.67), SIMDE_FLOAT32_C( -752.13) },
|
||||
{ SIMDE_FLOAT32_C(-284044.50), SIMDE_FLOAT32_C( 97123.69), SIMDE_FLOAT32_C(-150634.30), SIMDE_FLOAT32_C(747412.56) } },
|
||||
{ { SIMDE_FLOAT32_C( -932.84), SIMDE_FLOAT32_C( -407.29), SIMDE_FLOAT32_C( -635.98), SIMDE_FLOAT32_C( 328.41) },
|
||||
{ SIMDE_FLOAT32_C( -474.23), SIMDE_FLOAT32_C( -752.34), SIMDE_FLOAT32_C( 865.05), SIMDE_FLOAT32_C( -114.71) },
|
||||
{ SIMDE_FLOAT32_C( -925.44), SIMDE_FLOAT32_C( -847.33), SIMDE_FLOAT32_C( 895.04), SIMDE_FLOAT32_C( -700.46) },
|
||||
{ SIMDE_FLOAT32_C(437938.59), SIMDE_FLOAT32_C(637073.00), SIMDE_FLOAT32_C(773618.31), SIMDE_FLOAT32_C( 80678.18) } },
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_v4f32 a = simde_x_msa_fld_w(test_vec[i].a, 0);
|
||||
simde_v4f32 b = simde_x_msa_fld_w(test_vec[i].b, 0);
|
||||
simde_v4f32 c = simde_x_msa_fld_w(test_vec[i].c, 0);
|
||||
simde_v4f32 r = simde_msa_fmadd_w(a, b, c);
|
||||
|
||||
simde_test_msa_v4f32_assert_equal(r, simde_x_msa_fld_w(test_vec[i].r, 0), 1);
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_v4f32 a = simde_test_msa_v4f32_random(-SIMDE_FLOAT32_C(1000.0), SIMDE_FLOAT32_C(1000.0));
|
||||
simde_v4f32 b = simde_test_msa_v4f32_random(-SIMDE_FLOAT32_C(1000.0), SIMDE_FLOAT32_C(1000.0));
|
||||
simde_v4f32 c = simde_test_msa_v4f32_random(-SIMDE_FLOAT32_C(1000.0), SIMDE_FLOAT32_C(1000.0));
|
||||
simde_v4f32 r = simde_msa_fmadd_w(a, b, c);
|
||||
|
||||
simde_test_msa_v4f32_write(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_msa_v4f32_write(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v4f32_write(2, c, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v4f32_write(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_fmadd_d (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
simde_float64 a[2];
|
||||
simde_float64 b[2];
|
||||
simde_float64 c[2];
|
||||
simde_float64 r[2];
|
||||
} test_vec[] = {
|
||||
{ { SIMDE_FLOAT64_C( 697.18), SIMDE_FLOAT64_C( -624.95) },
|
||||
{ SIMDE_FLOAT64_C( 306.12), SIMDE_FLOAT64_C( 7.71) },
|
||||
{ SIMDE_FLOAT64_C( 183.92), SIMDE_FLOAT64_C( -436.47) },
|
||||
{ SIMDE_FLOAT64_C( 56998.77), SIMDE_FLOAT64_C( -3990.13) } },
|
||||
{ { SIMDE_FLOAT64_C( 427.44), SIMDE_FLOAT64_C( 580.62) },
|
||||
{ SIMDE_FLOAT64_C( 774.98), SIMDE_FLOAT64_C( 959.08) },
|
||||
{ SIMDE_FLOAT64_C( 292.83), SIMDE_FLOAT64_C( -399.60) },
|
||||
{ SIMDE_FLOAT64_C(227364.83), SIMDE_FLOAT64_C(-382667.75) } },
|
||||
{ { SIMDE_FLOAT64_C( -469.14), SIMDE_FLOAT64_C( -911.91) },
|
||||
{ SIMDE_FLOAT64_C( 47.76), SIMDE_FLOAT64_C( 477.15) },
|
||||
{ SIMDE_FLOAT64_C( 416.21), SIMDE_FLOAT64_C( 764.44) },
|
||||
{ SIMDE_FLOAT64_C( 19409.05), SIMDE_FLOAT64_C(363840.64) } },
|
||||
{ { SIMDE_FLOAT64_C( 47.21), SIMDE_FLOAT64_C( 71.67) },
|
||||
{ SIMDE_FLOAT64_C( -599.60), SIMDE_FLOAT64_C( 534.28) },
|
||||
{ SIMDE_FLOAT64_C( 454.76), SIMDE_FLOAT64_C( 324.14) },
|
||||
{ SIMDE_FLOAT64_C(-272626.89), SIMDE_FLOAT64_C(173253.19) } },
|
||||
{ { SIMDE_FLOAT64_C( 17.69), SIMDE_FLOAT64_C( -977.20) },
|
||||
{ SIMDE_FLOAT64_C( -419.66), SIMDE_FLOAT64_C( 953.51) },
|
||||
{ SIMDE_FLOAT64_C( -64.97), SIMDE_FLOAT64_C( -736.13) },
|
||||
{ SIMDE_FLOAT64_C( 27283.00), SIMDE_FLOAT64_C(-702884.52) } },
|
||||
{ { SIMDE_FLOAT64_C( 174.53), SIMDE_FLOAT64_C( -367.79) },
|
||||
{ SIMDE_FLOAT64_C( -361.08), SIMDE_FLOAT64_C( -519.35) },
|
||||
{ SIMDE_FLOAT64_C( 639.92), SIMDE_FLOAT64_C( 822.85) },
|
||||
{ SIMDE_FLOAT64_C(-230887.78), SIMDE_FLOAT64_C(-427714.94) } },
|
||||
{ { SIMDE_FLOAT64_C( 44.18), SIMDE_FLOAT64_C( 67.36) },
|
||||
{ SIMDE_FLOAT64_C( 403.46), SIMDE_FLOAT64_C( -180.84) },
|
||||
{ SIMDE_FLOAT64_C( 26.45), SIMDE_FLOAT64_C( -303.70) },
|
||||
{ SIMDE_FLOAT64_C( 10715.70), SIMDE_FLOAT64_C( 54988.47) } },
|
||||
{ { SIMDE_FLOAT64_C( 419.56), SIMDE_FLOAT64_C( 557.31) },
|
||||
{ SIMDE_FLOAT64_C( -215.62), SIMDE_FLOAT64_C( -532.68) },
|
||||
{ SIMDE_FLOAT64_C( 34.46), SIMDE_FLOAT64_C( -799.41) },
|
||||
{ SIMDE_FLOAT64_C( -7010.71), SIMDE_FLOAT64_C(426387.03) } },
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_v2f64 a = simde_x_msa_fld_d(test_vec[i].a, 0);
|
||||
simde_v2f64 b = simde_x_msa_fld_d(test_vec[i].b, 0);
|
||||
simde_v2f64 c = simde_x_msa_fld_d(test_vec[i].c, 0);
|
||||
simde_v2f64 r = simde_msa_fmadd_d(a, b, c);
|
||||
|
||||
simde_test_msa_v2f64_assert_equal(r, simde_x_msa_fld_d(test_vec[i].r, 0), 1);
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_v2f64 a = simde_test_msa_v2f64_random(-SIMDE_FLOAT64_C(1000.0), SIMDE_FLOAT64_C(1000.0));
|
||||
simde_v2f64 b = simde_test_msa_v2f64_random(-SIMDE_FLOAT64_C(1000.0), SIMDE_FLOAT64_C(1000.0));
|
||||
simde_v2f64 c = simde_test_msa_v2f64_random(-SIMDE_FLOAT64_C(1000.0), SIMDE_FLOAT64_C(1000.0));
|
||||
simde_v2f64 r = simde_msa_fmadd_d(a, b, c);
|
||||
|
||||
simde_test_msa_v2f64_write(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_msa_v2f64_write(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v2f64_write(2, c, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v2f64_write(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
SIMDE_TEST_FUNC_LIST_BEGIN
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(fmadd_w)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(fmadd_d)
|
||||
SIMDE_TEST_FUNC_LIST_END
|
||||
|
||||
#include "test-msa-footer.h"
|
||||
31
thirdparty/simde/test/mips/msa/meson.build
vendored
Normal file
31
thirdparty/simde/test/mips/msa/meson.build
vendored
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
simde_test_mips_msa_simd_tests = simde_msa_families
|
||||
|
||||
simde_test_mips_msa_simd_sources = []
|
||||
simde_test_mips_msa_simd_libs = []
|
||||
foreach name : simde_test_mips_msa_simd_tests
|
||||
foreach lang : ['c', 'cpp']
|
||||
source_file = name + '.c'
|
||||
if lang == 'cpp'
|
||||
source_file = configure_file(input: name + '.c', output: name + '.cpp', copy: true)
|
||||
endif
|
||||
simde_test_mips_msa_simd_sources += source_file
|
||||
|
||||
foreach emul : ['emul', 'native']
|
||||
extra_flags = ['-DSIMDE_TEST_BARE']
|
||||
if emul == 'emul'
|
||||
extra_flags += '-DSIMDE_NO_NATIVE'
|
||||
endif
|
||||
|
||||
x = executable(name + '-' + emul + '-' + lang, source_file,
|
||||
c_args: simde_c_args + simde_c_defs + simde_native_c_flags + extra_flags,
|
||||
cpp_args: simde_c_args + simde_c_defs + simde_native_c_flags + extra_flags,
|
||||
include_directories: simde_include_dir,
|
||||
dependencies: simde_deps)
|
||||
|
||||
test('mips_msa_simd/' + name + '/' + emul + '/' + lang, x,
|
||||
protocol: 'tap',
|
||||
# Emscripten tests must be run from builddir
|
||||
workdir: meson.current_build_dir())
|
||||
endforeach
|
||||
endforeach
|
||||
endforeach
|
||||
3
thirdparty/simde/test/mips/msa/run-tests-msa.h
vendored
Normal file
3
thirdparty/simde/test/mips/msa/run-tests-msa.h
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
#include "../../munit/munit.h"
|
||||
|
||||
MunitSuite* simde_tests_mips_msa_simd_get_suite(void);
|
||||
30
thirdparty/simde/test/mips/msa/run-tests.c
vendored
Normal file
30
thirdparty/simde/test/mips/msa/run-tests.c
vendored
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
#include "test-msa.h"
|
||||
#include "run-tests.h"
|
||||
|
||||
static MunitSuite suites[] = {
|
||||
#define SIMDE_TEST_DECLARE_SUITE(name) \
|
||||
{ NULL, NULL, NULL, 1, MUNIT_SUITE_OPTION_NONE }, \
|
||||
{ NULL, NULL, NULL, 1, MUNIT_SUITE_OPTION_NONE }, \
|
||||
{ NULL, NULL, NULL, 1, MUNIT_SUITE_OPTION_NONE }, \
|
||||
{ NULL, NULL, NULL, 1, MUNIT_SUITE_OPTION_NONE },
|
||||
#include <test/mips/msa/declare-suites.h>
|
||||
#undef SIMDE_TEST_DECLARE_SUITE
|
||||
{ NULL, NULL, NULL, 0, MUNIT_SUITE_OPTION_NONE }
|
||||
};
|
||||
|
||||
static MunitSuite suite = { "/msa-simd", NULL, suites, 1, MUNIT_SUITE_OPTION_NONE };
|
||||
|
||||
MunitSuite*
|
||||
simde_tests_mips_msa_get_suite(void) {
|
||||
int i = 0;
|
||||
|
||||
#define SIMDE_TEST_DECLARE_SUITE(name) \
|
||||
suites[i++] = *HEDLEY_CONCAT3(simde_test_mips_msa_simd_get_suite_, name, _native_c)(); \
|
||||
suites[i++] = *HEDLEY_CONCAT3(simde_test_mips_msa_simd_get_suite_, name, _native_cpp)(); \
|
||||
suites[i++] = *HEDLEY_CONCAT3(simde_test_mips_msa_simd_get_suite_, name, _emul_c)(); \
|
||||
suites[i++] = *HEDLEY_CONCAT3(simde_test_mips_msa_simd_get_suite_, name, _emul_cpp)();
|
||||
#include <test/mips/msa/declare-suites.h>
|
||||
#undef SIMDE_TEST_DECLARE_SUITE
|
||||
|
||||
return &suite;
|
||||
}
|
||||
8
thirdparty/simde/test/mips/msa/run-tests.h
vendored
Normal file
8
thirdparty/simde/test/mips/msa/run-tests.h
vendored
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
#if defined(SIMDE_TESTS_MIPS_MSA_RUN_TESTS_H)
|
||||
#error File already included.
|
||||
#endif
|
||||
#define SIMDE_TESTS_MIPS_MSA_RUN_TESTS_H
|
||||
|
||||
#include "../../munit/munit.h"
|
||||
|
||||
MunitSuite* simde_tests_mips_msa_get_suite(void);
|
||||
266
thirdparty/simde/test/mips/msa/st.c
vendored
Normal file
266
thirdparty/simde/test/mips/msa/st.c
vendored
Normal file
|
|
@ -0,0 +1,266 @@
|
|||
#define SIMDE_TEST_MIPS_MSA_INSN st
|
||||
|
||||
#include "test-msa.h"
|
||||
#include "../../../simde/mips/msa/st.h"
|
||||
|
||||
static int
|
||||
test_simde_st_b (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
int8_t a[16];
|
||||
int8_t ru[32];
|
||||
int8_t r0[32];
|
||||
int8_t r4[32];
|
||||
int8_t r16[32];
|
||||
} test_vec[] = {
|
||||
{ { -INT8_C( 57), -INT8_C( 125), INT8_C( 1), -INT8_C( 20), INT8_C( 70), INT8_C( 112), -INT8_C( 80), INT8_C( 85),
|
||||
INT8_C( 42), -INT8_C( 9), INT8_C( 107), INT8_C( 90), INT8_C( 91), INT8_C( 25), INT8_C( 1), INT8_C( 7) },
|
||||
{ INT8_C( 70), -INT8_C( 102), INT8_C( 84), INT8_C( 74), -INT8_C( 47), -INT8_C( 60), -INT8_C( 4), -INT8_C( 9),
|
||||
-INT8_C( 39), INT8_C( 91), -INT8_C( 63), -INT8_C( 127), INT8_C( 56), -INT8_C( 32), INT8_C( 34), -INT8_C( 1),
|
||||
INT8_C( 99), INT8_C( 35), -INT8_C( 21), -INT8_C( 86), -INT8_C( 109), -INT8_C( 101), -INT8_C( 1), -INT8_C( 67),
|
||||
-INT8_C( 110), INT8_C( 106), INT8_C( 24), -INT8_C( 18), -INT8_C( 125), INT8_C( 25), -INT8_C( 11), -INT8_C( 54) },
|
||||
{ -INT8_C( 57), -INT8_C( 125), INT8_C( 1), -INT8_C( 20), INT8_C( 70), INT8_C( 112), -INT8_C( 80), INT8_C( 85),
|
||||
INT8_C( 42), -INT8_C( 9), INT8_C( 107), INT8_C( 90), INT8_C( 91), INT8_C( 25), INT8_C( 1), INT8_C( 7),
|
||||
INT8_C( 99), INT8_C( 35), -INT8_C( 21), -INT8_C( 86), -INT8_C( 109), -INT8_C( 101), -INT8_C( 1), -INT8_C( 67),
|
||||
-INT8_C( 110), INT8_C( 106), INT8_C( 24), -INT8_C( 18), -INT8_C( 125), INT8_C( 25), -INT8_C( 11), -INT8_C( 54) },
|
||||
{ INT8_C( 70), -INT8_C( 102), INT8_C( 84), INT8_C( 74), -INT8_C( 57), -INT8_C( 125), INT8_C( 1), -INT8_C( 20),
|
||||
INT8_C( 70), INT8_C( 112), -INT8_C( 80), INT8_C( 85), INT8_C( 42), -INT8_C( 9), INT8_C( 107), INT8_C( 90),
|
||||
INT8_C( 91), INT8_C( 25), INT8_C( 1), INT8_C( 7), -INT8_C( 109), -INT8_C( 101), -INT8_C( 1), -INT8_C( 67),
|
||||
-INT8_C( 110), INT8_C( 106), INT8_C( 24), -INT8_C( 18), -INT8_C( 125), INT8_C( 25), -INT8_C( 11), -INT8_C( 54) },
|
||||
{ INT8_C( 70), -INT8_C( 102), INT8_C( 84), INT8_C( 74), -INT8_C( 47), -INT8_C( 60), -INT8_C( 4), -INT8_C( 9),
|
||||
-INT8_C( 39), INT8_C( 91), -INT8_C( 63), -INT8_C( 127), INT8_C( 56), -INT8_C( 32), INT8_C( 34), -INT8_C( 1),
|
||||
-INT8_C( 57), -INT8_C( 125), INT8_C( 1), -INT8_C( 20), INT8_C( 70), INT8_C( 112), -INT8_C( 80), INT8_C( 85),
|
||||
INT8_C( 42), -INT8_C( 9), INT8_C( 107), INT8_C( 90), INT8_C( 91), INT8_C( 25), INT8_C( 1), INT8_C( 7) } }
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
int8_t r[sizeof(test_vec[i].ru)];
|
||||
simde_v16i8 a = simde_msa_ld_b(test_vec[i].a, 0);
|
||||
|
||||
simde_memcpy(r, test_vec[i].ru, sizeof(r));
|
||||
simde_msa_st_b(a, r, 0);
|
||||
simde_assert_equal_vi8(sizeof(r), test_vec[i].r0, r);
|
||||
|
||||
simde_memcpy(r, test_vec[i].ru, sizeof(r));
|
||||
simde_msa_st_b(a, r, 4);
|
||||
simde_assert_equal_vi8(sizeof(r), test_vec[i].r4, r);
|
||||
|
||||
simde_memcpy(r, test_vec[i].ru, sizeof(r));
|
||||
simde_msa_st_b(a, r, 16);
|
||||
simde_assert_equal_vi8(sizeof(r), test_vec[i].r16, r);
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
simde_v16i8 a = simde_test_msa_v16i8_random();
|
||||
int8_t r0[32], r4[32], r16[32], ru[32];
|
||||
|
||||
simde_test_codegen_random_memory(sizeof(ru), HEDLEY_REINTERPRET_CAST(uint8_t*, ru));
|
||||
simde_memcpy(r0, ru, sizeof(ru));
|
||||
simde_memcpy(r4, ru, sizeof(ru));
|
||||
simde_memcpy(r16, ru, sizeof(ru));
|
||||
|
||||
simde_msa_st_b(a, r0, 0);
|
||||
simde_msa_st_b(a, r4, 4);
|
||||
simde_msa_st_b(a, r16, 16);
|
||||
|
||||
simde_test_msa_v16i8_write(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_codegen_write_vi8(2, sizeof(ru) / sizeof(ru[0]), ru, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_codegen_write_vi8(2, sizeof(r0) / sizeof(r0[0]), r0, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_codegen_write_vi8(2, sizeof(r4) / sizeof(r4[0]), r4, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_codegen_write_vi8(2, sizeof(r16) / sizeof(r16[0]), r16, SIMDE_TEST_VEC_POS_LAST);
|
||||
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_st_h (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
int16_t a[8];
|
||||
int16_t ru[16];
|
||||
int16_t r0[16];
|
||||
int16_t r4[16];
|
||||
int16_t r16[16];
|
||||
} test_vec[] = {
|
||||
{ { -INT16_C( 20637), -INT16_C( 14769), -INT16_C( 10501), -INT16_C( 28394), INT16_C( 11194), -INT16_C( 21974), -INT16_C( 29026), -INT16_C( 11367) },
|
||||
{ INT16_C( 7296), INT16_C( 1056), INT16_C( 26076), INT16_C( 10905), -INT16_C( 13490), INT16_C( 5517), INT16_C( 29922), INT16_C( 17948),
|
||||
INT16_C( 27427), INT16_C( 7692), INT16_C( 9025), -INT16_C( 1105), -INT16_C( 9906), -INT16_C( 4955), INT16_C( 15975), -INT16_C( 5953) },
|
||||
{ -INT16_C( 20637), -INT16_C( 14769), -INT16_C( 10501), -INT16_C( 28394), INT16_C( 11194), -INT16_C( 21974), -INT16_C( 29026), -INT16_C( 11367),
|
||||
INT16_C( 27427), INT16_C( 7692), INT16_C( 9025), -INT16_C( 1105), -INT16_C( 9906), -INT16_C( 4955), INT16_C( 15975), -INT16_C( 5953) },
|
||||
{ INT16_C( 7296), INT16_C( 1056), -INT16_C( 20637), -INT16_C( 14769), -INT16_C( 10501), -INT16_C( 28394), INT16_C( 11194), -INT16_C( 21974),
|
||||
-INT16_C( 29026), -INT16_C( 11367), INT16_C( 9025), -INT16_C( 1105), -INT16_C( 9906), -INT16_C( 4955), INT16_C( 15975), -INT16_C( 5953) },
|
||||
{ INT16_C( 7296), INT16_C( 1056), INT16_C( 26076), INT16_C( 10905), -INT16_C( 13490), INT16_C( 5517), INT16_C( 29922), INT16_C( 17948),
|
||||
-INT16_C( 20637), -INT16_C( 14769), -INT16_C( 10501), -INT16_C( 28394), INT16_C( 11194), -INT16_C( 21974), -INT16_C( 29026), -INT16_C( 11367) } }
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
int16_t r[sizeof(test_vec[i].ru) / sizeof(test_vec[i].ru[0])];
|
||||
simde_v8i16 a = simde_msa_ld_h(test_vec[i].a, 0);
|
||||
|
||||
simde_memcpy(r, test_vec[i].ru, sizeof(r));
|
||||
simde_msa_st_h(a, r, 0);
|
||||
simde_assert_equal_vi16(sizeof(r) / sizeof(r[0]), test_vec[i].r0, r);
|
||||
|
||||
simde_memcpy(r, test_vec[i].ru, sizeof(r));
|
||||
simde_msa_st_h(a, r, 4);
|
||||
simde_assert_equal_vi16(sizeof(r) / sizeof(r[0]), test_vec[i].r4, r);
|
||||
|
||||
simde_memcpy(r, test_vec[i].ru, sizeof(r));
|
||||
simde_msa_st_h(a, r, 16);
|
||||
simde_assert_equal_vi16(sizeof(r) / sizeof(r[0]), test_vec[i].r16, r);
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
simde_v8i16 a = simde_test_msa_v8i16_random();
|
||||
int16_t r0[16], r4[16], r16[16], ru[16];
|
||||
|
||||
simde_test_codegen_random_memory(sizeof(ru), HEDLEY_REINTERPRET_CAST(uint8_t*, ru));
|
||||
simde_memcpy(r0, ru, sizeof(ru));
|
||||
simde_memcpy(r4, ru, sizeof(ru));
|
||||
simde_memcpy(r16, ru, sizeof(ru));
|
||||
|
||||
simde_msa_st_h(a, r0, 0);
|
||||
simde_msa_st_h(a, r4, 4);
|
||||
simde_msa_st_h(a, r16, 16);
|
||||
|
||||
simde_test_msa_v8i16_write(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_codegen_write_vi16(2, sizeof(ru) / sizeof(ru[0]), ru, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_codegen_write_vi16(2, sizeof(r0) / sizeof(r0[0]), r0, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_codegen_write_vi16(2, sizeof(r4) / sizeof(r4[0]), r4, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_codegen_write_vi16(2, sizeof(r16) / sizeof(r16[0]), r16, SIMDE_TEST_VEC_POS_LAST);
|
||||
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_st_w (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
int32_t a[4];
|
||||
int32_t ru[8];
|
||||
int32_t r0[8];
|
||||
int32_t r4[8];
|
||||
int32_t r16[8];
|
||||
} test_vec[] = {
|
||||
{ { INT32_C( 921493338), -INT32_C( 1822390971), INT32_C( 866709072), -INT32_C( 2055617438) },
|
||||
{ INT32_C( 1889764655), -INT32_C( 160738648), -INT32_C( 1813901269), -INT32_C( 1451515569), -INT32_C( 958371967), INT32_C( 1029259501), -INT32_C( 1871707858), -INT32_C( 199890491) },
|
||||
{ INT32_C( 921493338), -INT32_C( 1822390971), INT32_C( 866709072), -INT32_C( 2055617438), -INT32_C( 958371967), INT32_C( 1029259501), -INT32_C( 1871707858), -INT32_C( 199890491) },
|
||||
{ INT32_C( 1889764655), INT32_C( 921493338), -INT32_C( 1822390971), INT32_C( 866709072), -INT32_C( 2055617438), INT32_C( 1029259501), -INT32_C( 1871707858), -INT32_C( 199890491) },
|
||||
{ INT32_C( 1889764655), -INT32_C( 160738648), -INT32_C( 1813901269), -INT32_C( 1451515569), INT32_C( 921493338), -INT32_C( 1822390971), INT32_C( 866709072), -INT32_C( 2055617438) } }
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
int32_t r[sizeof(test_vec[i].ru) / sizeof(test_vec[i].ru[0])];
|
||||
simde_v4i32 a = simde_msa_ld_w(test_vec[i].a, 0);
|
||||
|
||||
simde_memcpy(r, test_vec[i].ru, sizeof(r));
|
||||
simde_msa_st_w(a, r, 0);
|
||||
simde_assert_equal_vi32(sizeof(r) / sizeof(r[0]), test_vec[i].r0, r);
|
||||
|
||||
simde_memcpy(r, test_vec[i].ru, sizeof(r));
|
||||
simde_msa_st_w(a, r, 4);
|
||||
simde_assert_equal_vi32(sizeof(r) / sizeof(r[0]), test_vec[i].r4, r);
|
||||
|
||||
simde_memcpy(r, test_vec[i].ru, sizeof(r));
|
||||
simde_msa_st_w(a, r, 16);
|
||||
simde_assert_equal_vi32(sizeof(r) / sizeof(r[0]), test_vec[i].r16, r);
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
simde_v4i32 a = simde_test_msa_v4i32_random();
|
||||
int32_t r0[8], r4[8], r16[8], ru[8];
|
||||
|
||||
simde_test_codegen_random_memory(sizeof(ru), HEDLEY_REINTERPRET_CAST(uint8_t*, ru));
|
||||
simde_memcpy(r0, ru, sizeof(ru));
|
||||
simde_memcpy(r4, ru, sizeof(ru));
|
||||
simde_memcpy(r16, ru, sizeof(ru));
|
||||
|
||||
simde_msa_st_w(a, r0, 0);
|
||||
simde_msa_st_w(a, r4, 4);
|
||||
simde_msa_st_w(a, r16, 16);
|
||||
|
||||
simde_test_msa_v4i32_write(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_codegen_write_vi32(2, sizeof(ru) / sizeof(ru[0]), ru, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_codegen_write_vi32(2, sizeof(r0) / sizeof(r0[0]), r0, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_codegen_write_vi32(2, sizeof(r4) / sizeof(r4[0]), r4, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_codegen_write_vi32(2, sizeof(r16) / sizeof(r16[0]), r16, SIMDE_TEST_VEC_POS_LAST);
|
||||
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_st_d (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
int64_t a[2];
|
||||
int64_t ru[4];
|
||||
int64_t r0[4];
|
||||
int64_t r8[4];
|
||||
int64_t r16[4];
|
||||
} test_vec[] = {
|
||||
{ { -INT64_C( 1211907635136411288), INT64_C( 6532010588549242016) },
|
||||
{ INT64_C( 1263295964925401521), INT64_C( 594567094622189119), INT64_C( 7924218561106238620), -INT64_C( 7478857305109526058) },
|
||||
{ -INT64_C( 1211907635136411288), INT64_C( 6532010588549242016), INT64_C( 7924218561106238620), -INT64_C( 7478857305109526058) },
|
||||
{ INT64_C( 1263295964925401521), -INT64_C( 1211907635136411288), INT64_C( 6532010588549242016), -INT64_C( 7478857305109526058) },
|
||||
{ INT64_C( 1263295964925401521), INT64_C( 594567094622189119), -INT64_C( 1211907635136411288), INT64_C( 6532010588549242016) } }
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
int64_t r[sizeof(test_vec[i].ru) / sizeof(test_vec[i].ru[0])];
|
||||
simde_v2i64 a = simde_msa_ld_d(test_vec[i].a, 0);
|
||||
|
||||
simde_memcpy(r, test_vec[i].ru, sizeof(r));
|
||||
simde_msa_st_d(a, r, 0);
|
||||
simde_assert_equal_vi64(sizeof(r) / sizeof(r[0]), test_vec[i].r0, r);
|
||||
|
||||
simde_memcpy(r, test_vec[i].ru, sizeof(r));
|
||||
simde_msa_st_d(a, r, 8);
|
||||
simde_assert_equal_vi64(sizeof(r) / sizeof(r[0]), test_vec[i].r8, r);
|
||||
|
||||
simde_memcpy(r, test_vec[i].ru, sizeof(r));
|
||||
simde_msa_st_d(a, r, 16);
|
||||
simde_assert_equal_vi64(sizeof(r) / sizeof(r[0]), test_vec[i].r16, r);
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
simde_v2i64 a = simde_test_msa_v2i64_random();
|
||||
int64_t r0[4], r8[4], r16[4], ru[4];
|
||||
|
||||
simde_test_codegen_random_memory(sizeof(ru), HEDLEY_REINTERPRET_CAST(uint8_t*, ru));
|
||||
simde_memcpy(r0, ru, sizeof(ru));
|
||||
simde_memcpy(r8, ru, sizeof(ru));
|
||||
simde_memcpy(r16, ru, sizeof(ru));
|
||||
|
||||
simde_msa_st_d(a, r0, 0);
|
||||
simde_msa_st_d(a, r8, 8);
|
||||
simde_msa_st_d(a, r16, 16);
|
||||
|
||||
simde_test_msa_v2i64_write(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_codegen_write_vi64(2, sizeof(ru) / sizeof(ru[0]), ru, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_codegen_write_vi64(2, sizeof(r0) / sizeof(r0[0]), r0, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_codegen_write_vi64(2, sizeof(r8) / sizeof(r8[0]), r8, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_codegen_write_vi64(2, sizeof(r16) / sizeof(r16[0]), r16, SIMDE_TEST_VEC_POS_LAST);
|
||||
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
SIMDE_TEST_FUNC_LIST_BEGIN
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(st_b)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(st_h)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(st_w)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(st_d)
|
||||
SIMDE_TEST_FUNC_LIST_END
|
||||
|
||||
#include "test-msa-footer.h"
|
||||
269
thirdparty/simde/test/mips/msa/subv.c
vendored
Normal file
269
thirdparty/simde/test/mips/msa/subv.c
vendored
Normal file
|
|
@ -0,0 +1,269 @@
|
|||
#define SIMDE_TEST_MIPS_MSA_INSN subv
|
||||
|
||||
#include "test-msa.h"
|
||||
#include "../../../simde/mips/msa/subv.h"
|
||||
|
||||
static int
|
||||
test_simde_subv_b (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
int8_t a[16];
|
||||
int8_t b[16];
|
||||
int8_t r[16];
|
||||
} test_vec[] = {
|
||||
{ { -INT8_C( 18), INT8_C( 66), INT8_C( 30), INT8_C( 115), INT8_C( 55), -INT8_C( 99), INT8_C( 58), INT8_C( 26),
|
||||
INT8_C( 81), INT8_C( 58), INT8_C( 72), -INT8_C( 114), -INT8_C( 105), -INT8_C( 101), -INT8_C( 68), INT8_C( 32) },
|
||||
{ -INT8_C( 48), -INT8_C( 4), -INT8_C( 85), -INT8_C( 25), INT8_C( 41), INT8_C( 101), -INT8_C( 25), -INT8_C( 62),
|
||||
INT8_C( 93), -INT8_C( 30), -INT8_C( 99), INT8_C( 25), -INT8_C( 31), -INT8_C( 105), -INT8_C( 87), -INT8_C( 48) },
|
||||
{ INT8_C( 30), INT8_C( 70), INT8_C( 115), -INT8_C( 116), INT8_C( 14), INT8_C( 56), INT8_C( 83), INT8_C( 88),
|
||||
-INT8_C( 12), INT8_C( 88), -INT8_C( 85), INT8_C( 117), -INT8_C( 74), INT8_C( 4), INT8_C( 19), INT8_C( 80) } },
|
||||
{ { -INT8_C( 39), -INT8_C( 57), INT8_C( 67), INT8_C( 16), INT8_C( 101), INT8_C( 126), INT8_C( 43), -INT8_C( 74),
|
||||
-INT8_C( 72), INT8_C( 115), INT8_C( 68), INT8_C( 80), INT8_C( 14), INT8_C( 0), INT8_C( 112), -INT8_C( 34) },
|
||||
{ -INT8_C( 3), INT8_C( 27), -INT8_C( 59), INT8_C( 38), -INT8_C( 127), -INT8_C( 83), -INT8_C( 23), -INT8_C( 34),
|
||||
-INT8_C( 113), -INT8_C( 122), -INT8_C( 9), INT8_C( 112), INT8_C( 29), -INT8_C( 95), INT8_C( 64), -INT8_C( 9) },
|
||||
{ -INT8_C( 36), -INT8_C( 84), INT8_C( 126), -INT8_C( 22), -INT8_C( 28), -INT8_C( 47), INT8_C( 66), -INT8_C( 40),
|
||||
INT8_C( 41), -INT8_C( 19), INT8_C( 77), -INT8_C( 32), -INT8_C( 15), INT8_C( 95), INT8_C( 48), -INT8_C( 25) } },
|
||||
{ { INT8_C( 104), -INT8_C( 124), INT8_C( 7), -INT8_C( 51), INT8_C( 2), INT8_C( 50), -INT8_C( 125), -INT8_C( 70),
|
||||
-INT8_C( 91), -INT8_C( 57), INT8_C( 10), -INT8_C( 77), -INT8_C( 56), INT8_C( 122), -INT8_C( 111), -INT8_C( 59) },
|
||||
{ -INT8_C( 106), INT8_C( 87), -INT8_C( 21), INT8_C( 23), INT8_C( 4), -INT8_C( 44), -INT8_C( 11), -INT8_C( 109),
|
||||
INT8_C( 90), -INT8_C( 19), INT8_C( 3), INT8_C( 120), -INT8_C( 114), INT8_C( 68), INT8_C( 111), -INT8_C( 10) },
|
||||
{ -INT8_C( 46), INT8_C( 45), INT8_C( 28), -INT8_C( 74), -INT8_C( 2), INT8_C( 94), -INT8_C( 114), INT8_C( 39),
|
||||
INT8_C( 75), -INT8_C( 38), INT8_C( 7), INT8_C( 59), INT8_C( 58), INT8_C( 54), INT8_C( 34), -INT8_C( 49) } },
|
||||
{ { -INT8_C( 56), INT8_C( 118), -INT8_C( 60), -INT8_C( 54), -INT8_C( 87), INT8_C( 71), -INT8_C( 124), INT8_C( 78),
|
||||
INT8_C( 15), -INT8_C( 113), INT8_C( 2), -INT8_C( 41), INT8_C( 9), -INT8_C( 109), -INT8_C( 100), -INT8_C( 97) },
|
||||
{ -INT8_C( 22), -INT8_C( 121), -INT8_C( 74), -INT8_C( 18), INT8_C( 92), -INT8_C( 84), -INT8_C( 127), -INT8_C( 74),
|
||||
-INT8_C( 103), -INT8_C( 123), INT8_C( 46), INT8_C( 39), -INT8_C( 55), -INT8_C( 99), INT8_C( 29), -INT8_C( 111) },
|
||||
{ -INT8_C( 34), -INT8_C( 17), INT8_C( 14), -INT8_C( 36), INT8_C( 77), -INT8_C( 101), INT8_C( 3), -INT8_C( 104),
|
||||
INT8_C( 118), INT8_C( 10), -INT8_C( 44), -INT8_C( 80), INT8_C( 64), -INT8_C( 10), INT8_MAX, INT8_C( 14) } },
|
||||
{ { INT8_C( 20), -INT8_C( 31), INT8_C( 91), -INT8_C( 67), INT8_C( 41), -INT8_C( 33), INT8_C( 11), INT8_C( 56),
|
||||
INT8_C( 110), INT8_C( 13), INT8_C( 15), INT8_C( 120), -INT8_C( 95), -INT8_C( 85), INT8_C( 23), -INT8_C( 117) },
|
||||
{ INT8_C( 50), -INT8_C( 50), INT8_C( 122), -INT8_C( 114), INT8_C( 122), -INT8_C( 5), INT8_C( 69), INT8_C( 19),
|
||||
INT8_MIN, INT8_C( 115), INT8_C( 58), INT8_C( 73), INT8_C( 17), INT8_C( 87), -INT8_C( 38), INT8_C( 37) },
|
||||
{ -INT8_C( 30), INT8_C( 19), -INT8_C( 31), INT8_C( 47), -INT8_C( 81), -INT8_C( 28), -INT8_C( 58), INT8_C( 37),
|
||||
-INT8_C( 18), -INT8_C( 102), -INT8_C( 43), INT8_C( 47), -INT8_C( 112), INT8_C( 84), INT8_C( 61), INT8_C( 102) } },
|
||||
{ { INT8_C( 57), INT8_C( 53), -INT8_C( 30), INT8_C( 98), INT8_C( 21), -INT8_C( 19), -INT8_C( 102), -INT8_C( 125),
|
||||
-INT8_C( 5), -INT8_C( 87), -INT8_C( 5), -INT8_C( 100), INT8_C( 84), INT8_C( 19), INT8_C( 39), -INT8_C( 122) },
|
||||
{ -INT8_C( 31), -INT8_C( 95), INT8_C( 21), INT8_C( 91), -INT8_C( 99), INT8_C( 90), INT8_C( 110), INT8_C( 29),
|
||||
-INT8_C( 51), -INT8_C( 88), INT8_C( 103), -INT8_C( 34), -INT8_C( 1), INT8_C( 65), INT8_C( 3), INT8_C( 56) },
|
||||
{ INT8_C( 88), -INT8_C( 108), -INT8_C( 51), INT8_C( 7), INT8_C( 120), -INT8_C( 109), INT8_C( 44), INT8_C( 102),
|
||||
INT8_C( 46), INT8_C( 1), -INT8_C( 108), -INT8_C( 66), INT8_C( 85), -INT8_C( 46), INT8_C( 36), INT8_C( 78) } },
|
||||
{ { INT8_C( 119), -INT8_C( 27), -INT8_C( 102), -INT8_C( 116), -INT8_C( 45), INT8_C( 52), INT8_C( 15), -INT8_C( 50),
|
||||
-INT8_C( 35), INT8_C( 11), INT8_C( 106), INT8_C( 49), INT8_C( 30), -INT8_C( 111), -INT8_C( 72), -INT8_C( 1) },
|
||||
{ INT8_C( 51), -INT8_C( 51), INT8_C( 90), -INT8_C( 48), INT8_C( 39), -INT8_C( 56), -INT8_C( 19), -INT8_C( 12),
|
||||
INT8_C( 112), INT8_C( 84), -INT8_C( 45), INT8_C( 111), -INT8_C( 106), -INT8_C( 42), -INT8_C( 88), INT8_C( 13) },
|
||||
{ INT8_C( 68), INT8_C( 24), INT8_C( 64), -INT8_C( 68), -INT8_C( 84), INT8_C( 108), INT8_C( 34), -INT8_C( 38),
|
||||
INT8_C( 109), -INT8_C( 73), -INT8_C( 105), -INT8_C( 62), -INT8_C( 120), -INT8_C( 69), INT8_C( 16), -INT8_C( 14) } },
|
||||
{ { -INT8_C( 68), INT8_C( 66), -INT8_C( 103), -INT8_C( 113), INT8_C( 119), -INT8_C( 88), INT8_C( 93), INT8_C( 84),
|
||||
-INT8_C( 77), -INT8_C( 57), -INT8_C( 122), -INT8_C( 47), INT8_C( 88), INT8_C( 62), -INT8_C( 48), -INT8_C( 117) },
|
||||
{ INT8_C( 11), INT8_C( 42), INT8_C( 91), INT8_C( 50), -INT8_C( 14), INT8_C( 73), INT8_C( 38), INT8_C( 98),
|
||||
-INT8_C( 99), -INT8_C( 7), -INT8_C( 46), INT8_C( 51), -INT8_C( 48), INT8_C( 122), INT8_C( 64), -INT8_C( 116) },
|
||||
{ -INT8_C( 79), INT8_C( 24), INT8_C( 62), INT8_C( 93), -INT8_C( 123), INT8_C( 95), INT8_C( 55), -INT8_C( 14),
|
||||
INT8_C( 22), -INT8_C( 50), -INT8_C( 76), -INT8_C( 98), -INT8_C( 120), -INT8_C( 60), -INT8_C( 112), -INT8_C( 1) } },
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_v16i8 a = simde_msa_ld_b(test_vec[i].a, 0);
|
||||
simde_v16i8 b = simde_msa_ld_b(test_vec[i].b, 0);
|
||||
simde_v16i8 r = simde_msa_subv_b(a, b);
|
||||
|
||||
simde_test_msa_v16i8_assert_equal(r, simde_msa_ld_b(test_vec[i].r, 0));
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_v16i8 a = simde_test_msa_v16i8_random();
|
||||
simde_v16i8 b = simde_test_msa_v16i8_random();
|
||||
simde_v16i8 r = simde_msa_subv_b(a, b);
|
||||
|
||||
simde_test_msa_v16i8_write(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_msa_v16i8_write(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v16i8_write(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_subv_h (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
int16_t a[8];
|
||||
int16_t b[8];
|
||||
int16_t r[8];
|
||||
} test_vec[] = {
|
||||
{ { -INT16_C( 9796), INT16_C( 13083), INT16_C( 30850), INT16_C( 13704), INT16_C( 3647), -INT16_C( 26873), -INT16_C( 10420), INT16_C( 22307) },
|
||||
{ INT16_C( 32258), -INT16_C( 2935), -INT16_C( 20537), INT16_C( 25943), INT16_C( 10665), INT16_C( 31128), -INT16_C( 9821), INT16_C( 24325) },
|
||||
{ INT16_C( 23482), INT16_C( 16018), -INT16_C( 14149), -INT16_C( 12239), -INT16_C( 7018), INT16_C( 7535), -INT16_C( 599), -INT16_C( 2018) } },
|
||||
{ { INT16_C( 8370), INT16_C( 13459), INT16_C( 7064), -INT16_C( 10390), INT16_C( 28969), INT16_C( 30062), -INT16_C( 28344), INT16_C( 19148) },
|
||||
{ INT16_C( 21776), -INT16_C( 10433), -INT16_C( 27132), -INT16_C( 21188), -INT16_C( 10817), INT16_C( 25126), INT16_C( 11182), INT16_C( 24769) },
|
||||
{ -INT16_C( 13406), INT16_C( 23892), -INT16_C( 31340), INT16_C( 10798), -INT16_C( 25750), INT16_C( 4936), INT16_C( 26010), -INT16_C( 5621) } },
|
||||
{ { INT16_C( 21579), -INT16_C( 7275), -INT16_C( 145), -INT16_C( 26438), INT16_C( 10608), -INT16_C( 18419), -INT16_C( 9798), -INT16_C( 13821) },
|
||||
{ INT16_C( 16942), INT16_C( 13218), -INT16_C( 8488), -INT16_C( 26656), INT16_C( 1971), INT16_C( 25081), -INT16_C( 17870), INT16_C( 32450) },
|
||||
{ INT16_C( 4637), -INT16_C( 20493), INT16_C( 8343), INT16_C( 218), INT16_C( 8637), INT16_C( 22036), INT16_C( 8072), INT16_C( 19265) } },
|
||||
{ { INT16_C( 22287), INT16_C( 32353), INT16_C( 7254), -INT16_C( 14825), INT16_C( 9285), -INT16_C( 130), -INT16_C( 32258), INT16_C( 11466) },
|
||||
{ INT16_C( 27843), -INT16_C( 25761), INT16_C( 16458), -INT16_C( 462), INT16_C( 11079), INT16_C( 31071), INT16_C( 8678), -INT16_C( 2569) },
|
||||
{ -INT16_C( 5556), -INT16_C( 7422), -INT16_C( 9204), -INT16_C( 14363), -INT16_C( 1794), -INT16_C( 31201), INT16_C( 24600), INT16_C( 14035) } },
|
||||
{ { INT16_C( 22904), -INT16_C( 12685), -INT16_C( 30091), -INT16_C( 17772), INT16_C( 5039), -INT16_C( 21063), -INT16_C( 31852), INT16_C( 22745) },
|
||||
{ INT16_C( 14831), INT16_C( 15091), INT16_C( 9849), -INT16_C( 16328), -INT16_C( 26799), INT16_C( 14137), INT16_C( 12729), INT16_C( 12588) },
|
||||
{ INT16_C( 8073), -INT16_C( 27776), INT16_C( 25596), -INT16_C( 1444), INT16_C( 31838), INT16_C( 30336), INT16_C( 20955), INT16_C( 10157) } },
|
||||
{ { -INT16_C( 24438), -INT16_C( 256), -INT16_C( 27606), -INT16_C( 9799), INT16_C( 29351), INT16_C( 15494), INT16_C( 24822), -INT16_C( 6764) },
|
||||
{ -INT16_C( 30823), INT16_C( 4639), INT16_C( 22445), -INT16_C( 46), INT16_C( 3055), -INT16_C( 22474), INT16_C( 25404), -INT16_C( 14631) },
|
||||
{ INT16_C( 6385), -INT16_C( 4895), INT16_C( 15485), -INT16_C( 9753), INT16_C( 26296), -INT16_C( 27568), -INT16_C( 582), INT16_C( 7867) } },
|
||||
{ { -INT16_C( 9981), INT16_C( 11717), INT16_C( 32366), INT16_C( 5383), -INT16_C( 29199), -INT16_C( 6319), -INT16_C( 6675), -INT16_C( 31028) },
|
||||
{ -INT16_C( 5011), INT16_C( 6808), INT16_C( 27203), INT16_C( 12825), INT16_C( 20598), -INT16_C( 19750), -INT16_C( 19277), -INT16_C( 18823) },
|
||||
{ -INT16_C( 4970), INT16_C( 4909), INT16_C( 5163), -INT16_C( 7442), INT16_C( 15739), INT16_C( 13431), INT16_C( 12602), -INT16_C( 12205) } },
|
||||
{ { INT16_C( 16013), -INT16_C( 1053), -INT16_C( 5443), -INT16_C( 20975), INT16_C( 25208), INT16_C( 26005), INT16_C( 24904), -INT16_C( 18964) },
|
||||
{ -INT16_C( 31667), -INT16_C( 28209), -INT16_C( 5649), INT16_C( 26051), -INT16_C( 25031), -INT16_C( 5097), -INT16_C( 28590), -INT16_C( 8286) },
|
||||
{ -INT16_C( 17856), INT16_C( 27156), INT16_C( 206), INT16_C( 18510), -INT16_C( 15297), INT16_C( 31102), -INT16_C( 12042), -INT16_C( 10678) } },
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_v8i16 a = simde_msa_ld_h(test_vec[i].a, 0);
|
||||
simde_v8i16 b = simde_msa_ld_h(test_vec[i].b, 0);
|
||||
simde_v8i16 r = simde_msa_subv_h(a, b);
|
||||
|
||||
simde_test_msa_v8i16_assert_equal(r, simde_msa_ld_h(test_vec[i].r, 0));
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_v8i16 a = simde_test_msa_v8i16_random();
|
||||
simde_v8i16 b = simde_test_msa_v8i16_random();
|
||||
simde_v8i16 r = simde_msa_subv_h(a, b);
|
||||
|
||||
simde_test_msa_v8i16_write(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_msa_v8i16_write(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v8i16_write(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_subv_w (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
int32_t a[4];
|
||||
int32_t b[4];
|
||||
int32_t r[4];
|
||||
} test_vec[] = {
|
||||
{ { -INT32_C( 1931770417), -INT32_C( 398791568), -INT32_C( 1773285554), INT32_C( 2118859056) },
|
||||
{ -INT32_C( 1391518786), INT32_C( 1024643588), -INT32_C( 1037489808), -INT32_C( 1985819718) },
|
||||
{ -INT32_C( 540251631), -INT32_C( 1423435156), -INT32_C( 735795746), -INT32_C( 190288522) } },
|
||||
{ { -INT32_C( 1072333488), -INT32_C( 1213706391), INT32_C( 1313797662), -INT32_C( 305358545) },
|
||||
{ -INT32_C( 1197810764), INT32_C( 519417006), -INT32_C( 1864294698), INT32_C( 974750697) },
|
||||
{ INT32_C( 125477276), -INT32_C( 1733123397), -INT32_C( 1116874936), -INT32_C( 1280109242) } },
|
||||
{ { INT32_C( 1778003456), -INT32_C( 1692359811), -INT32_C( 924225895), -INT32_C( 1128876536) },
|
||||
{ INT32_C( 1064652945), -INT32_C( 748786947), INT32_C( 1919106953), -INT32_C( 1028883262) },
|
||||
{ INT32_C( 713350511), -INT32_C( 943572864), INT32_C( 1451634448), -INT32_C( 99993274) } },
|
||||
{ { INT32_C( 657172394), -INT32_C( 473806006), -INT32_C( 1028936774), -INT32_C( 209821343) },
|
||||
{ -INT32_C( 1355615310), -INT32_C( 410873762), -INT32_C( 1856379441), INT32_C( 189990497) },
|
||||
{ INT32_C( 2012787704), -INT32_C( 62932244), INT32_C( 827442667), -INT32_C( 399811840) } },
|
||||
{ { -INT32_C( 147685715), -INT32_C( 2066025270), INT32_C( 21398943), -INT32_C( 1712012057) },
|
||||
{ INT32_C( 373827256), -INT32_C( 2030187849), INT32_C( 270030511), INT32_C( 152791900) },
|
||||
{ -INT32_C( 521512971), -INT32_C( 35837421), -INT32_C( 248631568), -INT32_C( 1864803957) } },
|
||||
{ { -INT32_C( 1275048470), -INT32_C( 533145023), INT32_C( 1205960288), -INT32_C( 85928638) },
|
||||
{ -INT32_C( 1290786564), -INT32_C( 1590096398), -INT32_C( 1062121116), -INT32_C( 1479881539) },
|
||||
{ INT32_C( 15738094), INT32_C( 1056951375), -INT32_C( 2026885892), INT32_C( 1393952901) } },
|
||||
{ { INT32_C( 1515964953), INT32_C( 87724965), INT32_C( 1397496849), -INT32_C( 313643791) },
|
||||
{ INT32_C( 1184915028), -INT32_C( 790111636), -INT32_C( 393177045), INT32_C( 2106546788) },
|
||||
{ INT32_C( 331049925), INT32_C( 877836601), INT32_C( 1790673894), INT32_C( 1874776717) } },
|
||||
{ { -INT32_C( 891819483), -INT32_C( 1899032195), INT32_C( 534911789), -INT32_C( 1693700025) },
|
||||
{ -INT32_C( 85873266), -INT32_C( 1295333241), -INT32_C( 996451488), -INT32_C( 633263435) },
|
||||
{ -INT32_C( 805946217), -INT32_C( 603698954), INT32_C( 1531363277), -INT32_C( 1060436590) } },
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_v4i32 a = simde_msa_ld_w(test_vec[i].a, 0);
|
||||
simde_v4i32 b = simde_msa_ld_w(test_vec[i].b, 0);
|
||||
simde_v4i32 r = simde_msa_subv_w(a, b);
|
||||
|
||||
simde_test_msa_v4i32_assert_equal(r, simde_msa_ld_w(test_vec[i].r, 0));
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_v4i32 a = simde_test_msa_v4i32_random();
|
||||
simde_v4i32 b = simde_test_msa_v4i32_random();
|
||||
simde_v4i32 r = simde_msa_subv_w(a, b);
|
||||
|
||||
simde_test_msa_v4i32_write(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_msa_v4i32_write(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v4i32_write(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_subv_d (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
static const struct {
|
||||
int64_t a[2];
|
||||
int64_t b[2];
|
||||
int64_t r[2];
|
||||
} test_vec[] = {
|
||||
{ { INT64_C( 6278425977922263061), -INT64_C( 4507960067861642354) },
|
||||
{ INT64_C( 8748671196141998383), INT64_C( 4859804211480429793) },
|
||||
{ -INT64_C( 2470245218219735322), INT64_C( 9078979794367479469) } },
|
||||
{ { INT64_C( 1736128352392451734), INT64_C( 4606722888134659578) },
|
||||
{ INT64_C( 1315717609080335023), -INT64_C( 7650459086816182174) },
|
||||
{ INT64_C( 420410743312116711), -INT64_C( 6189562098758709864) } },
|
||||
{ { -INT64_C( 7218587810849773007), -INT64_C( 3654751232963591943) },
|
||||
{ -INT64_C( 97432554716119711), -INT64_C( 7283337193273209255) },
|
||||
{ -INT64_C( 7121155256133653296), INT64_C( 3628585960309617312) } },
|
||||
{ { -INT64_C( 6464029213235789554), INT64_C( 3230196705293964263) },
|
||||
{ -INT64_C( 7220005489000683213), -INT64_C( 3623462838272303950) },
|
||||
{ INT64_C( 755976275764893659), INT64_C( 6853659543566268213) } },
|
||||
{ { INT64_C( 1906650137799494433), INT64_C( 5679868276337747163) },
|
||||
{ -INT64_C( 6468599578418638756), INT64_C( 3302113845312564550) },
|
||||
{ INT64_C( 8375249716218133189), INT64_C( 2377754431025182613) } },
|
||||
{ { -INT64_C( 878359051367591806), INT64_C( 4466845022479314581) },
|
||||
{ INT64_C( 5374506316278209276), INT64_C( 5871607387480151874) },
|
||||
{ -INT64_C( 6252865367645801082), -INT64_C( 1404762365000837293) } },
|
||||
{ { INT64_C( 9114957894881015923), INT64_C( 9214975631965427908) },
|
||||
{ INT64_C( 1555155651371449670), INT64_C( 8898515863974765917) },
|
||||
{ INT64_C( 7559802243509566253), INT64_C( 316459767990661991) } },
|
||||
{ { INT64_C( 2144140416516523097), INT64_C( 7034521579396722588) },
|
||||
{ INT64_C( 8163407730106371938), -INT64_C( 1610006560730403035) },
|
||||
{ -INT64_C( 6019267313589848841), INT64_C( 8644528140127125623) } },
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_v2i64 a = simde_msa_ld_d(test_vec[i].a, 0);
|
||||
simde_v2i64 b = simde_msa_ld_d(test_vec[i].b, 0);
|
||||
simde_v2i64 r = simde_msa_subv_d(a, b);
|
||||
|
||||
simde_test_msa_v2i64_assert_equal(r, simde_msa_ld_d(test_vec[i].r, 0));
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_v2i64 a = simde_test_msa_v2i64_random();
|
||||
simde_v2i64 b = simde_test_msa_v2i64_random();
|
||||
simde_v2i64 r = simde_msa_subv_d(a, b);
|
||||
|
||||
simde_test_msa_v2i64_write(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_msa_v2i64_write(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_msa_v2i64_write(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
SIMDE_TEST_FUNC_LIST_BEGIN
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(subv_b)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(subv_h)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(subv_w)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(subv_d)
|
||||
SIMDE_TEST_FUNC_LIST_END
|
||||
|
||||
#include "test-msa-footer.h"
|
||||
29
thirdparty/simde/test/mips/msa/test-msa-footer.h
vendored
Normal file
29
thirdparty/simde/test/mips/msa/test-msa-footer.h
vendored
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
#if defined(SIMDE_TEST_BARE)
|
||||
int main(void) {
|
||||
int retval = EXIT_SUCCESS;
|
||||
|
||||
fprintf(stdout, "1..%zu\n", (sizeof(test_suite_tests) / sizeof(test_suite_tests[0])));
|
||||
for (size_t i = 0 ; i < (sizeof(test_suite_tests) / sizeof(test_suite_tests[0])) ; i++) {
|
||||
int res = test_suite_tests[i].func();
|
||||
if (res != 0) {
|
||||
retval = EXIT_FAILURE;
|
||||
fprintf(stdout, "not ok %zu " HEDLEY_STRINGIFY(SIMDE_TEST_MIPS_MSA_INSN) "/%s\n", i + 1, test_suite_tests[i].name);
|
||||
} else {
|
||||
fprintf(stdout, "ok %zu " HEDLEY_STRINGIFY(SIMDE_TEST_MIPS_MSA_INSN) "/%s\n", i + 1, test_suite_tests[i].name);
|
||||
}
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
#else
|
||||
#if defined(__cplusplus)
|
||||
static MunitSuite suite = { const_cast<char*>("/" HEDLEY_STRINGIFY(SIMDE_TEST_MIPS_MSA_INSN)), test_suite_tests, NULL, 1, MUNIT_SUITE_OPTION_NONE };
|
||||
#else
|
||||
static MunitSuite suite = { (char*) "/" HEDLEY_STRINGIFY(SIMDE_TEST_MIPS_MSA_INSN), test_suite_tests, NULL, 1, MUNIT_SUITE_OPTION_NONE };
|
||||
#endif
|
||||
|
||||
HEDLEY_C_DECL MunitSuite*
|
||||
SIMDE_TEST_GENERATE_VARIANT_SYMBOL_CURRENT(HEDLEY_CONCAT(simde_test_mips_msa_simd_get_suite_,SIMDE_TEST_MIPS_MSA_INSN)) (void) {
|
||||
return &suite;
|
||||
}
|
||||
#endif
|
||||
129
thirdparty/simde/test/mips/msa/test-msa.h
vendored
Normal file
129
thirdparty/simde/test/mips/msa/test-msa.h
vendored
Normal file
|
|
@ -0,0 +1,129 @@
|
|||
#if !defined(SIMDE_TEST_MIPS_TEST_MSA_H)
|
||||
#define SIMDE_TEST_MIPS_TEST_MSA_H
|
||||
|
||||
#include "../../../simde/mips/msa.h"
|
||||
#include "../../test.h"
|
||||
|
||||
#if !defined(SIMDE_TEST_BARE)
|
||||
#define SIMDE_TEST_DECLARE_SUITE(name) SIMDE_TEST_SUITE_DECLARE_GETTERS(HEDLEY_CONCAT(simde_test_mips_msa_simd_get_suite_,name))
|
||||
#include <test/mips/msa/declare-suites.h>
|
||||
#undef SIMDE_TEST_DECLARE_SUITE
|
||||
#endif
|
||||
|
||||
#define SIMDE_TEST_MIPS_MSA_GENERATE_INT_FUNCS_(Element_Width, Element_Count, Variant_Name) \
|
||||
static int \
|
||||
simde_test_msa_v##Element_Count##i##Element_Width##_assert_equal_( \
|
||||
simde_v##Element_Count##i##Element_Width a, simde_v##Element_Count##i##Element_Width b, \
|
||||
const char* filename, int line, const char* astr, const char* bstr) { \
|
||||
int##Element_Width##_t a_[sizeof(a) / sizeof(int##Element_Width##_t)]; \
|
||||
int##Element_Width##_t b_[sizeof(a) / sizeof(int##Element_Width##_t)]; \
|
||||
simde_memcpy(a_, &a, sizeof(a)); \
|
||||
simde_memcpy(b_, &b, sizeof(b)); \
|
||||
return simde_assert_equal_vi##Element_Width##_(sizeof(a_) / sizeof(a_[0]), a_, b_, filename, line, astr, bstr); \
|
||||
} \
|
||||
\
|
||||
static int \
|
||||
simde_test_msa_v##Element_Count##u##Element_Width##_assert_equal_( \
|
||||
simde_v##Element_Count##u##Element_Width a, simde_v##Element_Count##u##Element_Width b, \
|
||||
const char* filename, int line, const char* astr, const char* bstr) { \
|
||||
uint##Element_Width##_t a_[sizeof(a) / sizeof(uint##Element_Width##_t)]; \
|
||||
uint##Element_Width##_t b_[sizeof(a) / sizeof(uint##Element_Width##_t)]; \
|
||||
simde_memcpy(a_, &a, sizeof(a)); \
|
||||
simde_memcpy(b_, &b, sizeof(b)); \
|
||||
return simde_assert_equal_vu##Element_Width##_(sizeof(a_) / sizeof(a_[0]), a_, b_, filename, line, astr, bstr); \
|
||||
} \
|
||||
\
|
||||
static void \
|
||||
simde_test_msa_v##Element_Count##i##Element_Width##_write(int indent, simde_v##Element_Count##i##Element_Width v, SimdeTestVecPos pos) { \
|
||||
int##Element_Width##_t v_[sizeof(v) / sizeof(int##Element_Width##_t)]; \
|
||||
simde_memcpy(v_, &v, sizeof(v)); \
|
||||
simde_test_codegen_write_vi##Element_Width(indent, sizeof(v_) / sizeof(v_[0]), v_, pos); \
|
||||
} \
|
||||
\
|
||||
static void \
|
||||
simde_test_msa_v##Element_Count##u##Element_Width##_write(int indent, simde_v##Element_Count##u##Element_Width v, SimdeTestVecPos pos) { \
|
||||
uint##Element_Width##_t v_[sizeof(v) / sizeof(int##Element_Width##_t)]; \
|
||||
simde_memcpy(v_, &v, sizeof(v)); \
|
||||
simde_test_codegen_write_vu##Element_Width(indent, sizeof(v_) / sizeof(v_[0]), v_, pos); \
|
||||
} \
|
||||
\
|
||||
static simde_v##Element_Count##i##Element_Width \
|
||||
simde_test_msa_v##Element_Count##i##Element_Width##_random(void) { \
|
||||
simde_v##Element_Count##i##Element_Width r; \
|
||||
simde_test_codegen_random_memory(sizeof(r), HEDLEY_REINTERPRET_CAST(uint8_t*, &r)); \
|
||||
return r; \
|
||||
} \
|
||||
\
|
||||
static simde_v##Element_Count##u##Element_Width \
|
||||
simde_test_msa_v##Element_Count##u##Element_Width##_random(void) { \
|
||||
simde_v##Element_Count##u##Element_Width r; \
|
||||
simde_test_codegen_random_memory(sizeof(r), HEDLEY_REINTERPRET_CAST(uint8_t*, &r)); \
|
||||
return r; \
|
||||
}
|
||||
|
||||
#define SIMDE_TEST_MIPS_MSA_GENERATE_FLOAT_FUNCS_(Element_Width, Element_Count, Variant_Name) \
|
||||
static int \
|
||||
simde_test_msa_v##Element_Count##f##Element_Width##_assert_equal_( \
|
||||
simde_v##Element_Count##f##Element_Width a, simde_v##Element_Count##f##Element_Width b, simde_float##Element_Width slop, \
|
||||
const char* filename, int line, const char* astr, const char* bstr) { \
|
||||
simde_float##Element_Width a_[sizeof(a) / sizeof(simde_float##Element_Width)]; \
|
||||
simde_float##Element_Width b_[sizeof(a) / sizeof(simde_float##Element_Width)]; \
|
||||
simde_memcpy(a_, &a, sizeof(a)); \
|
||||
simde_memcpy(b_, &b, sizeof(b)); \
|
||||
return simde_assert_equal_vf##Element_Width##_(sizeof(a_) / sizeof(a_[0]), a_, b_, slop, filename, line, astr, bstr); \
|
||||
} \
|
||||
\
|
||||
static void \
|
||||
simde_test_msa_v##Element_Count##f##Element_Width##_write(int indent, simde_v##Element_Count##f##Element_Width v, SimdeTestVecPos pos) { \
|
||||
simde_float##Element_Width v_[sizeof(v) / sizeof(simde_float##Element_Width)]; \
|
||||
simde_memcpy(v_, &v, sizeof(v)); \
|
||||
simde_test_codegen_write_vf##Element_Width(indent, sizeof(v_) / sizeof(v_[0]), v_, pos); \
|
||||
} \
|
||||
\
|
||||
static simde_v##Element_Count##f##Element_Width \
|
||||
simde_test_msa_v##Element_Count##f##Element_Width##_random(simde_float##Element_Width min, simde_float##Element_Width max) { \
|
||||
simde_float##Element_Width r_[sizeof(simde_v##Element_Count##f##Element_Width) / sizeof(simde_float##Element_Width)]; \
|
||||
simde_v##Element_Count##f##Element_Width r; \
|
||||
simde_test_codegen_random_vf##Element_Width(sizeof(simde_v##Element_Count##f##Element_Width) / sizeof(simde_float##Element_Width), r_, min, max); \
|
||||
simde_memcpy(&r, r_, sizeof(r)); \
|
||||
return r; \
|
||||
} \
|
||||
\
|
||||
static void \
|
||||
simde_test_msa_v##Element_Count##f##Element_Width##_random_full( \
|
||||
size_t test_sets, size_t vectors_per_set, \
|
||||
simde_float##Element_Width v[HEDLEY_ARRAY_PARAM(test_sets * vectors_per_set * (sizeof(simde_v##Element_Count##f##Element_Width) / sizeof(simde_float##Element_Width)))], \
|
||||
simde_float##Element_Width min, simde_float##Element_Width max, \
|
||||
SimdeTestVecFloatType vec_type) { \
|
||||
simde_test_codegen_random_vf##Element_Width##_full(test_sets, vectors_per_set, (sizeof(simde_v##Element_Count##f##Element_Width) / sizeof(simde_float##Element_Width)), v, min, max, vec_type); \
|
||||
} \
|
||||
\
|
||||
static simde_v##Element_Count##f##Element_Width \
|
||||
simde_test_msa_f##Element_Width##x##Element_Count##_random_full_extract( \
|
||||
size_t vectors_per_set, \
|
||||
simde_float##Element_Width v[], \
|
||||
size_t set_n, size_t vec_n) { \
|
||||
simde_v##Element_Count##f##Element_Width r; \
|
||||
simde_memcpy(&r, &(v[((vectors_per_set * set_n) + vec_n) * (sizeof(simde_v##Element_Count##f##Element_Width) / sizeof(simde_float##Element_Width))]), sizeof(r)); \
|
||||
return r; \
|
||||
}
|
||||
|
||||
SIMDE_TEST_MIPS_MSA_GENERATE_INT_FUNCS_( 8, 16, b)
|
||||
SIMDE_TEST_MIPS_MSA_GENERATE_INT_FUNCS_(16, 8, h)
|
||||
SIMDE_TEST_MIPS_MSA_GENERATE_INT_FUNCS_(32, 4, w)
|
||||
SIMDE_TEST_MIPS_MSA_GENERATE_INT_FUNCS_(64, 2, d)
|
||||
SIMDE_TEST_MIPS_MSA_GENERATE_FLOAT_FUNCS_(32, 4, w)
|
||||
SIMDE_TEST_MIPS_MSA_GENERATE_FLOAT_FUNCS_(64, 2, d)
|
||||
|
||||
#define simde_test_msa_v16i8_assert_equal(a, b) do { if (simde_test_msa_v16i8_assert_equal_(a, b, __FILE__, __LINE__, #a, #b)) return 1; } while (0)
|
||||
#define simde_test_msa_v8i16_assert_equal(a, b) do { if (simde_test_msa_v8i16_assert_equal_(a, b, __FILE__, __LINE__, #a, #b)) return 1; } while (0)
|
||||
#define simde_test_msa_v4i32_assert_equal(a, b) do { if (simde_test_msa_v4i32_assert_equal_(a, b, __FILE__, __LINE__, #a, #b)) return 1; } while (0)
|
||||
#define simde_test_msa_v2i64_assert_equal(a, b) do { if (simde_test_msa_v2i64_assert_equal_(a, b, __FILE__, __LINE__, #a, #b)) return 1; } while (0)
|
||||
#define simde_test_msa_v16u8_assert_equal(a, b) do { if (simde_test_msa_v16u8_assert_equal_(a, b, __FILE__, __LINE__, #a, #b)) return 1; } while (0)
|
||||
#define simde_test_msa_v8u16_assert_equal(a, b) do { if (simde_test_msa_v8u16_assert_equal_(a, b, __FILE__, __LINE__, #a, #b)) return 1; } while (0)
|
||||
#define simde_test_msa_v4u32_assert_equal(a, b) do { if (simde_test_msa_v4u32_assert_equal_(a, b, __FILE__, __LINE__, #a, #b)) return 1; } while (0)
|
||||
#define simde_test_msa_v2u64_assert_equal(a, b) do { if (simde_test_msa_v2u64_assert_equal_(a, b, __FILE__, __LINE__, #a, #b)) return 1; } while (0)
|
||||
#define simde_test_msa_v4f32_assert_equal(a, b, precision) do { if (simde_test_msa_v4f32_assert_equal_(a, b, simde_test_f32_precision_to_slop(precision), __FILE__, __LINE__, #a, #b)) return 1; } while (0)
|
||||
#define simde_test_msa_v2f64_assert_equal(a, b, precision) do { if (simde_test_msa_v2f64_assert_equal_(a, b, simde_test_f64_precision_to_slop(precision), __FILE__, __LINE__, #a, #b)) return 1; } while (0)
|
||||
|
||||
#endif /* !defined(SIMDE_TEST_MIPS_TEST_MSA_H) */
|
||||
22
thirdparty/simde/test/mips/run-tests.c
vendored
Normal file
22
thirdparty/simde/test/mips/run-tests.c
vendored
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
#include "run-tests.h"
|
||||
|
||||
#include "../../simde/hedley.h"
|
||||
|
||||
static MunitSuite suites[] = {
|
||||
#define SIMDE_TEST_DECLARE_SUITE(name) { (char*) "/", NULL, NULL, 1, MUNIT_SUITE_OPTION_NONE },
|
||||
#include "declare-suites.h"
|
||||
#undef SIMDE_TEST_DECLARE_SUITE
|
||||
{ NULL, NULL, NULL, 0, MUNIT_SUITE_OPTION_NONE }
|
||||
};
|
||||
|
||||
static MunitSuite suite = { "/mips", NULL, suites, 1, MUNIT_SUITE_OPTION_NONE };
|
||||
|
||||
MunitSuite*
|
||||
simde_tests_mips_get_suite(void) {
|
||||
size_t i = 0;
|
||||
#define SIMDE_TEST_DECLARE_SUITE(name) suites[i++] = *HEDLEY_CONCAT3(simde_tests_mips_, name, _get_suite)();
|
||||
#include "declare-suites.h"
|
||||
#undef SIMDE_TEST_DECLARE_SUITE
|
||||
|
||||
return &suite;
|
||||
}
|
||||
9
thirdparty/simde/test/mips/run-tests.h
vendored
Normal file
9
thirdparty/simde/test/mips/run-tests.h
vendored
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
#if defined(SIMDE_TESTS_MIPS_RUN_TESTS_H)
|
||||
#error File already included.
|
||||
#endif
|
||||
#define SIMDE_TESTS_MIPS_RUN_TESTS_H
|
||||
|
||||
#include "../test.h"
|
||||
#include "msa/run-tests.h"
|
||||
|
||||
MunitSuite* simde_tests_mips_get_suite(void);
|
||||
Loading…
Add table
Add a link
Reference in a new issue