target/mips/dsp_helper.c | 40 +- target/mips/lmi_helper.c | 8 +- target/mips/msa_helper.c | 542 ++++++++++++++++----- target/mips/translate.c | 152 +++++- tests/tcg/mips/include/test_utils_128.h | 2 +- tests/tcg/mips/include/wrappers_msa.h | 147 +++++- .../mips/user/ase/msa/bit-set/test_msa_bclr_b.c | 153 ++++++ .../mips/user/ase/msa/bit-set/test_msa_bclr_d.c | 153 ++++++ .../mips/user/ase/msa/bit-set/test_msa_bclr_h.c | 153 ++++++ .../mips/user/ase/msa/bit-set/test_msa_bclr_w.c | 153 ++++++ .../mips/user/ase/msa/bit-set/test_msa_bneg_b.c | 153 ++++++ .../mips/user/ase/msa/bit-set/test_msa_bneg_d.c | 153 ++++++ .../mips/user/ase/msa/bit-set/test_msa_bneg_h.c | 153 ++++++ .../mips/user/ase/msa/bit-set/test_msa_bneg_w.c | 153 ++++++ .../mips/user/ase/msa/bit-set/test_msa_bset_b.c | 153 ++++++ .../mips/user/ase/msa/bit-set/test_msa_bset_d.c | 153 ++++++ .../mips/user/ase/msa/bit-set/test_msa_bset_h.c | 153 ++++++ .../mips/user/ase/msa/bit-set/test_msa_bset_w.c | 153 ++++++ .../mips/user/ase/msa/int-add/test_msa_add_a_b.c | 4 + .../mips/user/ase/msa/int-add/test_msa_add_a_d.c | 4 + .../mips/user/ase/msa/int-add/test_msa_add_a_h.c | 4 + .../mips/user/ase/msa/int-add/test_msa_add_a_w.c | 4 + .../mips/user/ase/msa/int-add/test_msa_adds_a_b.c | 4 + .../mips/user/ase/msa/int-add/test_msa_adds_a_d.c | 4 + .../mips/user/ase/msa/int-add/test_msa_adds_a_h.c | 4 + .../mips/user/ase/msa/int-add/test_msa_adds_a_w.c | 4 + .../mips/user/ase/msa/int-add/test_msa_adds_s_b.c | 4 + .../mips/user/ase/msa/int-add/test_msa_adds_s_d.c | 4 + .../mips/user/ase/msa/int-add/test_msa_adds_s_h.c | 4 + .../mips/user/ase/msa/int-add/test_msa_adds_s_w.c | 4 + .../mips/user/ase/msa/int-add/test_msa_adds_u_b.c | 4 + .../mips/user/ase/msa/int-add/test_msa_adds_u_d.c | 4 + .../mips/user/ase/msa/int-add/test_msa_adds_u_h.c | 4 + .../mips/user/ase/msa/int-add/test_msa_adds_u_w.c | 4 + .../mips/user/ase/msa/int-add/test_msa_addv_b.c | 4 + .../mips/user/ase/msa/int-add/test_msa_addv_d.c | 4 + .../mips/user/ase/msa/int-add/test_msa_addv_h.c | 4 + .../mips/user/ase/msa/int-add/test_msa_addv_w.c | 4 + .../mips/user/ase/msa/int-add/test_msa_hadd_s_d.c | 4 + .../mips/user/ase/msa/int-add/test_msa_hadd_s_h.c | 4 + .../mips/user/ase/msa/int-add/test_msa_hadd_s_w.c | 4 + .../mips/user/ase/msa/int-add/test_msa_hadd_u_d.c | 4 + .../mips/user/ase/msa/int-add/test_msa_hadd_u_h.c | 4 + .../mips/user/ase/msa/int-add/test_msa_hadd_u_w.c | 4 + .../user/ase/msa/int-average/test_msa_ave_s_b.c | 12 +- .../user/ase/msa/int-average/test_msa_ave_s_d.c | 12 +- .../user/ase/msa/int-average/test_msa_ave_s_h.c | 12 +- .../user/ase/msa/int-average/test_msa_ave_s_w.c | 12 +- .../user/ase/msa/int-average/test_msa_ave_u_b.c | 12 +- .../user/ase/msa/int-average/test_msa_ave_u_d.c | 12 +- .../user/ase/msa/int-average/test_msa_ave_u_h.c | 12 +- .../user/ase/msa/int-average/test_msa_ave_u_w.c | 12 +- .../user/ase/msa/int-average/test_msa_aver_s_b.c | 12 +- .../user/ase/msa/int-average/test_msa_aver_s_d.c | 12 +- .../user/ase/msa/int-average/test_msa_aver_s_h.c | 12 +- .../user/ase/msa/int-average/test_msa_aver_s_w.c | 12 +- .../user/ase/msa/int-average/test_msa_aver_u_b.c | 12 +- .../user/ase/msa/int-average/test_msa_aver_u_d.c | 12 +- .../user/ase/msa/int-average/test_msa_aver_u_h.c | 12 +- .../user/ase/msa/int-average/test_msa_aver_u_w.c | 12 +- .../mips/user/ase/msa/int-compare/test_msa_ceq_b.c | 2 + .../mips/user/ase/msa/int-compare/test_msa_ceq_d.c | 2 + .../mips/user/ase/msa/int-compare/test_msa_ceq_h.c | 2 + .../mips/user/ase/msa/int-compare/test_msa_ceq_w.c | 2 + .../user/ase/msa/int-compare/test_msa_cle_s_b.c | 2 + .../user/ase/msa/int-compare/test_msa_cle_s_d.c | 2 + .../user/ase/msa/int-compare/test_msa_cle_s_h.c | 2 + .../user/ase/msa/int-compare/test_msa_cle_s_w.c | 2 + .../user/ase/msa/int-compare/test_msa_cle_u_b.c | 2 + .../user/ase/msa/int-compare/test_msa_cle_u_d.c | 2 + .../user/ase/msa/int-compare/test_msa_cle_u_h.c | 2 + .../user/ase/msa/int-compare/test_msa_cle_u_w.c | 2 + .../user/ase/msa/int-compare/test_msa_clt_s_b.c | 2 + .../user/ase/msa/int-compare/test_msa_clt_s_d.c | 2 + .../user/ase/msa/int-compare/test_msa_clt_s_h.c | 2 + .../user/ase/msa/int-compare/test_msa_clt_s_w.c | 2 + .../user/ase/msa/int-compare/test_msa_clt_u_b.c | 2 + .../user/ase/msa/int-compare/test_msa_clt_u_d.c | 2 + .../user/ase/msa/int-compare/test_msa_clt_u_h.c | 2 + .../user/ase/msa/int-compare/test_msa_clt_u_w.c | 2 + .../user/ase/msa/int-divide/test_msa_div_s_b.c | 12 +- .../user/ase/msa/int-divide/test_msa_div_s_d.c | 12 +- .../user/ase/msa/int-divide/test_msa_div_s_h.c | 12 +- .../user/ase/msa/int-divide/test_msa_div_s_w.c | 12 +- .../user/ase/msa/int-divide/test_msa_div_u_b.c | 12 +- .../user/ase/msa/int-divide/test_msa_div_u_d.c | 12 +- .../user/ase/msa/int-divide/test_msa_div_u_h.c | 12 +- .../user/ase/msa/int-divide/test_msa_div_u_w.c | 12 +- .../ase/msa/int-dot-product/test_msa_dotp_s_d.c | 12 +- .../ase/msa/int-dot-product/test_msa_dotp_s_h.c | 12 +- .../ase/msa/int-dot-product/test_msa_dotp_s_w.c | 12 +- .../ase/msa/int-dot-product/test_msa_dotp_u_d.c | 12 +- .../ase/msa/int-dot-product/test_msa_dotp_u_h.c | 12 +- .../ase/msa/int-dot-product/test_msa_dotp_u_w.c | 12 +- .../user/ase/msa/int-max-min/test_msa_max_a_b.c | 2 + .../user/ase/msa/int-max-min/test_msa_max_a_d.c | 2 + .../user/ase/msa/int-max-min/test_msa_max_a_h.c | 2 + .../user/ase/msa/int-max-min/test_msa_max_a_w.c | 2 + .../user/ase/msa/int-max-min/test_msa_max_s_b.c | 2 + .../user/ase/msa/int-max-min/test_msa_max_s_d.c | 2 + .../user/ase/msa/int-max-min/test_msa_max_s_h.c | 2 + .../user/ase/msa/int-max-min/test_msa_max_s_w.c | 2 + .../user/ase/msa/int-max-min/test_msa_max_u_b.c | 2 + .../user/ase/msa/int-max-min/test_msa_max_u_d.c | 2 + .../user/ase/msa/int-max-min/test_msa_max_u_h.c | 2 + .../user/ase/msa/int-max-min/test_msa_max_u_w.c | 2 + .../user/ase/msa/int-max-min/test_msa_min_a_b.c | 2 + .../user/ase/msa/int-max-min/test_msa_min_a_d.c | 2 + .../user/ase/msa/int-max-min/test_msa_min_a_h.c | 2 + .../user/ase/msa/int-max-min/test_msa_min_a_w.c | 2 + .../user/ase/msa/int-max-min/test_msa_min_s_b.c | 2 + .../user/ase/msa/int-max-min/test_msa_min_s_d.c | 2 + .../user/ase/msa/int-max-min/test_msa_min_s_h.c | 2 + .../user/ase/msa/int-max-min/test_msa_min_s_w.c | 2 + .../user/ase/msa/int-max-min/test_msa_min_u_b.c | 2 + .../user/ase/msa/int-max-min/test_msa_min_u_d.c | 2 + .../user/ase/msa/int-max-min/test_msa_min_u_h.c | 2 + .../user/ase/msa/int-max-min/test_msa_min_u_w.c | 2 + .../user/ase/msa/int-modulo/test_msa_mod_s_b.c | 155 ++++++ .../user/ase/msa/int-modulo/test_msa_mod_s_d.c | 155 ++++++ .../user/ase/msa/int-modulo/test_msa_mod_s_h.c | 155 ++++++ .../user/ase/msa/int-modulo/test_msa_mod_s_w.c | 155 ++++++ .../user/ase/msa/int-modulo/test_msa_mod_u_b.c | 155 ++++++ .../user/ase/msa/int-modulo/test_msa_mod_u_d.c | 155 ++++++ .../user/ase/msa/int-modulo/test_msa_mod_u_h.c | 155 ++++++ .../user/ase/msa/int-modulo/test_msa_mod_u_w.c | 155 ++++++ .../user/ase/msa/int-multiply/test_msa_mul_q_h.c | 12 +- .../user/ase/msa/int-multiply/test_msa_mul_q_w.c | 12 +- .../user/ase/msa/int-multiply/test_msa_mulr_q_h.c | 12 +- .../user/ase/msa/int-multiply/test_msa_mulr_q_w.c | 12 +- .../user/ase/msa/int-multiply/test_msa_mulv_b.c | 12 +- .../user/ase/msa/int-multiply/test_msa_mulv_d.c | 12 +- .../user/ase/msa/int-multiply/test_msa_mulv_h.c | 12 +- .../user/ase/msa/int-multiply/test_msa_mulv_w.c | 12 +- .../user/ase/msa/int-subtract/test_msa_asub_s_b.c | 155 ++++++ .../user/ase/msa/int-subtract/test_msa_asub_s_d.c | 155 ++++++ .../user/ase/msa/int-subtract/test_msa_asub_s_h.c | 155 ++++++ .../user/ase/msa/int-subtract/test_msa_asub_s_w.c | 155 ++++++ .../user/ase/msa/int-subtract/test_msa_asub_u_b.c | 155 ++++++ .../user/ase/msa/int-subtract/test_msa_asub_u_d.c | 155 ++++++ .../user/ase/msa/int-subtract/test_msa_asub_u_h.c | 155 ++++++ .../user/ase/msa/int-subtract/test_msa_asub_u_w.c | 155 ++++++ .../user/ase/msa/int-subtract/test_msa_hsub_s_d.c | 155 ++++++ .../user/ase/msa/int-subtract/test_msa_hsub_s_h.c | 155 ++++++ .../user/ase/msa/int-subtract/test_msa_hsub_s_w.c | 155 ++++++ .../user/ase/msa/int-subtract/test_msa_hsub_u_d.c | 155 ++++++ .../user/ase/msa/int-subtract/test_msa_hsub_u_h.c | 155 ++++++ .../user/ase/msa/int-subtract/test_msa_hsub_u_w.c | 155 ++++++ .../user/ase/msa/int-subtract/test_msa_subs_s_b.c | 12 +- .../user/ase/msa/int-subtract/test_msa_subs_s_d.c | 12 +- .../user/ase/msa/int-subtract/test_msa_subs_s_h.c | 12 +- .../user/ase/msa/int-subtract/test_msa_subs_s_w.c | 12 +- .../user/ase/msa/int-subtract/test_msa_subs_u_b.c | 12 +- .../user/ase/msa/int-subtract/test_msa_subs_u_d.c | 12 +- .../user/ase/msa/int-subtract/test_msa_subs_u_h.c | 12 +- .../user/ase/msa/int-subtract/test_msa_subs_u_w.c | 12 +- .../ase/msa/int-subtract/test_msa_subsus_u_b.c | 12 +- .../ase/msa/int-subtract/test_msa_subsus_u_d.c | 12 +- .../ase/msa/int-subtract/test_msa_subsus_u_h.c | 12 +- .../ase/msa/int-subtract/test_msa_subsus_u_w.c | 12 +- .../ase/msa/int-subtract/test_msa_subsuu_s_b.c | 12 +- .../ase/msa/int-subtract/test_msa_subsuu_s_d.c | 12 +- .../ase/msa/int-subtract/test_msa_subsuu_s_h.c | 12 +- .../ase/msa/int-subtract/test_msa_subsuu_s_w.c | 12 +- .../user/ase/msa/int-subtract/test_msa_subv_b.c | 12 +- .../user/ase/msa/int-subtract/test_msa_subv_d.c | 12 +- .../user/ase/msa/int-subtract/test_msa_subv_h.c | 12 +- .../user/ase/msa/int-subtract/test_msa_subv_w.c | 10 +- .../user/ase/msa/interleave/test_msa_ilvev_b.c | 2 +- .../user/ase/msa/interleave/test_msa_ilvev_d.c | 2 +- .../user/ase/msa/interleave/test_msa_ilvev_h.c | 2 +- 171 files changed, 6663 insertions(+), 366 deletions(-) create mode 100644 tests/tcg/mips/user/ase/msa/bit-set/test_msa_bclr_b.c create mode 100644 tests/tcg/mips/user/ase/msa/bit-set/test_msa_bclr_d.c create mode 100644 tests/tcg/mips/user/ase/msa/bit-set/test_msa_bclr_h.c create mode 100644 tests/tcg/mips/user/ase/msa/bit-set/test_msa_bclr_w.c create mode 100644 tests/tcg/mips/user/ase/msa/bit-set/test_msa_bneg_b.c create mode 100644 tests/tcg/mips/user/ase/msa/bit-set/test_msa_bneg_d.c create mode 100644 tests/tcg/mips/user/ase/msa/bit-set/test_msa_bneg_h.c create mode 100644 tests/tcg/mips/user/ase/msa/bit-set/test_msa_bneg_w.c create mode 100644 tests/tcg/mips/user/ase/msa/bit-set/test_msa_bset_b.c create mode 100644 tests/tcg/mips/user/ase/msa/bit-set/test_msa_bset_d.c create mode 100644 tests/tcg/mips/user/ase/msa/bit-set/test_msa_bset_h.c create mode 100644 tests/tcg/mips/user/ase/msa/bit-set/test_msa_bset_w.c create mode 100644 tests/tcg/mips/user/ase/msa/int-modulo/test_msa_mod_s_b.c create mode 100644 tests/tcg/mips/user/ase/msa/int-modulo/test_msa_mod_s_d.c create mode 100644 tests/tcg/mips/user/ase/msa/int-modulo/test_msa_mod_s_h.c create mode 100644 tests/tcg/mips/user/ase/msa/int-modulo/test_msa_mod_s_w.c create mode 100644 tests/tcg/mips/user/ase/msa/int-modulo/test_msa_mod_u_b.c create mode 100644 tests/tcg/mips/user/ase/msa/int-modulo/test_msa_mod_u_d.c create mode 100644 tests/tcg/mips/user/ase/msa/int-modulo/test_msa_mod_u_h.c create mode 100644 tests/tcg/mips/user/ase/msa/int-modulo/test_msa_mod_u_w.c create mode 100644 tests/tcg/mips/user/ase/msa/int-subtract/test_msa_asub_s_b.c create mode 100644 tests/tcg/mips/user/ase/msa/int-subtract/test_msa_asub_s_d.c create mode 100644 tests/tcg/mips/user/ase/msa/int-subtract/test_msa_asub_s_h.c create mode 100644 tests/tcg/mips/user/ase/msa/int-subtract/test_msa_asub_s_w.c create mode 100644 tests/tcg/mips/user/ase/msa/int-subtract/test_msa_asub_u_b.c create mode 100644 tests/tcg/mips/user/ase/msa/int-subtract/test_msa_asub_u_d.c create mode 100644 tests/tcg/mips/user/ase/msa/int-subtract/test_msa_asub_u_h.c create mode 100644 tests/tcg/mips/user/ase/msa/int-subtract/test_msa_asub_u_w.c create mode 100644 tests/tcg/mips/user/ase/msa/int-subtract/test_msa_hsub_s_d.c create mode 100644 tests/tcg/mips/user/ase/msa/int-subtract/test_msa_hsub_s_h.c create mode 100644 tests/tcg/mips/user/ase/msa/int-subtract/test_msa_hsub_s_w.c create mode 100644 tests/tcg/mips/user/ase/msa/int-subtract/test_msa_hsub_u_d.c create mode 100644 tests/tcg/mips/user/ase/msa/int-subtract/test_msa_hsub_u_h.c create mode 100644 tests/tcg/mips/user/ase/msa/int-subtract/test_msa_hsub_u_w.c