diff --git a/tests/tcg/mips/meson.build b/tests/tcg/mips/meson.build index 88ec445203..ae755143c1 100644 --- a/tests/tcg/mips/meson.build +++ b/tests/tcg/mips/meson.build @@ -3,6 +3,7 @@ tests = [] # MSA tests shared by the mipsel and mips64 targets tests_mips_msa_groups = [ '../mips/test_msa_bit_count.c', + '../mips/test_msa_bit_move.c', ] tests += tcg_tests['multiarch-linux-user']['tests'] @@ -152,17 +153,6 @@ tests_mips_msa = [ '../mips/user/ase/msa/pack/test_msa_pckod_w.c', '../mips/user/ase/msa/pack/test_msa_vshf_h.c', '../mips/user/ase/msa/pack/test_msa_pckod_d.c', - '../mips/user/ase/msa/bit-move/test_msa_binsr_w.c', - '../mips/user/ase/msa/bit-move/test_msa_binsr_b.c', - '../mips/user/ase/msa/bit-move/test_msa_binsr_d.c', - '../mips/user/ase/msa/bit-move/test_msa_binsr_h.c', - '../mips/user/ase/msa/bit-move/test_msa_binsl_h.c', - '../mips/user/ase/msa/bit-move/test_msa_binsl_w.c', - '../mips/user/ase/msa/bit-move/test_msa_bmnz_v.c', - '../mips/user/ase/msa/bit-move/test_msa_bsel_v.c', - '../mips/user/ase/msa/bit-move/test_msa_bmz_v.c', - '../mips/user/ase/msa/bit-move/test_msa_binsl_d.c', - '../mips/user/ase/msa/bit-move/test_msa_binsl_b.c', '../mips/user/ase/msa/shift/test_msa_sra_d.c', '../mips/user/ase/msa/shift/test_msa_srl_b.c', '../mips/user/ase/msa/shift/test_msa_srl_d.c', diff --git a/tests/tcg/mips/test_msa_bit_move.c b/tests/tcg/mips/test_msa_bit_move.c new file mode 100644 index 0000000000..02fb3bc486 --- /dev/null +++ b/tests/tcg/mips/test_msa_bit_move.c @@ -0,0 +1,93 @@ +/* + * MIPS MSA tests: Bit Move instructions + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "../include/tap.h" + +#define main test_msa_binsl_b +#include "user/ase/msa/bit-move/test_msa_binsl_b.c" +#undef main +#undef TEST_COUNT_TOTAL + +#define main test_msa_binsl_d +#include "user/ase/msa/bit-move/test_msa_binsl_d.c" +#undef main +#undef TEST_COUNT_TOTAL + +#define main test_msa_binsl_h +#include "user/ase/msa/bit-move/test_msa_binsl_h.c" +#undef main +#undef TEST_COUNT_TOTAL + +#define main test_msa_binsl_w +#include "user/ase/msa/bit-move/test_msa_binsl_w.c" +#undef main +#undef TEST_COUNT_TOTAL + +#define main test_msa_binsr_b +#include "user/ase/msa/bit-move/test_msa_binsr_b.c" +#undef main +#undef TEST_COUNT_TOTAL + +#define main test_msa_binsr_d +#include "user/ase/msa/bit-move/test_msa_binsr_d.c" +#undef main +#undef TEST_COUNT_TOTAL + +#define main test_msa_binsr_h +#include "user/ase/msa/bit-move/test_msa_binsr_h.c" +#undef main +#undef TEST_COUNT_TOTAL + +#define main test_msa_binsr_w +#include "user/ase/msa/bit-move/test_msa_binsr_w.c" +#undef main +#undef TEST_COUNT_TOTAL + +#define main test_msa_bmnz_v +#include "user/ase/msa/bit-move/test_msa_bmnz_v.c" +#undef main +#undef TEST_COUNT_TOTAL + +#define main test_msa_bmz_v +#include "user/ase/msa/bit-move/test_msa_bmz_v.c" +#undef main +#undef TEST_COUNT_TOTAL + +#define main test_msa_bsel_v +#include "user/ase/msa/bit-move/test_msa_bsel_v.c" +#undef main +#undef TEST_COUNT_TOTAL + + +static const struct { + const char *name; + int32_t (*fn)(void); +} msa_tests[] = { + { "binsl.b", test_msa_binsl_b }, + { "binsl.d", test_msa_binsl_d }, + { "binsl.h", test_msa_binsl_h }, + { "binsl.w", test_msa_binsl_w }, + { "binsr.b", test_msa_binsr_b }, + { "binsr.d", test_msa_binsr_d }, + { "binsr.h", test_msa_binsr_h }, + { "binsr.w", test_msa_binsr_w }, + { "bmnz.v", test_msa_bmnz_v }, + { "bmz.v", test_msa_bmz_v }, + { "bsel.v", test_msa_bsel_v }, +}; + +int main(void) +{ + unsigned i; + + TAP_START(); + for (i = 0; i < sizeof(msa_tests) / sizeof(msa_tests[0]); i++) { + tap_report(!msa_tests[i].fn(), "MSA %s %s", + "Bit Move", msa_tests[i].name); + } + + return tap_done(); +}