Build the 12 per-opcode bit-count tests as a single executable, test_msa_bit_count.c, to reduce the number of test binaries. Each opcode reports one TAP line.
Prefix the per-instruction summary of test_utils_128.h with '# ' so TAP parsers treat it as a comment. Signed-off-by: Philippe Mathieu-Daudé <[email protected]> --- tests/tcg/mips/include/test_utils_128.h | 2 +- tests/tcg/mips/test_msa_bit_count.c | 103 ++++++++++++++++++++++++ tests/tcg/mips/meson.build | 12 --- tests/tcg/mips64/meson.build | 6 +- tests/tcg/mipsel/meson.build | 6 +- 5 files changed, 114 insertions(+), 15 deletions(-) create mode 100644 tests/tcg/mips/test_msa_bit_count.c diff --git a/tests/tcg/mips/include/test_utils_128.h b/tests/tcg/mips/include/test_utils_128.h index 0dd38684cf33..9ba877d84b5c 100644 --- a/tests/tcg/mips/include/test_utils_128.h +++ b/tests/tcg/mips/include/test_utils_128.h @@ -59,7 +59,7 @@ static inline int32_t check_results_128(const char *isa_ase_name, uint32_t pass_count = 0; uint32_t fail_count = 0; - printf("| %-10s \t| %-20s\t| %-16s \t|", + printf("# %-10s \t| %-20s\t| %-16s \t|", isa_ase_name, group_name, instruction_name); for (i = 0; i < test_count; i++) { if ((b128_result[2 * i] == b128_expect[2 * i]) && diff --git a/tests/tcg/mips/test_msa_bit_count.c b/tests/tcg/mips/test_msa_bit_count.c new file mode 100644 index 000000000000..dacfb619f8fc --- /dev/null +++ b/tests/tcg/mips/test_msa_bit_count.c @@ -0,0 +1,103 @@ +/* + * MIPS MSA tests: Bit Count instructions + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#define main test_msa_nloc_b +#include "user/ase/msa/bit-count/test_msa_nloc_b.c" +#undef main +#undef TEST_COUNT_TOTAL + +#define main test_msa_nloc_d +#include "user/ase/msa/bit-count/test_msa_nloc_d.c" +#undef main +#undef TEST_COUNT_TOTAL + +#define main test_msa_nloc_h +#include "user/ase/msa/bit-count/test_msa_nloc_h.c" +#undef main +#undef TEST_COUNT_TOTAL + +#define main test_msa_nloc_w +#include "user/ase/msa/bit-count/test_msa_nloc_w.c" +#undef main +#undef TEST_COUNT_TOTAL + +#define main test_msa_nlzc_b +#include "user/ase/msa/bit-count/test_msa_nlzc_b.c" +#undef main +#undef TEST_COUNT_TOTAL + +#define main test_msa_nlzc_d +#include "user/ase/msa/bit-count/test_msa_nlzc_d.c" +#undef main +#undef TEST_COUNT_TOTAL + +#define main test_msa_nlzc_h +#include "user/ase/msa/bit-count/test_msa_nlzc_h.c" +#undef main +#undef TEST_COUNT_TOTAL + +#define main test_msa_nlzc_w +#include "user/ase/msa/bit-count/test_msa_nlzc_w.c" +#undef main +#undef TEST_COUNT_TOTAL + +#define main test_msa_pcnt_b +#include "user/ase/msa/bit-count/test_msa_pcnt_b.c" +#undef main +#undef TEST_COUNT_TOTAL + +#define main test_msa_pcnt_d +#include "user/ase/msa/bit-count/test_msa_pcnt_d.c" +#undef main +#undef TEST_COUNT_TOTAL + +#define main test_msa_pcnt_h +#include "user/ase/msa/bit-count/test_msa_pcnt_h.c" +#undef main +#undef TEST_COUNT_TOTAL + +#define main test_msa_pcnt_w +#include "user/ase/msa/bit-count/test_msa_pcnt_w.c" +#undef main +#undef TEST_COUNT_TOTAL + + +static const struct { + const char *name; + int32_t (*fn)(void); +} msa_tests[] = { + { "nloc.b", test_msa_nloc_b }, + { "nloc.d", test_msa_nloc_d }, + { "nloc.h", test_msa_nloc_h }, + { "nloc.w", test_msa_nloc_w }, + { "nlzc.b", test_msa_nlzc_b }, + { "nlzc.d", test_msa_nlzc_d }, + { "nlzc.h", test_msa_nlzc_h }, + { "nlzc.w", test_msa_nlzc_w }, + { "pcnt.b", test_msa_pcnt_b }, + { "pcnt.d", test_msa_pcnt_d }, + { "pcnt.h", test_msa_pcnt_h }, + { "pcnt.w", test_msa_pcnt_w }, +}; + +int main(void) +{ + int fail = 0; + unsigned i; + + printf("TAP version 14\n" + "1..%u\n", + (unsigned)(sizeof(msa_tests) / sizeof(msa_tests[0]))); + for (i = 0; i < sizeof(msa_tests) / sizeof(msa_tests[0]); i++) { + int r = msa_tests[i].fn(); + + printf("%s %u - MSA %s %s\n", r ? "not ok" : "ok", i + 1, + "Bit Count", msa_tests[i].name); + fail |= r; + } + + return fail ? 1 : 0; +} diff --git a/tests/tcg/mips/meson.build b/tests/tcg/mips/meson.build index 88d598a4f89b..40984e9b4fcf 100644 --- a/tests/tcg/mips/meson.build +++ b/tests/tcg/mips/meson.build @@ -93,18 +93,6 @@ tests_mips_msa = [ '../mips/user/ase/msa/int-divide/test_msa_div_u_w.c', '../mips/user/ase/msa/int-divide/test_msa_div_u_h.c', '../mips/user/ase/msa/int-divide/test_msa_div_u_d.c', - '../mips/user/ase/msa/bit-count/test_msa_pcnt_h.c', - '../mips/user/ase/msa/bit-count/test_msa_pcnt_b.c', - '../mips/user/ase/msa/bit-count/test_msa_nloc_h.c', - '../mips/user/ase/msa/bit-count/test_msa_pcnt_w.c', - '../mips/user/ase/msa/bit-count/test_msa_nlzc_h.c', - '../mips/user/ase/msa/bit-count/test_msa_pcnt_d.c', - '../mips/user/ase/msa/bit-count/test_msa_nloc_d.c', - '../mips/user/ase/msa/bit-count/test_msa_nloc_w.c', - '../mips/user/ase/msa/bit-count/test_msa_nloc_b.c', - '../mips/user/ase/msa/bit-count/test_msa_nlzc_d.c', - '../mips/user/ase/msa/bit-count/test_msa_nlzc_w.c', - '../mips/user/ase/msa/bit-count/test_msa_nlzc_b.c', '../mips/user/ase/msa/int-add/test_msa_addv_d.c', '../mips/user/ase/msa/int-add/test_msa_adds_a_h.c', '../mips/user/ase/msa/int-add/test_msa_add_a_h.c', diff --git a/tests/tcg/mips64/meson.build b/tests/tcg/mips64/meson.build index 894f8e9e23e1..bcc02d955436 100644 --- a/tests/tcg/mips64/meson.build +++ b/tests/tcg/mips64/meson.build @@ -39,7 +39,11 @@ foreach src: tests_mips64r6 tests += {src: {'cflags': '-march=mips64r6', 'protocol': 'tap'}} endforeach -foreach src: tests_mips_msa +tests_mips_msa_groups = [ + '../mips/test_msa_bit_count.c', +] + +foreach src: tests_mips_msa + tests_mips_msa_groups tests += { src: { 'cflags': ['-march=mips64r6', '-mmsa'], diff --git a/tests/tcg/mipsel/meson.build b/tests/tcg/mipsel/meson.build index 9e446eed0f6e..8b4e665634ab 100644 --- a/tests/tcg/mipsel/meson.build +++ b/tests/tcg/mipsel/meson.build @@ -40,7 +40,11 @@ endif tests = [] -foreach src: tests_mips_msa +tests_mips_msa_groups = [ + '../mips/test_msa_bit_count.c', +] + +foreach src: tests_mips_msa + tests_mips_msa_groups tests += { src: { 'cflags': ['-mabi=32', '-march=mips32r5', '-mmsa', '-mno-odd-spreg', -- 2.55.0
