Although meson parallelize build, building the 159 tests is overkill. Keep the per-opcode files unchanged, but add 8 new files for each group of instructions:
- arith: add, subtract, absq, modsub, raddu - cmp: cmp, cmpu, cmpgu, cmpgdu, pick - dot: dpa/dps, maq, madd/msub, mult, mulsa - mul: muleq, muleu, mulq, mul - acc: ext*, shilo, mthlip, mfhi/mflo/mthi/mtlo - shift: shll, shra, shrl and their variants - pack: prece*, precr*, packrl, repl, append/prepend/balign, bitrev, insv - ctrl: lbux/lhx/lwx, bposge32, rddsp/wrdsp The tests still call assert() so the first failure aborts the whole group but we can still identify the opcode in the assert message. Drop the unuseful hello-world file. Signed-off-by: Philippe Mathieu-Daudé <[email protected]> --- tests/tcg/mipsel/test_dsp_acc.c | 105 +++++++++++++++++ tests/tcg/mipsel/test_dsp_arith.c | 175 ++++++++++++++++++++++++++++ tests/tcg/mipsel/test_dsp_cmp.c | 80 +++++++++++++ tests/tcg/mipsel/test_dsp_ctrl.c | 40 +++++++ tests/tcg/mipsel/test_dsp_dot.c | 150 ++++++++++++++++++++++++ tests/tcg/mipsel/test_dsp_mul.c | 60 ++++++++++ tests/tcg/mipsel/test_dsp_pack.c | 145 +++++++++++++++++++++++ tests/tcg/mipsel/test_dsp_r1_main.c | 6 - tests/tcg/mipsel/test_dsp_shift.c | 120 +++++++++++++++++++ tests/tcg/mipsel/meson.build | 168 ++------------------------ 10 files changed, 883 insertions(+), 166 deletions(-) create mode 100644 tests/tcg/mipsel/test_dsp_acc.c create mode 100644 tests/tcg/mipsel/test_dsp_arith.c create mode 100644 tests/tcg/mipsel/test_dsp_cmp.c create mode 100644 tests/tcg/mipsel/test_dsp_ctrl.c create mode 100644 tests/tcg/mipsel/test_dsp_dot.c create mode 100644 tests/tcg/mipsel/test_dsp_mul.c create mode 100644 tests/tcg/mipsel/test_dsp_pack.c delete mode 100644 tests/tcg/mipsel/test_dsp_r1_main.c create mode 100644 tests/tcg/mipsel/test_dsp_shift.c diff --git a/tests/tcg/mipsel/test_dsp_acc.c b/tests/tcg/mipsel/test_dsp_acc.c new file mode 100644 index 000000000000..57710072d4bb --- /dev/null +++ b/tests/tcg/mipsel/test_dsp_acc.c @@ -0,0 +1,105 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* MIPS DSP ASE tests: accumulator access and extract */ + +#define main test_dsp_r1_extp +#include "test_dsp_r1_extp.c" +#undef main + +#define main test_dsp_r1_extpdp +#include "test_dsp_r1_extpdp.c" +#undef main + +#define main test_dsp_r1_extpdpv +#include "test_dsp_r1_extpdpv.c" +#undef main + +#define main test_dsp_r1_extpv +#include "test_dsp_r1_extpv.c" +#undef main + +#define main test_dsp_r1_extr_r_w +#include "test_dsp_r1_extr_r_w.c" +#undef main + +#define main test_dsp_r1_extr_rs_w +#include "test_dsp_r1_extr_rs_w.c" +#undef main + +#define main test_dsp_r1_extr_s_h +#include "test_dsp_r1_extr_s_h.c" +#undef main + +#define main test_dsp_r1_extr_w +#include "test_dsp_r1_extr_w.c" +#undef main + +#define main test_dsp_r1_extrv_r_w +#include "test_dsp_r1_extrv_r_w.c" +#undef main + +#define main test_dsp_r1_extrv_rs_w +#include "test_dsp_r1_extrv_rs_w.c" +#undef main + +#define main test_dsp_r1_extrv_s_h +#include "test_dsp_r1_extrv_s_h.c" +#undef main + +#define main test_dsp_r1_extrv_w +#include "test_dsp_r1_extrv_w.c" +#undef main + +#define main test_dsp_r1_mfhi +#include "test_dsp_r1_mfhi.c" +#undef main + +#define main test_dsp_r1_mflo +#include "test_dsp_r1_mflo.c" +#undef main + +#define main test_dsp_r1_mthi +#include "test_dsp_r1_mthi.c" +#undef main + +#define main test_dsp_r1_mthlip +#include "test_dsp_r1_mthlip.c" +#undef main + +#define main test_dsp_r1_mtlo +#include "test_dsp_r1_mtlo.c" +#undef main + +#define main test_dsp_r1_shilo +#include "test_dsp_r1_shilo.c" +#undef main + +#define main test_dsp_r1_shilov +#include "test_dsp_r1_shilov.c" +#undef main + +int main(void) +{ + int ret = 0; + + ret |= test_dsp_r1_extp(); + ret |= test_dsp_r1_extpdp(); + ret |= test_dsp_r1_extpdpv(); + ret |= test_dsp_r1_extpv(); + ret |= test_dsp_r1_extr_r_w(); + ret |= test_dsp_r1_extr_rs_w(); + ret |= test_dsp_r1_extr_s_h(); + ret |= test_dsp_r1_extr_w(); + ret |= test_dsp_r1_extrv_r_w(); + ret |= test_dsp_r1_extrv_rs_w(); + ret |= test_dsp_r1_extrv_s_h(); + ret |= test_dsp_r1_extrv_w(); + ret |= test_dsp_r1_mfhi(); + ret |= test_dsp_r1_mflo(); + ret |= test_dsp_r1_mthi(); + ret |= test_dsp_r1_mthlip(); + ret |= test_dsp_r1_mtlo(); + ret |= test_dsp_r1_shilo(); + ret |= test_dsp_r1_shilov(); + + return ret; +} diff --git a/tests/tcg/mipsel/test_dsp_arith.c b/tests/tcg/mipsel/test_dsp_arith.c new file mode 100644 index 000000000000..37a47cd036c5 --- /dev/null +++ b/tests/tcg/mipsel/test_dsp_arith.c @@ -0,0 +1,175 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* MIPS DSP ASE tests: add, subtract and absolute value */ + +#define main test_dsp_r1_absq_s_ph +#include "test_dsp_r1_absq_s_ph.c" +#undef main + +#define main test_dsp_r1_absq_s_w +#include "test_dsp_r1_absq_s_w.c" +#undef main + +#define main test_dsp_r1_addq_ph +#include "test_dsp_r1_addq_ph.c" +#undef main + +#define main test_dsp_r1_addq_s_ph +#include "test_dsp_r1_addq_s_ph.c" +#undef main + +#define main test_dsp_r1_addq_s_w +#include "test_dsp_r1_addq_s_w.c" +#undef main + +#define main test_dsp_r1_addsc +#include "test_dsp_r1_addsc.c" +#undef main + +#define main test_dsp_r1_addu_qb +#include "test_dsp_r1_addu_qb.c" +#undef main + +#define main test_dsp_r1_addu_s_qb +#include "test_dsp_r1_addu_s_qb.c" +#undef main + +#define main test_dsp_r1_addwc +#include "test_dsp_r1_addwc.c" +#undef main + +#define main test_dsp_r1_modsub +#include "test_dsp_r1_modsub.c" +#undef main + +#define main test_dsp_r1_raddu_w_qb +#include "test_dsp_r1_raddu_w_qb.c" +#undef main + +#define main test_dsp_r1_subq_ph +#include "test_dsp_r1_subq_ph.c" +#undef main + +#define main test_dsp_r1_subq_s_ph +#include "test_dsp_r1_subq_s_ph.c" +#undef main + +#define main test_dsp_r1_subq_s_w +#include "test_dsp_r1_subq_s_w.c" +#undef main + +#define main test_dsp_r1_subu_qb +#include "test_dsp_r1_subu_qb.c" +#undef main + +#define main test_dsp_r1_subu_s_qb +#include "test_dsp_r1_subu_s_qb.c" +#undef main + +#define main test_dsp_r2_absq_s_qb +#include "test_dsp_r2_absq_s_qb.c" +#undef main + +#define main test_dsp_r2_addqh_ph +#include "test_dsp_r2_addqh_ph.c" +#undef main + +#define main test_dsp_r2_addqh_r_ph +#include "test_dsp_r2_addqh_r_ph.c" +#undef main + +#define main test_dsp_r2_addqh_r_w +#include "test_dsp_r2_addqh_r_w.c" +#undef main + +#define main test_dsp_r2_addqh_w +#include "test_dsp_r2_addqh_w.c" +#undef main + +#define main test_dsp_r2_addu_ph +#include "test_dsp_r2_addu_ph.c" +#undef main + +#define main test_dsp_r2_addu_s_ph +#include "test_dsp_r2_addu_s_ph.c" +#undef main + +#define main test_dsp_r2_adduh_qb +#include "test_dsp_r2_adduh_qb.c" +#undef main + +#define main test_dsp_r2_adduh_r_qb +#include "test_dsp_r2_adduh_r_qb.c" +#undef main + +#define main test_dsp_r2_subqh_ph +#include "test_dsp_r2_subqh_ph.c" +#undef main + +#define main test_dsp_r2_subqh_r_ph +#include "test_dsp_r2_subqh_r_ph.c" +#undef main + +#define main test_dsp_r2_subqh_r_w +#include "test_dsp_r2_subqh_r_w.c" +#undef main + +#define main test_dsp_r2_subqh_w +#include "test_dsp_r2_subqh_w.c" +#undef main + +#define main test_dsp_r2_subu_ph +#include "test_dsp_r2_subu_ph.c" +#undef main + +#define main test_dsp_r2_subu_s_ph +#include "test_dsp_r2_subu_s_ph.c" +#undef main + +#define main test_dsp_r2_subuh_qb +#include "test_dsp_r2_subuh_qb.c" +#undef main + +#define main test_dsp_r2_subuh_r_qb +#include "test_dsp_r2_subuh_r_qb.c" +#undef main + +int main(void) +{ + int ret = 0; + + ret |= test_dsp_r1_absq_s_ph(); + ret |= test_dsp_r1_absq_s_w(); + ret |= test_dsp_r1_addq_ph(); + ret |= test_dsp_r1_addq_s_ph(); + ret |= test_dsp_r1_addq_s_w(); + ret |= test_dsp_r1_addsc(); + ret |= test_dsp_r1_addu_qb(); + ret |= test_dsp_r1_addu_s_qb(); + ret |= test_dsp_r1_addwc(); + ret |= test_dsp_r1_modsub(); + ret |= test_dsp_r1_raddu_w_qb(); + ret |= test_dsp_r1_subq_ph(); + ret |= test_dsp_r1_subq_s_ph(); + ret |= test_dsp_r1_subq_s_w(); + ret |= test_dsp_r1_subu_qb(); + ret |= test_dsp_r1_subu_s_qb(); + ret |= test_dsp_r2_absq_s_qb(); + ret |= test_dsp_r2_addqh_ph(); + ret |= test_dsp_r2_addqh_r_ph(); + ret |= test_dsp_r2_addqh_r_w(); + ret |= test_dsp_r2_addqh_w(); + ret |= test_dsp_r2_addu_ph(); + ret |= test_dsp_r2_addu_s_ph(); + ret |= test_dsp_r2_adduh_qb(); + ret |= test_dsp_r2_adduh_r_qb(); + ret |= test_dsp_r2_subqh_ph(); + ret |= test_dsp_r2_subqh_r_ph(); + ret |= test_dsp_r2_subqh_r_w(); + ret |= test_dsp_r2_subqh_w(); + ret |= test_dsp_r2_subu_ph(); + ret |= test_dsp_r2_subu_s_ph(); + ret |= test_dsp_r2_subuh_qb(); + ret |= test_dsp_r2_subuh_r_qb(); + + return ret; +} diff --git a/tests/tcg/mipsel/test_dsp_cmp.c b/tests/tcg/mipsel/test_dsp_cmp.c new file mode 100644 index 000000000000..47553313eb6a --- /dev/null +++ b/tests/tcg/mipsel/test_dsp_cmp.c @@ -0,0 +1,80 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* MIPS DSP ASE tests: compare and pick */ + +#define main test_dsp_r1_cmp_eq_ph +#include "test_dsp_r1_cmp_eq_ph.c" +#undef main + +#define main test_dsp_r1_cmp_le_ph +#include "test_dsp_r1_cmp_le_ph.c" +#undef main + +#define main test_dsp_r1_cmp_lt_ph +#include "test_dsp_r1_cmp_lt_ph.c" +#undef main + +#define main test_dsp_r1_cmpgu_eq_qb +#include "test_dsp_r1_cmpgu_eq_qb.c" +#undef main + +#define main test_dsp_r1_cmpgu_le_qb +#include "test_dsp_r1_cmpgu_le_qb.c" +#undef main + +#define main test_dsp_r1_cmpgu_lt_qb +#include "test_dsp_r1_cmpgu_lt_qb.c" +#undef main + +#define main test_dsp_r1_cmpu_eq_qb +#include "test_dsp_r1_cmpu_eq_qb.c" +#undef main + +#define main test_dsp_r1_cmpu_le_qb +#include "test_dsp_r1_cmpu_le_qb.c" +#undef main + +#define main test_dsp_r1_cmpu_lt_qb +#include "test_dsp_r1_cmpu_lt_qb.c" +#undef main + +#define main test_dsp_r1_pick_ph +#include "test_dsp_r1_pick_ph.c" +#undef main + +#define main test_dsp_r1_pick_qb +#include "test_dsp_r1_pick_qb.c" +#undef main + +#define main test_dsp_r2_cmpgdu_eq_qb +#include "test_dsp_r2_cmpgdu_eq_qb.c" +#undef main + +#define main test_dsp_r2_cmpgdu_le_qb +#include "test_dsp_r2_cmpgdu_le_qb.c" +#undef main + +#define main test_dsp_r2_cmpgdu_lt_qb +#include "test_dsp_r2_cmpgdu_lt_qb.c" +#undef main + +int main(void) +{ + int ret = 0; + + ret |= test_dsp_r1_cmp_eq_ph(); + ret |= test_dsp_r1_cmp_le_ph(); + ret |= test_dsp_r1_cmp_lt_ph(); + ret |= test_dsp_r1_cmpgu_eq_qb(); + ret |= test_dsp_r1_cmpgu_le_qb(); + ret |= test_dsp_r1_cmpgu_lt_qb(); + ret |= test_dsp_r1_cmpu_eq_qb(); + ret |= test_dsp_r1_cmpu_le_qb(); + ret |= test_dsp_r1_cmpu_lt_qb(); + ret |= test_dsp_r1_pick_ph(); + ret |= test_dsp_r1_pick_qb(); + ret |= test_dsp_r2_cmpgdu_eq_qb(); + ret |= test_dsp_r2_cmpgdu_le_qb(); + ret |= test_dsp_r2_cmpgdu_lt_qb(); + + return ret; +} diff --git a/tests/tcg/mipsel/test_dsp_ctrl.c b/tests/tcg/mipsel/test_dsp_ctrl.c new file mode 100644 index 000000000000..40b0bd1b785b --- /dev/null +++ b/tests/tcg/mipsel/test_dsp_ctrl.c @@ -0,0 +1,40 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* MIPS DSP ASE tests: indexed load and DSPControl access */ + +#define main test_dsp_r1_bposge32 +#include "test_dsp_r1_bposge32.c" +#undef main + +#define main test_dsp_r1_lbux +#include "test_dsp_r1_lbux.c" +#undef main + +#define main test_dsp_r1_lhx +#include "test_dsp_r1_lhx.c" +#undef main + +#define main test_dsp_r1_lwx +#include "test_dsp_r1_lwx.c" +#undef main + +#define main test_dsp_r1_rddsp +#include "test_dsp_r1_rddsp.c" +#undef main + +#define main test_dsp_r1_wrdsp +#include "test_dsp_r1_wrdsp.c" +#undef main + +int main(void) +{ + int ret = 0; + + ret |= test_dsp_r1_bposge32(); + ret |= test_dsp_r1_lbux(); + ret |= test_dsp_r1_lhx(); + ret |= test_dsp_r1_lwx(); + ret |= test_dsp_r1_rddsp(); + ret |= test_dsp_r1_wrdsp(); + + return ret; +} diff --git a/tests/tcg/mipsel/test_dsp_dot.c b/tests/tcg/mipsel/test_dsp_dot.c new file mode 100644 index 000000000000..5a6b9f0b0853 --- /dev/null +++ b/tests/tcg/mipsel/test_dsp_dot.c @@ -0,0 +1,150 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* MIPS DSP ASE tests: dot product and multiply-accumulate */ + +#define main test_dsp_r1_dpaq_s_w_ph +#include "test_dsp_r1_dpaq_s_w_ph.c" +#undef main + +#define main test_dsp_r1_dpaq_sa_l_w +#include "test_dsp_r1_dpaq_sa_l_w.c" +#undef main + +#define main test_dsp_r1_dpau_h_qbl +#include "test_dsp_r1_dpau_h_qbl.c" +#undef main + +#define main test_dsp_r1_dpau_h_qbr +#include "test_dsp_r1_dpau_h_qbr.c" +#undef main + +#define main test_dsp_r1_dpsq_s_w_ph +#include "test_dsp_r1_dpsq_s_w_ph.c" +#undef main + +#define main test_dsp_r1_dpsq_sa_l_w +#include "test_dsp_r1_dpsq_sa_l_w.c" +#undef main + +#define main test_dsp_r1_dpsu_h_qbl +#include "test_dsp_r1_dpsu_h_qbl.c" +#undef main + +#define main test_dsp_r1_dpsu_h_qbr +#include "test_dsp_r1_dpsu_h_qbr.c" +#undef main + +#define main test_dsp_r1_maq_s_w_phl +#include "test_dsp_r1_maq_s_w_phl.c" +#undef main + +#define main test_dsp_r1_maq_s_w_phr +#include "test_dsp_r1_maq_s_w_phr.c" +#undef main + +#define main test_dsp_r1_maq_sa_w_phl +#include "test_dsp_r1_maq_sa_w_phl.c" +#undef main + +#define main test_dsp_r1_maq_sa_w_phr +#include "test_dsp_r1_maq_sa_w_phr.c" +#undef main + +#define main test_dsp_r1_madd +#include "test_dsp_r1_madd.c" +#undef main + +#define main test_dsp_r1_maddu +#include "test_dsp_r1_maddu.c" +#undef main + +#define main test_dsp_r1_msub +#include "test_dsp_r1_msub.c" +#undef main + +#define main test_dsp_r1_msubu +#include "test_dsp_r1_msubu.c" +#undef main + +#define main test_dsp_r1_mult +#include "test_dsp_r1_mult.c" +#undef main + +#define main test_dsp_r1_multu +#include "test_dsp_r1_multu.c" +#undef main + +#define main test_dsp_r2_dpa_w_ph +#include "test_dsp_r2_dpa_w_ph.c" +#undef main + +#define main test_dsp_r2_dpaqx_s_w_ph +#include "test_dsp_r2_dpaqx_s_w_ph.c" +#undef main + +#define main test_dsp_r2_dpaqx_sa_w_ph +#include "test_dsp_r2_dpaqx_sa_w_ph.c" +#undef main + +#define main test_dsp_r2_dpax_w_ph +#include "test_dsp_r2_dpax_w_ph.c" +#undef main + +#define main test_dsp_r2_dps_w_ph +#include "test_dsp_r2_dps_w_ph.c" +#undef main + +#define main test_dsp_r2_dpsqx_s_w_ph +#include "test_dsp_r2_dpsqx_s_w_ph.c" +#undef main + +#define main test_dsp_r2_dpsqx_sa_w_ph +#include "test_dsp_r2_dpsqx_sa_w_ph.c" +#undef main + +#define main test_dsp_r2_dpsx_w_ph +#include "test_dsp_r2_dpsx_w_ph.c" +#undef main + +#define main test_dsp_r2_mulsa_w_ph +#include "test_dsp_r2_mulsa_w_ph.c" +#undef main + +#define main test_dsp_r2_mulsaq_s_w_ph +#include "test_dsp_r2_mulsaq_s_w_ph.c" +#undef main + +int main(void) +{ + int ret = 0; + + ret |= test_dsp_r1_dpaq_s_w_ph(); + ret |= test_dsp_r1_dpaq_sa_l_w(); + ret |= test_dsp_r1_dpau_h_qbl(); + ret |= test_dsp_r1_dpau_h_qbr(); + ret |= test_dsp_r1_dpsq_s_w_ph(); + ret |= test_dsp_r1_dpsq_sa_l_w(); + ret |= test_dsp_r1_dpsu_h_qbl(); + ret |= test_dsp_r1_dpsu_h_qbr(); + ret |= test_dsp_r1_maq_s_w_phl(); + ret |= test_dsp_r1_maq_s_w_phr(); + ret |= test_dsp_r1_maq_sa_w_phl(); + ret |= test_dsp_r1_maq_sa_w_phr(); + ret |= test_dsp_r1_madd(); + ret |= test_dsp_r1_maddu(); + ret |= test_dsp_r1_msub(); + ret |= test_dsp_r1_msubu(); + ret |= test_dsp_r1_mult(); + ret |= test_dsp_r1_multu(); + ret |= test_dsp_r2_dpa_w_ph(); + ret |= test_dsp_r2_dpaqx_s_w_ph(); + ret |= test_dsp_r2_dpaqx_sa_w_ph(); + ret |= test_dsp_r2_dpax_w_ph(); + ret |= test_dsp_r2_dps_w_ph(); + ret |= test_dsp_r2_dpsqx_s_w_ph(); + ret |= test_dsp_r2_dpsqx_sa_w_ph(); + ret |= test_dsp_r2_dpsx_w_ph(); + ret |= test_dsp_r2_mulsa_w_ph(); + ret |= test_dsp_r2_mulsaq_s_w_ph(); + + return ret; +} diff --git a/tests/tcg/mipsel/test_dsp_mul.c b/tests/tcg/mipsel/test_dsp_mul.c new file mode 100644 index 000000000000..9ffa52683ccc --- /dev/null +++ b/tests/tcg/mipsel/test_dsp_mul.c @@ -0,0 +1,60 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* MIPS DSP ASE tests: multiply */ + +#define main test_dsp_r1_muleq_s_w_phl +#include "test_dsp_r1_muleq_s_w_phl.c" +#undef main + +#define main test_dsp_r1_muleq_s_w_phr +#include "test_dsp_r1_muleq_s_w_phr.c" +#undef main + +#define main test_dsp_r1_muleu_s_ph_qbl +#include "test_dsp_r1_muleu_s_ph_qbl.c" +#undef main + +#define main test_dsp_r1_muleu_s_ph_qbr +#include "test_dsp_r1_muleu_s_ph_qbr.c" +#undef main + +#define main test_dsp_r1_mulq_rs_ph +#include "test_dsp_r1_mulq_rs_ph.c" +#undef main + +#define main test_dsp_r2_mul_ph +#include "test_dsp_r2_mul_ph.c" +#undef main + +#define main test_dsp_r2_mul_s_ph +#include "test_dsp_r2_mul_s_ph.c" +#undef main + +#define main test_dsp_r2_mulq_rs_w +#include "test_dsp_r2_mulq_rs_w.c" +#undef main + +#define main test_dsp_r2_mulq_s_ph +#include "test_dsp_r2_mulq_s_ph.c" +#undef main + +#define main test_dsp_r2_mulq_s_w +#include "test_dsp_r2_mulq_s_w.c" +#undef main + +int main(void) +{ + int ret = 0; + + ret |= test_dsp_r1_muleq_s_w_phl(); + ret |= test_dsp_r1_muleq_s_w_phr(); + ret |= test_dsp_r1_muleu_s_ph_qbl(); + ret |= test_dsp_r1_muleu_s_ph_qbr(); + ret |= test_dsp_r1_mulq_rs_ph(); + ret |= test_dsp_r2_mul_ph(); + ret |= test_dsp_r2_mul_s_ph(); + ret |= test_dsp_r2_mulq_rs_w(); + ret |= test_dsp_r2_mulq_s_ph(); + ret |= test_dsp_r2_mulq_s_w(); + + return ret; +} diff --git a/tests/tcg/mipsel/test_dsp_pack.c b/tests/tcg/mipsel/test_dsp_pack.c new file mode 100644 index 000000000000..a2a85061d3ec --- /dev/null +++ b/tests/tcg/mipsel/test_dsp_pack.c @@ -0,0 +1,145 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* MIPS DSP ASE tests: precision, pack, replicate and bit insert */ + +#define main test_dsp_r1_bitrev +#include "test_dsp_r1_bitrev.c" +#undef main + +#define main test_dsp_r1_insv +#include "test_dsp_r1_insv.c" +#undef main + +#define main test_dsp_r1_packrl_ph +#include "test_dsp_r1_packrl_ph.c" +#undef main + +#define main test_dsp_r1_preceq_w_phl +#include "test_dsp_r1_preceq_w_phl.c" +#undef main + +#define main test_dsp_r1_preceq_w_phr +#include "test_dsp_r1_preceq_w_phr.c" +#undef main + +#define main test_dsp_r1_precequ_ph_qbl +#include "test_dsp_r1_precequ_ph_qbl.c" +#undef main + +#define main test_dsp_r1_precequ_ph_qbla +#include "test_dsp_r1_precequ_ph_qbla.c" +#undef main + +#define main test_dsp_r1_precequ_ph_qbr +#include "test_dsp_r1_precequ_ph_qbr.c" +#undef main + +#define main test_dsp_r1_precequ_ph_qbra +#include "test_dsp_r1_precequ_ph_qbra.c" +#undef main + +#define main test_dsp_r1_preceu_ph_qbl +#include "test_dsp_r1_preceu_ph_qbl.c" +#undef main + +#define main test_dsp_r1_preceu_ph_qbla +#include "test_dsp_r1_preceu_ph_qbla.c" +#undef main + +#define main test_dsp_r1_preceu_ph_qbr +#include "test_dsp_r1_preceu_ph_qbr.c" +#undef main + +#define main test_dsp_r1_preceu_ph_qbra +#include "test_dsp_r1_preceu_ph_qbra.c" +#undef main + +#define main test_dsp_r1_precrq_ph_w +#include "test_dsp_r1_precrq_ph_w.c" +#undef main + +#define main test_dsp_r1_precrq_qb_ph +#include "test_dsp_r1_precrq_qb_ph.c" +#undef main + +#define main test_dsp_r1_precrq_rs_ph_w +#include "test_dsp_r1_precrq_rs_ph_w.c" +#undef main + +#define main test_dsp_r1_precrqu_s_qb_ph +#include "test_dsp_r1_precrqu_s_qb_ph.c" +#undef main + +#define main test_dsp_r1_repl_ph +#include "test_dsp_r1_repl_ph.c" +#undef main + +#define main test_dsp_r1_repl_qb +#include "test_dsp_r1_repl_qb.c" +#undef main + +#define main test_dsp_r1_replv_ph +#include "test_dsp_r1_replv_ph.c" +#undef main + +#define main test_dsp_r1_replv_qb +#include "test_dsp_r1_replv_qb.c" +#undef main + +#define main test_dsp_r2_append +#include "test_dsp_r2_append.c" +#undef main + +#define main test_dsp_r2_balign +#include "test_dsp_r2_balign.c" +#undef main + +#define main test_dsp_r2_precr_qb_ph +#include "test_dsp_r2_precr_qb_ph.c" +#undef main + +#define main test_dsp_r2_precr_sra_ph_w +#include "test_dsp_r2_precr_sra_ph_w.c" +#undef main + +#define main test_dsp_r2_precr_sra_r_ph_w +#include "test_dsp_r2_precr_sra_r_ph_w.c" +#undef main + +#define main test_dsp_r2_prepend +#include "test_dsp_r2_prepend.c" +#undef main + +int main(void) +{ + int ret = 0; + + ret |= test_dsp_r1_bitrev(); + ret |= test_dsp_r1_insv(); + ret |= test_dsp_r1_packrl_ph(); + ret |= test_dsp_r1_preceq_w_phl(); + ret |= test_dsp_r1_preceq_w_phr(); + ret |= test_dsp_r1_precequ_ph_qbl(); + ret |= test_dsp_r1_precequ_ph_qbla(); + ret |= test_dsp_r1_precequ_ph_qbr(); + ret |= test_dsp_r1_precequ_ph_qbra(); + ret |= test_dsp_r1_preceu_ph_qbl(); + ret |= test_dsp_r1_preceu_ph_qbla(); + ret |= test_dsp_r1_preceu_ph_qbr(); + ret |= test_dsp_r1_preceu_ph_qbra(); + ret |= test_dsp_r1_precrq_ph_w(); + ret |= test_dsp_r1_precrq_qb_ph(); + ret |= test_dsp_r1_precrq_rs_ph_w(); + ret |= test_dsp_r1_precrqu_s_qb_ph(); + ret |= test_dsp_r1_repl_ph(); + ret |= test_dsp_r1_repl_qb(); + ret |= test_dsp_r1_replv_ph(); + ret |= test_dsp_r1_replv_qb(); + ret |= test_dsp_r2_append(); + ret |= test_dsp_r2_balign(); + ret |= test_dsp_r2_precr_qb_ph(); + ret |= test_dsp_r2_precr_sra_ph_w(); + ret |= test_dsp_r2_precr_sra_r_ph_w(); + ret |= test_dsp_r2_prepend(); + + return ret; +} diff --git a/tests/tcg/mipsel/test_dsp_r1_main.c b/tests/tcg/mipsel/test_dsp_r1_main.c deleted file mode 100644 index b296b20c9254..000000000000 --- a/tests/tcg/mipsel/test_dsp_r1_main.c +++ /dev/null @@ -1,6 +0,0 @@ -#include<stdio.h> - -int main() -{ - printf("hello world\n"); -} diff --git a/tests/tcg/mipsel/test_dsp_shift.c b/tests/tcg/mipsel/test_dsp_shift.c new file mode 100644 index 000000000000..a88e46508fab --- /dev/null +++ b/tests/tcg/mipsel/test_dsp_shift.c @@ -0,0 +1,120 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* MIPS DSP ASE tests: shift */ + +#define main test_dsp_r1_shll_ph +#include "test_dsp_r1_shll_ph.c" +#undef main + +#define main test_dsp_r1_shll_qb +#include "test_dsp_r1_shll_qb.c" +#undef main + +#define main test_dsp_r1_shll_s_ph +#include "test_dsp_r1_shll_s_ph.c" +#undef main + +#define main test_dsp_r1_shll_s_w +#include "test_dsp_r1_shll_s_w.c" +#undef main + +#define main test_dsp_r1_shllv_ph +#include "test_dsp_r1_shllv_ph.c" +#undef main + +#define main test_dsp_r1_shllv_qb +#include "test_dsp_r1_shllv_qb.c" +#undef main + +#define main test_dsp_r1_shllv_s_ph +#include "test_dsp_r1_shllv_s_ph.c" +#undef main + +#define main test_dsp_r1_shllv_s_w +#include "test_dsp_r1_shllv_s_w.c" +#undef main + +#define main test_dsp_r1_shra_ph +#include "test_dsp_r1_shra_ph.c" +#undef main + +#define main test_dsp_r1_shra_r_ph +#include "test_dsp_r1_shra_r_ph.c" +#undef main + +#define main test_dsp_r1_shra_r_w +#include "test_dsp_r1_shra_r_w.c" +#undef main + +#define main test_dsp_r1_shrav_ph +#include "test_dsp_r1_shrav_ph.c" +#undef main + +#define main test_dsp_r1_shrav_r_ph +#include "test_dsp_r1_shrav_r_ph.c" +#undef main + +#define main test_dsp_r1_shrav_r_w +#include "test_dsp_r1_shrav_r_w.c" +#undef main + +#define main test_dsp_r1_shrl_qb +#include "test_dsp_r1_shrl_qb.c" +#undef main + +#define main test_dsp_r1_shrlv_qb +#include "test_dsp_r1_shrlv_qb.c" +#undef main + +#define main test_dsp_r2_shra_qb +#include "test_dsp_r2_shra_qb.c" +#undef main + +#define main test_dsp_r2_shra_r_qb +#include "test_dsp_r2_shra_r_qb.c" +#undef main + +#define main test_dsp_r2_shrav_qb +#include "test_dsp_r2_shrav_qb.c" +#undef main + +#define main test_dsp_r2_shrav_r_qb +#include "test_dsp_r2_shrav_r_qb.c" +#undef main + +#define main test_dsp_r2_shrl_ph +#include "test_dsp_r2_shrl_ph.c" +#undef main + +#define main test_dsp_r2_shrlv_ph +#include "test_dsp_r2_shrlv_ph.c" +#undef main + +int main(void) +{ + int ret = 0; + + ret |= test_dsp_r1_shll_ph(); + ret |= test_dsp_r1_shll_qb(); + ret |= test_dsp_r1_shll_s_ph(); + ret |= test_dsp_r1_shll_s_w(); + ret |= test_dsp_r1_shllv_ph(); + ret |= test_dsp_r1_shllv_qb(); + ret |= test_dsp_r1_shllv_s_ph(); + ret |= test_dsp_r1_shllv_s_w(); + ret |= test_dsp_r1_shra_ph(); + ret |= test_dsp_r1_shra_r_ph(); + ret |= test_dsp_r1_shra_r_w(); + ret |= test_dsp_r1_shrav_ph(); + ret |= test_dsp_r1_shrav_r_ph(); + ret |= test_dsp_r1_shrav_r_w(); + ret |= test_dsp_r1_shrl_qb(); + ret |= test_dsp_r1_shrlv_qb(); + ret |= test_dsp_r2_shra_qb(); + ret |= test_dsp_r2_shra_r_qb(); + ret |= test_dsp_r2_shrav_qb(); + ret |= test_dsp_r2_shrav_r_qb(); + ret |= test_dsp_r2_shrl_ph(); + ret |= test_dsp_r2_shrlv_ph(); + + return ret; +} diff --git a/tests/tcg/mipsel/meson.build b/tests/tcg/mipsel/meson.build index c9e869b000f4..d0745c2c185f 100644 --- a/tests/tcg/mipsel/meson.build +++ b/tests/tcg/mipsel/meson.build @@ -4,166 +4,14 @@ tests = [] tests += tcg_tests['multiarch-linux-user']['tests'] tests_dsp = [ - 'test_dsp_r1_absq_s_ph.c', - 'test_dsp_r1_absq_s_w.c', - 'test_dsp_r1_addq_ph.c', - 'test_dsp_r1_addq_s_ph.c', - 'test_dsp_r1_addq_s_w.c', - 'test_dsp_r1_addsc.c', - 'test_dsp_r1_addu_qb.c', - 'test_dsp_r1_addu_s_qb.c', - 'test_dsp_r1_addwc.c', - 'test_dsp_r1_bitrev.c', - 'test_dsp_r1_bposge32.c', - 'test_dsp_r1_cmp_eq_ph.c', - 'test_dsp_r1_cmp_le_ph.c', - 'test_dsp_r1_cmp_lt_ph.c', - 'test_dsp_r1_cmpgu_eq_qb.c', - 'test_dsp_r1_cmpgu_le_qb.c', - 'test_dsp_r1_cmpgu_lt_qb.c', - 'test_dsp_r1_cmpu_eq_qb.c', - 'test_dsp_r1_cmpu_le_qb.c', - 'test_dsp_r1_cmpu_lt_qb.c', - 'test_dsp_r1_dpaq_s_w_ph.c', - 'test_dsp_r1_dpaq_sa_l_w.c', - 'test_dsp_r1_dpau_h_qbl.c', - 'test_dsp_r1_dpau_h_qbr.c', - 'test_dsp_r1_dpsq_s_w_ph.c', - 'test_dsp_r1_dpsq_sa_l_w.c', - 'test_dsp_r1_dpsu_h_qbl.c', - 'test_dsp_r1_dpsu_h_qbr.c', - 'test_dsp_r1_extp.c', - 'test_dsp_r1_extpdp.c', - 'test_dsp_r1_extpdpv.c', - 'test_dsp_r1_extpv.c', - 'test_dsp_r1_extr_r_w.c', - 'test_dsp_r1_extr_rs_w.c', - 'test_dsp_r1_extr_s_h.c', - 'test_dsp_r1_extr_w.c', - 'test_dsp_r1_extrv_r_w.c', - 'test_dsp_r1_extrv_rs_w.c', - 'test_dsp_r1_extrv_s_h.c', - 'test_dsp_r1_extrv_w.c', - 'test_dsp_r1_insv.c', - 'test_dsp_r1_lbux.c', - 'test_dsp_r1_lhx.c', - 'test_dsp_r1_lwx.c', - 'test_dsp_r1_madd.c', - 'test_dsp_r1_maddu.c', - 'test_dsp_r1_main.c', - 'test_dsp_r1_maq_s_w_phl.c', - 'test_dsp_r1_maq_s_w_phr.c', - 'test_dsp_r1_maq_sa_w_phl.c', - 'test_dsp_r1_maq_sa_w_phr.c', - 'test_dsp_r1_mfhi.c', - 'test_dsp_r1_mflo.c', - 'test_dsp_r1_modsub.c', - 'test_dsp_r1_msub.c', - 'test_dsp_r1_msubu.c', - 'test_dsp_r1_mthi.c', - 'test_dsp_r1_mthlip.c', - 'test_dsp_r1_mtlo.c', - 'test_dsp_r1_muleq_s_w_phl.c', - 'test_dsp_r1_muleq_s_w_phr.c', - 'test_dsp_r1_muleu_s_ph_qbl.c', - 'test_dsp_r1_muleu_s_ph_qbr.c', - 'test_dsp_r1_mulq_rs_ph.c', - 'test_dsp_r1_mult.c', - 'test_dsp_r1_multu.c', - 'test_dsp_r1_packrl_ph.c', - 'test_dsp_r1_pick_ph.c', - 'test_dsp_r1_pick_qb.c', - 'test_dsp_r1_preceq_w_phl.c', - 'test_dsp_r1_preceq_w_phr.c', - 'test_dsp_r1_precequ_ph_qbl.c', - 'test_dsp_r1_precequ_ph_qbla.c', - 'test_dsp_r1_precequ_ph_qbr.c', - 'test_dsp_r1_precequ_ph_qbra.c', - 'test_dsp_r1_preceu_ph_qbl.c', - 'test_dsp_r1_preceu_ph_qbla.c', - 'test_dsp_r1_preceu_ph_qbr.c', - 'test_dsp_r1_preceu_ph_qbra.c', - 'test_dsp_r1_precrq_ph_w.c', - 'test_dsp_r1_precrq_qb_ph.c', - 'test_dsp_r1_precrq_rs_ph_w.c', - 'test_dsp_r1_precrqu_s_qb_ph.c', - 'test_dsp_r1_raddu_w_qb.c', - 'test_dsp_r1_rddsp.c', - 'test_dsp_r1_repl_ph.c', - 'test_dsp_r1_repl_qb.c', - 'test_dsp_r1_replv_ph.c', - 'test_dsp_r1_replv_qb.c', - 'test_dsp_r1_shilo.c', - 'test_dsp_r1_shilov.c', - 'test_dsp_r1_shll_ph.c', - 'test_dsp_r1_shll_qb.c', - 'test_dsp_r1_shll_s_ph.c', - 'test_dsp_r1_shll_s_w.c', - 'test_dsp_r1_shllv_ph.c', - 'test_dsp_r1_shllv_qb.c', - 'test_dsp_r1_shllv_s_ph.c', - 'test_dsp_r1_shllv_s_w.c', - 'test_dsp_r1_shra_ph.c', - 'test_dsp_r1_shra_r_ph.c', - 'test_dsp_r1_shra_r_w.c', - 'test_dsp_r1_shrav_ph.c', - 'test_dsp_r1_shrav_r_ph.c', - 'test_dsp_r1_shrav_r_w.c', - 'test_dsp_r1_shrl_qb.c', - 'test_dsp_r1_shrlv_qb.c', - 'test_dsp_r1_subq_ph.c', - 'test_dsp_r1_subq_s_ph.c', - 'test_dsp_r1_subq_s_w.c', - 'test_dsp_r1_subu_qb.c', - 'test_dsp_r1_subu_s_qb.c', - 'test_dsp_r1_wrdsp.c', - 'test_dsp_r2_absq_s_qb.c', - 'test_dsp_r2_addqh_ph.c', - 'test_dsp_r2_addqh_r_ph.c', - 'test_dsp_r2_addqh_r_w.c', - 'test_dsp_r2_addqh_w.c', - 'test_dsp_r2_addu_ph.c', - 'test_dsp_r2_addu_s_ph.c', - 'test_dsp_r2_adduh_qb.c', - 'test_dsp_r2_adduh_r_qb.c', - 'test_dsp_r2_append.c', - 'test_dsp_r2_balign.c', - 'test_dsp_r2_cmpgdu_eq_qb.c', - 'test_dsp_r2_cmpgdu_le_qb.c', - 'test_dsp_r2_cmpgdu_lt_qb.c', - 'test_dsp_r2_dpa_w_ph.c', - 'test_dsp_r2_dpaqx_s_w_ph.c', - 'test_dsp_r2_dpaqx_sa_w_ph.c', - 'test_dsp_r2_dpax_w_ph.c', - 'test_dsp_r2_dps_w_ph.c', - 'test_dsp_r2_dpsqx_s_w_ph.c', - 'test_dsp_r2_dpsqx_sa_w_ph.c', - 'test_dsp_r2_dpsx_w_ph.c', - 'test_dsp_r2_mul_ph.c', - 'test_dsp_r2_mul_s_ph.c', - 'test_dsp_r2_mulq_rs_w.c', - 'test_dsp_r2_mulq_s_ph.c', - 'test_dsp_r2_mulq_s_w.c', - 'test_dsp_r2_mulsa_w_ph.c', - 'test_dsp_r2_mulsaq_s_w_ph.c', - 'test_dsp_r2_precr_qb_ph.c', - 'test_dsp_r2_precr_sra_ph_w.c', - 'test_dsp_r2_precr_sra_r_ph_w.c', - 'test_dsp_r2_prepend.c', - 'test_dsp_r2_shra_qb.c', - 'test_dsp_r2_shra_r_qb.c', - 'test_dsp_r2_shrav_qb.c', - 'test_dsp_r2_shrav_r_qb.c', - 'test_dsp_r2_shrl_ph.c', - 'test_dsp_r2_shrlv_ph.c', - 'test_dsp_r2_subqh_ph.c', - 'test_dsp_r2_subqh_r_ph.c', - 'test_dsp_r2_subqh_r_w.c', - 'test_dsp_r2_subqh_w.c', - 'test_dsp_r2_subu_ph.c', - 'test_dsp_r2_subu_s_ph.c', - 'test_dsp_r2_subuh_qb.c', - 'test_dsp_r2_subuh_r_qb.c', + 'test_dsp_acc.c', + 'test_dsp_arith.c', + 'test_dsp_cmp.c', + 'test_dsp_ctrl.c', + 'test_dsp_dot.c', + 'test_dsp_mul.c', + 'test_dsp_pack.c', + 'test_dsp_shift.c', ] foreach src: tests_dsp -- 2.55.0
