All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 0/2] tests: Reorganize MIPS TCG directories and files
@ 2018-12-27 13:12 Aleksandar Markovic
  2018-12-27 13:12 ` [Qemu-devel] [PATCH 1/2] tests: tcg: mips: Move source files to new location Aleksandar Markovic
                   ` (3 more replies)
  0 siblings, 4 replies; 10+ messages in thread
From: Aleksandar Markovic @ 2018-12-27 13:12 UTC (permalink / raw)
  To: qemu-devel; +Cc: alex.bennee, noring, aurelien, amarkovic, smarkovic, arikalo

From: Aleksandar Markovic <amarkovic@wavecomp.com>

Reorganize MIPS TCG directories and files. The file movement is done
using "git mv" command, so "git blame" will still display the original
information, regardles of the new names and locations of involved
files.

Aleksandar Markovic (2):
  tests: tcg: mips: Move source files to new location
  tests: tcg: mips: Remove old directories after reorganization

 tests/tcg/mips/mips32-dsp/Makefile                 | 136 ---------
 tests/tcg/mips/mips32-dsp/absq_s_ph.c              |  31 ---
 tests/tcg/mips/mips32-dsp/absq_s_w.c               |  37 ---
 tests/tcg/mips/mips32-dsp/addq_ph.c                |  46 ----
 tests/tcg/mips/mips32-dsp/addq_s_ph.c              |  69 -----
 tests/tcg/mips/mips32-dsp/addq_s_w.c               |  44 ---
 tests/tcg/mips/mips32-dsp/addsc.c                  |  33 ---
 tests/tcg/mips/mips32-dsp/addu_qb.c                |  35 ---
 tests/tcg/mips/mips32-dsp/addu_s_qb.c              |  35 ---
 tests/tcg/mips/mips32-dsp/addwc.c                  |  49 ----
 tests/tcg/mips/mips32-dsp/bitrev.c                 |  20 --
 tests/tcg/mips/mips32-dsp/bposge32.c               |  44 ---
 tests/tcg/mips/mips32-dsp/cmp_eq_ph.c              |  35 ---
 tests/tcg/mips/mips32-dsp/cmp_le_ph.c              |  35 ---
 tests/tcg/mips/mips32-dsp/cmp_lt_ph.c              |  35 ---
 tests/tcg/mips/mips32-dsp/cmpgu_eq_qb.c            |  31 ---
 tests/tcg/mips/mips32-dsp/cmpgu_le_qb.c            |  31 ---
 tests/tcg/mips/mips32-dsp/cmpgu_lt_qb.c            |  31 ---
 tests/tcg/mips/mips32-dsp/cmpu_eq_qb.c             |  35 ---
 tests/tcg/mips/mips32-dsp/cmpu_le_qb.c             |  35 ---
 tests/tcg/mips/mips32-dsp/cmpu_lt_qb.c             |  35 ---
 tests/tcg/mips/mips32-dsp/dpaq_s_w_ph.c            |  31 ---
 tests/tcg/mips/mips32-dsp/dpaq_sa_l_w.c            | 125 ---------
 tests/tcg/mips/mips32-dsp/dpau_h_qbl.c             |  27 --
 tests/tcg/mips/mips32-dsp/dpau_h_qbr.c             |  27 --
 tests/tcg/mips/mips32-dsp/dpsq_s_w_ph.c            |  45 ---
 tests/tcg/mips/mips32-dsp/dpsq_sa_l_w.c            |  55 ----
 tests/tcg/mips/mips32-dsp/dpsu_h_qbl.c             |  27 --
 tests/tcg/mips/mips32-dsp/dpsu_h_qbr.c             |  27 --
 tests/tcg/mips/mips32-dsp/extp.c                   |  62 -----
 tests/tcg/mips/mips32-dsp/extpdp.c                 |  64 -----
 tests/tcg/mips/mips32-dsp/extpdpv.c                |  47 ----
 tests/tcg/mips/mips32-dsp/extpv.c                  |  45 ---
 tests/tcg/mips/mips32-dsp/extr_r_w.c               |  94 -------
 tests/tcg/mips/mips32-dsp/extr_rs_w.c              | 117 --------
 tests/tcg/mips/mips32-dsp/extr_s_h.c               |  86 ------
 tests/tcg/mips/mips32-dsp/extr_w.c                 |  94 -------
 tests/tcg/mips/mips32-dsp/extrv_r_w.c              |  79 ------
 tests/tcg/mips/mips32-dsp/extrv_rs_w.c             |  77 ------
 tests/tcg/mips/mips32-dsp/extrv_s_h.c              |  88 ------
 tests/tcg/mips/mips32-dsp/extrv_w.c                |  80 ------
 tests/tcg/mips/mips32-dsp/insv.c                   |  36 ---
 tests/tcg/mips/mips32-dsp/lbux.c                   |  25 --
 tests/tcg/mips/mips32-dsp/lhx.c                    |  25 --
 tests/tcg/mips/mips32-dsp/lwx.c                    |  25 --
 tests/tcg/mips/mips32-dsp/madd.c                   |  31 ---
 tests/tcg/mips/mips32-dsp/maddu.c                  |  31 ---
 tests/tcg/mips/mips32-dsp/main.c                   |   6 -
 tests/tcg/mips/mips32-dsp/maq_s_w_phl.c            |  55 ----
 tests/tcg/mips/mips32-dsp/maq_s_w_phr.c            |  55 ----
 tests/tcg/mips/mips32-dsp/maq_sa_w_phl.c           |  55 ----
 tests/tcg/mips/mips32-dsp/maq_sa_w_phr.c           |  55 ----
 tests/tcg/mips/mips32-dsp/mfhi.c                   |  21 --
 tests/tcg/mips/mips32-dsp/mflo.c                   |  21 --
 tests/tcg/mips/mips32-dsp/modsub.c                 |  30 --
 tests/tcg/mips/mips32-dsp/msub.c                   |  30 --
 tests/tcg/mips/mips32-dsp/msubu.c                  |  30 --
 tests/tcg/mips/mips32-dsp/mthi.c                   |  21 --
 tests/tcg/mips/mips32-dsp/mthlip.c                 |  58 ----
 tests/tcg/mips/mips32-dsp/mtlo.c                   |  21 --
 tests/tcg/mips/mips32-dsp/muleq_s_w_phl.c          |  41 ---
 tests/tcg/mips/mips32-dsp/muleq_s_w_phr.c          |  40 ---
 tests/tcg/mips/mips32-dsp/muleu_s_ph_qbl.c         |  25 --
 tests/tcg/mips/mips32-dsp/muleu_s_ph_qbr.c         |  25 --
 tests/tcg/mips/mips32-dsp/mulq_rs_ph.c             |  42 ---
 tests/tcg/mips/mips32-dsp/mult.c                   |  24 --
 tests/tcg/mips/mips32-dsp/multu.c                  |  24 --
 tests/tcg/mips/mips32-dsp/packrl_ph.c              |  21 --
 tests/tcg/mips/mips32-dsp/pick_ph.c                |  49 ----
 tests/tcg/mips/mips32-dsp/pick_qb.c                |  36 ---
 tests/tcg/mips/mips32-dsp/preceq_w_phl.c           |  20 --
 tests/tcg/mips/mips32-dsp/preceq_w_phr.c           |  20 --
 tests/tcg/mips/mips32-dsp/precequ_ph_qbl.c         |  20 --
 tests/tcg/mips/mips32-dsp/precequ_ph_qbla.c        |  20 --
 tests/tcg/mips/mips32-dsp/precequ_ph_qbr.c         |  20 --
 tests/tcg/mips/mips32-dsp/precequ_ph_qbra.c        |  20 --
 tests/tcg/mips/mips32-dsp/preceu_ph_qbl.c          |  20 --
 tests/tcg/mips/mips32-dsp/preceu_ph_qbla.c         |  20 --
 tests/tcg/mips/mips32-dsp/preceu_ph_qbr.c          |  20 --
 tests/tcg/mips/mips32-dsp/preceu_ph_qbra.c         |  20 --
 tests/tcg/mips/mips32-dsp/precrq_ph_w.c            |  21 --
 tests/tcg/mips/mips32-dsp/precrq_qb_ph.c           |  21 --
 tests/tcg/mips/mips32-dsp/precrq_rs_ph_w.c         |  51 ----
 tests/tcg/mips/mips32-dsp/precrqu_s_qb_ph.c        |  24 --
 tests/tcg/mips/mips32-dsp/raddu_w_qb.c             |  20 --
 tests/tcg/mips/mips32-dsp/rddsp.c                  |  46 ----
 tests/tcg/mips/mips32-dsp/repl_ph.c                |  23 --
 tests/tcg/mips/mips32-dsp/repl_qb.c                |  16 --
 tests/tcg/mips/mips32-dsp/replv_ph.c               |  19 --
 tests/tcg/mips/mips32-dsp/replv_qb.c               |  19 --
 tests/tcg/mips/mips32-dsp/shilo.c                  |  45 ---
 tests/tcg/mips/mips32-dsp/shilov.c                 |  49 ----
 tests/tcg/mips/mips32-dsp/shll_ph.c                |  55 ----
 tests/tcg/mips/mips32-dsp/shll_qb.c                |  55 ----
 tests/tcg/mips/mips32-dsp/shll_s_ph.c              |  24 --
 tests/tcg/mips/mips32-dsp/shll_s_w.c               |  52 ----
 tests/tcg/mips/mips32-dsp/shllv_ph.c               |  40 ---
 tests/tcg/mips/mips32-dsp/shllv_qb.c               |  38 ---
 tests/tcg/mips/mips32-dsp/shllv_s_ph.c             |  40 ---
 tests/tcg/mips/mips32-dsp/shllv_s_w.c              |  40 ---
 tests/tcg/mips/mips32-dsp/shra_ph.c                |  30 --
 tests/tcg/mips/mips32-dsp/shra_r_ph.c              |  30 --
 tests/tcg/mips/mips32-dsp/shra_r_w.c               |  30 --
 tests/tcg/mips/mips32-dsp/shrav_ph.c               |  32 ---
 tests/tcg/mips/mips32-dsp/shrav_r_ph.c             |  32 ---
 tests/tcg/mips/mips32-dsp/shrav_r_w.c              |  32 ---
 tests/tcg/mips/mips32-dsp/shrl_qb.c                |  31 ---
 tests/tcg/mips/mips32-dsp/shrlv_qb.c               |  32 ---
 tests/tcg/mips/mips32-dsp/subq_ph.c                |  40 ---
 tests/tcg/mips/mips32-dsp/subq_s_ph.c              |  58 ----
 tests/tcg/mips/mips32-dsp/subq_s_w.c               |  74 -----
 tests/tcg/mips/mips32-dsp/subu_qb.c                |  25 --
 tests/tcg/mips/mips32-dsp/subu_s_qb.c              |  25 --
 tests/tcg/mips/mips32-dsp/wrdsp.c                  |  46 ----
 tests/tcg/mips/mips32-dspr2/Makefile               |  71 -----
 tests/tcg/mips/mips32-dspr2/absq_s_qb.c            |  35 ---
 tests/tcg/mips/mips32-dspr2/addqh_ph.c             |  30 --
 tests/tcg/mips/mips32-dspr2/addqh_r_ph.c           |  30 --
 tests/tcg/mips/mips32-dspr2/addqh_r_w.c            |  34 ---
 tests/tcg/mips/mips32-dspr2/addqh_w.c              |  34 ---
 tests/tcg/mips/mips32-dspr2/addu_ph.c              |  33 ---
 tests/tcg/mips/mips32-dspr2/addu_s_ph.c            |  33 ---
 tests/tcg/mips/mips32-dspr2/adduh_qb.c             |  30 --
 tests/tcg/mips/mips32-dspr2/adduh_r_qb.c           |  30 --
 tests/tcg/mips/mips32-dspr2/append.c               |  30 --
 tests/tcg/mips/mips32-dspr2/balign.c               |  30 --
 tests/tcg/mips/mips32-dspr2/cmpgdu_eq_qb.c         |  37 ---
 tests/tcg/mips/mips32-dspr2/cmpgdu_le_qb.c         |  37 ---
 tests/tcg/mips/mips32-dspr2/cmpgdu_lt_qb.c         |  37 ---
 tests/tcg/mips/mips32-dspr2/dpa_w_ph.c             |  44 ---
 tests/tcg/mips/mips32-dspr2/dpaqx_s_w_ph.c         |  79 ------
 tests/tcg/mips/mips32-dspr2/dpaqx_sa_w_ph.c        |  57 ----
 tests/tcg/mips/mips32-dspr2/dpax_w_ph.c            |  44 ---
 tests/tcg/mips/mips32-dspr2/dps_w_ph.c             |  44 ---
 tests/tcg/mips/mips32-dspr2/dpsqx_s_w_ph.c         |  54 ----
 tests/tcg/mips/mips32-dspr2/dpsqx_sa_w_ph.c        |  53 ----
 tests/tcg/mips/mips32-dspr2/dpsx_w_ph.c            |  27 --
 tests/tcg/mips/mips32-dspr2/mul_ph.c               |  47 ----
 tests/tcg/mips/mips32-dspr2/mul_s_ph.c             |  62 -----
 tests/tcg/mips/mips32-dspr2/mulq_rs_w.c            |  36 ---
 tests/tcg/mips/mips32-dspr2/mulq_s_ph.c            |  40 ---
 tests/tcg/mips/mips32-dspr2/mulq_s_w.c             |  36 ---
 tests/tcg/mips/mips32-dspr2/mulsa_w_ph.c           |  29 --
 tests/tcg/mips/mips32-dspr2/mulsaq_s_w_ph.c        |  29 --
 tests/tcg/mips/mips32-dspr2/precr_qb_ph.c          |  21 --
 tests/tcg/mips/mips32-dspr2/precr_sra_ph_w.c       |  32 ---
 tests/tcg/mips/mips32-dspr2/precr_sra_r_ph_w.c     |  32 ---
 tests/tcg/mips/mips32-dspr2/prepend.c              |  30 --
 tests/tcg/mips/mips32-dspr2/shra_qb.c              |  30 --
 tests/tcg/mips/mips32-dspr2/shra_r_qb.c            |  30 --
 tests/tcg/mips/mips32-dspr2/shrav_qb.c             |  32 ---
 tests/tcg/mips/mips32-dspr2/shrav_r_qb.c           |  32 ---
 tests/tcg/mips/mips32-dspr2/shrl_ph.c              |  20 --
 tests/tcg/mips/mips32-dspr2/shrlv_ph.c             |  21 --
 tests/tcg/mips/mips32-dspr2/subqh_ph.c             |  21 --
 tests/tcg/mips/mips32-dspr2/subqh_r_ph.c           |  21 --
 tests/tcg/mips/mips32-dspr2/subqh_r_w.c            |  21 --
 tests/tcg/mips/mips32-dspr2/subqh_w.c              |  21 --
 tests/tcg/mips/mips32-dspr2/subu_ph.c              |  40 ---
 tests/tcg/mips/mips32-dspr2/subu_s_ph.c            |  25 --
 tests/tcg/mips/mips32-dspr2/subuh_qb.c             |  21 --
 tests/tcg/mips/mips32-dspr2/subuh_r_qb.c           |  32 ---
 tests/tcg/mips/mips64-dsp/Makefile                 | 306 ---------------------
 tests/tcg/mips/mips64-dsp/absq_s_ob.c              |  63 -----
 tests/tcg/mips/mips64-dsp/absq_s_ph.c              |  37 ---
 tests/tcg/mips/mips64-dsp/absq_s_pw.c              |  66 -----
 tests/tcg/mips/mips64-dsp/absq_s_qh.c              |  40 ---
 tests/tcg/mips/mips64-dsp/absq_s_w.c               |  48 ----
 tests/tcg/mips/mips64-dsp/addq_ph.c                |  57 ----
 tests/tcg/mips/mips64-dsp/addq_pw.c                |  46 ----
 tests/tcg/mips/mips64-dsp/addq_qh.c                |  28 --
 tests/tcg/mips/mips64-dsp/addq_s_ph.c              |  84 ------
 tests/tcg/mips/mips64-dsp/addq_s_pw.c              |  45 ---
 tests/tcg/mips/mips64-dsp/addq_s_qh.c              |  26 --
 tests/tcg/mips/mips64-dsp/addq_s_w.c               |  48 ----
 tests/tcg/mips/mips64-dsp/addsc.c                  |  39 ---
 tests/tcg/mips/mips64-dsp/addu_ob.c                |  28 --
 tests/tcg/mips/mips64-dsp/addu_qb.c                |  40 ---
 tests/tcg/mips/mips64-dsp/addu_s_ob.c              |  27 --
 tests/tcg/mips/mips64-dsp/addu_s_qb.c              |  40 ---
 tests/tcg/mips/mips64-dsp/addwc.c                  |  59 ----
 tests/tcg/mips/mips64-dsp/bitrev.c                 |  23 --
 tests/tcg/mips/mips64-dsp/bposge32.c               |  50 ----
 tests/tcg/mips/mips64-dsp/bposge64.c               |  50 ----
 tests/tcg/mips/mips64-dsp/cmp_eq_ph.c              |  42 ---
 tests/tcg/mips/mips64-dsp/cmp_eq_pw.c              |  46 ----
 tests/tcg/mips/mips64-dsp/cmp_eq_qh.c              |  46 ----
 tests/tcg/mips/mips64-dsp/cmp_le_ph.c              |  40 ---
 tests/tcg/mips/mips64-dsp/cmp_le_pw.c              |  46 ----
 tests/tcg/mips/mips64-dsp/cmp_le_qh.c              |  46 ----
 tests/tcg/mips/mips64-dsp/cmp_lt_ph.c              |  41 ---
 tests/tcg/mips/mips64-dsp/cmp_lt_pw.c              |  46 ----
 tests/tcg/mips/mips64-dsp/cmp_lt_qh.c              |  46 ----
 tests/tcg/mips/mips64-dsp/cmpgu_eq_ob.c            |  40 ---
 tests/tcg/mips/mips64-dsp/cmpgu_eq_qb.c            |  38 ---
 tests/tcg/mips/mips64-dsp/cmpgu_le_ob.c            |  40 ---
 tests/tcg/mips/mips64-dsp/cmpgu_le_qb.c            |  37 ---
 tests/tcg/mips/mips64-dsp/cmpgu_lt_ob.c            |  40 ---
 tests/tcg/mips/mips64-dsp/cmpgu_lt_qb.c            |  38 ---
 tests/tcg/mips/mips64-dsp/cmpu_eq_ob.c             |  46 ----
 tests/tcg/mips/mips64-dsp/cmpu_eq_qb.c             |  42 ---
 tests/tcg/mips/mips64-dsp/cmpu_le_ob.c             |  44 ---
 tests/tcg/mips/mips64-dsp/cmpu_le_qb.c             |  41 ---
 tests/tcg/mips/mips64-dsp/cmpu_lt_ob.c             |  44 ---
 tests/tcg/mips/mips64-dsp/cmpu_lt_qb.c             |  42 ---
 tests/tcg/mips/mips64-dsp/dappend.c                |  37 ---
 tests/tcg/mips/mips64-dsp/dextp.c                  |  54 ----
 tests/tcg/mips/mips64-dsp/dextpdp.c                |  59 ----
 tests/tcg/mips/mips64-dsp/dextpdpv.c               |  63 -----
 tests/tcg/mips/mips64-dsp/dextpv.c                 |  58 ----
 tests/tcg/mips/mips64-dsp/dextr_l.c                |  44 ---
 tests/tcg/mips/mips64-dsp/dextr_r_l.c              |  54 ----
 tests/tcg/mips/mips64-dsp/dextr_r_w.c              |  54 ----
 tests/tcg/mips/mips64-dsp/dextr_rs_l.c             |  52 ----
 tests/tcg/mips/mips64-dsp/dextr_rs_w.c             |  52 ----
 tests/tcg/mips/mips64-dsp/dextr_s_h.c              |  73 -----
 tests/tcg/mips/mips64-dsp/dextr_w.c                |  44 ---
 tests/tcg/mips/mips64-dsp/dextrv_l.c               |  46 ----
 tests/tcg/mips/mips64-dsp/dextrv_r_l.c             |  56 ----
 tests/tcg/mips/mips64-dsp/dextrv_r_w.c             |  56 ----
 tests/tcg/mips/mips64-dsp/dextrv_rs_l.c            |  54 ----
 tests/tcg/mips/mips64-dsp/dextrv_rs_w.c            |  54 ----
 tests/tcg/mips/mips64-dsp/dextrv_s_h.c             |  32 ---
 tests/tcg/mips/mips64-dsp/dextrv_w.c               |  46 ----
 tests/tcg/mips/mips64-dsp/dinsv.c                  |  26 --
 tests/tcg/mips/mips64-dsp/dmadd.c                  |  57 ----
 tests/tcg/mips/mips64-dsp/dmaddu.c                 |  56 ----
 tests/tcg/mips/mips64-dsp/dmsub.c                  |  59 ----
 tests/tcg/mips/mips64-dsp/dmsubu.c                 |  59 ----
 tests/tcg/mips/mips64-dsp/dmthlip.c                |  41 ---
 tests/tcg/mips/mips64-dsp/dpaq_s_w_ph.c            |  32 ---
 tests/tcg/mips/mips64-dsp/dpaq_s_w_qh.c            |  57 ----
 tests/tcg/mips/mips64-dsp/dpaq_sa_l_pw.c           |  88 ------
 tests/tcg/mips/mips64-dsp/dpaq_sa_l_w.c            |  82 ------
 tests/tcg/mips/mips64-dsp/dpau_h_obl.c             |  59 ----
 tests/tcg/mips/mips64-dsp/dpau_h_obr.c             |  59 ----
 tests/tcg/mips/mips64-dsp/dpau_h_qbl.c             |  29 --
 tests/tcg/mips/mips64-dsp/dpau_h_qbr.c             |  29 --
 tests/tcg/mips/mips64-dsp/dpsq_s_w_ph.c            |  51 ----
 tests/tcg/mips/mips64-dsp/dpsq_s_w_qh.c            |  56 ----
 tests/tcg/mips/mips64-dsp/dpsq_sa_l_pw.c           |  76 -----
 tests/tcg/mips/mips64-dsp/dpsq_sa_l_w.c            |  59 ----
 tests/tcg/mips/mips64-dsp/dpsu_h_obl.c             |  32 ---
 tests/tcg/mips/mips64-dsp/dpsu_h_obr.c             |  32 ---
 tests/tcg/mips/mips64-dsp/dpsu_h_qbl.c             |  29 --
 tests/tcg/mips/mips64-dsp/dpsu_h_qbr.c             |  29 --
 tests/tcg/mips/mips64-dsp/dshilo.c                 |  52 ----
 tests/tcg/mips/mips64-dsp/dshilov.c                |  54 ----
 tests/tcg/mips/mips64-dsp/extp.c                   |  50 ----
 tests/tcg/mips/mips64-dsp/extpdp.c                 |  51 ----
 tests/tcg/mips/mips64-dsp/extpdpv.c                |  52 ----
 tests/tcg/mips/mips64-dsp/extpv.c                  |  51 ----
 tests/tcg/mips/mips64-dsp/extr_r_w.c               |  53 ----
 tests/tcg/mips/mips64-dsp/extr_rs_w.c              |  53 ----
 tests/tcg/mips/mips64-dsp/extr_s_h.c               |  71 -----
 tests/tcg/mips/mips64-dsp/extr_w.c                 |  53 ----
 tests/tcg/mips/mips64-dsp/extrv_r_w.c              |  59 ----
 tests/tcg/mips/mips64-dsp/extrv_rs_w.c             |  59 ----
 tests/tcg/mips/mips64-dsp/extrv_s_h.c              |  79 ------
 tests/tcg/mips/mips64-dsp/extrv_w.c                |  59 ----
 tests/tcg/mips/mips64-dsp/head.S                   |  16 --
 tests/tcg/mips/mips64-dsp/insv.c                   |  26 --
 tests/tcg/mips/mips64-dsp/io.h                     |  22 --
 tests/tcg/mips/mips64-dsp/lbux.c                   |  27 --
 tests/tcg/mips/mips64-dsp/ldx.c                    |  27 --
 tests/tcg/mips/mips64-dsp/lhx.c                    |  27 --
 tests/tcg/mips/mips64-dsp/lwx.c                    |  27 --
 tests/tcg/mips/mips64-dsp/madd.c                   |  33 ---
 tests/tcg/mips/mips64-dsp/maddu.c                  |  33 ---
 tests/tcg/mips/mips64-dsp/maq_s_l_pwl.c            |  56 ----
 tests/tcg/mips/mips64-dsp/maq_s_l_pwr.c            |  56 ----
 tests/tcg/mips/mips64-dsp/maq_s_w_phl.c            |  60 ----
 tests/tcg/mips/mips64-dsp/maq_s_w_phr.c            |  60 ----
 tests/tcg/mips/mips64-dsp/maq_s_w_qhll.c           |  62 -----
 tests/tcg/mips/mips64-dsp/maq_s_w_qhlr.c           |  62 -----
 tests/tcg/mips/mips64-dsp/maq_s_w_qhrl.c           |  63 -----
 tests/tcg/mips/mips64-dsp/maq_s_w_qhrr.c           |  63 -----
 tests/tcg/mips/mips64-dsp/maq_sa_w_phl.c           |  60 ----
 tests/tcg/mips/mips64-dsp/maq_sa_w_phr.c           |  60 ----
 tests/tcg/mips/mips64-dsp/maq_sa_w_qhll.c          |  62 -----
 tests/tcg/mips/mips64-dsp/maq_sa_w_qhlr.c          |  64 -----
 tests/tcg/mips/mips64-dsp/maq_sa_w_qhrl.c          |  64 -----
 tests/tcg/mips/mips64-dsp/maq_sa_w_qhrr.c          |  64 -----
 tests/tcg/mips/mips64-dsp/mfhi.c                   |  24 --
 tests/tcg/mips/mips64-dsp/mflo.c                   |  24 --
 tests/tcg/mips/mips64-dsp/mips_boot.lds            |  31 ---
 tests/tcg/mips/mips64-dsp/modsub.c                 |  37 ---
 tests/tcg/mips/mips64-dsp/msub.c                   |  32 ---
 tests/tcg/mips/mips64-dsp/msubu.c                  |  32 ---
 tests/tcg/mips/mips64-dsp/mthi.c                   |  24 --
 tests/tcg/mips/mips64-dsp/mthlip.c                 |  61 ----
 tests/tcg/mips/mips64-dsp/mtlo.c                   |  22 --
 tests/tcg/mips/mips64-dsp/muleq_s_pw_qhl.c         |  56 ----
 tests/tcg/mips/mips64-dsp/muleq_s_pw_qhr.c         |  57 ----
 tests/tcg/mips/mips64-dsp/muleq_s_w_phl.c          |  46 ----
 tests/tcg/mips/mips64-dsp/muleq_s_w_phr.c          |  45 ---
 tests/tcg/mips/mips64-dsp/muleu_s_ph_qbl.c         |  27 --
 tests/tcg/mips/mips64-dsp/muleu_s_ph_qbr.c         |  27 --
 tests/tcg/mips/mips64-dsp/muleu_s_qh_obl.c         |  30 --
 tests/tcg/mips/mips64-dsp/muleu_s_qh_obr.c         |  31 ---
 tests/tcg/mips/mips64-dsp/mulq_rs_ph.c             |  27 --
 tests/tcg/mips/mips64-dsp/mulq_rs_qh.c             |  33 ---
 tests/tcg/mips/mips64-dsp/mulsaq_s_l_pw.c          |  59 ----
 tests/tcg/mips/mips64-dsp/mulsaq_s_w_qh.c          |  57 ----
 tests/tcg/mips/mips64-dsp/mult.c                   |  26 --
 tests/tcg/mips/mips64-dsp/multu.c                  |  26 --
 tests/tcg/mips/mips64-dsp/packrl_ph.c              |  24 --
 tests/tcg/mips/mips64-dsp/packrl_pw.c              |  24 --
 tests/tcg/mips/mips64-dsp/pick_ob.c                |  66 -----
 tests/tcg/mips/mips64-dsp/pick_ph.c                |  60 ----
 tests/tcg/mips/mips64-dsp/pick_pw.c                |  48 ----
 tests/tcg/mips/mips64-dsp/pick_qb.c                |  43 ---
 tests/tcg/mips/mips64-dsp/pick_qh.c                |  48 ----
 tests/tcg/mips/mips64-dsp/preceq_l_pwl.c           |  24 --
 tests/tcg/mips/mips64-dsp/preceq_l_pwr.c           |  24 --
 tests/tcg/mips/mips64-dsp/preceq_pw_qhl.c          |  21 --
 tests/tcg/mips/mips64-dsp/preceq_pw_qhla.c         |  23 --
 tests/tcg/mips/mips64-dsp/preceq_pw_qhr.c          |  21 --
 tests/tcg/mips/mips64-dsp/preceq_pw_qhra.c         |  23 --
 tests/tcg/mips/mips64-dsp/preceq_w_phl.c           |  23 --
 tests/tcg/mips/mips64-dsp/preceq_w_phr.c           |  23 --
 tests/tcg/mips/mips64-dsp/precequ_ph_qbl.c         |  23 --
 tests/tcg/mips/mips64-dsp/precequ_ph_qbla.c        |  23 --
 tests/tcg/mips/mips64-dsp/precequ_ph_qbr.c         |  23 --
 tests/tcg/mips/mips64-dsp/precequ_ph_qbra.c        |  23 --
 tests/tcg/mips/mips64-dsp/precequ_qh_obl.c         |  22 --
 tests/tcg/mips/mips64-dsp/precequ_qh_obla.c        |  22 --
 tests/tcg/mips/mips64-dsp/precequ_qh_obr.c         |  24 --
 tests/tcg/mips/mips64-dsp/precequ_qh_obra.c        |  24 --
 tests/tcg/mips/mips64-dsp/preceu_ph_qbl.c          |  23 --
 tests/tcg/mips/mips64-dsp/preceu_ph_qbla.c         |  23 --
 tests/tcg/mips/mips64-dsp/preceu_ph_qbr.c          |  23 --
 tests/tcg/mips/mips64-dsp/preceu_ph_qbra.c         |  23 --
 tests/tcg/mips/mips64-dsp/preceu_qh_obl.c          |  22 --
 tests/tcg/mips/mips64-dsp/preceu_qh_obla.c         |  22 --
 tests/tcg/mips/mips64-dsp/preceu_qh_obr.c          |  23 --
 tests/tcg/mips/mips64-dsp/preceu_qh_obra.c         |  23 --
 tests/tcg/mips/mips64-dsp/precr_ob_qh.c            |  25 --
 tests/tcg/mips/mips64-dsp/precr_sra_qh_pw.c        |  40 ---
 tests/tcg/mips/mips64-dsp/precr_sra_r_qh_pw.c      |  40 ---
 tests/tcg/mips/mips64-dsp/precrq_ob_qh.c           |  25 --
 tests/tcg/mips/mips64-dsp/precrq_ph_w.c            |  24 --
 tests/tcg/mips/mips64-dsp/precrq_pw_l.c            |  25 --
 tests/tcg/mips/mips64-dsp/precrq_qb_ph.c           |  24 --
 tests/tcg/mips/mips64-dsp/precrq_qh_pw.c           |  25 --
 tests/tcg/mips/mips64-dsp/precrq_rs_ph_w.c         |  41 ---
 tests/tcg/mips/mips64-dsp/precrq_rs_qh_pw.c        |  43 ---
 tests/tcg/mips/mips64-dsp/precrqu_s_ob_qh.c        |  27 --
 tests/tcg/mips/mips64-dsp/precrqu_s_qb_ph.c        |  26 --
 tests/tcg/mips/mips64-dsp/prependd.c               |  37 ---
 tests/tcg/mips/mips64-dsp/prependw.c               |  37 ---
 tests/tcg/mips/mips64-dsp/printf.c                 | 266 ------------------
 tests/tcg/mips/mips64-dsp/raddu_l_ob.c             |  22 --
 tests/tcg/mips/mips64-dsp/raddu_w_qb.c             |  23 --
 tests/tcg/mips/mips64-dsp/rddsp.c                  |  53 ----
 tests/tcg/mips/mips64-dsp/repl_ob.c                |  21 --
 tests/tcg/mips/mips64-dsp/repl_ph.c                |  30 --
 tests/tcg/mips/mips64-dsp/repl_pw.c                |  34 ---
 tests/tcg/mips/mips64-dsp/repl_qb.c                |  19 --
 tests/tcg/mips/mips64-dsp/repl_qh.c                |  34 ---
 tests/tcg/mips/mips64-dsp/replv_ob.c               |  23 --
 tests/tcg/mips/mips64-dsp/replv_ph.c               |  22 --
 tests/tcg/mips/mips64-dsp/replv_pw.c               |  23 --
 tests/tcg/mips/mips64-dsp/replv_qb.c               |  22 --
 tests/tcg/mips/mips64-dsp/shilo.c                  |  29 --
 tests/tcg/mips/mips64-dsp/shilov.c                 |  31 ---
 tests/tcg/mips/mips64-dsp/shll_ob.c                |  43 ---
 tests/tcg/mips/mips64-dsp/shll_ph.c                |  43 ---
 tests/tcg/mips/mips64-dsp/shll_pw.c                |  43 ---
 tests/tcg/mips/mips64-dsp/shll_qb.c                |  26 --
 tests/tcg/mips/mips64-dsp/shll_qh.c                |  42 ---
 tests/tcg/mips/mips64-dsp/shll_s_ph.c              |  43 ---
 tests/tcg/mips/mips64-dsp/shll_s_pw.c              |  43 ---
 tests/tcg/mips/mips64-dsp/shll_s_qh.c              |  43 ---
 tests/tcg/mips/mips64-dsp/shll_s_w.c               |  26 --
 tests/tcg/mips/mips64-dsp/shllv_ob.c               |  45 ---
 tests/tcg/mips/mips64-dsp/shllv_ph.c               |  27 --
 tests/tcg/mips/mips64-dsp/shllv_pw.c               |  45 ---
 tests/tcg/mips/mips64-dsp/shllv_qb.c               |  27 --
 tests/tcg/mips/mips64-dsp/shllv_qh.c               |  45 ---
 tests/tcg/mips/mips64-dsp/shllv_s_ph.c             |  27 --
 tests/tcg/mips/mips64-dsp/shllv_s_pw.c             |  45 ---
 tests/tcg/mips/mips64-dsp/shllv_s_qh.c             |  45 ---
 tests/tcg/mips/mips64-dsp/shllv_s_w.c              |  27 --
 tests/tcg/mips/mips64-dsp/shra_ob.c                |  23 --
 tests/tcg/mips/mips64-dsp/shra_ph.c                |  23 --
 tests/tcg/mips/mips64-dsp/shra_pw.c                |  36 ---
 tests/tcg/mips/mips64-dsp/shra_qh.c                |  37 ---
 tests/tcg/mips/mips64-dsp/shra_r_ob.c              |  22 --
 tests/tcg/mips/mips64-dsp/shra_r_ph.c              |  23 --
 tests/tcg/mips/mips64-dsp/shra_r_pw.c              |  36 ---
 tests/tcg/mips/mips64-dsp/shra_r_qh.c              |  37 ---
 tests/tcg/mips/mips64-dsp/shra_r_w.c               |  23 --
 tests/tcg/mips/mips64-dsp/shrav_ph.c               |  24 --
 tests/tcg/mips/mips64-dsp/shrav_pw.c               |  38 ---
 tests/tcg/mips/mips64-dsp/shrav_qh.c               |  39 ---
 tests/tcg/mips/mips64-dsp/shrav_r_ph.c             |  24 --
 tests/tcg/mips/mips64-dsp/shrav_r_pw.c             |  37 ---
 tests/tcg/mips/mips64-dsp/shrav_r_qh.c             |  39 ---
 tests/tcg/mips/mips64-dsp/shrav_r_w.c              |  24 --
 tests/tcg/mips/mips64-dsp/shrl_ob.c                |  38 ---
 tests/tcg/mips/mips64-dsp/shrl_qb.c                |  23 --
 tests/tcg/mips/mips64-dsp/shrl_qh.c                |  22 --
 tests/tcg/mips/mips64-dsp/shrlv_ob.c               |  39 ---
 tests/tcg/mips/mips64-dsp/shrlv_qb.c               |  24 --
 tests/tcg/mips/mips64-dsp/shrlv_qh.c               |  23 --
 tests/tcg/mips/mips64-dsp/subq_ph.c                |  27 --
 tests/tcg/mips/mips64-dsp/subq_pw.c                |  44 ---
 tests/tcg/mips/mips64-dsp/subq_qh.c                |  26 --
 tests/tcg/mips/mips64-dsp/subq_s_ph.c              |  27 --
 tests/tcg/mips/mips64-dsp/subq_s_pw.c              |  63 -----
 tests/tcg/mips/mips64-dsp/subq_s_qh.c              |  61 ----
 tests/tcg/mips/mips64-dsp/subq_s_w.c               |  27 --
 tests/tcg/mips/mips64-dsp/subu_ob.c                |  26 --
 tests/tcg/mips/mips64-dsp/subu_qb.c                |  27 --
 tests/tcg/mips/mips64-dsp/subu_s_ob.c              |  26 --
 tests/tcg/mips/mips64-dsp/subu_s_qb.c              |  27 --
 tests/tcg/mips/mips64-dsp/wrdsp.c                  |  48 ----
 tests/tcg/mips/mips64-dspr2/.directory             |   2 -
 tests/tcg/mips/mips64-dspr2/Makefile               | 116 --------
 tests/tcg/mips/mips64-dspr2/absq_s_qb.c            |  42 ---
 tests/tcg/mips/mips64-dspr2/addqh_ph.c             |  35 ---
 tests/tcg/mips/mips64-dspr2/addqh_r_ph.c           |  35 ---
 tests/tcg/mips/mips64-dspr2/addqh_r_w.c            |  38 ---
 tests/tcg/mips/mips64-dspr2/addqh_w.c              |  39 ---
 tests/tcg/mips/mips64-dspr2/addu_ph.c              |  37 ---
 tests/tcg/mips/mips64-dspr2/addu_qh.c              |  43 ---
 tests/tcg/mips/mips64-dspr2/addu_s_ph.c            |  37 ---
 tests/tcg/mips/mips64-dspr2/addu_s_qh.c            |  43 ---
 tests/tcg/mips/mips64-dspr2/adduh_ob.c             |  35 ---
 tests/tcg/mips/mips64-dspr2/adduh_qb.c             |  35 ---
 tests/tcg/mips/mips64-dspr2/adduh_r_ob.c           |  35 ---
 tests/tcg/mips/mips64-dspr2/adduh_r_qb.c           |  35 ---
 tests/tcg/mips/mips64-dspr2/append.c               |  35 ---
 tests/tcg/mips/mips64-dspr2/balign.c               |  35 ---
 tests/tcg/mips/mips64-dspr2/cmpgdu_eq_ob.c         |  44 ---
 tests/tcg/mips/mips64-dspr2/cmpgdu_eq_qb.c         |  41 ---
 tests/tcg/mips/mips64-dspr2/cmpgdu_le_ob.c         |  44 ---
 tests/tcg/mips/mips64-dspr2/cmpgdu_le_qb.c         |  48 ----
 tests/tcg/mips/mips64-dspr2/cmpgdu_lt_ob.c         |  44 ---
 tests/tcg/mips/mips64-dspr2/cmpgdu_lt_qb.c         |  48 ----
 tests/tcg/mips/mips64-dspr2/dbalign.c              |  39 ---
 tests/tcg/mips/mips64-dspr2/dpa_w_ph.c             |  47 ----
 tests/tcg/mips/mips64-dspr2/dpa_w_qh.c             |  56 ----
 tests/tcg/mips/mips64-dspr2/dpaqx_s_w_ph.c         |  97 -------
 tests/tcg/mips/mips64-dspr2/dpaqx_sa_w_ph.c        |  54 ----
 tests/tcg/mips/mips64-dspr2/dpax_w_ph.c            |  32 ---
 tests/tcg/mips/mips64-dspr2/dps_w_ph.c             |  28 --
 tests/tcg/mips/mips64-dspr2/dps_w_qh.c             |  55 ----
 tests/tcg/mips/mips64-dspr2/dpsqx_s_w_ph.c         |  55 ----
 tests/tcg/mips/mips64-dspr2/dpsqx_sa_w_ph.c        |  53 ----
 tests/tcg/mips/mips64-dspr2/dpsx_w_ph.c            |  28 --
 tests/tcg/mips/mips64-dspr2/head.S                 |  16 --
 tests/tcg/mips/mips64-dspr2/io.h                   |  22 --
 tests/tcg/mips/mips64-dspr2/mips_boot.lds          |  31 ---
 tests/tcg/mips/mips64-dspr2/mul_ph.c               |  50 ----
 tests/tcg/mips/mips64-dspr2/mul_s_ph.c             |  67 -----
 tests/tcg/mips/mips64-dspr2/mulq_rs_w.c            |  40 ---
 tests/tcg/mips/mips64-dspr2/mulq_s_ph.c            |  26 --
 tests/tcg/mips/mips64-dspr2/mulq_s_w.c             |  40 ---
 tests/tcg/mips/mips64-dspr2/mulsa_w_ph.c           |  30 --
 tests/tcg/mips/mips64-dspr2/mulsaq_s_w_ph.c        |  30 --
 tests/tcg/mips/mips64-dspr2/precr_qb_ph.c          |  23 --
 tests/tcg/mips/mips64-dspr2/precr_sra_ph_w.c       |  37 ---
 tests/tcg/mips/mips64-dspr2/precr_sra_r_ph_w.c     |  37 ---
 tests/tcg/mips/mips64-dspr2/prepend.c              |  35 ---
 tests/tcg/mips/mips64-dspr2/printf.c               | 266 ------------------
 tests/tcg/mips/mips64-dspr2/shra_qb.c              |  35 ---
 tests/tcg/mips/mips64-dspr2/shra_r_qb.c            |  35 ---
 tests/tcg/mips/mips64-dspr2/shrav_ob.c             |  22 --
 tests/tcg/mips/mips64-dspr2/shrav_qb.c             |  37 ---
 tests/tcg/mips/mips64-dspr2/shrav_r_ob.c           |  22 --
 tests/tcg/mips/mips64-dspr2/shrav_r_qb.c           |  37 ---
 tests/tcg/mips/mips64-dspr2/shrl_ph.c              |  22 --
 tests/tcg/mips/mips64-dspr2/shrlv_ph.c             |  23 --
 tests/tcg/mips/mips64-dspr2/subqh_ph.c             |  23 --
 tests/tcg/mips/mips64-dspr2/subqh_r_ph.c           |  23 --
 tests/tcg/mips/mips64-dspr2/subqh_r_w.c            |  23 --
 tests/tcg/mips/mips64-dspr2/subqh_w.c              |  23 --
 tests/tcg/mips/mips64-dspr2/subu_ph.c              |  26 --
 tests/tcg/mips/mips64-dspr2/subu_qh.c              |  24 --
 tests/tcg/mips/mips64-dspr2/subu_s_ph.c            |  25 --
 tests/tcg/mips/mips64-dspr2/subu_s_qh.c            |  42 ---
 tests/tcg/mips/mips64-dspr2/subuh_ob.c             |  36 ---
 tests/tcg/mips/mips64-dspr2/subuh_qb.c             |  23 --
 tests/tcg/mips/mips64-dspr2/subuh_r_ob.c           |  23 --
 tests/tcg/mips/mips64-dspr2/subuh_r_qb.c           |  37 ---
 tests/tcg/mips/mipsr5900/Makefile                  |  30 --
 tests/tcg/mips/mipsr5900/div1.c                    |  73 -----
 tests/tcg/mips/mipsr5900/divu1.c                   |  48 ----
 tests/tcg/mips/mipsr5900/mflohi1.c                 |  35 ---
 tests/tcg/mips/mipsr5900/mtlohi1.c                 |  40 ---
 tests/tcg/mips/mipsr5900/mult.c                    |  76 -----
 tests/tcg/mips/mipsr5900/multu.c                   |  68 -----
 .../mips/system/ase/dsp/test_64_dsp_r1_absq_s_ob.c |  63 +++++
 .../mips/system/ase/dsp/test_64_dsp_r1_absq_s_ph.c |  37 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_absq_s_pw.c |  66 +++++
 .../mips/system/ase/dsp/test_64_dsp_r1_absq_s_qh.c |  40 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_absq_s_w.c  |  48 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_addq_ph.c   |  57 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_addq_pw.c   |  46 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_addq_qh.c   |  28 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_addq_s_ph.c |  84 ++++++
 .../mips/system/ase/dsp/test_64_dsp_r1_addq_s_pw.c |  45 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_addq_s_qh.c |  26 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_addq_s_w.c  |  48 ++++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_addsc.c |  39 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_addu_ob.c   |  28 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_addu_qb.c   |  40 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_addu_s_ob.c |  27 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_addu_s_qb.c |  40 +++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_addwc.c |  59 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_bitrev.c    |  23 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_bposge32.c  |  50 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_bposge64.c  |  50 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_cmp_eq_ph.c |  42 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_cmp_eq_pw.c |  46 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_cmp_eq_qh.c |  46 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_cmp_le_ph.c |  40 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_cmp_le_pw.c |  46 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_cmp_le_qh.c |  46 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_cmp_lt_ph.c |  41 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_cmp_lt_pw.c |  46 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_cmp_lt_qh.c |  46 ++++
 .../system/ase/dsp/test_64_dsp_r1_cmpgu_eq_ob.c    |  40 +++
 .../system/ase/dsp/test_64_dsp_r1_cmpgu_eq_qb.c    |  38 +++
 .../system/ase/dsp/test_64_dsp_r1_cmpgu_le_ob.c    |  40 +++
 .../system/ase/dsp/test_64_dsp_r1_cmpgu_le_qb.c    |  37 +++
 .../system/ase/dsp/test_64_dsp_r1_cmpgu_lt_ob.c    |  40 +++
 .../system/ase/dsp/test_64_dsp_r1_cmpgu_lt_qb.c    |  38 +++
 .../system/ase/dsp/test_64_dsp_r1_cmpu_eq_ob.c     |  46 ++++
 .../system/ase/dsp/test_64_dsp_r1_cmpu_eq_qb.c     |  42 +++
 .../system/ase/dsp/test_64_dsp_r1_cmpu_le_ob.c     |  44 +++
 .../system/ase/dsp/test_64_dsp_r1_cmpu_le_qb.c     |  41 +++
 .../system/ase/dsp/test_64_dsp_r1_cmpu_lt_ob.c     |  44 +++
 .../system/ase/dsp/test_64_dsp_r1_cmpu_lt_qb.c     |  42 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_dappend.c   |  37 +++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_dextp.c |  54 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_dextpdp.c   |  59 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_dextpdpv.c  |  63 +++++
 .../mips/system/ase/dsp/test_64_dsp_r1_dextpv.c    |  58 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_dextr_l.c   |  44 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_dextr_r_l.c |  54 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_dextr_r_w.c |  54 ++++
 .../system/ase/dsp/test_64_dsp_r1_dextr_rs_l.c     |  52 ++++
 .../system/ase/dsp/test_64_dsp_r1_dextr_rs_w.c     |  52 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_dextr_s_h.c |  73 +++++
 .../mips/system/ase/dsp/test_64_dsp_r1_dextr_w.c   |  44 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_dextrv_l.c  |  46 ++++
 .../system/ase/dsp/test_64_dsp_r1_dextrv_r_l.c     |  56 ++++
 .../system/ase/dsp/test_64_dsp_r1_dextrv_r_w.c     |  56 ++++
 .../system/ase/dsp/test_64_dsp_r1_dextrv_rs_l.c    |  54 ++++
 .../system/ase/dsp/test_64_dsp_r1_dextrv_rs_w.c    |  54 ++++
 .../system/ase/dsp/test_64_dsp_r1_dextrv_s_h.c     |  32 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_dextrv_w.c  |  46 ++++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_dinsv.c |  26 ++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_dmadd.c |  57 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_dmaddu.c    |  56 ++++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_dmsub.c |  59 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_dmsubu.c    |  59 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_dmthlip.c   |  41 +++
 .../system/ase/dsp/test_64_dsp_r1_dpaq_s_w_ph.c    |  32 +++
 .../system/ase/dsp/test_64_dsp_r1_dpaq_s_w_qh.c    |  57 ++++
 .../system/ase/dsp/test_64_dsp_r1_dpaq_sa_l_pw.c   |  88 ++++++
 .../system/ase/dsp/test_64_dsp_r1_dpaq_sa_l_w.c    |  82 ++++++
 .../system/ase/dsp/test_64_dsp_r1_dpau_h_obl.c     |  59 ++++
 .../system/ase/dsp/test_64_dsp_r1_dpau_h_obr.c     |  59 ++++
 .../system/ase/dsp/test_64_dsp_r1_dpau_h_qbl.c     |  29 ++
 .../system/ase/dsp/test_64_dsp_r1_dpau_h_qbr.c     |  29 ++
 .../system/ase/dsp/test_64_dsp_r1_dpsq_s_w_ph.c    |  51 ++++
 .../system/ase/dsp/test_64_dsp_r1_dpsq_s_w_qh.c    |  56 ++++
 .../system/ase/dsp/test_64_dsp_r1_dpsq_sa_l_pw.c   |  76 +++++
 .../system/ase/dsp/test_64_dsp_r1_dpsq_sa_l_w.c    |  59 ++++
 .../system/ase/dsp/test_64_dsp_r1_dpsu_h_obl.c     |  32 +++
 .../system/ase/dsp/test_64_dsp_r1_dpsu_h_obr.c     |  32 +++
 .../system/ase/dsp/test_64_dsp_r1_dpsu_h_qbl.c     |  29 ++
 .../system/ase/dsp/test_64_dsp_r1_dpsu_h_qbr.c     |  29 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_dshilo.c    |  52 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_dshilov.c   |  54 ++++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_extp.c  |  50 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_extpdp.c    |  51 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_extpdpv.c   |  52 ++++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_extpv.c |  51 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_extr_r_w.c  |  53 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_extr_rs_w.c |  53 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_extr_s_h.c  |  71 +++++
 .../mips/system/ase/dsp/test_64_dsp_r1_extr_w.c    |  53 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_extrv_r_w.c |  59 ++++
 .../system/ase/dsp/test_64_dsp_r1_extrv_rs_w.c     |  59 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_extrv_s_h.c |  79 ++++++
 .../mips/system/ase/dsp/test_64_dsp_r1_extrv_w.c   |  59 ++++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_insv.c  |  26 ++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_lbux.c  |  27 ++
 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_ldx.c |  27 ++
 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_lhx.c |  27 ++
 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_lwx.c |  27 ++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_madd.c  |  33 +++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_maddu.c |  33 +++
 .../system/ase/dsp/test_64_dsp_r1_maq_s_l_pwl.c    |  56 ++++
 .../system/ase/dsp/test_64_dsp_r1_maq_s_l_pwr.c    |  56 ++++
 .../system/ase/dsp/test_64_dsp_r1_maq_s_w_phl.c    |  60 ++++
 .../system/ase/dsp/test_64_dsp_r1_maq_s_w_phr.c    |  60 ++++
 .../system/ase/dsp/test_64_dsp_r1_maq_s_w_qhll.c   |  62 +++++
 .../system/ase/dsp/test_64_dsp_r1_maq_s_w_qhlr.c   |  62 +++++
 .../system/ase/dsp/test_64_dsp_r1_maq_s_w_qhrl.c   |  63 +++++
 .../system/ase/dsp/test_64_dsp_r1_maq_s_w_qhrr.c   |  63 +++++
 .../system/ase/dsp/test_64_dsp_r1_maq_sa_w_phl.c   |  60 ++++
 .../system/ase/dsp/test_64_dsp_r1_maq_sa_w_phr.c   |  60 ++++
 .../system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhll.c  |  62 +++++
 .../system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhlr.c  |  64 +++++
 .../system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhrl.c  |  64 +++++
 .../system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhrr.c  |  64 +++++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_mfhi.c  |  24 ++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_mflo.c  |  24 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_modsub.c    |  37 +++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_msub.c  |  32 +++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_msubu.c |  32 +++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_mthi.c  |  24 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_mthlip.c    |  61 ++++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_mtlo.c  |  22 ++
 .../system/ase/dsp/test_64_dsp_r1_muleq_s_pw_qhl.c |  56 ++++
 .../system/ase/dsp/test_64_dsp_r1_muleq_s_pw_qhr.c |  57 ++++
 .../system/ase/dsp/test_64_dsp_r1_muleq_s_w_phl.c  |  46 ++++
 .../system/ase/dsp/test_64_dsp_r1_muleq_s_w_phr.c  |  45 +++
 .../system/ase/dsp/test_64_dsp_r1_muleu_s_ph_qbl.c |  27 ++
 .../system/ase/dsp/test_64_dsp_r1_muleu_s_ph_qbr.c |  27 ++
 .../system/ase/dsp/test_64_dsp_r1_muleu_s_qh_obl.c |  30 ++
 .../system/ase/dsp/test_64_dsp_r1_muleu_s_qh_obr.c |  31 +++
 .../system/ase/dsp/test_64_dsp_r1_mulq_rs_ph.c     |  27 ++
 .../system/ase/dsp/test_64_dsp_r1_mulq_rs_qh.c     |  33 +++
 .../system/ase/dsp/test_64_dsp_r1_mulsaq_s_l_pw.c  |  59 ++++
 .../system/ase/dsp/test_64_dsp_r1_mulsaq_s_w_qh.c  |  57 ++++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_mult.c  |  26 ++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_multu.c |  26 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_packrl_ph.c |  24 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_packrl_pw.c |  24 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_pick_ob.c   |  66 +++++
 .../mips/system/ase/dsp/test_64_dsp_r1_pick_ph.c   |  60 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_pick_pw.c   |  48 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_pick_qb.c   |  43 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_pick_qh.c   |  48 ++++
 .../system/ase/dsp/test_64_dsp_r1_preceq_l_pwl.c   |  24 ++
 .../system/ase/dsp/test_64_dsp_r1_preceq_l_pwr.c   |  24 ++
 .../system/ase/dsp/test_64_dsp_r1_preceq_pw_qhl.c  |  21 ++
 .../system/ase/dsp/test_64_dsp_r1_preceq_pw_qhla.c |  23 ++
 .../system/ase/dsp/test_64_dsp_r1_preceq_pw_qhr.c  |  21 ++
 .../system/ase/dsp/test_64_dsp_r1_preceq_pw_qhra.c |  23 ++
 .../system/ase/dsp/test_64_dsp_r1_preceq_w_phl.c   |  23 ++
 .../system/ase/dsp/test_64_dsp_r1_preceq_w_phr.c   |  23 ++
 .../system/ase/dsp/test_64_dsp_r1_precequ_ph_qbl.c |  23 ++
 .../ase/dsp/test_64_dsp_r1_precequ_ph_qbla.c       |  23 ++
 .../system/ase/dsp/test_64_dsp_r1_precequ_ph_qbr.c |  23 ++
 .../ase/dsp/test_64_dsp_r1_precequ_ph_qbra.c       |  23 ++
 .../system/ase/dsp/test_64_dsp_r1_precequ_qh_obl.c |  22 ++
 .../ase/dsp/test_64_dsp_r1_precequ_qh_obla.c       |  22 ++
 .../system/ase/dsp/test_64_dsp_r1_precequ_qh_obr.c |  24 ++
 .../ase/dsp/test_64_dsp_r1_precequ_qh_obra.c       |  24 ++
 .../system/ase/dsp/test_64_dsp_r1_preceu_ph_qbl.c  |  23 ++
 .../system/ase/dsp/test_64_dsp_r1_preceu_ph_qbla.c |  23 ++
 .../system/ase/dsp/test_64_dsp_r1_preceu_ph_qbr.c  |  23 ++
 .../system/ase/dsp/test_64_dsp_r1_preceu_ph_qbra.c |  23 ++
 .../system/ase/dsp/test_64_dsp_r1_preceu_qh_obl.c  |  22 ++
 .../system/ase/dsp/test_64_dsp_r1_preceu_qh_obla.c |  22 ++
 .../system/ase/dsp/test_64_dsp_r1_preceu_qh_obr.c  |  23 ++
 .../system/ase/dsp/test_64_dsp_r1_preceu_qh_obra.c |  23 ++
 .../system/ase/dsp/test_64_dsp_r1_precr_ob_qh.c    |  25 ++
 .../ase/dsp/test_64_dsp_r1_precr_sra_qh_pw.c       |  40 +++
 .../ase/dsp/test_64_dsp_r1_precr_sra_r_qh_pw.c     |  40 +++
 .../system/ase/dsp/test_64_dsp_r1_precrq_ob_qh.c   |  25 ++
 .../system/ase/dsp/test_64_dsp_r1_precrq_ph_w.c    |  24 ++
 .../system/ase/dsp/test_64_dsp_r1_precrq_pw_l.c    |  25 ++
 .../system/ase/dsp/test_64_dsp_r1_precrq_qb_ph.c   |  24 ++
 .../system/ase/dsp/test_64_dsp_r1_precrq_qh_pw.c   |  25 ++
 .../system/ase/dsp/test_64_dsp_r1_precrq_rs_ph_w.c |  41 +++
 .../ase/dsp/test_64_dsp_r1_precrq_rs_qh_pw.c       |  43 +++
 .../ase/dsp/test_64_dsp_r1_precrqu_s_ob_qh.c       |  27 ++
 .../ase/dsp/test_64_dsp_r1_precrqu_s_qb_ph.c       |  26 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_prependd.c  |  37 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_prependw.c  |  37 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_printf.c    | 266 ++++++++++++++++++
 .../system/ase/dsp/test_64_dsp_r1_raddu_l_ob.c     |  22 ++
 .../system/ase/dsp/test_64_dsp_r1_raddu_w_qb.c     |  23 ++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_rddsp.c |  53 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_repl_ob.c   |  21 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_repl_ph.c   |  30 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_repl_pw.c   |  34 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_repl_qb.c   |  19 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_repl_qh.c   |  34 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_replv_ob.c  |  23 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_replv_ph.c  |  22 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_replv_pw.c  |  23 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_replv_qb.c  |  22 ++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_shilo.c |  29 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_shilov.c    |  31 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_shll_ob.c   |  43 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_shll_ph.c   |  43 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_shll_pw.c   |  43 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_shll_qb.c   |  26 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_shll_qh.c   |  42 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_shll_s_ph.c |  43 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_shll_s_pw.c |  43 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_shll_s_qh.c |  43 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_shll_s_w.c  |  26 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_shllv_ob.c  |  45 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_shllv_ph.c  |  27 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_shllv_pw.c  |  45 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_shllv_qb.c  |  27 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_shllv_qh.c  |  45 +++
 .../system/ase/dsp/test_64_dsp_r1_shllv_s_ph.c     |  27 ++
 .../system/ase/dsp/test_64_dsp_r1_shllv_s_pw.c     |  45 +++
 .../system/ase/dsp/test_64_dsp_r1_shllv_s_qh.c     |  45 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_shllv_s_w.c |  27 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_shra_ob.c   |  23 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_shra_ph.c   |  23 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_shra_pw.c   |  36 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_shra_qh.c   |  37 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_shra_r_ob.c |  22 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_shra_r_ph.c |  23 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_shra_r_pw.c |  36 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_shra_r_qh.c |  37 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_shra_r_w.c  |  23 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_shrav_ph.c  |  24 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_shrav_pw.c  |  38 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_shrav_qh.c  |  39 +++
 .../system/ase/dsp/test_64_dsp_r1_shrav_r_ph.c     |  24 ++
 .../system/ase/dsp/test_64_dsp_r1_shrav_r_pw.c     |  37 +++
 .../system/ase/dsp/test_64_dsp_r1_shrav_r_qh.c     |  39 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_shrav_r_w.c |  24 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_shrl_ob.c   |  38 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_shrl_qb.c   |  23 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_shrl_qh.c   |  22 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_shrlv_ob.c  |  39 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_shrlv_qb.c  |  24 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_shrlv_qh.c  |  23 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_subq_ph.c   |  27 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_subq_pw.c   |  44 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_subq_qh.c   |  26 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_subq_s_ph.c |  27 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_subq_s_pw.c |  63 +++++
 .../mips/system/ase/dsp/test_64_dsp_r1_subq_s_qh.c |  61 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_subq_s_w.c  |  27 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_subu_ob.c   |  26 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_subu_qb.c   |  27 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_subu_s_ob.c |  26 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_subu_s_qb.c |  27 ++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_wrdsp.c |  48 ++++
 .../mips/system/ase/dsp/test_64_dsp_r2_absq_s_qb.c |  42 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_addqh_ph.c  |  35 +++
 .../system/ase/dsp/test_64_dsp_r2_addqh_r_ph.c     |  35 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_addqh_r_w.c |  38 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_addqh_w.c   |  39 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_addu_ph.c   |  37 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_addu_qh.c   |  43 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_addu_s_ph.c |  37 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_addu_s_qh.c |  43 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_adduh_ob.c  |  35 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_adduh_qb.c  |  35 +++
 .../system/ase/dsp/test_64_dsp_r2_adduh_r_ob.c     |  35 +++
 .../system/ase/dsp/test_64_dsp_r2_adduh_r_qb.c     |  35 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_append.c    |  35 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_balign.c    |  35 +++
 .../system/ase/dsp/test_64_dsp_r2_cmpgdu_eq_ob.c   |  44 +++
 .../system/ase/dsp/test_64_dsp_r2_cmpgdu_eq_qb.c   |  41 +++
 .../system/ase/dsp/test_64_dsp_r2_cmpgdu_le_ob.c   |  44 +++
 .../system/ase/dsp/test_64_dsp_r2_cmpgdu_le_qb.c   |  48 ++++
 .../system/ase/dsp/test_64_dsp_r2_cmpgdu_lt_ob.c   |  44 +++
 .../system/ase/dsp/test_64_dsp_r2_cmpgdu_lt_qb.c   |  48 ++++
 .../mips/system/ase/dsp/test_64_dsp_r2_dbalign.c   |  39 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_dpa_w_ph.c  |  47 ++++
 .../mips/system/ase/dsp/test_64_dsp_r2_dpa_w_qh.c  |  56 ++++
 .../system/ase/dsp/test_64_dsp_r2_dpaqx_s_w_ph.c   |  97 +++++++
 .../system/ase/dsp/test_64_dsp_r2_dpaqx_sa_w_ph.c  |  54 ++++
 .../mips/system/ase/dsp/test_64_dsp_r2_dpax_w_ph.c |  32 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_dps_w_ph.c  |  28 ++
 .../mips/system/ase/dsp/test_64_dsp_r2_dps_w_qh.c  |  55 ++++
 .../system/ase/dsp/test_64_dsp_r2_dpsqx_s_w_ph.c   |  55 ++++
 .../system/ase/dsp/test_64_dsp_r2_dpsqx_sa_w_ph.c  |  53 ++++
 .../mips/system/ase/dsp/test_64_dsp_r2_dpsx_w_ph.c |  28 ++
 .../mips/system/ase/dsp/test_64_dsp_r2_mul_ph.c    |  50 ++++
 .../mips/system/ase/dsp/test_64_dsp_r2_mul_s_ph.c  |  67 +++++
 .../mips/system/ase/dsp/test_64_dsp_r2_mulq_rs_w.c |  40 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_mulq_s_ph.c |  26 ++
 .../mips/system/ase/dsp/test_64_dsp_r2_mulq_s_w.c  |  40 +++
 .../system/ase/dsp/test_64_dsp_r2_mulsa_w_ph.c     |  30 ++
 .../system/ase/dsp/test_64_dsp_r2_mulsaq_s_w_ph.c  |  30 ++
 .../system/ase/dsp/test_64_dsp_r2_precr_qb_ph.c    |  23 ++
 .../system/ase/dsp/test_64_dsp_r2_precr_sra_ph_w.c |  37 +++
 .../ase/dsp/test_64_dsp_r2_precr_sra_r_ph_w.c      |  37 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_prepend.c   |  35 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_printf.c    | 266 ++++++++++++++++++
 .../mips/system/ase/dsp/test_64_dsp_r2_shra_qb.c   |  35 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_shra_r_qb.c |  35 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_shrav_ob.c  |  22 ++
 .../mips/system/ase/dsp/test_64_dsp_r2_shrav_qb.c  |  37 +++
 .../system/ase/dsp/test_64_dsp_r2_shrav_r_ob.c     |  22 ++
 .../system/ase/dsp/test_64_dsp_r2_shrav_r_qb.c     |  37 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_shrl_ph.c   |  22 ++
 .../mips/system/ase/dsp/test_64_dsp_r2_shrlv_ph.c  |  23 ++
 .../mips/system/ase/dsp/test_64_dsp_r2_subqh_ph.c  |  23 ++
 .../system/ase/dsp/test_64_dsp_r2_subqh_r_ph.c     |  23 ++
 .../mips/system/ase/dsp/test_64_dsp_r2_subqh_r_w.c |  23 ++
 .../mips/system/ase/dsp/test_64_dsp_r2_subqh_w.c   |  23 ++
 .../mips/system/ase/dsp/test_64_dsp_r2_subu_ph.c   |  26 ++
 .../mips/system/ase/dsp/test_64_dsp_r2_subu_qh.c   |  24 ++
 .../mips/system/ase/dsp/test_64_dsp_r2_subu_s_ph.c |  25 ++
 .../mips/system/ase/dsp/test_64_dsp_r2_subu_s_qh.c |  42 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_subuh_ob.c  |  36 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_subuh_qb.c  |  23 ++
 .../system/ase/dsp/test_64_dsp_r2_subuh_r_ob.c     |  23 ++
 .../system/ase/dsp/test_64_dsp_r2_subuh_r_qb.c     |  37 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_absq_s_ph.c   |  31 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_absq_s_w.c    |  37 +++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_addq_ph.c |  46 ++++
 .../mips/user/ase/dsp/test_32_dsp_r1_addq_s_ph.c   |  69 +++++
 .../mips/user/ase/dsp/test_32_dsp_r1_addq_s_w.c    |  44 +++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addsc.c |  33 +++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_addu_qb.c |  35 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_addu_s_qb.c   |  35 +++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addwc.c |  49 ++++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_bitrev.c  |  20 ++
 .../mips/user/ase/dsp/test_32_dsp_r1_bposge32.c    |  44 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_cmp_eq_ph.c   |  35 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_cmp_le_ph.c   |  35 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_cmp_lt_ph.c   |  35 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_cmpgu_eq_qb.c |  31 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_cmpgu_le_qb.c |  31 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_cmpgu_lt_qb.c |  31 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_cmpu_eq_qb.c  |  35 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_cmpu_le_qb.c  |  35 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_cmpu_lt_qb.c  |  35 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_dpaq_s_w_ph.c |  31 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_dpaq_sa_l_w.c | 125 +++++++++
 .../mips/user/ase/dsp/test_32_dsp_r1_dpau_h_qbl.c  |  27 ++
 .../mips/user/ase/dsp/test_32_dsp_r1_dpau_h_qbr.c  |  27 ++
 .../mips/user/ase/dsp/test_32_dsp_r1_dpsq_s_w_ph.c |  45 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_dpsq_sa_l_w.c |  55 ++++
 .../mips/user/ase/dsp/test_32_dsp_r1_dpsu_h_qbl.c  |  27 ++
 .../mips/user/ase/dsp/test_32_dsp_r1_dpsu_h_qbr.c  |  27 ++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extp.c  |  62 +++++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_extpdp.c  |  64 +++++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_extpdpv.c |  47 ++++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extpv.c |  45 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_extr_r_w.c    |  94 +++++++
 .../mips/user/ase/dsp/test_32_dsp_r1_extr_rs_w.c   | 117 ++++++++
 .../mips/user/ase/dsp/test_32_dsp_r1_extr_s_h.c    |  86 ++++++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_extr_w.c  |  94 +++++++
 .../mips/user/ase/dsp/test_32_dsp_r1_extrv_r_w.c   |  79 ++++++
 .../mips/user/ase/dsp/test_32_dsp_r1_extrv_rs_w.c  |  77 ++++++
 .../mips/user/ase/dsp/test_32_dsp_r1_extrv_s_h.c   |  88 ++++++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_extrv_w.c |  80 ++++++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_insv.c  |  36 +++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_lbux.c  |  25 ++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_lhx.c   |  25 ++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_lwx.c   |  25 ++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_madd.c  |  31 +++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_maddu.c |  31 +++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_main.c  |   6 +
 .../mips/user/ase/dsp/test_32_dsp_r1_maq_s_w_phl.c |  55 ++++
 .../mips/user/ase/dsp/test_32_dsp_r1_maq_s_w_phr.c |  55 ++++
 .../user/ase/dsp/test_32_dsp_r1_maq_sa_w_phl.c     |  55 ++++
 .../user/ase/dsp/test_32_dsp_r1_maq_sa_w_phr.c     |  55 ++++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mfhi.c  |  21 ++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mflo.c  |  21 ++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_modsub.c  |  30 ++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_msub.c  |  30 ++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_msubu.c |  30 ++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mthi.c  |  21 ++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_mthlip.c  |  58 ++++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mtlo.c  |  21 ++
 .../user/ase/dsp/test_32_dsp_r1_muleq_s_w_phl.c    |  41 +++
 .../user/ase/dsp/test_32_dsp_r1_muleq_s_w_phr.c    |  40 +++
 .../user/ase/dsp/test_32_dsp_r1_muleu_s_ph_qbl.c   |  25 ++
 .../user/ase/dsp/test_32_dsp_r1_muleu_s_ph_qbr.c   |  25 ++
 .../mips/user/ase/dsp/test_32_dsp_r1_mulq_rs_ph.c  |  42 +++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mult.c  |  24 ++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_multu.c |  24 ++
 .../mips/user/ase/dsp/test_32_dsp_r1_packrl_ph.c   |  21 ++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_pick_ph.c |  49 ++++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_pick_qb.c |  36 +++
 .../user/ase/dsp/test_32_dsp_r1_preceq_w_phl.c     |  20 ++
 .../user/ase/dsp/test_32_dsp_r1_preceq_w_phr.c     |  20 ++
 .../user/ase/dsp/test_32_dsp_r1_precequ_ph_qbl.c   |  20 ++
 .../user/ase/dsp/test_32_dsp_r1_precequ_ph_qbla.c  |  20 ++
 .../user/ase/dsp/test_32_dsp_r1_precequ_ph_qbr.c   |  20 ++
 .../user/ase/dsp/test_32_dsp_r1_precequ_ph_qbra.c  |  20 ++
 .../user/ase/dsp/test_32_dsp_r1_preceu_ph_qbl.c    |  20 ++
 .../user/ase/dsp/test_32_dsp_r1_preceu_ph_qbla.c   |  20 ++
 .../user/ase/dsp/test_32_dsp_r1_preceu_ph_qbr.c    |  20 ++
 .../user/ase/dsp/test_32_dsp_r1_preceu_ph_qbra.c   |  20 ++
 .../mips/user/ase/dsp/test_32_dsp_r1_precrq_ph_w.c |  21 ++
 .../user/ase/dsp/test_32_dsp_r1_precrq_qb_ph.c     |  21 ++
 .../user/ase/dsp/test_32_dsp_r1_precrq_rs_ph_w.c   |  51 ++++
 .../user/ase/dsp/test_32_dsp_r1_precrqu_s_qb_ph.c  |  24 ++
 .../mips/user/ase/dsp/test_32_dsp_r1_raddu_w_qb.c  |  20 ++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_rddsp.c |  46 ++++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_repl_ph.c |  23 ++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_repl_qb.c |  16 ++
 .../mips/user/ase/dsp/test_32_dsp_r1_replv_ph.c    |  19 ++
 .../mips/user/ase/dsp/test_32_dsp_r1_replv_qb.c    |  19 ++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shilo.c |  45 +++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_shilov.c  |  49 ++++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_shll_ph.c |  55 ++++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_shll_qb.c |  55 ++++
 .../mips/user/ase/dsp/test_32_dsp_r1_shll_s_ph.c   |  24 ++
 .../mips/user/ase/dsp/test_32_dsp_r1_shll_s_w.c    |  52 ++++
 .../mips/user/ase/dsp/test_32_dsp_r1_shllv_ph.c    |  40 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_shllv_qb.c    |  38 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_shllv_s_ph.c  |  40 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_shllv_s_w.c   |  40 +++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_shra_ph.c |  30 ++
 .../mips/user/ase/dsp/test_32_dsp_r1_shra_r_ph.c   |  30 ++
 .../mips/user/ase/dsp/test_32_dsp_r1_shra_r_w.c    |  30 ++
 .../mips/user/ase/dsp/test_32_dsp_r1_shrav_ph.c    |  32 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_shrav_r_ph.c  |  32 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_shrav_r_w.c   |  32 +++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_shrl_qb.c |  31 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_shrlv_qb.c    |  32 +++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_subq_ph.c |  40 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_subq_s_ph.c   |  58 ++++
 .../mips/user/ase/dsp/test_32_dsp_r1_subq_s_w.c    |  74 +++++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_subu_qb.c |  25 ++
 .../mips/user/ase/dsp/test_32_dsp_r1_subu_s_qb.c   |  25 ++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_wrdsp.c |  46 ++++
 .../mips/user/ase/dsp/test_32_dsp_r2_absq_s_qb.c   |  35 +++
 .../mips/user/ase/dsp/test_32_dsp_r2_addqh_ph.c    |  30 ++
 .../mips/user/ase/dsp/test_32_dsp_r2_addqh_r_ph.c  |  30 ++
 .../mips/user/ase/dsp/test_32_dsp_r2_addqh_r_w.c   |  34 +++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r2_addqh_w.c |  34 +++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r2_addu_ph.c |  33 +++
 .../mips/user/ase/dsp/test_32_dsp_r2_addu_s_ph.c   |  33 +++
 .../mips/user/ase/dsp/test_32_dsp_r2_adduh_qb.c    |  30 ++
 .../mips/user/ase/dsp/test_32_dsp_r2_adduh_r_qb.c  |  30 ++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r2_append.c  |  30 ++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r2_balign.c  |  30 ++
 .../user/ase/dsp/test_32_dsp_r2_cmpgdu_eq_qb.c     |  37 +++
 .../user/ase/dsp/test_32_dsp_r2_cmpgdu_le_qb.c     |  37 +++
 .../user/ase/dsp/test_32_dsp_r2_cmpgdu_lt_qb.c     |  37 +++
 .../mips/user/ase/dsp/test_32_dsp_r2_dpa_w_ph.c    |  44 +++
 .../user/ase/dsp/test_32_dsp_r2_dpaqx_s_w_ph.c     |  79 ++++++
 .../user/ase/dsp/test_32_dsp_r2_dpaqx_sa_w_ph.c    |  57 ++++
 .../mips/user/ase/dsp/test_32_dsp_r2_dpax_w_ph.c   |  44 +++
 .../mips/user/ase/dsp/test_32_dsp_r2_dps_w_ph.c    |  44 +++
 .../user/ase/dsp/test_32_dsp_r2_dpsqx_s_w_ph.c     |  54 ++++
 .../user/ase/dsp/test_32_dsp_r2_dpsqx_sa_w_ph.c    |  53 ++++
 .../mips/user/ase/dsp/test_32_dsp_r2_dpsx_w_ph.c   |  27 ++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r2_mul_ph.c  |  47 ++++
 .../mips/user/ase/dsp/test_32_dsp_r2_mul_s_ph.c    |  62 +++++
 .../mips/user/ase/dsp/test_32_dsp_r2_mulq_rs_w.c   |  36 +++
 .../mips/user/ase/dsp/test_32_dsp_r2_mulq_s_ph.c   |  40 +++
 .../mips/user/ase/dsp/test_32_dsp_r2_mulq_s_w.c    |  36 +++
 .../mips/user/ase/dsp/test_32_dsp_r2_mulsa_w_ph.c  |  29 ++
 .../user/ase/dsp/test_32_dsp_r2_mulsaq_s_w_ph.c    |  29 ++
 .../mips/user/ase/dsp/test_32_dsp_r2_precr_qb_ph.c |  21 ++
 .../user/ase/dsp/test_32_dsp_r2_precr_sra_ph_w.c   |  32 +++
 .../user/ase/dsp/test_32_dsp_r2_precr_sra_r_ph_w.c |  32 +++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r2_prepend.c |  30 ++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r2_shra_qb.c |  30 ++
 .../mips/user/ase/dsp/test_32_dsp_r2_shra_r_qb.c   |  30 ++
 .../mips/user/ase/dsp/test_32_dsp_r2_shrav_qb.c    |  32 +++
 .../mips/user/ase/dsp/test_32_dsp_r2_shrav_r_qb.c  |  32 +++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r2_shrl_ph.c |  20 ++
 .../mips/user/ase/dsp/test_32_dsp_r2_shrlv_ph.c    |  21 ++
 .../mips/user/ase/dsp/test_32_dsp_r2_subqh_ph.c    |  21 ++
 .../mips/user/ase/dsp/test_32_dsp_r2_subqh_r_ph.c  |  21 ++
 .../mips/user/ase/dsp/test_32_dsp_r2_subqh_r_w.c   |  21 ++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r2_subqh_w.c |  21 ++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r2_subu_ph.c |  40 +++
 .../mips/user/ase/dsp/test_32_dsp_r2_subu_s_ph.c   |  25 ++
 .../mips/user/ase/dsp/test_32_dsp_r2_subuh_qb.c    |  21 ++
 .../mips/user/ase/dsp/test_32_dsp_r2_subuh_r_qb.c  |  32 +++
 tests/tcg/mips/user/isa/r5900/test_r5900_div1.c    |  73 +++++
 tests/tcg/mips/user/isa/r5900/test_r5900_divu1.c   |  48 ++++
 tests/tcg/mips/user/isa/r5900/test_r5900_mflohi1.c |  35 +++
 tests/tcg/mips/user/isa/r5900/test_r5900_mtlohi1.c |  40 +++
 tests/tcg/mips/user/isa/r5900/test_r5900_mult.c    |  76 +++++
 tests/tcg/mips/user/isa/r5900/test_r5900_multu.c   |  68 +++++
 976 files changed, 19288 insertions(+), 20087 deletions(-)
 delete mode 100644 tests/tcg/mips/mips32-dsp/Makefile
 delete mode 100644 tests/tcg/mips/mips32-dsp/absq_s_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/absq_s_w.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/addq_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/addq_s_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/addq_s_w.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/addsc.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/addu_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/addu_s_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/addwc.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/bitrev.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/bposge32.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/cmp_eq_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/cmp_le_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/cmp_lt_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/cmpgu_eq_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/cmpgu_le_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/cmpgu_lt_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/cmpu_eq_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/cmpu_le_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/cmpu_lt_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/dpaq_s_w_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/dpaq_sa_l_w.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/dpau_h_qbl.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/dpau_h_qbr.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/dpsq_s_w_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/dpsq_sa_l_w.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/dpsu_h_qbl.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/dpsu_h_qbr.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/extp.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/extpdp.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/extpdpv.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/extpv.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/extr_r_w.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/extr_rs_w.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/extr_s_h.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/extr_w.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/extrv_r_w.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/extrv_rs_w.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/extrv_s_h.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/extrv_w.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/insv.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/lbux.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/lhx.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/lwx.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/madd.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/maddu.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/main.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/maq_s_w_phl.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/maq_s_w_phr.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/maq_sa_w_phl.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/maq_sa_w_phr.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/mfhi.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/mflo.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/modsub.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/msub.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/msubu.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/mthi.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/mthlip.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/mtlo.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/muleq_s_w_phl.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/muleq_s_w_phr.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/muleu_s_ph_qbl.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/muleu_s_ph_qbr.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/mulq_rs_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/mult.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/multu.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/packrl_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/pick_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/pick_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/preceq_w_phl.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/preceq_w_phr.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/precequ_ph_qbl.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/precequ_ph_qbla.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/precequ_ph_qbr.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/precequ_ph_qbra.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/preceu_ph_qbl.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/preceu_ph_qbla.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/preceu_ph_qbr.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/preceu_ph_qbra.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/precrq_ph_w.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/precrq_qb_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/precrq_rs_ph_w.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/precrqu_s_qb_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/raddu_w_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/rddsp.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/repl_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/repl_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/replv_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/replv_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/shilo.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/shilov.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/shll_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/shll_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/shll_s_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/shll_s_w.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/shllv_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/shllv_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/shllv_s_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/shllv_s_w.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/shra_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/shra_r_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/shra_r_w.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/shrav_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/shrav_r_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/shrav_r_w.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/shrl_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/shrlv_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/subq_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/subq_s_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/subq_s_w.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/subu_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/subu_s_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/wrdsp.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/Makefile
 delete mode 100644 tests/tcg/mips/mips32-dspr2/absq_s_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/addqh_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/addqh_r_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/addqh_r_w.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/addqh_w.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/addu_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/addu_s_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/adduh_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/adduh_r_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/append.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/balign.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/cmpgdu_eq_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/cmpgdu_le_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/cmpgdu_lt_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/dpa_w_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/dpaqx_s_w_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/dpaqx_sa_w_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/dpax_w_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/dps_w_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/dpsqx_s_w_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/dpsqx_sa_w_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/dpsx_w_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/mul_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/mul_s_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/mulq_rs_w.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/mulq_s_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/mulq_s_w.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/mulsa_w_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/mulsaq_s_w_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/precr_qb_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/precr_sra_ph_w.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/precr_sra_r_ph_w.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/prepend.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/shra_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/shra_r_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/shrav_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/shrav_r_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/shrl_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/shrlv_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/subqh_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/subqh_r_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/subqh_r_w.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/subqh_w.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/subu_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/subu_s_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/subuh_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/subuh_r_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/Makefile
 delete mode 100644 tests/tcg/mips/mips64-dsp/absq_s_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/absq_s_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/absq_s_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/absq_s_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/absq_s_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/addq_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/addq_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/addq_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/addq_s_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/addq_s_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/addq_s_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/addq_s_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/addsc.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/addu_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/addu_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/addu_s_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/addu_s_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/addwc.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/bitrev.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/bposge32.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/bposge64.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmp_eq_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmp_eq_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmp_eq_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmp_le_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmp_le_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmp_le_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmp_lt_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmp_lt_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmp_lt_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmpgu_eq_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmpgu_eq_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmpgu_le_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmpgu_le_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmpgu_lt_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmpgu_lt_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmpu_eq_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmpu_eq_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmpu_le_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmpu_le_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmpu_lt_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmpu_lt_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dappend.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dextp.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dextpdp.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dextpdpv.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dextpv.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dextr_l.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dextr_r_l.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dextr_r_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dextr_rs_l.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dextr_rs_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dextr_s_h.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dextr_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dextrv_l.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dextrv_r_l.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dextrv_r_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dextrv_rs_l.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dextrv_rs_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dextrv_s_h.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dextrv_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dinsv.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dmadd.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dmaddu.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dmsub.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dmsubu.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dmthlip.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dpaq_s_w_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dpaq_s_w_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dpaq_sa_l_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dpaq_sa_l_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dpau_h_obl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dpau_h_obr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dpau_h_qbl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dpau_h_qbr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dpsq_s_w_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dpsq_s_w_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dpsq_sa_l_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dpsq_sa_l_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dpsu_h_obl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dpsu_h_obr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dpsu_h_qbl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dpsu_h_qbr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dshilo.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dshilov.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/extp.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/extpdp.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/extpdpv.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/extpv.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/extr_r_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/extr_rs_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/extr_s_h.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/extr_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/extrv_r_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/extrv_rs_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/extrv_s_h.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/extrv_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/head.S
 delete mode 100644 tests/tcg/mips/mips64-dsp/insv.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/io.h
 delete mode 100644 tests/tcg/mips/mips64-dsp/lbux.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/ldx.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/lhx.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/lwx.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/madd.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/maddu.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/maq_s_l_pwl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/maq_s_l_pwr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/maq_s_w_phl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/maq_s_w_phr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/maq_s_w_qhll.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/maq_s_w_qhlr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/maq_s_w_qhrl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/maq_s_w_qhrr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/maq_sa_w_phl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/maq_sa_w_phr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/maq_sa_w_qhll.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/maq_sa_w_qhlr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/maq_sa_w_qhrl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/maq_sa_w_qhrr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/mfhi.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/mflo.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/mips_boot.lds
 delete mode 100644 tests/tcg/mips/mips64-dsp/modsub.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/msub.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/msubu.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/mthi.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/mthlip.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/mtlo.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/muleq_s_pw_qhl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/muleq_s_pw_qhr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/muleq_s_w_phl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/muleq_s_w_phr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/muleu_s_ph_qbl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/muleu_s_ph_qbr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/muleu_s_qh_obl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/muleu_s_qh_obr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/mulq_rs_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/mulq_rs_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/mulsaq_s_l_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/mulsaq_s_w_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/mult.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/multu.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/packrl_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/packrl_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/pick_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/pick_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/pick_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/pick_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/pick_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/preceq_l_pwl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/preceq_l_pwr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/preceq_pw_qhl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/preceq_pw_qhla.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/preceq_pw_qhr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/preceq_pw_qhra.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/preceq_w_phl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/preceq_w_phr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precequ_ph_qbl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precequ_ph_qbla.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precequ_ph_qbr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precequ_ph_qbra.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precequ_qh_obl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precequ_qh_obla.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precequ_qh_obr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precequ_qh_obra.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/preceu_ph_qbl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/preceu_ph_qbla.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/preceu_ph_qbr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/preceu_ph_qbra.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/preceu_qh_obl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/preceu_qh_obla.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/preceu_qh_obr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/preceu_qh_obra.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precr_ob_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precr_sra_qh_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precr_sra_r_qh_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precrq_ob_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precrq_ph_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precrq_pw_l.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precrq_qb_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precrq_qh_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precrq_rs_ph_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precrq_rs_qh_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precrqu_s_ob_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precrqu_s_qb_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/prependd.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/prependw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/printf.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/raddu_l_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/raddu_w_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/rddsp.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/repl_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/repl_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/repl_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/repl_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/repl_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/replv_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/replv_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/replv_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/replv_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shilo.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shilov.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shll_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shll_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shll_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shll_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shll_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shll_s_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shll_s_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shll_s_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shll_s_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shllv_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shllv_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shllv_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shllv_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shllv_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shllv_s_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shllv_s_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shllv_s_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shllv_s_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shra_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shra_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shra_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shra_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shra_r_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shra_r_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shra_r_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shra_r_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shra_r_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shrav_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shrav_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shrav_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shrav_r_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shrav_r_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shrav_r_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shrav_r_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shrl_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shrl_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shrl_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shrlv_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shrlv_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shrlv_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/subq_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/subq_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/subq_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/subq_s_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/subq_s_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/subq_s_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/subq_s_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/subu_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/subu_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/subu_s_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/subu_s_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/wrdsp.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/.directory
 delete mode 100644 tests/tcg/mips/mips64-dspr2/Makefile
 delete mode 100644 tests/tcg/mips/mips64-dspr2/absq_s_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/addqh_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/addqh_r_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/addqh_r_w.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/addqh_w.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/addu_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/addu_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/addu_s_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/addu_s_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/adduh_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/adduh_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/adduh_r_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/adduh_r_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/append.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/balign.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/cmpgdu_eq_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/cmpgdu_eq_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/cmpgdu_le_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/cmpgdu_le_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/cmpgdu_lt_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/cmpgdu_lt_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/dbalign.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/dpa_w_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/dpa_w_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/dpaqx_s_w_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/dpaqx_sa_w_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/dpax_w_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/dps_w_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/dps_w_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/dpsqx_s_w_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/dpsqx_sa_w_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/dpsx_w_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/head.S
 delete mode 100644 tests/tcg/mips/mips64-dspr2/io.h
 delete mode 100644 tests/tcg/mips/mips64-dspr2/mips_boot.lds
 delete mode 100644 tests/tcg/mips/mips64-dspr2/mul_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/mul_s_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/mulq_rs_w.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/mulq_s_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/mulq_s_w.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/mulsa_w_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/mulsaq_s_w_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/precr_qb_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/precr_sra_ph_w.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/precr_sra_r_ph_w.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/prepend.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/printf.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/shra_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/shra_r_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/shrav_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/shrav_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/shrav_r_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/shrav_r_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/shrl_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/shrlv_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/subqh_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/subqh_r_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/subqh_r_w.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/subqh_w.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/subu_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/subu_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/subu_s_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/subu_s_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/subuh_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/subuh_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/subuh_r_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/subuh_r_qb.c
 delete mode 100644 tests/tcg/mips/mipsr5900/Makefile
 delete mode 100644 tests/tcg/mips/mipsr5900/div1.c
 delete mode 100644 tests/tcg/mips/mipsr5900/divu1.c
 delete mode 100644 tests/tcg/mips/mipsr5900/mflohi1.c
 delete mode 100644 tests/tcg/mips/mipsr5900/mtlohi1.c
 delete mode 100644 tests/tcg/mips/mipsr5900/mult.c
 delete mode 100644 tests/tcg/mips/mipsr5900/multu.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_absq_s_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_absq_s_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_absq_s_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_absq_s_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_absq_s_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_s_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_s_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_s_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_s_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addsc.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addu_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addu_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addu_s_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addu_s_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addwc.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_bitrev.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_bposge32.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_bposge64.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_eq_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_eq_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_eq_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_le_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_le_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_le_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_lt_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_lt_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_lt_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_eq_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_eq_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_le_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_le_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_lt_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_lt_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_eq_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_eq_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_le_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_le_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_lt_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_lt_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dappend.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextp.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextpdp.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextpdpv.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextpv.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_l.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_r_l.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_r_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_rs_l.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_rs_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_s_h.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_l.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_r_l.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_r_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_rs_l.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_rs_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_s_h.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dinsv.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dmadd.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dmaddu.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dmsub.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dmsubu.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dmthlip.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpaq_s_w_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpaq_s_w_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpaq_sa_l_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpaq_sa_l_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpau_h_obl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpau_h_obr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpau_h_qbl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpau_h_qbr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsq_s_w_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsq_s_w_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsq_sa_l_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsq_sa_l_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsu_h_obl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsu_h_obr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsu_h_qbl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsu_h_qbr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dshilo.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dshilov.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extp.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extpdp.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extpdpv.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extpv.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extr_r_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extr_rs_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extr_s_h.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extr_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extrv_r_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extrv_rs_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extrv_s_h.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extrv_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_insv.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_lbux.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_ldx.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_lhx.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_lwx.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_madd.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maddu.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_l_pwl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_l_pwr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_phl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_phr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_qhll.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_qhlr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_qhrl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_qhrr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_phl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_phr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhll.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhlr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhrl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhrr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mfhi.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mflo.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_modsub.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_msub.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_msubu.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mthi.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mthlip.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mtlo.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleq_s_pw_qhl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleq_s_pw_qhr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleq_s_w_phl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleq_s_w_phr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleu_s_ph_qbl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleu_s_ph_qbr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleu_s_qh_obl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleu_s_qh_obr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mulq_rs_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mulq_rs_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mulsaq_s_l_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mulsaq_s_w_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mult.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_multu.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_packrl_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_packrl_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_pick_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_pick_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_pick_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_pick_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_pick_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_l_pwl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_l_pwr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_pw_qhl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_pw_qhla.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_pw_qhr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_pw_qhra.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_w_phl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_w_phr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_ph_qbl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_ph_qbla.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_ph_qbr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_ph_qbra.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_qh_obl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_qh_obla.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_qh_obr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_qh_obra.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_ph_qbl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_ph_qbla.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_ph_qbr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_ph_qbra.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_qh_obl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_qh_obla.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_qh_obr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_qh_obra.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precr_ob_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precr_sra_qh_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precr_sra_r_qh_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_ob_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_ph_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_pw_l.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_qb_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_qh_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_rs_ph_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_rs_qh_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrqu_s_ob_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrqu_s_qb_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_prependd.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_prependw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_printf.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_raddu_l_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_raddu_w_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_rddsp.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_repl_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_repl_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_repl_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_repl_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_repl_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_replv_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_replv_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_replv_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_replv_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shilo.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shilov.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_s_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_s_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_s_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_s_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_s_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_s_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_s_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_s_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_r_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_r_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_r_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_r_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_r_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_r_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_r_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_r_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_r_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrl_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrl_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrl_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrlv_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrlv_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrlv_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_s_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_s_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_s_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_s_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subu_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subu_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subu_s_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subu_s_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_wrdsp.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_absq_s_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addqh_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addqh_r_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addqh_r_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addqh_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addu_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addu_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addu_s_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addu_s_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_adduh_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_adduh_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_adduh_r_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_adduh_r_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_append.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_balign.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_eq_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_eq_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_le_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_le_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_lt_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_lt_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dbalign.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpa_w_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpa_w_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpaqx_s_w_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpaqx_sa_w_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpax_w_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dps_w_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dps_w_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpsqx_s_w_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpsqx_sa_w_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpsx_w_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mul_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mul_s_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mulq_rs_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mulq_s_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mulq_s_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mulsa_w_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mulsaq_s_w_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_precr_qb_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_precr_sra_ph_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_precr_sra_r_ph_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_prepend.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_printf.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shra_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shra_r_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrav_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrav_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrav_r_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrav_r_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrl_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrlv_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subqh_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subqh_r_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subqh_r_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subqh_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subu_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subu_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subu_s_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subu_s_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subuh_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subuh_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subuh_r_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subuh_r_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_absq_s_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_absq_s_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addq_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addq_s_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addq_s_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addsc.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addu_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addu_s_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addwc.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_bitrev.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_bposge32.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmp_eq_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmp_le_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmp_lt_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpgu_eq_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpgu_le_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpgu_lt_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpu_eq_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpu_le_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpu_lt_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpaq_s_w_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpaq_sa_l_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpau_h_qbl.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpau_h_qbr.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpsq_s_w_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpsq_sa_l_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpsu_h_qbl.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpsu_h_qbr.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extp.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extpdp.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extpdpv.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extpv.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extr_r_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extr_rs_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extr_s_h.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extr_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extrv_r_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extrv_rs_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extrv_s_h.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extrv_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_insv.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_lbux.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_lhx.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_lwx.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_madd.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_maddu.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_main.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_maq_s_w_phl.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_maq_s_w_phr.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_maq_sa_w_phl.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_maq_sa_w_phr.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mfhi.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mflo.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_modsub.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_msub.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_msubu.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mthi.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mthlip.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mtlo.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_muleq_s_w_phl.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_muleq_s_w_phr.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_muleu_s_ph_qbl.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_muleu_s_ph_qbr.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mulq_rs_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mult.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_multu.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_packrl_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_pick_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_pick_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceq_w_phl.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceq_w_phr.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precequ_ph_qbl.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precequ_ph_qbla.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precequ_ph_qbr.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precequ_ph_qbra.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceu_ph_qbl.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceu_ph_qbla.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceu_ph_qbr.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceu_ph_qbra.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precrq_ph_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precrq_qb_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precrq_rs_ph_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precrqu_s_qb_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_raddu_w_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_rddsp.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_repl_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_repl_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_replv_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_replv_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shilo.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shilov.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shll_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shll_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shll_s_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shll_s_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shllv_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shllv_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shllv_s_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shllv_s_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shra_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shra_r_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shra_r_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shrav_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shrav_r_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shrav_r_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shrl_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shrlv_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_subq_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_subq_s_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_subq_s_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_subu_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_subu_s_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_wrdsp.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_absq_s_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addqh_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addqh_r_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addqh_r_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addqh_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addu_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addu_s_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_adduh_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_adduh_r_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_append.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_balign.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_cmpgdu_eq_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_cmpgdu_le_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_cmpgdu_lt_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpa_w_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpaqx_s_w_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpaqx_sa_w_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpax_w_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dps_w_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpsqx_s_w_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpsqx_sa_w_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpsx_w_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mul_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mul_s_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mulq_rs_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mulq_s_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mulq_s_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mulsa_w_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mulsaq_s_w_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_precr_qb_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_precr_sra_ph_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_precr_sra_r_ph_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_prepend.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shra_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shra_r_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shrav_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shrav_r_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shrl_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shrlv_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subqh_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subqh_r_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subqh_r_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subqh_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subu_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subu_s_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subuh_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subuh_r_qb.c
 create mode 100644 tests/tcg/mips/user/isa/r5900/test_r5900_div1.c
 create mode 100644 tests/tcg/mips/user/isa/r5900/test_r5900_divu1.c
 create mode 100644 tests/tcg/mips/user/isa/r5900/test_r5900_mflohi1.c
 create mode 100644 tests/tcg/mips/user/isa/r5900/test_r5900_mtlohi1.c
 create mode 100644 tests/tcg/mips/user/isa/r5900/test_r5900_mult.c
 create mode 100644 tests/tcg/mips/user/isa/r5900/test_r5900_multu.c

-- 
2.7.4

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Qemu-devel] [PATCH 1/2] tests: tcg: mips: Move source files to new location
  2018-12-27 13:12 [Qemu-devel] [PATCH 0/2] tests: Reorganize MIPS TCG directories and files Aleksandar Markovic
@ 2018-12-27 13:12 ` Aleksandar Markovic
  2018-12-31 19:43   ` Philippe Mathieu-Daudé
  2019-01-01 22:19   ` Philippe Mathieu-Daudé
  2018-12-27 13:13 ` [Qemu-devel] [PATCH 2/2] tests: tcg: mips: Remove old directories after reorganization Aleksandar Markovic
                   ` (2 subsequent siblings)
  3 siblings, 2 replies; 10+ messages in thread
From: Aleksandar Markovic @ 2018-12-27 13:12 UTC (permalink / raw)
  To: qemu-devel; +Cc: alex.bennee, noring, aurelien, amarkovic, smarkovic, arikalo

From: Aleksandar Markovic <amarkovic@wavecomp.com>

New directory organization is as follows:

tests
  tcg
    mips
      user
        isa
          r5900
        ase
          dsp
      system
        ase
          dsp

New file names are unique within tests/tcg/mips directory, to
avoid potential name colision problems.

There will be new subdirectories in near future, for example:

tests/tcg/mips/user/isa/nanomips
tests/tcg/mips/user/ase/msa
tests/tcg/mips/user/ase/mxu

etc.

Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
---
 tests/tcg/mips/mips32-dsp/absq_s_ph.c              |  31 ---
 tests/tcg/mips/mips32-dsp/absq_s_w.c               |  37 ---
 tests/tcg/mips/mips32-dsp/addq_ph.c                |  46 ----
 tests/tcg/mips/mips32-dsp/addq_s_ph.c              |  69 ------
 tests/tcg/mips/mips32-dsp/addq_s_w.c               |  44 ----
 tests/tcg/mips/mips32-dsp/addsc.c                  |  33 ---
 tests/tcg/mips/mips32-dsp/addu_qb.c                |  35 ---
 tests/tcg/mips/mips32-dsp/addu_s_qb.c              |  35 ---
 tests/tcg/mips/mips32-dsp/addwc.c                  |  49 ----
 tests/tcg/mips/mips32-dsp/bitrev.c                 |  20 --
 tests/tcg/mips/mips32-dsp/bposge32.c               |  44 ----
 tests/tcg/mips/mips32-dsp/cmp_eq_ph.c              |  35 ---
 tests/tcg/mips/mips32-dsp/cmp_le_ph.c              |  35 ---
 tests/tcg/mips/mips32-dsp/cmp_lt_ph.c              |  35 ---
 tests/tcg/mips/mips32-dsp/cmpgu_eq_qb.c            |  31 ---
 tests/tcg/mips/mips32-dsp/cmpgu_le_qb.c            |  31 ---
 tests/tcg/mips/mips32-dsp/cmpgu_lt_qb.c            |  31 ---
 tests/tcg/mips/mips32-dsp/cmpu_eq_qb.c             |  35 ---
 tests/tcg/mips/mips32-dsp/cmpu_le_qb.c             |  35 ---
 tests/tcg/mips/mips32-dsp/cmpu_lt_qb.c             |  35 ---
 tests/tcg/mips/mips32-dsp/dpaq_s_w_ph.c            |  31 ---
 tests/tcg/mips/mips32-dsp/dpaq_sa_l_w.c            | 125 ----------
 tests/tcg/mips/mips32-dsp/dpau_h_qbl.c             |  27 ---
 tests/tcg/mips/mips32-dsp/dpau_h_qbr.c             |  27 ---
 tests/tcg/mips/mips32-dsp/dpsq_s_w_ph.c            |  45 ----
 tests/tcg/mips/mips32-dsp/dpsq_sa_l_w.c            |  55 -----
 tests/tcg/mips/mips32-dsp/dpsu_h_qbl.c             |  27 ---
 tests/tcg/mips/mips32-dsp/dpsu_h_qbr.c             |  27 ---
 tests/tcg/mips/mips32-dsp/extp.c                   |  62 -----
 tests/tcg/mips/mips32-dsp/extpdp.c                 |  64 -----
 tests/tcg/mips/mips32-dsp/extpdpv.c                |  47 ----
 tests/tcg/mips/mips32-dsp/extpv.c                  |  45 ----
 tests/tcg/mips/mips32-dsp/extr_r_w.c               |  94 --------
 tests/tcg/mips/mips32-dsp/extr_rs_w.c              | 117 ---------
 tests/tcg/mips/mips32-dsp/extr_s_h.c               |  86 -------
 tests/tcg/mips/mips32-dsp/extr_w.c                 |  94 --------
 tests/tcg/mips/mips32-dsp/extrv_r_w.c              |  79 ------
 tests/tcg/mips/mips32-dsp/extrv_rs_w.c             |  77 ------
 tests/tcg/mips/mips32-dsp/extrv_s_h.c              |  88 -------
 tests/tcg/mips/mips32-dsp/extrv_w.c                |  80 -------
 tests/tcg/mips/mips32-dsp/insv.c                   |  36 ---
 tests/tcg/mips/mips32-dsp/lbux.c                   |  25 --
 tests/tcg/mips/mips32-dsp/lhx.c                    |  25 --
 tests/tcg/mips/mips32-dsp/lwx.c                    |  25 --
 tests/tcg/mips/mips32-dsp/madd.c                   |  31 ---
 tests/tcg/mips/mips32-dsp/maddu.c                  |  31 ---
 tests/tcg/mips/mips32-dsp/main.c                   |   6 -
 tests/tcg/mips/mips32-dsp/maq_s_w_phl.c            |  55 -----
 tests/tcg/mips/mips32-dsp/maq_s_w_phr.c            |  55 -----
 tests/tcg/mips/mips32-dsp/maq_sa_w_phl.c           |  55 -----
 tests/tcg/mips/mips32-dsp/maq_sa_w_phr.c           |  55 -----
 tests/tcg/mips/mips32-dsp/mfhi.c                   |  21 --
 tests/tcg/mips/mips32-dsp/mflo.c                   |  21 --
 tests/tcg/mips/mips32-dsp/modsub.c                 |  30 ---
 tests/tcg/mips/mips32-dsp/msub.c                   |  30 ---
 tests/tcg/mips/mips32-dsp/msubu.c                  |  30 ---
 tests/tcg/mips/mips32-dsp/mthi.c                   |  21 --
 tests/tcg/mips/mips32-dsp/mthlip.c                 |  58 -----
 tests/tcg/mips/mips32-dsp/mtlo.c                   |  21 --
 tests/tcg/mips/mips32-dsp/muleq_s_w_phl.c          |  41 ----
 tests/tcg/mips/mips32-dsp/muleq_s_w_phr.c          |  40 ----
 tests/tcg/mips/mips32-dsp/muleu_s_ph_qbl.c         |  25 --
 tests/tcg/mips/mips32-dsp/muleu_s_ph_qbr.c         |  25 --
 tests/tcg/mips/mips32-dsp/mulq_rs_ph.c             |  42 ----
 tests/tcg/mips/mips32-dsp/mult.c                   |  24 --
 tests/tcg/mips/mips32-dsp/multu.c                  |  24 --
 tests/tcg/mips/mips32-dsp/packrl_ph.c              |  21 --
 tests/tcg/mips/mips32-dsp/pick_ph.c                |  49 ----
 tests/tcg/mips/mips32-dsp/pick_qb.c                |  36 ---
 tests/tcg/mips/mips32-dsp/preceq_w_phl.c           |  20 --
 tests/tcg/mips/mips32-dsp/preceq_w_phr.c           |  20 --
 tests/tcg/mips/mips32-dsp/precequ_ph_qbl.c         |  20 --
 tests/tcg/mips/mips32-dsp/precequ_ph_qbla.c        |  20 --
 tests/tcg/mips/mips32-dsp/precequ_ph_qbr.c         |  20 --
 tests/tcg/mips/mips32-dsp/precequ_ph_qbra.c        |  20 --
 tests/tcg/mips/mips32-dsp/preceu_ph_qbl.c          |  20 --
 tests/tcg/mips/mips32-dsp/preceu_ph_qbla.c         |  20 --
 tests/tcg/mips/mips32-dsp/preceu_ph_qbr.c          |  20 --
 tests/tcg/mips/mips32-dsp/preceu_ph_qbra.c         |  20 --
 tests/tcg/mips/mips32-dsp/precrq_ph_w.c            |  21 --
 tests/tcg/mips/mips32-dsp/precrq_qb_ph.c           |  21 --
 tests/tcg/mips/mips32-dsp/precrq_rs_ph_w.c         |  51 ----
 tests/tcg/mips/mips32-dsp/precrqu_s_qb_ph.c        |  24 --
 tests/tcg/mips/mips32-dsp/raddu_w_qb.c             |  20 --
 tests/tcg/mips/mips32-dsp/rddsp.c                  |  46 ----
 tests/tcg/mips/mips32-dsp/repl_ph.c                |  23 --
 tests/tcg/mips/mips32-dsp/repl_qb.c                |  16 --
 tests/tcg/mips/mips32-dsp/replv_ph.c               |  19 --
 tests/tcg/mips/mips32-dsp/replv_qb.c               |  19 --
 tests/tcg/mips/mips32-dsp/shilo.c                  |  45 ----
 tests/tcg/mips/mips32-dsp/shilov.c                 |  49 ----
 tests/tcg/mips/mips32-dsp/shll_ph.c                |  55 -----
 tests/tcg/mips/mips32-dsp/shll_qb.c                |  55 -----
 tests/tcg/mips/mips32-dsp/shll_s_ph.c              |  24 --
 tests/tcg/mips/mips32-dsp/shll_s_w.c               |  52 ----
 tests/tcg/mips/mips32-dsp/shllv_ph.c               |  40 ----
 tests/tcg/mips/mips32-dsp/shllv_qb.c               |  38 ---
 tests/tcg/mips/mips32-dsp/shllv_s_ph.c             |  40 ----
 tests/tcg/mips/mips32-dsp/shllv_s_w.c              |  40 ----
 tests/tcg/mips/mips32-dsp/shra_ph.c                |  30 ---
 tests/tcg/mips/mips32-dsp/shra_r_ph.c              |  30 ---
 tests/tcg/mips/mips32-dsp/shra_r_w.c               |  30 ---
 tests/tcg/mips/mips32-dsp/shrav_ph.c               |  32 ---
 tests/tcg/mips/mips32-dsp/shrav_r_ph.c             |  32 ---
 tests/tcg/mips/mips32-dsp/shrav_r_w.c              |  32 ---
 tests/tcg/mips/mips32-dsp/shrl_qb.c                |  31 ---
 tests/tcg/mips/mips32-dsp/shrlv_qb.c               |  32 ---
 tests/tcg/mips/mips32-dsp/subq_ph.c                |  40 ----
 tests/tcg/mips/mips32-dsp/subq_s_ph.c              |  58 -----
 tests/tcg/mips/mips32-dsp/subq_s_w.c               |  74 ------
 tests/tcg/mips/mips32-dsp/subu_qb.c                |  25 --
 tests/tcg/mips/mips32-dsp/subu_s_qb.c              |  25 --
 tests/tcg/mips/mips32-dsp/wrdsp.c                  |  46 ----
 tests/tcg/mips/mips32-dspr2/absq_s_qb.c            |  35 ---
 tests/tcg/mips/mips32-dspr2/addqh_ph.c             |  30 ---
 tests/tcg/mips/mips32-dspr2/addqh_r_ph.c           |  30 ---
 tests/tcg/mips/mips32-dspr2/addqh_r_w.c            |  34 ---
 tests/tcg/mips/mips32-dspr2/addqh_w.c              |  34 ---
 tests/tcg/mips/mips32-dspr2/addu_ph.c              |  33 ---
 tests/tcg/mips/mips32-dspr2/addu_s_ph.c            |  33 ---
 tests/tcg/mips/mips32-dspr2/adduh_qb.c             |  30 ---
 tests/tcg/mips/mips32-dspr2/adduh_r_qb.c           |  30 ---
 tests/tcg/mips/mips32-dspr2/append.c               |  30 ---
 tests/tcg/mips/mips32-dspr2/balign.c               |  30 ---
 tests/tcg/mips/mips32-dspr2/cmpgdu_eq_qb.c         |  37 ---
 tests/tcg/mips/mips32-dspr2/cmpgdu_le_qb.c         |  37 ---
 tests/tcg/mips/mips32-dspr2/cmpgdu_lt_qb.c         |  37 ---
 tests/tcg/mips/mips32-dspr2/dpa_w_ph.c             |  44 ----
 tests/tcg/mips/mips32-dspr2/dpaqx_s_w_ph.c         |  79 ------
 tests/tcg/mips/mips32-dspr2/dpaqx_sa_w_ph.c        |  57 -----
 tests/tcg/mips/mips32-dspr2/dpax_w_ph.c            |  44 ----
 tests/tcg/mips/mips32-dspr2/dps_w_ph.c             |  44 ----
 tests/tcg/mips/mips32-dspr2/dpsqx_s_w_ph.c         |  54 -----
 tests/tcg/mips/mips32-dspr2/dpsqx_sa_w_ph.c        |  53 ----
 tests/tcg/mips/mips32-dspr2/dpsx_w_ph.c            |  27 ---
 tests/tcg/mips/mips32-dspr2/mul_ph.c               |  47 ----
 tests/tcg/mips/mips32-dspr2/mul_s_ph.c             |  62 -----
 tests/tcg/mips/mips32-dspr2/mulq_rs_w.c            |  36 ---
 tests/tcg/mips/mips32-dspr2/mulq_s_ph.c            |  40 ----
 tests/tcg/mips/mips32-dspr2/mulq_s_w.c             |  36 ---
 tests/tcg/mips/mips32-dspr2/mulsa_w_ph.c           |  29 ---
 tests/tcg/mips/mips32-dspr2/mulsaq_s_w_ph.c        |  29 ---
 tests/tcg/mips/mips32-dspr2/precr_qb_ph.c          |  21 --
 tests/tcg/mips/mips32-dspr2/precr_sra_ph_w.c       |  32 ---
 tests/tcg/mips/mips32-dspr2/precr_sra_r_ph_w.c     |  32 ---
 tests/tcg/mips/mips32-dspr2/prepend.c              |  30 ---
 tests/tcg/mips/mips32-dspr2/shra_qb.c              |  30 ---
 tests/tcg/mips/mips32-dspr2/shra_r_qb.c            |  30 ---
 tests/tcg/mips/mips32-dspr2/shrav_qb.c             |  32 ---
 tests/tcg/mips/mips32-dspr2/shrav_r_qb.c           |  32 ---
 tests/tcg/mips/mips32-dspr2/shrl_ph.c              |  20 --
 tests/tcg/mips/mips32-dspr2/shrlv_ph.c             |  21 --
 tests/tcg/mips/mips32-dspr2/subqh_ph.c             |  21 --
 tests/tcg/mips/mips32-dspr2/subqh_r_ph.c           |  21 --
 tests/tcg/mips/mips32-dspr2/subqh_r_w.c            |  21 --
 tests/tcg/mips/mips32-dspr2/subqh_w.c              |  21 --
 tests/tcg/mips/mips32-dspr2/subu_ph.c              |  40 ----
 tests/tcg/mips/mips32-dspr2/subu_s_ph.c            |  25 --
 tests/tcg/mips/mips32-dspr2/subuh_qb.c             |  21 --
 tests/tcg/mips/mips32-dspr2/subuh_r_qb.c           |  32 ---
 tests/tcg/mips/mips64-dsp/absq_s_ob.c              |  63 -----
 tests/tcg/mips/mips64-dsp/absq_s_ph.c              |  37 ---
 tests/tcg/mips/mips64-dsp/absq_s_pw.c              |  66 -----
 tests/tcg/mips/mips64-dsp/absq_s_qh.c              |  40 ----
 tests/tcg/mips/mips64-dsp/absq_s_w.c               |  48 ----
 tests/tcg/mips/mips64-dsp/addq_ph.c                |  57 -----
 tests/tcg/mips/mips64-dsp/addq_pw.c                |  46 ----
 tests/tcg/mips/mips64-dsp/addq_qh.c                |  28 ---
 tests/tcg/mips/mips64-dsp/addq_s_ph.c              |  84 -------
 tests/tcg/mips/mips64-dsp/addq_s_pw.c              |  45 ----
 tests/tcg/mips/mips64-dsp/addq_s_qh.c              |  26 --
 tests/tcg/mips/mips64-dsp/addq_s_w.c               |  48 ----
 tests/tcg/mips/mips64-dsp/addsc.c                  |  39 ---
 tests/tcg/mips/mips64-dsp/addu_ob.c                |  28 ---
 tests/tcg/mips/mips64-dsp/addu_qb.c                |  40 ----
 tests/tcg/mips/mips64-dsp/addu_s_ob.c              |  27 ---
 tests/tcg/mips/mips64-dsp/addu_s_qb.c              |  40 ----
 tests/tcg/mips/mips64-dsp/addwc.c                  |  59 -----
 tests/tcg/mips/mips64-dsp/bitrev.c                 |  23 --
 tests/tcg/mips/mips64-dsp/bposge32.c               |  50 ----
 tests/tcg/mips/mips64-dsp/bposge64.c               |  50 ----
 tests/tcg/mips/mips64-dsp/cmp_eq_ph.c              |  42 ----
 tests/tcg/mips/mips64-dsp/cmp_eq_pw.c              |  46 ----
 tests/tcg/mips/mips64-dsp/cmp_eq_qh.c              |  46 ----
 tests/tcg/mips/mips64-dsp/cmp_le_ph.c              |  40 ----
 tests/tcg/mips/mips64-dsp/cmp_le_pw.c              |  46 ----
 tests/tcg/mips/mips64-dsp/cmp_le_qh.c              |  46 ----
 tests/tcg/mips/mips64-dsp/cmp_lt_ph.c              |  41 ----
 tests/tcg/mips/mips64-dsp/cmp_lt_pw.c              |  46 ----
 tests/tcg/mips/mips64-dsp/cmp_lt_qh.c              |  46 ----
 tests/tcg/mips/mips64-dsp/cmpgu_eq_ob.c            |  40 ----
 tests/tcg/mips/mips64-dsp/cmpgu_eq_qb.c            |  38 ---
 tests/tcg/mips/mips64-dsp/cmpgu_le_ob.c            |  40 ----
 tests/tcg/mips/mips64-dsp/cmpgu_le_qb.c            |  37 ---
 tests/tcg/mips/mips64-dsp/cmpgu_lt_ob.c            |  40 ----
 tests/tcg/mips/mips64-dsp/cmpgu_lt_qb.c            |  38 ---
 tests/tcg/mips/mips64-dsp/cmpu_eq_ob.c             |  46 ----
 tests/tcg/mips/mips64-dsp/cmpu_eq_qb.c             |  42 ----
 tests/tcg/mips/mips64-dsp/cmpu_le_ob.c             |  44 ----
 tests/tcg/mips/mips64-dsp/cmpu_le_qb.c             |  41 ----
 tests/tcg/mips/mips64-dsp/cmpu_lt_ob.c             |  44 ----
 tests/tcg/mips/mips64-dsp/cmpu_lt_qb.c             |  42 ----
 tests/tcg/mips/mips64-dsp/dappend.c                |  37 ---
 tests/tcg/mips/mips64-dsp/dextp.c                  |  54 -----
 tests/tcg/mips/mips64-dsp/dextpdp.c                |  59 -----
 tests/tcg/mips/mips64-dsp/dextpdpv.c               |  63 -----
 tests/tcg/mips/mips64-dsp/dextpv.c                 |  58 -----
 tests/tcg/mips/mips64-dsp/dextr_l.c                |  44 ----
 tests/tcg/mips/mips64-dsp/dextr_r_l.c              |  54 -----
 tests/tcg/mips/mips64-dsp/dextr_r_w.c              |  54 -----
 tests/tcg/mips/mips64-dsp/dextr_rs_l.c             |  52 ----
 tests/tcg/mips/mips64-dsp/dextr_rs_w.c             |  52 ----
 tests/tcg/mips/mips64-dsp/dextr_s_h.c              |  73 ------
 tests/tcg/mips/mips64-dsp/dextr_w.c                |  44 ----
 tests/tcg/mips/mips64-dsp/dextrv_l.c               |  46 ----
 tests/tcg/mips/mips64-dsp/dextrv_r_l.c             |  56 -----
 tests/tcg/mips/mips64-dsp/dextrv_r_w.c             |  56 -----
 tests/tcg/mips/mips64-dsp/dextrv_rs_l.c            |  54 -----
 tests/tcg/mips/mips64-dsp/dextrv_rs_w.c            |  54 -----
 tests/tcg/mips/mips64-dsp/dextrv_s_h.c             |  32 ---
 tests/tcg/mips/mips64-dsp/dextrv_w.c               |  46 ----
 tests/tcg/mips/mips64-dsp/dinsv.c                  |  26 --
 tests/tcg/mips/mips64-dsp/dmadd.c                  |  57 -----
 tests/tcg/mips/mips64-dsp/dmaddu.c                 |  56 -----
 tests/tcg/mips/mips64-dsp/dmsub.c                  |  59 -----
 tests/tcg/mips/mips64-dsp/dmsubu.c                 |  59 -----
 tests/tcg/mips/mips64-dsp/dmthlip.c                |  41 ----
 tests/tcg/mips/mips64-dsp/dpaq_s_w_ph.c            |  32 ---
 tests/tcg/mips/mips64-dsp/dpaq_s_w_qh.c            |  57 -----
 tests/tcg/mips/mips64-dsp/dpaq_sa_l_pw.c           |  88 -------
 tests/tcg/mips/mips64-dsp/dpaq_sa_l_w.c            |  82 -------
 tests/tcg/mips/mips64-dsp/dpau_h_obl.c             |  59 -----
 tests/tcg/mips/mips64-dsp/dpau_h_obr.c             |  59 -----
 tests/tcg/mips/mips64-dsp/dpau_h_qbl.c             |  29 ---
 tests/tcg/mips/mips64-dsp/dpau_h_qbr.c             |  29 ---
 tests/tcg/mips/mips64-dsp/dpsq_s_w_ph.c            |  51 ----
 tests/tcg/mips/mips64-dsp/dpsq_s_w_qh.c            |  56 -----
 tests/tcg/mips/mips64-dsp/dpsq_sa_l_pw.c           |  76 ------
 tests/tcg/mips/mips64-dsp/dpsq_sa_l_w.c            |  59 -----
 tests/tcg/mips/mips64-dsp/dpsu_h_obl.c             |  32 ---
 tests/tcg/mips/mips64-dsp/dpsu_h_obr.c             |  32 ---
 tests/tcg/mips/mips64-dsp/dpsu_h_qbl.c             |  29 ---
 tests/tcg/mips/mips64-dsp/dpsu_h_qbr.c             |  29 ---
 tests/tcg/mips/mips64-dsp/dshilo.c                 |  52 ----
 tests/tcg/mips/mips64-dsp/dshilov.c                |  54 -----
 tests/tcg/mips/mips64-dsp/extp.c                   |  50 ----
 tests/tcg/mips/mips64-dsp/extpdp.c                 |  51 ----
 tests/tcg/mips/mips64-dsp/extpdpv.c                |  52 ----
 tests/tcg/mips/mips64-dsp/extpv.c                  |  51 ----
 tests/tcg/mips/mips64-dsp/extr_r_w.c               |  53 ----
 tests/tcg/mips/mips64-dsp/extr_rs_w.c              |  53 ----
 tests/tcg/mips/mips64-dsp/extr_s_h.c               |  71 ------
 tests/tcg/mips/mips64-dsp/extr_w.c                 |  53 ----
 tests/tcg/mips/mips64-dsp/extrv_r_w.c              |  59 -----
 tests/tcg/mips/mips64-dsp/extrv_rs_w.c             |  59 -----
 tests/tcg/mips/mips64-dsp/extrv_s_h.c              |  79 ------
 tests/tcg/mips/mips64-dsp/extrv_w.c                |  59 -----
 tests/tcg/mips/mips64-dsp/insv.c                   |  26 --
 tests/tcg/mips/mips64-dsp/lbux.c                   |  27 ---
 tests/tcg/mips/mips64-dsp/ldx.c                    |  27 ---
 tests/tcg/mips/mips64-dsp/lhx.c                    |  27 ---
 tests/tcg/mips/mips64-dsp/lwx.c                    |  27 ---
 tests/tcg/mips/mips64-dsp/madd.c                   |  33 ---
 tests/tcg/mips/mips64-dsp/maddu.c                  |  33 ---
 tests/tcg/mips/mips64-dsp/maq_s_l_pwl.c            |  56 -----
 tests/tcg/mips/mips64-dsp/maq_s_l_pwr.c            |  56 -----
 tests/tcg/mips/mips64-dsp/maq_s_w_phl.c            |  60 -----
 tests/tcg/mips/mips64-dsp/maq_s_w_phr.c            |  60 -----
 tests/tcg/mips/mips64-dsp/maq_s_w_qhll.c           |  62 -----
 tests/tcg/mips/mips64-dsp/maq_s_w_qhlr.c           |  62 -----
 tests/tcg/mips/mips64-dsp/maq_s_w_qhrl.c           |  63 -----
 tests/tcg/mips/mips64-dsp/maq_s_w_qhrr.c           |  63 -----
 tests/tcg/mips/mips64-dsp/maq_sa_w_phl.c           |  60 -----
 tests/tcg/mips/mips64-dsp/maq_sa_w_phr.c           |  60 -----
 tests/tcg/mips/mips64-dsp/maq_sa_w_qhll.c          |  62 -----
 tests/tcg/mips/mips64-dsp/maq_sa_w_qhlr.c          |  64 -----
 tests/tcg/mips/mips64-dsp/maq_sa_w_qhrl.c          |  64 -----
 tests/tcg/mips/mips64-dsp/maq_sa_w_qhrr.c          |  64 -----
 tests/tcg/mips/mips64-dsp/mfhi.c                   |  24 --
 tests/tcg/mips/mips64-dsp/mflo.c                   |  24 --
 tests/tcg/mips/mips64-dsp/modsub.c                 |  37 ---
 tests/tcg/mips/mips64-dsp/msub.c                   |  32 ---
 tests/tcg/mips/mips64-dsp/msubu.c                  |  32 ---
 tests/tcg/mips/mips64-dsp/mthi.c                   |  24 --
 tests/tcg/mips/mips64-dsp/mthlip.c                 |  61 -----
 tests/tcg/mips/mips64-dsp/mtlo.c                   |  22 --
 tests/tcg/mips/mips64-dsp/muleq_s_pw_qhl.c         |  56 -----
 tests/tcg/mips/mips64-dsp/muleq_s_pw_qhr.c         |  57 -----
 tests/tcg/mips/mips64-dsp/muleq_s_w_phl.c          |  46 ----
 tests/tcg/mips/mips64-dsp/muleq_s_w_phr.c          |  45 ----
 tests/tcg/mips/mips64-dsp/muleu_s_ph_qbl.c         |  27 ---
 tests/tcg/mips/mips64-dsp/muleu_s_ph_qbr.c         |  27 ---
 tests/tcg/mips/mips64-dsp/muleu_s_qh_obl.c         |  30 ---
 tests/tcg/mips/mips64-dsp/muleu_s_qh_obr.c         |  31 ---
 tests/tcg/mips/mips64-dsp/mulq_rs_ph.c             |  27 ---
 tests/tcg/mips/mips64-dsp/mulq_rs_qh.c             |  33 ---
 tests/tcg/mips/mips64-dsp/mulsaq_s_l_pw.c          |  59 -----
 tests/tcg/mips/mips64-dsp/mulsaq_s_w_qh.c          |  57 -----
 tests/tcg/mips/mips64-dsp/mult.c                   |  26 --
 tests/tcg/mips/mips64-dsp/multu.c                  |  26 --
 tests/tcg/mips/mips64-dsp/packrl_ph.c              |  24 --
 tests/tcg/mips/mips64-dsp/packrl_pw.c              |  24 --
 tests/tcg/mips/mips64-dsp/pick_ob.c                |  66 -----
 tests/tcg/mips/mips64-dsp/pick_ph.c                |  60 -----
 tests/tcg/mips/mips64-dsp/pick_pw.c                |  48 ----
 tests/tcg/mips/mips64-dsp/pick_qb.c                |  43 ----
 tests/tcg/mips/mips64-dsp/pick_qh.c                |  48 ----
 tests/tcg/mips/mips64-dsp/preceq_l_pwl.c           |  24 --
 tests/tcg/mips/mips64-dsp/preceq_l_pwr.c           |  24 --
 tests/tcg/mips/mips64-dsp/preceq_pw_qhl.c          |  21 --
 tests/tcg/mips/mips64-dsp/preceq_pw_qhla.c         |  23 --
 tests/tcg/mips/mips64-dsp/preceq_pw_qhr.c          |  21 --
 tests/tcg/mips/mips64-dsp/preceq_pw_qhra.c         |  23 --
 tests/tcg/mips/mips64-dsp/preceq_w_phl.c           |  23 --
 tests/tcg/mips/mips64-dsp/preceq_w_phr.c           |  23 --
 tests/tcg/mips/mips64-dsp/precequ_ph_qbl.c         |  23 --
 tests/tcg/mips/mips64-dsp/precequ_ph_qbla.c        |  23 --
 tests/tcg/mips/mips64-dsp/precequ_ph_qbr.c         |  23 --
 tests/tcg/mips/mips64-dsp/precequ_ph_qbra.c        |  23 --
 tests/tcg/mips/mips64-dsp/precequ_qh_obl.c         |  22 --
 tests/tcg/mips/mips64-dsp/precequ_qh_obla.c        |  22 --
 tests/tcg/mips/mips64-dsp/precequ_qh_obr.c         |  24 --
 tests/tcg/mips/mips64-dsp/precequ_qh_obra.c        |  24 --
 tests/tcg/mips/mips64-dsp/preceu_ph_qbl.c          |  23 --
 tests/tcg/mips/mips64-dsp/preceu_ph_qbla.c         |  23 --
 tests/tcg/mips/mips64-dsp/preceu_ph_qbr.c          |  23 --
 tests/tcg/mips/mips64-dsp/preceu_ph_qbra.c         |  23 --
 tests/tcg/mips/mips64-dsp/preceu_qh_obl.c          |  22 --
 tests/tcg/mips/mips64-dsp/preceu_qh_obla.c         |  22 --
 tests/tcg/mips/mips64-dsp/preceu_qh_obr.c          |  23 --
 tests/tcg/mips/mips64-dsp/preceu_qh_obra.c         |  23 --
 tests/tcg/mips/mips64-dsp/precr_ob_qh.c            |  25 --
 tests/tcg/mips/mips64-dsp/precr_sra_qh_pw.c        |  40 ----
 tests/tcg/mips/mips64-dsp/precr_sra_r_qh_pw.c      |  40 ----
 tests/tcg/mips/mips64-dsp/precrq_ob_qh.c           |  25 --
 tests/tcg/mips/mips64-dsp/precrq_ph_w.c            |  24 --
 tests/tcg/mips/mips64-dsp/precrq_pw_l.c            |  25 --
 tests/tcg/mips/mips64-dsp/precrq_qb_ph.c           |  24 --
 tests/tcg/mips/mips64-dsp/precrq_qh_pw.c           |  25 --
 tests/tcg/mips/mips64-dsp/precrq_rs_ph_w.c         |  41 ----
 tests/tcg/mips/mips64-dsp/precrq_rs_qh_pw.c        |  43 ----
 tests/tcg/mips/mips64-dsp/precrqu_s_ob_qh.c        |  27 ---
 tests/tcg/mips/mips64-dsp/precrqu_s_qb_ph.c        |  26 --
 tests/tcg/mips/mips64-dsp/prependd.c               |  37 ---
 tests/tcg/mips/mips64-dsp/prependw.c               |  37 ---
 tests/tcg/mips/mips64-dsp/printf.c                 | 266 ---------------------
 tests/tcg/mips/mips64-dsp/raddu_l_ob.c             |  22 --
 tests/tcg/mips/mips64-dsp/raddu_w_qb.c             |  23 --
 tests/tcg/mips/mips64-dsp/rddsp.c                  |  53 ----
 tests/tcg/mips/mips64-dsp/repl_ob.c                |  21 --
 tests/tcg/mips/mips64-dsp/repl_ph.c                |  30 ---
 tests/tcg/mips/mips64-dsp/repl_pw.c                |  34 ---
 tests/tcg/mips/mips64-dsp/repl_qb.c                |  19 --
 tests/tcg/mips/mips64-dsp/repl_qh.c                |  34 ---
 tests/tcg/mips/mips64-dsp/replv_ob.c               |  23 --
 tests/tcg/mips/mips64-dsp/replv_ph.c               |  22 --
 tests/tcg/mips/mips64-dsp/replv_pw.c               |  23 --
 tests/tcg/mips/mips64-dsp/replv_qb.c               |  22 --
 tests/tcg/mips/mips64-dsp/shilo.c                  |  29 ---
 tests/tcg/mips/mips64-dsp/shilov.c                 |  31 ---
 tests/tcg/mips/mips64-dsp/shll_ob.c                |  43 ----
 tests/tcg/mips/mips64-dsp/shll_ph.c                |  43 ----
 tests/tcg/mips/mips64-dsp/shll_pw.c                |  43 ----
 tests/tcg/mips/mips64-dsp/shll_qb.c                |  26 --
 tests/tcg/mips/mips64-dsp/shll_qh.c                |  42 ----
 tests/tcg/mips/mips64-dsp/shll_s_ph.c              |  43 ----
 tests/tcg/mips/mips64-dsp/shll_s_pw.c              |  43 ----
 tests/tcg/mips/mips64-dsp/shll_s_qh.c              |  43 ----
 tests/tcg/mips/mips64-dsp/shll_s_w.c               |  26 --
 tests/tcg/mips/mips64-dsp/shllv_ob.c               |  45 ----
 tests/tcg/mips/mips64-dsp/shllv_ph.c               |  27 ---
 tests/tcg/mips/mips64-dsp/shllv_pw.c               |  45 ----
 tests/tcg/mips/mips64-dsp/shllv_qb.c               |  27 ---
 tests/tcg/mips/mips64-dsp/shllv_qh.c               |  45 ----
 tests/tcg/mips/mips64-dsp/shllv_s_ph.c             |  27 ---
 tests/tcg/mips/mips64-dsp/shllv_s_pw.c             |  45 ----
 tests/tcg/mips/mips64-dsp/shllv_s_qh.c             |  45 ----
 tests/tcg/mips/mips64-dsp/shllv_s_w.c              |  27 ---
 tests/tcg/mips/mips64-dsp/shra_ob.c                |  23 --
 tests/tcg/mips/mips64-dsp/shra_ph.c                |  23 --
 tests/tcg/mips/mips64-dsp/shra_pw.c                |  36 ---
 tests/tcg/mips/mips64-dsp/shra_qh.c                |  37 ---
 tests/tcg/mips/mips64-dsp/shra_r_ob.c              |  22 --
 tests/tcg/mips/mips64-dsp/shra_r_ph.c              |  23 --
 tests/tcg/mips/mips64-dsp/shra_r_pw.c              |  36 ---
 tests/tcg/mips/mips64-dsp/shra_r_qh.c              |  37 ---
 tests/tcg/mips/mips64-dsp/shra_r_w.c               |  23 --
 tests/tcg/mips/mips64-dsp/shrav_ph.c               |  24 --
 tests/tcg/mips/mips64-dsp/shrav_pw.c               |  38 ---
 tests/tcg/mips/mips64-dsp/shrav_qh.c               |  39 ---
 tests/tcg/mips/mips64-dsp/shrav_r_ph.c             |  24 --
 tests/tcg/mips/mips64-dsp/shrav_r_pw.c             |  37 ---
 tests/tcg/mips/mips64-dsp/shrav_r_qh.c             |  39 ---
 tests/tcg/mips/mips64-dsp/shrav_r_w.c              |  24 --
 tests/tcg/mips/mips64-dsp/shrl_ob.c                |  38 ---
 tests/tcg/mips/mips64-dsp/shrl_qb.c                |  23 --
 tests/tcg/mips/mips64-dsp/shrl_qh.c                |  22 --
 tests/tcg/mips/mips64-dsp/shrlv_ob.c               |  39 ---
 tests/tcg/mips/mips64-dsp/shrlv_qb.c               |  24 --
 tests/tcg/mips/mips64-dsp/shrlv_qh.c               |  23 --
 tests/tcg/mips/mips64-dsp/subq_ph.c                |  27 ---
 tests/tcg/mips/mips64-dsp/subq_pw.c                |  44 ----
 tests/tcg/mips/mips64-dsp/subq_qh.c                |  26 --
 tests/tcg/mips/mips64-dsp/subq_s_ph.c              |  27 ---
 tests/tcg/mips/mips64-dsp/subq_s_pw.c              |  63 -----
 tests/tcg/mips/mips64-dsp/subq_s_qh.c              |  61 -----
 tests/tcg/mips/mips64-dsp/subq_s_w.c               |  27 ---
 tests/tcg/mips/mips64-dsp/subu_ob.c                |  26 --
 tests/tcg/mips/mips64-dsp/subu_qb.c                |  27 ---
 tests/tcg/mips/mips64-dsp/subu_s_ob.c              |  26 --
 tests/tcg/mips/mips64-dsp/subu_s_qb.c              |  27 ---
 tests/tcg/mips/mips64-dsp/wrdsp.c                  |  48 ----
 tests/tcg/mips/mips64-dspr2/absq_s_qb.c            |  42 ----
 tests/tcg/mips/mips64-dspr2/addqh_ph.c             |  35 ---
 tests/tcg/mips/mips64-dspr2/addqh_r_ph.c           |  35 ---
 tests/tcg/mips/mips64-dspr2/addqh_r_w.c            |  38 ---
 tests/tcg/mips/mips64-dspr2/addqh_w.c              |  39 ---
 tests/tcg/mips/mips64-dspr2/addu_ph.c              |  37 ---
 tests/tcg/mips/mips64-dspr2/addu_qh.c              |  43 ----
 tests/tcg/mips/mips64-dspr2/addu_s_ph.c            |  37 ---
 tests/tcg/mips/mips64-dspr2/addu_s_qh.c            |  43 ----
 tests/tcg/mips/mips64-dspr2/adduh_ob.c             |  35 ---
 tests/tcg/mips/mips64-dspr2/adduh_qb.c             |  35 ---
 tests/tcg/mips/mips64-dspr2/adduh_r_ob.c           |  35 ---
 tests/tcg/mips/mips64-dspr2/adduh_r_qb.c           |  35 ---
 tests/tcg/mips/mips64-dspr2/append.c               |  35 ---
 tests/tcg/mips/mips64-dspr2/balign.c               |  35 ---
 tests/tcg/mips/mips64-dspr2/cmpgdu_eq_ob.c         |  44 ----
 tests/tcg/mips/mips64-dspr2/cmpgdu_eq_qb.c         |  41 ----
 tests/tcg/mips/mips64-dspr2/cmpgdu_le_ob.c         |  44 ----
 tests/tcg/mips/mips64-dspr2/cmpgdu_le_qb.c         |  48 ----
 tests/tcg/mips/mips64-dspr2/cmpgdu_lt_ob.c         |  44 ----
 tests/tcg/mips/mips64-dspr2/cmpgdu_lt_qb.c         |  48 ----
 tests/tcg/mips/mips64-dspr2/dbalign.c              |  39 ---
 tests/tcg/mips/mips64-dspr2/dpa_w_ph.c             |  47 ----
 tests/tcg/mips/mips64-dspr2/dpa_w_qh.c             |  56 -----
 tests/tcg/mips/mips64-dspr2/dpaqx_s_w_ph.c         |  97 --------
 tests/tcg/mips/mips64-dspr2/dpaqx_sa_w_ph.c        |  54 -----
 tests/tcg/mips/mips64-dspr2/dpax_w_ph.c            |  32 ---
 tests/tcg/mips/mips64-dspr2/dps_w_ph.c             |  28 ---
 tests/tcg/mips/mips64-dspr2/dps_w_qh.c             |  55 -----
 tests/tcg/mips/mips64-dspr2/dpsqx_s_w_ph.c         |  55 -----
 tests/tcg/mips/mips64-dspr2/dpsqx_sa_w_ph.c        |  53 ----
 tests/tcg/mips/mips64-dspr2/dpsx_w_ph.c            |  28 ---
 tests/tcg/mips/mips64-dspr2/mul_ph.c               |  50 ----
 tests/tcg/mips/mips64-dspr2/mul_s_ph.c             |  67 ------
 tests/tcg/mips/mips64-dspr2/mulq_rs_w.c            |  40 ----
 tests/tcg/mips/mips64-dspr2/mulq_s_ph.c            |  26 --
 tests/tcg/mips/mips64-dspr2/mulq_s_w.c             |  40 ----
 tests/tcg/mips/mips64-dspr2/mulsa_w_ph.c           |  30 ---
 tests/tcg/mips/mips64-dspr2/mulsaq_s_w_ph.c        |  30 ---
 tests/tcg/mips/mips64-dspr2/precr_qb_ph.c          |  23 --
 tests/tcg/mips/mips64-dspr2/precr_sra_ph_w.c       |  37 ---
 tests/tcg/mips/mips64-dspr2/precr_sra_r_ph_w.c     |  37 ---
 tests/tcg/mips/mips64-dspr2/prepend.c              |  35 ---
 tests/tcg/mips/mips64-dspr2/printf.c               | 266 ---------------------
 tests/tcg/mips/mips64-dspr2/shra_qb.c              |  35 ---
 tests/tcg/mips/mips64-dspr2/shra_r_qb.c            |  35 ---
 tests/tcg/mips/mips64-dspr2/shrav_ob.c             |  22 --
 tests/tcg/mips/mips64-dspr2/shrav_qb.c             |  37 ---
 tests/tcg/mips/mips64-dspr2/shrav_r_ob.c           |  22 --
 tests/tcg/mips/mips64-dspr2/shrav_r_qb.c           |  37 ---
 tests/tcg/mips/mips64-dspr2/shrl_ph.c              |  22 --
 tests/tcg/mips/mips64-dspr2/shrlv_ph.c             |  23 --
 tests/tcg/mips/mips64-dspr2/subqh_ph.c             |  23 --
 tests/tcg/mips/mips64-dspr2/subqh_r_ph.c           |  23 --
 tests/tcg/mips/mips64-dspr2/subqh_r_w.c            |  23 --
 tests/tcg/mips/mips64-dspr2/subqh_w.c              |  23 --
 tests/tcg/mips/mips64-dspr2/subu_ph.c              |  26 --
 tests/tcg/mips/mips64-dspr2/subu_qh.c              |  24 --
 tests/tcg/mips/mips64-dspr2/subu_s_ph.c            |  25 --
 tests/tcg/mips/mips64-dspr2/subu_s_qh.c            |  42 ----
 tests/tcg/mips/mips64-dspr2/subuh_ob.c             |  36 ---
 tests/tcg/mips/mips64-dspr2/subuh_qb.c             |  23 --
 tests/tcg/mips/mips64-dspr2/subuh_r_ob.c           |  23 --
 tests/tcg/mips/mips64-dspr2/subuh_r_qb.c           |  37 ---
 tests/tcg/mips/mipsr5900/div1.c                    |  73 ------
 tests/tcg/mips/mipsr5900/divu1.c                   |  48 ----
 tests/tcg/mips/mipsr5900/mflohi1.c                 |  35 ---
 tests/tcg/mips/mipsr5900/mtlohi1.c                 |  40 ----
 tests/tcg/mips/mipsr5900/mult.c                    |  76 ------
 tests/tcg/mips/mipsr5900/multu.c                   |  68 ------
 .../mips/system/ase/dsp/test_64_dsp_r1_absq_s_ob.c |  63 +++++
 .../mips/system/ase/dsp/test_64_dsp_r1_absq_s_ph.c |  37 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_absq_s_pw.c |  66 +++++
 .../mips/system/ase/dsp/test_64_dsp_r1_absq_s_qh.c |  40 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_absq_s_w.c  |  48 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_addq_ph.c   |  57 +++++
 .../mips/system/ase/dsp/test_64_dsp_r1_addq_pw.c   |  46 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_addq_qh.c   |  28 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_addq_s_ph.c |  84 +++++++
 .../mips/system/ase/dsp/test_64_dsp_r1_addq_s_pw.c |  45 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_addq_s_qh.c |  26 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_addq_s_w.c  |  48 ++++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_addsc.c |  39 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_addu_ob.c   |  28 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_addu_qb.c   |  40 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_addu_s_ob.c |  27 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_addu_s_qb.c |  40 ++++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_addwc.c |  59 +++++
 .../mips/system/ase/dsp/test_64_dsp_r1_bitrev.c    |  23 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_bposge32.c  |  50 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_bposge64.c  |  50 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_cmp_eq_ph.c |  42 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_cmp_eq_pw.c |  46 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_cmp_eq_qh.c |  46 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_cmp_le_ph.c |  40 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_cmp_le_pw.c |  46 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_cmp_le_qh.c |  46 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_cmp_lt_ph.c |  41 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_cmp_lt_pw.c |  46 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_cmp_lt_qh.c |  46 ++++
 .../system/ase/dsp/test_64_dsp_r1_cmpgu_eq_ob.c    |  40 ++++
 .../system/ase/dsp/test_64_dsp_r1_cmpgu_eq_qb.c    |  38 +++
 .../system/ase/dsp/test_64_dsp_r1_cmpgu_le_ob.c    |  40 ++++
 .../system/ase/dsp/test_64_dsp_r1_cmpgu_le_qb.c    |  37 +++
 .../system/ase/dsp/test_64_dsp_r1_cmpgu_lt_ob.c    |  40 ++++
 .../system/ase/dsp/test_64_dsp_r1_cmpgu_lt_qb.c    |  38 +++
 .../system/ase/dsp/test_64_dsp_r1_cmpu_eq_ob.c     |  46 ++++
 .../system/ase/dsp/test_64_dsp_r1_cmpu_eq_qb.c     |  42 ++++
 .../system/ase/dsp/test_64_dsp_r1_cmpu_le_ob.c     |  44 ++++
 .../system/ase/dsp/test_64_dsp_r1_cmpu_le_qb.c     |  41 ++++
 .../system/ase/dsp/test_64_dsp_r1_cmpu_lt_ob.c     |  44 ++++
 .../system/ase/dsp/test_64_dsp_r1_cmpu_lt_qb.c     |  42 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_dappend.c   |  37 +++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_dextp.c |  54 +++++
 .../mips/system/ase/dsp/test_64_dsp_r1_dextpdp.c   |  59 +++++
 .../mips/system/ase/dsp/test_64_dsp_r1_dextpdpv.c  |  63 +++++
 .../mips/system/ase/dsp/test_64_dsp_r1_dextpv.c    |  58 +++++
 .../mips/system/ase/dsp/test_64_dsp_r1_dextr_l.c   |  44 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_dextr_r_l.c |  54 +++++
 .../mips/system/ase/dsp/test_64_dsp_r1_dextr_r_w.c |  54 +++++
 .../system/ase/dsp/test_64_dsp_r1_dextr_rs_l.c     |  52 ++++
 .../system/ase/dsp/test_64_dsp_r1_dextr_rs_w.c     |  52 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_dextr_s_h.c |  73 ++++++
 .../mips/system/ase/dsp/test_64_dsp_r1_dextr_w.c   |  44 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_dextrv_l.c  |  46 ++++
 .../system/ase/dsp/test_64_dsp_r1_dextrv_r_l.c     |  56 +++++
 .../system/ase/dsp/test_64_dsp_r1_dextrv_r_w.c     |  56 +++++
 .../system/ase/dsp/test_64_dsp_r1_dextrv_rs_l.c    |  54 +++++
 .../system/ase/dsp/test_64_dsp_r1_dextrv_rs_w.c    |  54 +++++
 .../system/ase/dsp/test_64_dsp_r1_dextrv_s_h.c     |  32 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_dextrv_w.c  |  46 ++++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_dinsv.c |  26 ++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_dmadd.c |  57 +++++
 .../mips/system/ase/dsp/test_64_dsp_r1_dmaddu.c    |  56 +++++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_dmsub.c |  59 +++++
 .../mips/system/ase/dsp/test_64_dsp_r1_dmsubu.c    |  59 +++++
 .../mips/system/ase/dsp/test_64_dsp_r1_dmthlip.c   |  41 ++++
 .../system/ase/dsp/test_64_dsp_r1_dpaq_s_w_ph.c    |  32 +++
 .../system/ase/dsp/test_64_dsp_r1_dpaq_s_w_qh.c    |  57 +++++
 .../system/ase/dsp/test_64_dsp_r1_dpaq_sa_l_pw.c   |  88 +++++++
 .../system/ase/dsp/test_64_dsp_r1_dpaq_sa_l_w.c    |  82 +++++++
 .../system/ase/dsp/test_64_dsp_r1_dpau_h_obl.c     |  59 +++++
 .../system/ase/dsp/test_64_dsp_r1_dpau_h_obr.c     |  59 +++++
 .../system/ase/dsp/test_64_dsp_r1_dpau_h_qbl.c     |  29 +++
 .../system/ase/dsp/test_64_dsp_r1_dpau_h_qbr.c     |  29 +++
 .../system/ase/dsp/test_64_dsp_r1_dpsq_s_w_ph.c    |  51 ++++
 .../system/ase/dsp/test_64_dsp_r1_dpsq_s_w_qh.c    |  56 +++++
 .../system/ase/dsp/test_64_dsp_r1_dpsq_sa_l_pw.c   |  76 ++++++
 .../system/ase/dsp/test_64_dsp_r1_dpsq_sa_l_w.c    |  59 +++++
 .../system/ase/dsp/test_64_dsp_r1_dpsu_h_obl.c     |  32 +++
 .../system/ase/dsp/test_64_dsp_r1_dpsu_h_obr.c     |  32 +++
 .../system/ase/dsp/test_64_dsp_r1_dpsu_h_qbl.c     |  29 +++
 .../system/ase/dsp/test_64_dsp_r1_dpsu_h_qbr.c     |  29 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_dshilo.c    |  52 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_dshilov.c   |  54 +++++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_extp.c  |  50 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_extpdp.c    |  51 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_extpdpv.c   |  52 ++++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_extpv.c |  51 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_extr_r_w.c  |  53 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_extr_rs_w.c |  53 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_extr_s_h.c  |  71 ++++++
 .../mips/system/ase/dsp/test_64_dsp_r1_extr_w.c    |  53 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_extrv_r_w.c |  59 +++++
 .../system/ase/dsp/test_64_dsp_r1_extrv_rs_w.c     |  59 +++++
 .../mips/system/ase/dsp/test_64_dsp_r1_extrv_s_h.c |  79 ++++++
 .../mips/system/ase/dsp/test_64_dsp_r1_extrv_w.c   |  59 +++++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_insv.c  |  26 ++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_lbux.c  |  27 +++
 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_ldx.c |  27 +++
 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_lhx.c |  27 +++
 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_lwx.c |  27 +++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_madd.c  |  33 +++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_maddu.c |  33 +++
 .../system/ase/dsp/test_64_dsp_r1_maq_s_l_pwl.c    |  56 +++++
 .../system/ase/dsp/test_64_dsp_r1_maq_s_l_pwr.c    |  56 +++++
 .../system/ase/dsp/test_64_dsp_r1_maq_s_w_phl.c    |  60 +++++
 .../system/ase/dsp/test_64_dsp_r1_maq_s_w_phr.c    |  60 +++++
 .../system/ase/dsp/test_64_dsp_r1_maq_s_w_qhll.c   |  62 +++++
 .../system/ase/dsp/test_64_dsp_r1_maq_s_w_qhlr.c   |  62 +++++
 .../system/ase/dsp/test_64_dsp_r1_maq_s_w_qhrl.c   |  63 +++++
 .../system/ase/dsp/test_64_dsp_r1_maq_s_w_qhrr.c   |  63 +++++
 .../system/ase/dsp/test_64_dsp_r1_maq_sa_w_phl.c   |  60 +++++
 .../system/ase/dsp/test_64_dsp_r1_maq_sa_w_phr.c   |  60 +++++
 .../system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhll.c  |  62 +++++
 .../system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhlr.c  |  64 +++++
 .../system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhrl.c  |  64 +++++
 .../system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhrr.c  |  64 +++++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_mfhi.c  |  24 ++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_mflo.c  |  24 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_modsub.c    |  37 +++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_msub.c  |  32 +++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_msubu.c |  32 +++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_mthi.c  |  24 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_mthlip.c    |  61 +++++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_mtlo.c  |  22 ++
 .../system/ase/dsp/test_64_dsp_r1_muleq_s_pw_qhl.c |  56 +++++
 .../system/ase/dsp/test_64_dsp_r1_muleq_s_pw_qhr.c |  57 +++++
 .../system/ase/dsp/test_64_dsp_r1_muleq_s_w_phl.c  |  46 ++++
 .../system/ase/dsp/test_64_dsp_r1_muleq_s_w_phr.c  |  45 ++++
 .../system/ase/dsp/test_64_dsp_r1_muleu_s_ph_qbl.c |  27 +++
 .../system/ase/dsp/test_64_dsp_r1_muleu_s_ph_qbr.c |  27 +++
 .../system/ase/dsp/test_64_dsp_r1_muleu_s_qh_obl.c |  30 +++
 .../system/ase/dsp/test_64_dsp_r1_muleu_s_qh_obr.c |  31 +++
 .../system/ase/dsp/test_64_dsp_r1_mulq_rs_ph.c     |  27 +++
 .../system/ase/dsp/test_64_dsp_r1_mulq_rs_qh.c     |  33 +++
 .../system/ase/dsp/test_64_dsp_r1_mulsaq_s_l_pw.c  |  59 +++++
 .../system/ase/dsp/test_64_dsp_r1_mulsaq_s_w_qh.c  |  57 +++++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_mult.c  |  26 ++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_multu.c |  26 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_packrl_ph.c |  24 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_packrl_pw.c |  24 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_pick_ob.c   |  66 +++++
 .../mips/system/ase/dsp/test_64_dsp_r1_pick_ph.c   |  60 +++++
 .../mips/system/ase/dsp/test_64_dsp_r1_pick_pw.c   |  48 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_pick_qb.c   |  43 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_pick_qh.c   |  48 ++++
 .../system/ase/dsp/test_64_dsp_r1_preceq_l_pwl.c   |  24 ++
 .../system/ase/dsp/test_64_dsp_r1_preceq_l_pwr.c   |  24 ++
 .../system/ase/dsp/test_64_dsp_r1_preceq_pw_qhl.c  |  21 ++
 .../system/ase/dsp/test_64_dsp_r1_preceq_pw_qhla.c |  23 ++
 .../system/ase/dsp/test_64_dsp_r1_preceq_pw_qhr.c  |  21 ++
 .../system/ase/dsp/test_64_dsp_r1_preceq_pw_qhra.c |  23 ++
 .../system/ase/dsp/test_64_dsp_r1_preceq_w_phl.c   |  23 ++
 .../system/ase/dsp/test_64_dsp_r1_preceq_w_phr.c   |  23 ++
 .../system/ase/dsp/test_64_dsp_r1_precequ_ph_qbl.c |  23 ++
 .../ase/dsp/test_64_dsp_r1_precequ_ph_qbla.c       |  23 ++
 .../system/ase/dsp/test_64_dsp_r1_precequ_ph_qbr.c |  23 ++
 .../ase/dsp/test_64_dsp_r1_precequ_ph_qbra.c       |  23 ++
 .../system/ase/dsp/test_64_dsp_r1_precequ_qh_obl.c |  22 ++
 .../ase/dsp/test_64_dsp_r1_precequ_qh_obla.c       |  22 ++
 .../system/ase/dsp/test_64_dsp_r1_precequ_qh_obr.c |  24 ++
 .../ase/dsp/test_64_dsp_r1_precequ_qh_obra.c       |  24 ++
 .../system/ase/dsp/test_64_dsp_r1_preceu_ph_qbl.c  |  23 ++
 .../system/ase/dsp/test_64_dsp_r1_preceu_ph_qbla.c |  23 ++
 .../system/ase/dsp/test_64_dsp_r1_preceu_ph_qbr.c  |  23 ++
 .../system/ase/dsp/test_64_dsp_r1_preceu_ph_qbra.c |  23 ++
 .../system/ase/dsp/test_64_dsp_r1_preceu_qh_obl.c  |  22 ++
 .../system/ase/dsp/test_64_dsp_r1_preceu_qh_obla.c |  22 ++
 .../system/ase/dsp/test_64_dsp_r1_preceu_qh_obr.c  |  23 ++
 .../system/ase/dsp/test_64_dsp_r1_preceu_qh_obra.c |  23 ++
 .../system/ase/dsp/test_64_dsp_r1_precr_ob_qh.c    |  25 ++
 .../ase/dsp/test_64_dsp_r1_precr_sra_qh_pw.c       |  40 ++++
 .../ase/dsp/test_64_dsp_r1_precr_sra_r_qh_pw.c     |  40 ++++
 .../system/ase/dsp/test_64_dsp_r1_precrq_ob_qh.c   |  25 ++
 .../system/ase/dsp/test_64_dsp_r1_precrq_ph_w.c    |  24 ++
 .../system/ase/dsp/test_64_dsp_r1_precrq_pw_l.c    |  25 ++
 .../system/ase/dsp/test_64_dsp_r1_precrq_qb_ph.c   |  24 ++
 .../system/ase/dsp/test_64_dsp_r1_precrq_qh_pw.c   |  25 ++
 .../system/ase/dsp/test_64_dsp_r1_precrq_rs_ph_w.c |  41 ++++
 .../ase/dsp/test_64_dsp_r1_precrq_rs_qh_pw.c       |  43 ++++
 .../ase/dsp/test_64_dsp_r1_precrqu_s_ob_qh.c       |  27 +++
 .../ase/dsp/test_64_dsp_r1_precrqu_s_qb_ph.c       |  26 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_prependd.c  |  37 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_prependw.c  |  37 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_printf.c    | 266 +++++++++++++++++++++
 .../system/ase/dsp/test_64_dsp_r1_raddu_l_ob.c     |  22 ++
 .../system/ase/dsp/test_64_dsp_r1_raddu_w_qb.c     |  23 ++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_rddsp.c |  53 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_repl_ob.c   |  21 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_repl_ph.c   |  30 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_repl_pw.c   |  34 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_repl_qb.c   |  19 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_repl_qh.c   |  34 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_replv_ob.c  |  23 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_replv_ph.c  |  22 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_replv_pw.c  |  23 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_replv_qb.c  |  22 ++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_shilo.c |  29 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_shilov.c    |  31 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_shll_ob.c   |  43 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_shll_ph.c   |  43 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_shll_pw.c   |  43 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_shll_qb.c   |  26 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_shll_qh.c   |  42 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_shll_s_ph.c |  43 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_shll_s_pw.c |  43 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_shll_s_qh.c |  43 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_shll_s_w.c  |  26 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_shllv_ob.c  |  45 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_shllv_ph.c  |  27 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_shllv_pw.c  |  45 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_shllv_qb.c  |  27 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_shllv_qh.c  |  45 ++++
 .../system/ase/dsp/test_64_dsp_r1_shllv_s_ph.c     |  27 +++
 .../system/ase/dsp/test_64_dsp_r1_shllv_s_pw.c     |  45 ++++
 .../system/ase/dsp/test_64_dsp_r1_shllv_s_qh.c     |  45 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_shllv_s_w.c |  27 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_shra_ob.c   |  23 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_shra_ph.c   |  23 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_shra_pw.c   |  36 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_shra_qh.c   |  37 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_shra_r_ob.c |  22 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_shra_r_ph.c |  23 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_shra_r_pw.c |  36 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_shra_r_qh.c |  37 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_shra_r_w.c  |  23 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_shrav_ph.c  |  24 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_shrav_pw.c  |  38 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_shrav_qh.c  |  39 +++
 .../system/ase/dsp/test_64_dsp_r1_shrav_r_ph.c     |  24 ++
 .../system/ase/dsp/test_64_dsp_r1_shrav_r_pw.c     |  37 +++
 .../system/ase/dsp/test_64_dsp_r1_shrav_r_qh.c     |  39 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_shrav_r_w.c |  24 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_shrl_ob.c   |  38 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_shrl_qb.c   |  23 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_shrl_qh.c   |  22 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_shrlv_ob.c  |  39 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_shrlv_qb.c  |  24 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_shrlv_qh.c  |  23 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_subq_ph.c   |  27 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_subq_pw.c   |  44 ++++
 .../mips/system/ase/dsp/test_64_dsp_r1_subq_qh.c   |  26 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_subq_s_ph.c |  27 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_subq_s_pw.c |  63 +++++
 .../mips/system/ase/dsp/test_64_dsp_r1_subq_s_qh.c |  61 +++++
 .../mips/system/ase/dsp/test_64_dsp_r1_subq_s_w.c  |  27 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_subu_ob.c   |  26 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_subu_qb.c   |  27 +++
 .../mips/system/ase/dsp/test_64_dsp_r1_subu_s_ob.c |  26 ++
 .../mips/system/ase/dsp/test_64_dsp_r1_subu_s_qb.c |  27 +++
 .../tcg/mips/system/ase/dsp/test_64_dsp_r1_wrdsp.c |  48 ++++
 .../mips/system/ase/dsp/test_64_dsp_r2_absq_s_qb.c |  42 ++++
 .../mips/system/ase/dsp/test_64_dsp_r2_addqh_ph.c  |  35 +++
 .../system/ase/dsp/test_64_dsp_r2_addqh_r_ph.c     |  35 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_addqh_r_w.c |  38 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_addqh_w.c   |  39 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_addu_ph.c   |  37 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_addu_qh.c   |  43 ++++
 .../mips/system/ase/dsp/test_64_dsp_r2_addu_s_ph.c |  37 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_addu_s_qh.c |  43 ++++
 .../mips/system/ase/dsp/test_64_dsp_r2_adduh_ob.c  |  35 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_adduh_qb.c  |  35 +++
 .../system/ase/dsp/test_64_dsp_r2_adduh_r_ob.c     |  35 +++
 .../system/ase/dsp/test_64_dsp_r2_adduh_r_qb.c     |  35 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_append.c    |  35 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_balign.c    |  35 +++
 .../system/ase/dsp/test_64_dsp_r2_cmpgdu_eq_ob.c   |  44 ++++
 .../system/ase/dsp/test_64_dsp_r2_cmpgdu_eq_qb.c   |  41 ++++
 .../system/ase/dsp/test_64_dsp_r2_cmpgdu_le_ob.c   |  44 ++++
 .../system/ase/dsp/test_64_dsp_r2_cmpgdu_le_qb.c   |  48 ++++
 .../system/ase/dsp/test_64_dsp_r2_cmpgdu_lt_ob.c   |  44 ++++
 .../system/ase/dsp/test_64_dsp_r2_cmpgdu_lt_qb.c   |  48 ++++
 .../mips/system/ase/dsp/test_64_dsp_r2_dbalign.c   |  39 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_dpa_w_ph.c  |  47 ++++
 .../mips/system/ase/dsp/test_64_dsp_r2_dpa_w_qh.c  |  56 +++++
 .../system/ase/dsp/test_64_dsp_r2_dpaqx_s_w_ph.c   |  97 ++++++++
 .../system/ase/dsp/test_64_dsp_r2_dpaqx_sa_w_ph.c  |  54 +++++
 .../mips/system/ase/dsp/test_64_dsp_r2_dpax_w_ph.c |  32 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_dps_w_ph.c  |  28 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_dps_w_qh.c  |  55 +++++
 .../system/ase/dsp/test_64_dsp_r2_dpsqx_s_w_ph.c   |  55 +++++
 .../system/ase/dsp/test_64_dsp_r2_dpsqx_sa_w_ph.c  |  53 ++++
 .../mips/system/ase/dsp/test_64_dsp_r2_dpsx_w_ph.c |  28 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_mul_ph.c    |  50 ++++
 .../mips/system/ase/dsp/test_64_dsp_r2_mul_s_ph.c  |  67 ++++++
 .../mips/system/ase/dsp/test_64_dsp_r2_mulq_rs_w.c |  40 ++++
 .../mips/system/ase/dsp/test_64_dsp_r2_mulq_s_ph.c |  26 ++
 .../mips/system/ase/dsp/test_64_dsp_r2_mulq_s_w.c  |  40 ++++
 .../system/ase/dsp/test_64_dsp_r2_mulsa_w_ph.c     |  30 +++
 .../system/ase/dsp/test_64_dsp_r2_mulsaq_s_w_ph.c  |  30 +++
 .../system/ase/dsp/test_64_dsp_r2_precr_qb_ph.c    |  23 ++
 .../system/ase/dsp/test_64_dsp_r2_precr_sra_ph_w.c |  37 +++
 .../ase/dsp/test_64_dsp_r2_precr_sra_r_ph_w.c      |  37 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_prepend.c   |  35 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_printf.c    | 266 +++++++++++++++++++++
 .../mips/system/ase/dsp/test_64_dsp_r2_shra_qb.c   |  35 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_shra_r_qb.c |  35 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_shrav_ob.c  |  22 ++
 .../mips/system/ase/dsp/test_64_dsp_r2_shrav_qb.c  |  37 +++
 .../system/ase/dsp/test_64_dsp_r2_shrav_r_ob.c     |  22 ++
 .../system/ase/dsp/test_64_dsp_r2_shrav_r_qb.c     |  37 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_shrl_ph.c   |  22 ++
 .../mips/system/ase/dsp/test_64_dsp_r2_shrlv_ph.c  |  23 ++
 .../mips/system/ase/dsp/test_64_dsp_r2_subqh_ph.c  |  23 ++
 .../system/ase/dsp/test_64_dsp_r2_subqh_r_ph.c     |  23 ++
 .../mips/system/ase/dsp/test_64_dsp_r2_subqh_r_w.c |  23 ++
 .../mips/system/ase/dsp/test_64_dsp_r2_subqh_w.c   |  23 ++
 .../mips/system/ase/dsp/test_64_dsp_r2_subu_ph.c   |  26 ++
 .../mips/system/ase/dsp/test_64_dsp_r2_subu_qh.c   |  24 ++
 .../mips/system/ase/dsp/test_64_dsp_r2_subu_s_ph.c |  25 ++
 .../mips/system/ase/dsp/test_64_dsp_r2_subu_s_qh.c |  42 ++++
 .../mips/system/ase/dsp/test_64_dsp_r2_subuh_ob.c  |  36 +++
 .../mips/system/ase/dsp/test_64_dsp_r2_subuh_qb.c  |  23 ++
 .../system/ase/dsp/test_64_dsp_r2_subuh_r_ob.c     |  23 ++
 .../system/ase/dsp/test_64_dsp_r2_subuh_r_qb.c     |  37 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_absq_s_ph.c   |  31 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_absq_s_w.c    |  37 +++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_addq_ph.c |  46 ++++
 .../mips/user/ase/dsp/test_32_dsp_r1_addq_s_ph.c   |  69 ++++++
 .../mips/user/ase/dsp/test_32_dsp_r1_addq_s_w.c    |  44 ++++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addsc.c |  33 +++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_addu_qb.c |  35 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_addu_s_qb.c   |  35 +++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addwc.c |  49 ++++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_bitrev.c  |  20 ++
 .../mips/user/ase/dsp/test_32_dsp_r1_bposge32.c    |  44 ++++
 .../mips/user/ase/dsp/test_32_dsp_r1_cmp_eq_ph.c   |  35 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_cmp_le_ph.c   |  35 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_cmp_lt_ph.c   |  35 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_cmpgu_eq_qb.c |  31 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_cmpgu_le_qb.c |  31 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_cmpgu_lt_qb.c |  31 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_cmpu_eq_qb.c  |  35 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_cmpu_le_qb.c  |  35 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_cmpu_lt_qb.c  |  35 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_dpaq_s_w_ph.c |  31 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_dpaq_sa_l_w.c | 125 ++++++++++
 .../mips/user/ase/dsp/test_32_dsp_r1_dpau_h_qbl.c  |  27 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_dpau_h_qbr.c  |  27 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_dpsq_s_w_ph.c |  45 ++++
 .../mips/user/ase/dsp/test_32_dsp_r1_dpsq_sa_l_w.c |  55 +++++
 .../mips/user/ase/dsp/test_32_dsp_r1_dpsu_h_qbl.c  |  27 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_dpsu_h_qbr.c  |  27 +++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extp.c  |  62 +++++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_extpdp.c  |  64 +++++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_extpdpv.c |  47 ++++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extpv.c |  45 ++++
 .../mips/user/ase/dsp/test_32_dsp_r1_extr_r_w.c    |  94 ++++++++
 .../mips/user/ase/dsp/test_32_dsp_r1_extr_rs_w.c   | 117 +++++++++
 .../mips/user/ase/dsp/test_32_dsp_r1_extr_s_h.c    |  86 +++++++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_extr_w.c  |  94 ++++++++
 .../mips/user/ase/dsp/test_32_dsp_r1_extrv_r_w.c   |  79 ++++++
 .../mips/user/ase/dsp/test_32_dsp_r1_extrv_rs_w.c  |  77 ++++++
 .../mips/user/ase/dsp/test_32_dsp_r1_extrv_s_h.c   |  88 +++++++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_extrv_w.c |  80 +++++++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_insv.c  |  36 +++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_lbux.c  |  25 ++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_lhx.c   |  25 ++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_lwx.c   |  25 ++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_madd.c  |  31 +++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_maddu.c |  31 +++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_main.c  |   6 +
 .../mips/user/ase/dsp/test_32_dsp_r1_maq_s_w_phl.c |  55 +++++
 .../mips/user/ase/dsp/test_32_dsp_r1_maq_s_w_phr.c |  55 +++++
 .../user/ase/dsp/test_32_dsp_r1_maq_sa_w_phl.c     |  55 +++++
 .../user/ase/dsp/test_32_dsp_r1_maq_sa_w_phr.c     |  55 +++++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mfhi.c  |  21 ++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mflo.c  |  21 ++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_modsub.c  |  30 +++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_msub.c  |  30 +++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_msubu.c |  30 +++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mthi.c  |  21 ++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_mthlip.c  |  58 +++++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mtlo.c  |  21 ++
 .../user/ase/dsp/test_32_dsp_r1_muleq_s_w_phl.c    |  41 ++++
 .../user/ase/dsp/test_32_dsp_r1_muleq_s_w_phr.c    |  40 ++++
 .../user/ase/dsp/test_32_dsp_r1_muleu_s_ph_qbl.c   |  25 ++
 .../user/ase/dsp/test_32_dsp_r1_muleu_s_ph_qbr.c   |  25 ++
 .../mips/user/ase/dsp/test_32_dsp_r1_mulq_rs_ph.c  |  42 ++++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mult.c  |  24 ++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_multu.c |  24 ++
 .../mips/user/ase/dsp/test_32_dsp_r1_packrl_ph.c   |  21 ++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_pick_ph.c |  49 ++++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_pick_qb.c |  36 +++
 .../user/ase/dsp/test_32_dsp_r1_preceq_w_phl.c     |  20 ++
 .../user/ase/dsp/test_32_dsp_r1_preceq_w_phr.c     |  20 ++
 .../user/ase/dsp/test_32_dsp_r1_precequ_ph_qbl.c   |  20 ++
 .../user/ase/dsp/test_32_dsp_r1_precequ_ph_qbla.c  |  20 ++
 .../user/ase/dsp/test_32_dsp_r1_precequ_ph_qbr.c   |  20 ++
 .../user/ase/dsp/test_32_dsp_r1_precequ_ph_qbra.c  |  20 ++
 .../user/ase/dsp/test_32_dsp_r1_preceu_ph_qbl.c    |  20 ++
 .../user/ase/dsp/test_32_dsp_r1_preceu_ph_qbla.c   |  20 ++
 .../user/ase/dsp/test_32_dsp_r1_preceu_ph_qbr.c    |  20 ++
 .../user/ase/dsp/test_32_dsp_r1_preceu_ph_qbra.c   |  20 ++
 .../mips/user/ase/dsp/test_32_dsp_r1_precrq_ph_w.c |  21 ++
 .../user/ase/dsp/test_32_dsp_r1_precrq_qb_ph.c     |  21 ++
 .../user/ase/dsp/test_32_dsp_r1_precrq_rs_ph_w.c   |  51 ++++
 .../user/ase/dsp/test_32_dsp_r1_precrqu_s_qb_ph.c  |  24 ++
 .../mips/user/ase/dsp/test_32_dsp_r1_raddu_w_qb.c  |  20 ++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_rddsp.c |  46 ++++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_repl_ph.c |  23 ++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_repl_qb.c |  16 ++
 .../mips/user/ase/dsp/test_32_dsp_r1_replv_ph.c    |  19 ++
 .../mips/user/ase/dsp/test_32_dsp_r1_replv_qb.c    |  19 ++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shilo.c |  45 ++++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_shilov.c  |  49 ++++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_shll_ph.c |  55 +++++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_shll_qb.c |  55 +++++
 .../mips/user/ase/dsp/test_32_dsp_r1_shll_s_ph.c   |  24 ++
 .../mips/user/ase/dsp/test_32_dsp_r1_shll_s_w.c    |  52 ++++
 .../mips/user/ase/dsp/test_32_dsp_r1_shllv_ph.c    |  40 ++++
 .../mips/user/ase/dsp/test_32_dsp_r1_shllv_qb.c    |  38 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_shllv_s_ph.c  |  40 ++++
 .../mips/user/ase/dsp/test_32_dsp_r1_shllv_s_w.c   |  40 ++++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_shra_ph.c |  30 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_shra_r_ph.c   |  30 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_shra_r_w.c    |  30 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_shrav_ph.c    |  32 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_shrav_r_ph.c  |  32 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_shrav_r_w.c   |  32 +++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_shrl_qb.c |  31 +++
 .../mips/user/ase/dsp/test_32_dsp_r1_shrlv_qb.c    |  32 +++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_subq_ph.c |  40 ++++
 .../mips/user/ase/dsp/test_32_dsp_r1_subq_s_ph.c   |  58 +++++
 .../mips/user/ase/dsp/test_32_dsp_r1_subq_s_w.c    |  74 ++++++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r1_subu_qb.c |  25 ++
 .../mips/user/ase/dsp/test_32_dsp_r1_subu_s_qb.c   |  25 ++
 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_wrdsp.c |  46 ++++
 .../mips/user/ase/dsp/test_32_dsp_r2_absq_s_qb.c   |  35 +++
 .../mips/user/ase/dsp/test_32_dsp_r2_addqh_ph.c    |  30 +++
 .../mips/user/ase/dsp/test_32_dsp_r2_addqh_r_ph.c  |  30 +++
 .../mips/user/ase/dsp/test_32_dsp_r2_addqh_r_w.c   |  34 +++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r2_addqh_w.c |  34 +++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r2_addu_ph.c |  33 +++
 .../mips/user/ase/dsp/test_32_dsp_r2_addu_s_ph.c   |  33 +++
 .../mips/user/ase/dsp/test_32_dsp_r2_adduh_qb.c    |  30 +++
 .../mips/user/ase/dsp/test_32_dsp_r2_adduh_r_qb.c  |  30 +++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r2_append.c  |  30 +++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r2_balign.c  |  30 +++
 .../user/ase/dsp/test_32_dsp_r2_cmpgdu_eq_qb.c     |  37 +++
 .../user/ase/dsp/test_32_dsp_r2_cmpgdu_le_qb.c     |  37 +++
 .../user/ase/dsp/test_32_dsp_r2_cmpgdu_lt_qb.c     |  37 +++
 .../mips/user/ase/dsp/test_32_dsp_r2_dpa_w_ph.c    |  44 ++++
 .../user/ase/dsp/test_32_dsp_r2_dpaqx_s_w_ph.c     |  79 ++++++
 .../user/ase/dsp/test_32_dsp_r2_dpaqx_sa_w_ph.c    |  57 +++++
 .../mips/user/ase/dsp/test_32_dsp_r2_dpax_w_ph.c   |  44 ++++
 .../mips/user/ase/dsp/test_32_dsp_r2_dps_w_ph.c    |  44 ++++
 .../user/ase/dsp/test_32_dsp_r2_dpsqx_s_w_ph.c     |  54 +++++
 .../user/ase/dsp/test_32_dsp_r2_dpsqx_sa_w_ph.c    |  53 ++++
 .../mips/user/ase/dsp/test_32_dsp_r2_dpsx_w_ph.c   |  27 +++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r2_mul_ph.c  |  47 ++++
 .../mips/user/ase/dsp/test_32_dsp_r2_mul_s_ph.c    |  62 +++++
 .../mips/user/ase/dsp/test_32_dsp_r2_mulq_rs_w.c   |  36 +++
 .../mips/user/ase/dsp/test_32_dsp_r2_mulq_s_ph.c   |  40 ++++
 .../mips/user/ase/dsp/test_32_dsp_r2_mulq_s_w.c    |  36 +++
 .../mips/user/ase/dsp/test_32_dsp_r2_mulsa_w_ph.c  |  29 +++
 .../user/ase/dsp/test_32_dsp_r2_mulsaq_s_w_ph.c    |  29 +++
 .../mips/user/ase/dsp/test_32_dsp_r2_precr_qb_ph.c |  21 ++
 .../user/ase/dsp/test_32_dsp_r2_precr_sra_ph_w.c   |  32 +++
 .../user/ase/dsp/test_32_dsp_r2_precr_sra_r_ph_w.c |  32 +++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r2_prepend.c |  30 +++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r2_shra_qb.c |  30 +++
 .../mips/user/ase/dsp/test_32_dsp_r2_shra_r_qb.c   |  30 +++
 .../mips/user/ase/dsp/test_32_dsp_r2_shrav_qb.c    |  32 +++
 .../mips/user/ase/dsp/test_32_dsp_r2_shrav_r_qb.c  |  32 +++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r2_shrl_ph.c |  20 ++
 .../mips/user/ase/dsp/test_32_dsp_r2_shrlv_ph.c    |  21 ++
 .../mips/user/ase/dsp/test_32_dsp_r2_subqh_ph.c    |  21 ++
 .../mips/user/ase/dsp/test_32_dsp_r2_subqh_r_ph.c  |  21 ++
 .../mips/user/ase/dsp/test_32_dsp_r2_subqh_r_w.c   |  21 ++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r2_subqh_w.c |  21 ++
 .../tcg/mips/user/ase/dsp/test_32_dsp_r2_subu_ph.c |  40 ++++
 .../mips/user/ase/dsp/test_32_dsp_r2_subu_s_ph.c   |  25 ++
 .../mips/user/ase/dsp/test_32_dsp_r2_subuh_qb.c    |  21 ++
 .../mips/user/ase/dsp/test_32_dsp_r2_subuh_r_qb.c  |  32 +++
 tests/tcg/mips/user/isa/r5900/test_r5900_div1.c    |  73 ++++++
 tests/tcg/mips/user/isa/r5900/test_r5900_divu1.c   |  48 ++++
 tests/tcg/mips/user/isa/r5900/test_r5900_mflohi1.c |  35 +++
 tests/tcg/mips/user/isa/r5900/test_r5900_mtlohi1.c |  40 ++++
 tests/tcg/mips/user/isa/r5900/test_r5900_mult.c    |  76 ++++++
 tests/tcg/mips/user/isa/r5900/test_r5900_multu.c   |  68 ++++++
 964 files changed, 19288 insertions(+), 19288 deletions(-)
 delete mode 100644 tests/tcg/mips/mips32-dsp/absq_s_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/absq_s_w.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/addq_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/addq_s_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/addq_s_w.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/addsc.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/addu_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/addu_s_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/addwc.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/bitrev.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/bposge32.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/cmp_eq_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/cmp_le_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/cmp_lt_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/cmpgu_eq_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/cmpgu_le_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/cmpgu_lt_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/cmpu_eq_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/cmpu_le_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/cmpu_lt_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/dpaq_s_w_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/dpaq_sa_l_w.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/dpau_h_qbl.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/dpau_h_qbr.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/dpsq_s_w_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/dpsq_sa_l_w.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/dpsu_h_qbl.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/dpsu_h_qbr.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/extp.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/extpdp.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/extpdpv.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/extpv.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/extr_r_w.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/extr_rs_w.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/extr_s_h.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/extr_w.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/extrv_r_w.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/extrv_rs_w.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/extrv_s_h.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/extrv_w.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/insv.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/lbux.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/lhx.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/lwx.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/madd.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/maddu.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/main.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/maq_s_w_phl.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/maq_s_w_phr.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/maq_sa_w_phl.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/maq_sa_w_phr.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/mfhi.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/mflo.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/modsub.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/msub.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/msubu.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/mthi.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/mthlip.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/mtlo.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/muleq_s_w_phl.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/muleq_s_w_phr.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/muleu_s_ph_qbl.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/muleu_s_ph_qbr.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/mulq_rs_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/mult.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/multu.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/packrl_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/pick_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/pick_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/preceq_w_phl.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/preceq_w_phr.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/precequ_ph_qbl.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/precequ_ph_qbla.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/precequ_ph_qbr.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/precequ_ph_qbra.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/preceu_ph_qbl.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/preceu_ph_qbla.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/preceu_ph_qbr.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/preceu_ph_qbra.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/precrq_ph_w.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/precrq_qb_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/precrq_rs_ph_w.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/precrqu_s_qb_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/raddu_w_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/rddsp.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/repl_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/repl_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/replv_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/replv_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/shilo.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/shilov.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/shll_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/shll_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/shll_s_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/shll_s_w.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/shllv_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/shllv_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/shllv_s_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/shllv_s_w.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/shra_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/shra_r_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/shra_r_w.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/shrav_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/shrav_r_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/shrav_r_w.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/shrl_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/shrlv_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/subq_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/subq_s_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/subq_s_w.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/subu_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/subu_s_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dsp/wrdsp.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/absq_s_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/addqh_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/addqh_r_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/addqh_r_w.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/addqh_w.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/addu_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/addu_s_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/adduh_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/adduh_r_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/append.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/balign.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/cmpgdu_eq_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/cmpgdu_le_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/cmpgdu_lt_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/dpa_w_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/dpaqx_s_w_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/dpaqx_sa_w_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/dpax_w_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/dps_w_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/dpsqx_s_w_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/dpsqx_sa_w_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/dpsx_w_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/mul_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/mul_s_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/mulq_rs_w.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/mulq_s_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/mulq_s_w.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/mulsa_w_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/mulsaq_s_w_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/precr_qb_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/precr_sra_ph_w.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/precr_sra_r_ph_w.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/prepend.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/shra_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/shra_r_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/shrav_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/shrav_r_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/shrl_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/shrlv_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/subqh_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/subqh_r_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/subqh_r_w.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/subqh_w.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/subu_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/subu_s_ph.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/subuh_qb.c
 delete mode 100644 tests/tcg/mips/mips32-dspr2/subuh_r_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/absq_s_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/absq_s_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/absq_s_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/absq_s_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/absq_s_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/addq_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/addq_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/addq_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/addq_s_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/addq_s_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/addq_s_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/addq_s_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/addsc.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/addu_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/addu_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/addu_s_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/addu_s_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/addwc.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/bitrev.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/bposge32.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/bposge64.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmp_eq_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmp_eq_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmp_eq_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmp_le_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmp_le_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmp_le_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmp_lt_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmp_lt_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmp_lt_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmpgu_eq_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmpgu_eq_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmpgu_le_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmpgu_le_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmpgu_lt_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmpgu_lt_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmpu_eq_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmpu_eq_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmpu_le_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmpu_le_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmpu_lt_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/cmpu_lt_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dappend.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dextp.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dextpdp.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dextpdpv.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dextpv.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dextr_l.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dextr_r_l.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dextr_r_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dextr_rs_l.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dextr_rs_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dextr_s_h.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dextr_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dextrv_l.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dextrv_r_l.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dextrv_r_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dextrv_rs_l.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dextrv_rs_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dextrv_s_h.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dextrv_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dinsv.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dmadd.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dmaddu.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dmsub.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dmsubu.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dmthlip.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dpaq_s_w_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dpaq_s_w_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dpaq_sa_l_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dpaq_sa_l_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dpau_h_obl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dpau_h_obr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dpau_h_qbl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dpau_h_qbr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dpsq_s_w_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dpsq_s_w_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dpsq_sa_l_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dpsq_sa_l_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dpsu_h_obl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dpsu_h_obr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dpsu_h_qbl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dpsu_h_qbr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dshilo.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/dshilov.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/extp.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/extpdp.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/extpdpv.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/extpv.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/extr_r_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/extr_rs_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/extr_s_h.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/extr_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/extrv_r_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/extrv_rs_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/extrv_s_h.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/extrv_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/insv.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/lbux.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/ldx.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/lhx.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/lwx.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/madd.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/maddu.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/maq_s_l_pwl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/maq_s_l_pwr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/maq_s_w_phl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/maq_s_w_phr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/maq_s_w_qhll.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/maq_s_w_qhlr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/maq_s_w_qhrl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/maq_s_w_qhrr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/maq_sa_w_phl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/maq_sa_w_phr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/maq_sa_w_qhll.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/maq_sa_w_qhlr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/maq_sa_w_qhrl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/maq_sa_w_qhrr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/mfhi.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/mflo.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/modsub.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/msub.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/msubu.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/mthi.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/mthlip.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/mtlo.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/muleq_s_pw_qhl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/muleq_s_pw_qhr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/muleq_s_w_phl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/muleq_s_w_phr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/muleu_s_ph_qbl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/muleu_s_ph_qbr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/muleu_s_qh_obl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/muleu_s_qh_obr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/mulq_rs_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/mulq_rs_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/mulsaq_s_l_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/mulsaq_s_w_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/mult.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/multu.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/packrl_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/packrl_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/pick_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/pick_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/pick_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/pick_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/pick_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/preceq_l_pwl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/preceq_l_pwr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/preceq_pw_qhl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/preceq_pw_qhla.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/preceq_pw_qhr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/preceq_pw_qhra.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/preceq_w_phl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/preceq_w_phr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precequ_ph_qbl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precequ_ph_qbla.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precequ_ph_qbr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precequ_ph_qbra.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precequ_qh_obl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precequ_qh_obla.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precequ_qh_obr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precequ_qh_obra.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/preceu_ph_qbl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/preceu_ph_qbla.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/preceu_ph_qbr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/preceu_ph_qbra.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/preceu_qh_obl.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/preceu_qh_obla.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/preceu_qh_obr.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/preceu_qh_obra.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precr_ob_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precr_sra_qh_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precr_sra_r_qh_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precrq_ob_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precrq_ph_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precrq_pw_l.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precrq_qb_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precrq_qh_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precrq_rs_ph_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precrq_rs_qh_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precrqu_s_ob_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/precrqu_s_qb_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/prependd.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/prependw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/printf.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/raddu_l_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/raddu_w_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/rddsp.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/repl_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/repl_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/repl_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/repl_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/repl_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/replv_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/replv_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/replv_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/replv_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shilo.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shilov.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shll_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shll_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shll_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shll_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shll_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shll_s_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shll_s_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shll_s_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shll_s_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shllv_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shllv_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shllv_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shllv_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shllv_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shllv_s_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shllv_s_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shllv_s_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shllv_s_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shra_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shra_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shra_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shra_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shra_r_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shra_r_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shra_r_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shra_r_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shra_r_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shrav_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shrav_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shrav_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shrav_r_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shrav_r_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shrav_r_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shrav_r_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shrl_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shrl_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shrl_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shrlv_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shrlv_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/shrlv_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/subq_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/subq_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/subq_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/subq_s_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/subq_s_pw.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/subq_s_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/subq_s_w.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/subu_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/subu_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/subu_s_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/subu_s_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dsp/wrdsp.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/absq_s_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/addqh_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/addqh_r_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/addqh_r_w.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/addqh_w.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/addu_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/addu_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/addu_s_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/addu_s_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/adduh_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/adduh_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/adduh_r_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/adduh_r_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/append.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/balign.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/cmpgdu_eq_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/cmpgdu_eq_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/cmpgdu_le_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/cmpgdu_le_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/cmpgdu_lt_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/cmpgdu_lt_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/dbalign.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/dpa_w_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/dpa_w_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/dpaqx_s_w_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/dpaqx_sa_w_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/dpax_w_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/dps_w_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/dps_w_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/dpsqx_s_w_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/dpsqx_sa_w_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/dpsx_w_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/mul_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/mul_s_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/mulq_rs_w.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/mulq_s_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/mulq_s_w.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/mulsa_w_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/mulsaq_s_w_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/precr_qb_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/precr_sra_ph_w.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/precr_sra_r_ph_w.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/prepend.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/printf.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/shra_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/shra_r_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/shrav_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/shrav_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/shrav_r_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/shrav_r_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/shrl_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/shrlv_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/subqh_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/subqh_r_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/subqh_r_w.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/subqh_w.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/subu_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/subu_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/subu_s_ph.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/subu_s_qh.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/subuh_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/subuh_qb.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/subuh_r_ob.c
 delete mode 100644 tests/tcg/mips/mips64-dspr2/subuh_r_qb.c
 delete mode 100644 tests/tcg/mips/mipsr5900/div1.c
 delete mode 100644 tests/tcg/mips/mipsr5900/divu1.c
 delete mode 100644 tests/tcg/mips/mipsr5900/mflohi1.c
 delete mode 100644 tests/tcg/mips/mipsr5900/mtlohi1.c
 delete mode 100644 tests/tcg/mips/mipsr5900/mult.c
 delete mode 100644 tests/tcg/mips/mipsr5900/multu.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_absq_s_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_absq_s_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_absq_s_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_absq_s_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_absq_s_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_s_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_s_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_s_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_s_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addsc.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addu_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addu_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addu_s_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addu_s_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addwc.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_bitrev.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_bposge32.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_bposge64.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_eq_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_eq_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_eq_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_le_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_le_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_le_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_lt_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_lt_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_lt_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_eq_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_eq_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_le_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_le_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_lt_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_lt_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_eq_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_eq_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_le_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_le_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_lt_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_lt_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dappend.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextp.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextpdp.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextpdpv.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextpv.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_l.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_r_l.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_r_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_rs_l.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_rs_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_s_h.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_l.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_r_l.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_r_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_rs_l.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_rs_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_s_h.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dinsv.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dmadd.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dmaddu.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dmsub.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dmsubu.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dmthlip.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpaq_s_w_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpaq_s_w_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpaq_sa_l_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpaq_sa_l_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpau_h_obl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpau_h_obr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpau_h_qbl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpau_h_qbr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsq_s_w_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsq_s_w_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsq_sa_l_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsq_sa_l_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsu_h_obl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsu_h_obr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsu_h_qbl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsu_h_qbr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dshilo.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dshilov.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extp.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extpdp.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extpdpv.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extpv.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extr_r_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extr_rs_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extr_s_h.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extr_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extrv_r_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extrv_rs_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extrv_s_h.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extrv_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_insv.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_lbux.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_ldx.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_lhx.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_lwx.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_madd.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maddu.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_l_pwl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_l_pwr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_phl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_phr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_qhll.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_qhlr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_qhrl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_qhrr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_phl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_phr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhll.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhlr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhrl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhrr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mfhi.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mflo.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_modsub.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_msub.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_msubu.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mthi.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mthlip.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mtlo.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleq_s_pw_qhl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleq_s_pw_qhr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleq_s_w_phl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleq_s_w_phr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleu_s_ph_qbl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleu_s_ph_qbr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleu_s_qh_obl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleu_s_qh_obr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mulq_rs_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mulq_rs_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mulsaq_s_l_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mulsaq_s_w_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mult.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_multu.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_packrl_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_packrl_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_pick_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_pick_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_pick_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_pick_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_pick_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_l_pwl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_l_pwr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_pw_qhl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_pw_qhla.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_pw_qhr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_pw_qhra.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_w_phl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_w_phr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_ph_qbl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_ph_qbla.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_ph_qbr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_ph_qbra.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_qh_obl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_qh_obla.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_qh_obr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_qh_obra.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_ph_qbl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_ph_qbla.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_ph_qbr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_ph_qbra.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_qh_obl.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_qh_obla.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_qh_obr.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_qh_obra.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precr_ob_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precr_sra_qh_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precr_sra_r_qh_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_ob_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_ph_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_pw_l.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_qb_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_qh_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_rs_ph_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_rs_qh_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrqu_s_ob_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrqu_s_qb_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_prependd.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_prependw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_printf.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_raddu_l_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_raddu_w_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_rddsp.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_repl_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_repl_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_repl_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_repl_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_repl_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_replv_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_replv_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_replv_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_replv_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shilo.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shilov.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_s_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_s_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_s_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_s_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_s_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_s_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_s_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_s_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_r_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_r_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_r_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_r_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_r_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_r_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_r_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_r_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_r_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrl_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrl_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrl_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrlv_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrlv_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrlv_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_s_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_s_pw.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_s_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_s_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subu_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subu_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subu_s_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subu_s_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_wrdsp.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_absq_s_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addqh_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addqh_r_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addqh_r_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addqh_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addu_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addu_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addu_s_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addu_s_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_adduh_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_adduh_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_adduh_r_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_adduh_r_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_append.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_balign.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_eq_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_eq_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_le_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_le_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_lt_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_lt_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dbalign.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpa_w_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpa_w_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpaqx_s_w_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpaqx_sa_w_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpax_w_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dps_w_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dps_w_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpsqx_s_w_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpsqx_sa_w_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpsx_w_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mul_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mul_s_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mulq_rs_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mulq_s_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mulq_s_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mulsa_w_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mulsaq_s_w_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_precr_qb_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_precr_sra_ph_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_precr_sra_r_ph_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_prepend.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_printf.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shra_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shra_r_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrav_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrav_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrav_r_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrav_r_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrl_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrlv_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subqh_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subqh_r_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subqh_r_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subqh_w.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subu_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subu_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subu_s_ph.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subu_s_qh.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subuh_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subuh_qb.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subuh_r_ob.c
 create mode 100644 tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subuh_r_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_absq_s_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_absq_s_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addq_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addq_s_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addq_s_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addsc.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addu_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addu_s_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addwc.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_bitrev.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_bposge32.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmp_eq_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmp_le_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmp_lt_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpgu_eq_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpgu_le_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpgu_lt_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpu_eq_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpu_le_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpu_lt_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpaq_s_w_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpaq_sa_l_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpau_h_qbl.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpau_h_qbr.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpsq_s_w_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpsq_sa_l_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpsu_h_qbl.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpsu_h_qbr.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extp.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extpdp.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extpdpv.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extpv.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extr_r_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extr_rs_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extr_s_h.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extr_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extrv_r_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extrv_rs_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extrv_s_h.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extrv_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_insv.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_lbux.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_lhx.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_lwx.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_madd.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_maddu.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_main.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_maq_s_w_phl.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_maq_s_w_phr.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_maq_sa_w_phl.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_maq_sa_w_phr.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mfhi.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mflo.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_modsub.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_msub.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_msubu.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mthi.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mthlip.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mtlo.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_muleq_s_w_phl.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_muleq_s_w_phr.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_muleu_s_ph_qbl.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_muleu_s_ph_qbr.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mulq_rs_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mult.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_multu.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_packrl_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_pick_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_pick_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceq_w_phl.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceq_w_phr.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precequ_ph_qbl.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precequ_ph_qbla.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precequ_ph_qbr.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precequ_ph_qbra.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceu_ph_qbl.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceu_ph_qbla.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceu_ph_qbr.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceu_ph_qbra.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precrq_ph_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precrq_qb_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precrq_rs_ph_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precrqu_s_qb_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_raddu_w_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_rddsp.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_repl_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_repl_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_replv_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_replv_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shilo.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shilov.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shll_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shll_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shll_s_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shll_s_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shllv_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shllv_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shllv_s_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shllv_s_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shra_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shra_r_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shra_r_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shrav_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shrav_r_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shrav_r_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shrl_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shrlv_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_subq_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_subq_s_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_subq_s_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_subu_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_subu_s_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_wrdsp.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_absq_s_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addqh_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addqh_r_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addqh_r_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addqh_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addu_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addu_s_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_adduh_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_adduh_r_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_append.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_balign.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_cmpgdu_eq_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_cmpgdu_le_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_cmpgdu_lt_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpa_w_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpaqx_s_w_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpaqx_sa_w_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpax_w_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dps_w_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpsqx_s_w_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpsqx_sa_w_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpsx_w_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mul_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mul_s_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mulq_rs_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mulq_s_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mulq_s_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mulsa_w_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mulsaq_s_w_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_precr_qb_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_precr_sra_ph_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_precr_sra_r_ph_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_prepend.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shra_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shra_r_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shrav_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shrav_r_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shrl_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shrlv_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subqh_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subqh_r_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subqh_r_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subqh_w.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subu_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subu_s_ph.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subuh_qb.c
 create mode 100644 tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subuh_r_qb.c
 create mode 100644 tests/tcg/mips/user/isa/r5900/test_r5900_div1.c
 create mode 100644 tests/tcg/mips/user/isa/r5900/test_r5900_divu1.c
 create mode 100644 tests/tcg/mips/user/isa/r5900/test_r5900_mflohi1.c
 create mode 100644 tests/tcg/mips/user/isa/r5900/test_r5900_mtlohi1.c
 create mode 100644 tests/tcg/mips/user/isa/r5900/test_r5900_mult.c
 create mode 100644 tests/tcg/mips/user/isa/r5900/test_r5900_multu.c

diff --git a/tests/tcg/mips/mips32-dsp/absq_s_ph.c b/tests/tcg/mips/mips32-dsp/absq_s_ph.c
deleted file mode 100644
index aa84112..0000000
--- a/tests/tcg/mips/mips32-dsp/absq_s_ph.c
+++ /dev/null
@@ -1,31 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-
-int main()
-{
-    int rd, rt;
-    int result;
-
-    rt     = 0x10017EFD;
-    result = 0x10017EFD;
-
-    __asm
-        ("absq_s.ph %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    assert(rd == result);
-
-    rt     = 0x8000A536;
-    result = 0x7FFF5ACA;
-
-    __asm
-        ("absq_s.ph %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/absq_s_w.c b/tests/tcg/mips/mips32-dsp/absq_s_w.c
deleted file mode 100644
index 3f52a48..0000000
--- a/tests/tcg/mips/mips32-dsp/absq_s_w.c
+++ /dev/null
@@ -1,37 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rt;
-    int result;
-
-    rt     = 0x80000000;
-    result = 0x7FFFFFFF;
-    __asm
-        ("absq_s.w %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    assert(rd == result);
-
-    rt     = 0x80030000;
-    result = 0x7FFD0000;
-    __asm
-        ("absq_s.w %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    assert(rd == result);
-
-    rt     = 0x31036080;
-    result = 0x31036080;
-    __asm
-        ("absq_s.w %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/addq_ph.c b/tests/tcg/mips/mips32-dsp/addq_ph.c
deleted file mode 100644
index 96a5496..0000000
--- a/tests/tcg/mips/mips32-dsp/addq_ph.c
+++ /dev/null
@@ -1,46 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int dsp;
-    int result;
-
-    rs     = 0xFFFFFFFF;
-    rt     = 0x10101010;
-    result = 0x100F100F;
-    __asm
-        ("addq.ph   %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(result == rd);
-
-    rs     = 0x3712847D;
-    rt     = 0x0031AF2D;
-    result = 0x374333AA;
-    __asm
-        ("addq.ph   %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(result == rd);
-
-    rs     = 0x7fff847D;
-    rt     = 0x0031AF2D;
-    result = 0x803033AA;
-    __asm
-        ("addq.ph   %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(result == rd);
-
-    __asm("rddsp %0\n\t"
-          : "=r"(dsp)
-         );
-    assert(((dsp >> 20) & 0x01) == 1);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/addq_s_ph.c b/tests/tcg/mips/mips32-dsp/addq_s_ph.c
deleted file mode 100644
index 5f865f6..0000000
--- a/tests/tcg/mips/mips32-dsp/addq_s_ph.c
+++ /dev/null
@@ -1,69 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int dsp;
-    int result;
-
-    rs     = 0xFFFFFFFF;
-    rt     = 0x10101010;
-    result = 0x100F100F;
-    __asm
-        ("addq_s.ph   %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(result == rd);
-
-    rs     = 0x3712847D;
-    rt     = 0x0031AF2D;
-    result = 0x37438000;
-    __asm
-        ("addq_s.ph   %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(result == rd);
-
-    __asm
-        ("rddsp %0\n\t"
-         : "=r"(dsp)
-        );
-    assert(((dsp >> 20) & 0x01) == 1);
-
-    rs     = 0x7fff847D;
-    rt     = 0x0031AF2D;
-    result = 0x7fff8000;
-    __asm
-        ("addq_s.ph   %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(result == rd);
-
-    __asm
-        ("rddsp %0\n\t"
-         : "=r"(dsp)
-        );
-    assert(((dsp >> 20) & 0x01) == 1);
-
-    rs     = 0x8030847D;
-    rt     = 0x8a00AF2D;
-    result = 0x80008000;
-    __asm
-        ("addq_s.ph   %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(result == rd);
-
-    __asm
-        ("rddsp %0\n\t"
-         : "=r"(dsp)
-        );
-    assert(((dsp >> 20) & 0x01) == 1);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/addq_s_w.c b/tests/tcg/mips/mips32-dsp/addq_s_w.c
deleted file mode 100644
index 1e13acf..0000000
--- a/tests/tcg/mips/mips32-dsp/addq_s_w.c
+++ /dev/null
@@ -1,44 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-
-int main()
-{
-    int rd, rs, rt;
-    int result;
-
-    rt     = 0x10017EFD;
-    rs     = 0x11111111;
-    result = 0x2112900e;
-
-    __asm
-        ("addq_s.w %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(rd == result);
-
-    rt     = 0x80017EFD;
-    rs     = 0x81111111;
-    result = 0x80000000;
-
-    __asm
-        ("addq_s.w %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(rd == result);
-
-    rt     = 0x7fffffff;
-    rs     = 0x01111111;
-    result = 0x7fffffff;
-
-    __asm
-        ("addq_s.w %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/addsc.c b/tests/tcg/mips/mips32-dsp/addsc.c
deleted file mode 100644
index ace749f..0000000
--- a/tests/tcg/mips/mips32-dsp/addsc.c
+++ /dev/null
@@ -1,33 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int dsp;
-    int result;
-
-    rs     = 0x0000000F;
-    rt     = 0x00000001;
-    result = 0x00000010;
-    __asm
-        ("addsc %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(rd == result);
-
-    rs     = 0xFFFF0FFF;
-    rt     = 0x00010111;
-    result = 0x00001110;
-    __asm
-        ("addsc %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    assert(rd == result);
-    assert(((dsp >> 13) & 0x01) == 1);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/addu_qb.c b/tests/tcg/mips/mips32-dsp/addu_qb.c
deleted file mode 100644
index 23ba2e9..0000000
--- a/tests/tcg/mips/mips32-dsp/addu_qb.c
+++ /dev/null
@@ -1,35 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int dsp;
-    int result;
-
-    rs     = 0x00FF00FF;
-    rt     = 0x00010001;
-    result = 0x00000000;
-    __asm
-        ("addu.qb %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    assert(rd == result);
-    assert(((dsp >> 20) & 0x01) == 1);
-
-    rs     = 0xFFFF1111;
-    rt     = 0x00020001;
-    result = 0xFF011112;
-    __asm
-        ("addu.qb %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    assert(rd == result);
-    assert(((dsp >> 20) & 0x01) == 1);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/addu_s_qb.c b/tests/tcg/mips/mips32-dsp/addu_s_qb.c
deleted file mode 100644
index fe7fd3e..0000000
--- a/tests/tcg/mips/mips32-dsp/addu_s_qb.c
+++ /dev/null
@@ -1,35 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int dsp;
-    int result;
-
-    rs     = 0x10FF01FF;
-    rt     = 0x10010001;
-    result = 0x20FF01FF;
-    __asm
-        ("addu_s.qb %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    assert(rd == result);
-    assert(((dsp >> 20) & 0x1) == 1);
-
-    rs     = 0xFFFF1111;
-    rt     = 0x00020001;
-    result = 0xFFFF1112;
-    __asm
-        ("addu_s.qb %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    assert(rd == result);
-    assert(((dsp >> 20) & 0x1) == 1);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/addwc.c b/tests/tcg/mips/mips32-dsp/addwc.c
deleted file mode 100644
index 8a8d81f..0000000
--- a/tests/tcg/mips/mips32-dsp/addwc.c
+++ /dev/null
@@ -1,49 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int dspi, dspo;
-    int result;
-
-    rs     = 0x10FF01FF;
-    rt     = 0x10010001;
-    dspi   = 0x00002000;
-    result = 0x21000201;
-    __asm
-        ("wrdsp %3\n"
-         "addwc %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt), "r"(dspi)
-        );
-    assert(rd == result);
-
-    rs     = 0xFFFF1111;
-    rt     = 0x00020001;
-    dspi   = 0x00;
-    result = 0x00011112;
-    __asm
-        ("wrdsp %3\n"
-         "addwc %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt), "r"(dspi)
-        );
-    assert(rd == result);
-
-    rs     = 0x8FFF1111;
-    rt     = 0x80020001;
-    dspi   = 0x00;
-    result = 0x10011112;
-    __asm
-        ("wrdsp %4\n"
-         "addwc %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dspo)
-         : "r"(rs), "r"(rt), "r"(dspi)
-        );
-    assert(rd == result);
-    assert(((dspo >> 20) & 0x01) == 1);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/bitrev.c b/tests/tcg/mips/mips32-dsp/bitrev.c
deleted file mode 100644
index 04d8a38..0000000
--- a/tests/tcg/mips/mips32-dsp/bitrev.c
+++ /dev/null
@@ -1,20 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rt;
-    int result;
-
-    rt     = 0x12345678;
-    result = 0x00001E6A;
-
-    __asm
-        ("bitrev %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/bposge32.c b/tests/tcg/mips/mips32-dsp/bposge32.c
deleted file mode 100644
index d25417e..0000000
--- a/tests/tcg/mips/mips32-dsp/bposge32.c
+++ /dev/null
@@ -1,44 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int dsp, sum;
-    int result;
-
-    dsp =  0x20;
-    sum = 0x01;
-    result = 0x02;
-
-    __asm
-        ("wrdsp %1\n\t"
-         "bposge32 test1\n\t"
-         "nop\n\t"
-         "addi %0, 0xA2\n\t"
-         "nop\n\t"
-         "test1:\n\t"
-         "addi %0, 0x01\n\t"
-         : "+r"(sum)
-         : "r"(dsp)
-        );
-    assert(sum == result);
-
-    dsp =  0x10;
-    sum = 0x01;
-    result = 0xA4;
-
-    __asm
-        ("wrdsp %1\n\t"
-         "bposge32 test2\n\t"
-         "nop\n\t"
-         "addi %0, 0xA2\n\t"
-         "nop\n\t"
-         "test2:\n\t"
-         "addi %0, 0x01\n\t"
-         : "+r"(sum)
-         : "r"(dsp)
-        );
-    assert(sum == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/cmp_eq_ph.c b/tests/tcg/mips/mips32-dsp/cmp_eq_ph.c
deleted file mode 100644
index 957bd88..0000000
--- a/tests/tcg/mips/mips32-dsp/cmp_eq_ph.c
+++ /dev/null
@@ -1,35 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int result;
-
-    rs     = 0x11777066;
-    rt     = 0x55AA33FF;
-    result = 0x00;
-    __asm
-        ("cmp.eq.ph %1, %2\n\t"
-         "rddsp %0\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-
-    rd = (rd >> 24) & 0x03;
-    assert(rd == result);
-
-    rs     = 0x11777066;
-    rt     = 0x11777066;
-    result = 0x03;
-    __asm
-        ("cmp.eq.ph %1, %2\n\t"
-         "rddsp %0\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    rd = (rd >> 24) & 0x03;
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/cmp_le_ph.c b/tests/tcg/mips/mips32-dsp/cmp_le_ph.c
deleted file mode 100644
index 356f156..0000000
--- a/tests/tcg/mips/mips32-dsp/cmp_le_ph.c
+++ /dev/null
@@ -1,35 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int result;
-
-    rs     = 0x11777066;
-    rt     = 0x55AA33FF;
-    result = 0x02;
-    __asm
-        ("cmp.le.ph %1, %2\n\t"
-         "rddsp %0\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-
-    rd = (rd >> 24) & 0x03;
-    assert(rd == result);
-
-    rs     = 0x11777066;
-    rt     = 0x11777066;
-    result = 0x03;
-    __asm
-        ("cmp.le.ph %1, %2\n\t"
-         "rddsp %0\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    rd = (rd >> 24) & 0x03;
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/cmp_lt_ph.c b/tests/tcg/mips/mips32-dsp/cmp_lt_ph.c
deleted file mode 100644
index 3fb4827..0000000
--- a/tests/tcg/mips/mips32-dsp/cmp_lt_ph.c
+++ /dev/null
@@ -1,35 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int result;
-
-    rs     = 0x11777066;
-    rt     = 0x55AA33FF;
-    result = 0x02;
-    __asm
-        ("cmp.lt.ph %1, %2\n\t"
-         "rddsp %0\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-
-    rd = (rd >> 24) & 0x03;
-    assert(rd == result);
-
-    rs     = 0x11777066;
-    rt     = 0x11777066;
-    result = 0x00;
-    __asm
-        ("cmp.lt.ph %1, %2\n\t"
-         "rddsp %0\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    rd = (rd >> 24) & 0x03;
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/cmpgu_eq_qb.c b/tests/tcg/mips/mips32-dsp/cmpgu_eq_qb.c
deleted file mode 100644
index 2615c84..0000000
--- a/tests/tcg/mips/mips32-dsp/cmpgu_eq_qb.c
+++ /dev/null
@@ -1,31 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int result;
-
-    rs     = 0x11777066;
-    rt     = 0x55AA70FF;
-    result = 0x02;
-    __asm
-        ("cmpgu.eq.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-
-    assert(rd == result);
-
-    rs     = 0x11777066;
-    rt     = 0x11777066;
-    result = 0x0F;
-    __asm
-        ("cmpgu.eq.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/cmpgu_le_qb.c b/tests/tcg/mips/mips32-dsp/cmpgu_le_qb.c
deleted file mode 100644
index 65d0813..0000000
--- a/tests/tcg/mips/mips32-dsp/cmpgu_le_qb.c
+++ /dev/null
@@ -1,31 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int result;
-
-    rs     = 0x11777066;
-    rt     = 0x55AA70FF;
-    result = 0x0F;
-    __asm
-        ("cmpgu.le.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-
-    assert(rd == result);
-
-    rs     = 0x11777066;
-    rt     = 0x11766066;
-    result = 0x09;
-    __asm
-        ("cmpgu.le.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/cmpgu_lt_qb.c b/tests/tcg/mips/mips32-dsp/cmpgu_lt_qb.c
deleted file mode 100644
index 7dddad9..0000000
--- a/tests/tcg/mips/mips32-dsp/cmpgu_lt_qb.c
+++ /dev/null
@@ -1,31 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int result;
-
-    rs     = 0x11777066;
-    rt     = 0x55AA70FF;
-    result = 0x0D;
-    __asm
-        ("cmpgu.lt.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-
-    assert(rd == result);
-
-    rs     = 0x11777066;
-    rt     = 0x11766066;
-    result = 0x00;
-    __asm
-        ("cmpgu.lt.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/cmpu_eq_qb.c b/tests/tcg/mips/mips32-dsp/cmpu_eq_qb.c
deleted file mode 100644
index 680f2a1..0000000
--- a/tests/tcg/mips/mips32-dsp/cmpu_eq_qb.c
+++ /dev/null
@@ -1,35 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rs, rt;
-    int dsp;
-    int result;
-
-    rs         = 0x11777066;
-    rt         = 0x55AA70FF;
-    result     = 0x02;
-    __asm
-        ("cmpu.eq.qb %1, %2\n\t"
-         "rddsp %0\n\t"
-         : "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 24) & 0x0F;
-    assert(dsp == result);
-
-    rs     = 0x11777066;
-    rt     = 0x11777066;
-    result = 0x0F;
-    __asm
-        ("cmpu.eq.qb %1, %2\n\t"
-         "rddsp %0\n\t"
-         : "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 24) & 0x0F;
-    assert(dsp == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/cmpu_le_qb.c b/tests/tcg/mips/mips32-dsp/cmpu_le_qb.c
deleted file mode 100644
index 43cfa50..0000000
--- a/tests/tcg/mips/mips32-dsp/cmpu_le_qb.c
+++ /dev/null
@@ -1,35 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rs, rt;
-    int dsp;
-    int result;
-
-    rs         = 0x11777066;
-    rt         = 0x55AA70FF;
-    result     = 0x0F;
-    __asm
-        ("cmpu.le.qb %1, %2\n\t"
-         "rddsp %0\n\t"
-         : "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 24) & 0x0F;
-    assert(dsp == result);
-
-    rs     = 0x11777066;
-    rt     = 0x11777066;
-    result = 0x0F;
-    __asm
-        ("cmpu.le.qb %1, %2\n\t"
-         "rddsp %0\n\t"
-         : "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 24) & 0x0F;
-    assert(dsp == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/cmpu_lt_qb.c b/tests/tcg/mips/mips32-dsp/cmpu_lt_qb.c
deleted file mode 100644
index 074ca5b..0000000
--- a/tests/tcg/mips/mips32-dsp/cmpu_lt_qb.c
+++ /dev/null
@@ -1,35 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rs, rt;
-    int dsp;
-    int result;
-
-    rs         = 0x11777066;
-    rt         = 0x55AA70FF;
-    result     = 0x0D;
-    __asm
-        ("cmpu.lt.qb %1, %2\n\t"
-         "rddsp %0\n\t"
-         : "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 24) & 0x0F;
-    assert(dsp == result);
-
-    rs     = 0x11777066;
-    rt     = 0x11777066;
-    result = 0x00;
-    __asm
-        ("cmpu.lt.qb %1, %2\n\t"
-         "rddsp %0\n\t"
-         : "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 24) & 0x0F;
-    assert(dsp == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/dpaq_s_w_ph.c b/tests/tcg/mips/mips32-dsp/dpaq_s_w_ph.c
deleted file mode 100644
index a6425b6..0000000
--- a/tests/tcg/mips/mips32-dsp/dpaq_s_w_ph.c
+++ /dev/null
@@ -1,31 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rs, rt, dsp;
-    int ach = 0, acl = 0;
-    int resulth, resultl, resultdsp;
-
-    rs        = 0x800000FF;
-    rt        = 0x80000002;
-    resulth   = 0x00;
-    resultl   = 0x800003FB;
-    resultdsp = 0x01;
-    __asm
-        ("mthi        %0, $ac1\n\t"
-         "mtlo        %1, $ac1\n\t"
-         "dpaq_s.w.ph $ac1, %3, %4\n\t"
-         "mfhi        %0,   $ac1\n\t"
-         "mflo        %1,   $ac1\n\t"
-         "rddsp       %2\n\t"
-         : "+r"(ach), "+r"(acl), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = dsp >> 17 & 0x01;
-    assert(dsp == resultdsp);
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/dpaq_sa_l_w.c b/tests/tcg/mips/mips32-dsp/dpaq_sa_l_w.c
deleted file mode 100644
index cbf9007..0000000
--- a/tests/tcg/mips/mips32-dsp/dpaq_sa_l_w.c
+++ /dev/null
@@ -1,125 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rs, rt, dsp;
-    int ach = 0, acl = 0;
-    int resulth, resultl, resultdsp;
-
-    rs        = 0x80000000;
-    rt        = 0x80000000;
-    resulth   = 0x7FFFFFFF;
-    resultl   = 0xFFFFFFFF;
-    resultdsp = 0x01;
-    __asm
-        ("mthi        %0, $ac1\n\t"
-         "mtlo        %1, $ac1\n\t"
-         "dpaq_sa.l.w $ac1, %3, %4\n\t"
-         "mfhi        %0,   $ac1\n\t"
-         "mflo        %1,   $ac1\n\t"
-         "rddsp       %2\n\t"
-         : "+r"(ach), "+r"(acl), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 17) & 0x01;
-    assert(dsp == resultdsp);
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-    ach = 0x00000012;
-    acl = 0x00000048;
-    rs  = 0x80000000;
-    rt  = 0x80000000;
-
-    resulth   = 0x7FFFFFFF;
-    resultl   = 0xFFFFFFFF;
-    resultdsp = 0x01;
-    __asm
-        ("mthi        %0, $ac1\n\t"
-         "mtlo        %1, $ac1\n\t"
-         "dpaq_sa.l.w $ac1, %3, %4\n\t"
-         "mfhi        %0,   $ac1\n\t"
-         "mflo        %1,   $ac1\n\t"
-         "rddsp       %2\n\t"
-         : "+r"(ach), "+r"(acl), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 17) & 0x01;
-    assert(dsp == resultdsp);
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-    ach = 0x741532A0;
-    acl = 0xFCEABB08;
-    rs  = 0x80000000;
-    rt  = 0x80000000;
-
-    resulth   = 0x7FFFFFFF;
-    resultl   = 0xFFFFFFFF;
-    resultdsp = 0x01;
-    __asm
-        ("mthi        %0, $ac1\n\t"
-         "mtlo        %1, $ac1\n\t"
-         "dpaq_sa.l.w $ac1, %3, %4\n\t"
-         "mfhi        %0,   $ac1\n\t"
-         "mflo        %1,   $ac1\n\t"
-         "rddsp       %2\n\t"
-         : "+r"(ach), "+r"(acl), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 17) & 0x01;
-    assert(dsp == resultdsp);
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-    ach = 0;
-    acl = 0;
-    rs  = 0xC0000000;
-    rt  = 0x7FFFFFFF;
-
-    resulth   = 0xC0000000;
-    resultl   = 0x80000000;
-    resultdsp = 0;
-    __asm
-        ("wrdsp       $0\n\t"
-         "mthi        %0, $ac1\n\t"
-         "mtlo        %1, $ac1\n\t"
-         "dpaq_sa.l.w $ac1, %3, %4\n\t"
-         "mfhi        %0,   $ac1\n\t"
-         "mflo        %1,   $ac1\n\t"
-         "rddsp       %2\n\t"
-         : "+r"(ach), "+r"(acl), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 17) & 0x01;
-    assert(dsp == resultdsp);
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-    ach = 0x20000000;
-    acl = 0;
-    rs  = 0xE0000000;
-    rt  = 0x7FFFFFFF;
-
-    resulth   = 0;
-    resultl   = 0x40000000;
-    resultdsp = 0;
-    __asm
-        ("wrdsp       $0\n\t"
-         "mthi        %0, $ac1\n\t"
-         "mtlo        %1, $ac1\n\t"
-         "dpaq_sa.l.w $ac1, %3, %4\n\t"
-         "mfhi        %0,   $ac1\n\t"
-         "mflo        %1,   $ac1\n\t"
-         "rddsp       %2\n\t"
-         : "+r"(ach), "+r"(acl), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 17) & 0x01;
-    assert(dsp == resultdsp);
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/dpau_h_qbl.c b/tests/tcg/mips/mips32-dsp/dpau_h_qbl.c
deleted file mode 100644
index 6017b5e..0000000
--- a/tests/tcg/mips/mips32-dsp/dpau_h_qbl.c
+++ /dev/null
@@ -1,27 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rs, rt;
-    int ach = 5, acl = 3;
-    int resulth, resultl;
-
-    rs        = 0x800000FF;
-    rt        = 0x80000002;
-    resulth   = 0x05;
-    resultl   = 0x4003;
-    __asm
-        ("mthi       %0, $ac1\n\t"
-         "mtlo       %1, $ac1\n\t"
-         "dpau.h.qbl $ac1, %2, %3\n\t"
-         "mfhi       %0,   $ac1\n\t"
-         "mflo       %1,   $ac1\n\t"
-         : "+r"(ach), "+r"(acl)
-         : "r"(rs), "r"(rt)
-        );
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/dpau_h_qbr.c b/tests/tcg/mips/mips32-dsp/dpau_h_qbr.c
deleted file mode 100644
index e4abb2e..0000000
--- a/tests/tcg/mips/mips32-dsp/dpau_h_qbr.c
+++ /dev/null
@@ -1,27 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rs, rt;
-    int ach = 5, acl = 3;
-    int resulth, resultl;
-
-    rs        = 0x800000FF;
-    rt        = 0x80000002;
-    resulth   = 0x05;
-    resultl   = 0x0201;
-    __asm
-        ("mthi       %0, $ac1\n\t"
-         "mtlo       %1, $ac1\n\t"
-         "dpau.h.qbr $ac1, %2, %3\n\t"
-         "mfhi       %0,   $ac1\n\t"
-         "mflo       %1,   $ac1\n\t"
-         : "+r"(ach), "+r"(acl)
-         : "r"(rs), "r"(rt)
-        );
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/dpsq_s_w_ph.c b/tests/tcg/mips/mips32-dsp/dpsq_s_w_ph.c
deleted file mode 100644
index 74058fe..0000000
--- a/tests/tcg/mips/mips32-dsp/dpsq_s_w_ph.c
+++ /dev/null
@@ -1,45 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rs, rt;
-    int ach = 5, acl = 5;
-    int resulth, resultl;
-
-    rs      = 0xBC0123AD;
-    rt      = 0x01643721;
-    resulth = 0x00000004;
-    resultl = 0xF15F94A3;
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpsq_s.w.ph $ac1, %2, %3\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         : "+r"(ach), "+r"(acl)
-         : "r"(rs), "r"(rt)
-        );
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-    ach = 0x1424EF1F;
-    acl = 0x1035219A;
-    rs      = 0x800083AD;
-    rt      = 0x80003721;
-    resulth = 0x1424EF1E;
-    resultl = 0xC5C0D901;
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpsq_s.w.ph $ac1, %2, %3\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         : "+r"(ach), "+r"(acl)
-         : "r"(rs), "r"(rt)
-        );
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/dpsq_sa_l_w.c b/tests/tcg/mips/mips32-dsp/dpsq_sa_l_w.c
deleted file mode 100644
index eda3b14..0000000
--- a/tests/tcg/mips/mips32-dsp/dpsq_sa_l_w.c
+++ /dev/null
@@ -1,55 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rs, rt, dsp;
-    int ach = 5, acl = 5;
-    int resulth, resultl, resultdsp;
-
-    rs      = 0xBC0123AD;
-    rt      = 0x01643721;
-    resulth = 0x00BD3A22;
-    resultl = 0xD138776B;
-    resultdsp = 0x00;
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpsq_sa.l.w $ac1, %3, %4\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "+r"(ach), "+r"(acl), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 17) & 0x01;
-    assert(dsp == resultdsp);
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-    ach = 0x54321123;
-    acl = 5;
-    rs      = 0x80000000;
-    rt      = 0x80000000;
-
-    resulth = 0xd4321123;
-    resultl = 0x06;
-    resultdsp = 0x01;
-
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpsq_sa.l.w $ac1, %3, %4\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "+r"(ach), "+r"(acl), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 17) & 0x01;
-    assert(dsp == resultdsp);
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/dpsu_h_qbl.c b/tests/tcg/mips/mips32-dsp/dpsu_h_qbl.c
deleted file mode 100644
index 94e2bf6..0000000
--- a/tests/tcg/mips/mips32-dsp/dpsu_h_qbl.c
+++ /dev/null
@@ -1,27 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rs, rt;
-    int ach = 5, acl = 5;
-    int resulth, resultl;
-
-    rs      = 0xBC0123AD;
-    rt      = 0x01643721;
-    resulth = 0x04;
-    resultl = 0xFFFFFEE5;
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpsu.h.qbl $ac1, %2, %3\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         : "+r"(ach), "+r"(acl)
-         : "r"(rs), "r"(rt)
-        );
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/dpsu_h_qbr.c b/tests/tcg/mips/mips32-dsp/dpsu_h_qbr.c
deleted file mode 100644
index a1e6635..0000000
--- a/tests/tcg/mips/mips32-dsp/dpsu_h_qbr.c
+++ /dev/null
@@ -1,27 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rs, rt;
-    int ach = 5, acl = 5;
-    int resulth, resultl;
-
-    rs      = 0xBC0123AD;
-    rt      = 0x01643721;
-    resulth = 0x04;
-    resultl = 0xFFFFE233;
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpsu.h.qbr $ac1, %2, %3\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         : "+r"(ach), "+r"(acl)
-         : "r"(rs), "r"(rt)
-        );
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/extp.c b/tests/tcg/mips/mips32-dsp/extp.c
deleted file mode 100644
index b18bdb3..0000000
--- a/tests/tcg/mips/mips32-dsp/extp.c
+++ /dev/null
@@ -1,62 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rt, ach, acl, dsp;
-    int result;
-
-    ach = 0x05;
-    acl = 0xB4CB;
-    dsp = 0x07;
-    result = 0x000C;
-
-    __asm
-        ("wrdsp %1, 0x01\n\t"
-         "mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extp %0, $ac1, 0x03\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 14) & 0x01;
-    assert(dsp == 0);
-    assert(result == rt);
-
-    ach = 0x05;
-    acl = 0xB4CB;
-    dsp = 0x01;
-
-    __asm
-        ("wrdsp %1, 0x01\n\t"
-         "mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extp %0, $ac1, 0x03\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 14) & 0x01;
-    assert(dsp == 1);
-
-    ach = 0;
-    acl = 0x80000001;
-    dsp = 0x1F;
-    result = 0x80000001;
-
-    __asm
-        ("wrdsp %1\n\t"
-         "mthi %2, $ac2\n\t"
-         "mtlo %3, $ac2\n\t"
-         "extp %0, $ac2, 0x1F\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 14) & 0x01;
-    assert(dsp == 0);
-    assert(result == rt);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/extpdp.c b/tests/tcg/mips/mips32-dsp/extpdp.c
deleted file mode 100644
index 79ee16e..0000000
--- a/tests/tcg/mips/mips32-dsp/extpdp.c
+++ /dev/null
@@ -1,64 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rt, ach, acl, dsp, pos, efi;
-    int result;
-
-    ach = 0x05;
-    acl = 0xB4CB;
-    dsp = 0x07;
-    result = 0x000C;
-
-    __asm
-        ("wrdsp %1, 0x01\n\t"
-         "mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extpdp %0, $ac1, 0x03\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(ach), "r"(acl)
-        );
-    pos =  dsp & 0x3F;
-    efi = (dsp >> 14) & 0x01;
-    assert(pos == 3);
-    assert(efi == 0);
-    assert(result == rt);
-
-    ach = 0x05;
-    acl = 0xB4CB;
-    dsp = 0x01;
-
-    __asm
-        ("wrdsp %1, 0x01\n\t"
-         "mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extpdp %0, $ac1, 0x03\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(ach), "r"(acl)
-        );
-    efi = (dsp >> 14) & 0x01;
-    assert(efi == 1);
-
-
-    ach = 0;
-    acl = 0;
-    dsp = 0;
-    result = 0;
-
-    __asm
-        ("wrdsp %1\n\t"
-         "mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extpdp %0, $ac1, 0x00\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(ach), "r"(acl)
-        );
-    assert(dsp == 0x3F);
-    assert(result == rt);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/extpdpv.c b/tests/tcg/mips/mips32-dsp/extpdpv.c
deleted file mode 100644
index f5774ee..0000000
--- a/tests/tcg/mips/mips32-dsp/extpdpv.c
+++ /dev/null
@@ -1,47 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rt, rs, ach, acl, dsp, pos, efi;
-    int result;
-
-    ach = 0x05;
-    acl = 0xB4CB;
-    dsp = 0x07;
-    rs  = 0x03;
-    result = 0x000C;
-
-    __asm
-        ("wrdsp %1, 0x01\n\t"
-         "mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extpdpv %0, $ac1, %4\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(ach), "r"(acl), "r"(rs)
-        );
-    pos =  dsp & 0x3F;
-    efi = (dsp >> 14) & 0x01;
-    assert(pos == 3);
-    assert(efi == 0);
-    assert(result == rt);
-
-    ach = 0x05;
-    acl = 0xB4CB;
-    dsp = 0x01;
-
-    __asm
-        ("wrdsp %1, 0x01\n\t"
-         "mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extpdpv %0, $ac1, %4\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(ach), "r"(acl), "r"(rs)
-        );
-    efi = (dsp >> 14) & 0x01;
-    assert(efi == 1);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/extpv.c b/tests/tcg/mips/mips32-dsp/extpv.c
deleted file mode 100644
index 401b94a..0000000
--- a/tests/tcg/mips/mips32-dsp/extpv.c
+++ /dev/null
@@ -1,45 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rt, ac, ach, acl, dsp;
-    int result;
-
-    ach = 0x05;
-    acl = 0xB4CB;
-    dsp = 0x07;
-    ac  = 0x03;
-    result = 0x000C;
-
-    __asm
-        ("wrdsp %1, 0x01\n\t"
-         "mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extpv %0, $ac1, %4\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(ach), "r"(acl), "r"(ac)
-        );
-    dsp = (dsp >> 14) & 0x01;
-    assert(dsp == 0);
-    assert(result == rt);
-
-    ach = 0x05;
-    acl = 0xB4CB;
-    dsp = 0x01;
-
-    __asm
-        ("wrdsp %1, 0x01\n\t"
-         "mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extpv %0, $ac1, %4\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(ach), "r"(acl), "r"(ac)
-        );
-    dsp = (dsp >> 14) & 0x01;
-    assert(dsp == 1);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/extr_r_w.c b/tests/tcg/mips/mips32-dsp/extr_r_w.c
deleted file mode 100644
index 489c193..0000000
--- a/tests/tcg/mips/mips32-dsp/extr_r_w.c
+++ /dev/null
@@ -1,94 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rt, ach, acl, dsp;
-    int result;
-
-    ach = 0x05;
-    acl = 0xB4CB;
-    result = 0xA0001699;
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extr_r.w %0, $ac1, 0x03\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    assert(dsp == 1);
-    assert(result == rt);
-
-    /* Clear dspcontrol */
-    dsp = 0;
-    __asm
-        ("wrdsp %0\n\t"
-         :
-         : "r"(dsp)
-        );
-
-    ach = 0x01;
-    acl = 0xB4CB;
-    result = 0x10000B4D;
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extr_r.w %0, $ac1, 0x04\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    assert(dsp == 0);
-    assert(result == rt);
-
-    /* Clear dspcontrol */
-    dsp = 0;
-    __asm
-        ("wrdsp %0\n\t"
-         :
-         : "r"(dsp)
-        );
-
-    ach = 0x3fffffff;
-    acl = 0x2bcdef01;
-    result = 0x7ffffffe;
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extr_r.w %0, $ac1, 0x1F\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    assert(dsp == 0);
-    assert(result == rt);
-
-    /* Clear dspcontrol */
-    dsp = 0;
-    __asm
-        ("wrdsp %0\n\t"
-         :
-         : "r"(dsp)
-        );
-
-    ach = 0xFFFFFFFF;
-    acl = 0xFFFFFFFF;
-    result = 0;
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extr_r.w %0, $ac1, 0x1F\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(ach), "r"(acl)
-         );
-    dsp = (dsp >> 23) & 0x01;
-    assert(dsp == 0);
-    assert(result == rt);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/extr_rs_w.c b/tests/tcg/mips/mips32-dsp/extr_rs_w.c
deleted file mode 100644
index f9d2ed6..0000000
--- a/tests/tcg/mips/mips32-dsp/extr_rs_w.c
+++ /dev/null
@@ -1,117 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rt, ach, acl, dsp;
-    int result;
-
-    ach = 0x05;
-    acl = 0xB4CB;
-    result = 0x7FFFFFFF;
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extr_rs.w %0, $ac1, 0x03\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    assert(dsp == 1);
-    assert(result == rt);
-
-    /* Clear dspcontrol */
-    dsp = 0;
-    __asm
-        ("wrdsp %0\n\t"
-         :
-         : "r"(dsp)
-        );
-
-    ach = 0x01;
-    acl = 0xB4CB;
-    result = 0x10000B4D;
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extr_rs.w %0, $ac1, 0x04\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    assert(dsp == 0);
-    assert(result == rt);
-
-    /* Clear dspcontrol */
-    dsp = 0;
-    __asm
-        ("wrdsp %0\n\t"
-         :
-         : "r"(dsp)
-        );
-
-    ach = 0x3fffffff;
-    acl = 0x2bcdef01;
-    result = 0x7ffffffe;
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extr_rs.w %0, $ac1, 0x1F\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    assert(dsp == 0);
-    assert(result == rt);
-
-    /* Clear dspcontrol */
-    dsp = 0;
-    __asm
-        ("wrdsp %0\n\t"
-         :
-         : "r"(dsp)
-        );
-
-    ach = 0x80000000;
-    acl = 0x00000000;
-    result = 0x80000000;
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extr_rs.w %0, $ac1, 0x1F\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    assert(dsp == 1);
-    assert(result == rt);
-
-    /* Clear dspcontrol */
-    dsp = 0;
-    __asm
-        ("wrdsp %0\n\t"
-         :
-         : "r"(dsp)
-        );
-
-    ach = 0xFFFFFFFF;
-    acl = 0xFFFFFFFF;
-    result = 0;
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extr_rs.w %0, $ac1, 0x1F\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(ach), "r"(acl)
-         );
-    dsp = (dsp >> 23) & 0x01;
-    assert(dsp == 0);
-    assert(result == rt);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/extr_s_h.c b/tests/tcg/mips/mips32-dsp/extr_s_h.c
deleted file mode 100644
index 9bc2a63..0000000
--- a/tests/tcg/mips/mips32-dsp/extr_s_h.c
+++ /dev/null
@@ -1,86 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rt, ach, acl, dsp;
-    int result;
-
-    ach = 0x05;
-    acl = 0xB4CB;
-    result = 0x00007FFF;
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extr_s.h %0, $ac1, 0x03\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    assert(dsp == 1);
-    assert(result == rt);
-
-    ach = 0xffffffff;
-    acl = 0x12344321;
-    result = 0xFFFF8000;
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extr_s.h %0, $ac1, 0x08\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    assert(dsp == 1);
-    assert(result == rt);
-
-    /* Clear dsp */
-    dsp = 0;
-    __asm
-        ("wrdsp %0\n\t"
-         :
-         : "r"(dsp)
-        );
-
-    ach = 0x00;
-    acl = 0x4321;
-    result = 0x432;
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extr_s.h %0, $ac1, 0x04\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    assert(dsp == 0);
-    assert(result == rt);
-
-    /* Clear dsp */
-    dsp = 0;
-    __asm
-        ("wrdsp %0\n\t"
-         :
-         : "r"(dsp)
-        );
-
-    ach = 0x123;
-    acl = 0x87654321;
-    result = 0x1238;
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extr_s.h %0, $ac1, 28\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    assert(dsp == 0);
-    assert(result == rt);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/extr_w.c b/tests/tcg/mips/mips32-dsp/extr_w.c
deleted file mode 100644
index cf92614..0000000
--- a/tests/tcg/mips/mips32-dsp/extr_w.c
+++ /dev/null
@@ -1,94 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rt, ach, acl, dsp;
-    int result;
-
-    ach = 0x05;
-    acl = 0xB4CB;
-    result = 0xA0001699;
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extr.w %0, $ac1, 0x03\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    assert(dsp == 1);
-    assert(result == rt);
-
-    /* Clear dspcontrol */
-    dsp = 0;
-    __asm
-        ("wrdsp %0\n\t"
-         :
-         : "r"(dsp)
-        );
-
-    ach = 0x01;
-    acl = 0xB4CB;
-    result = 0x10000B4C;
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extr.w %0, $ac1, 0x04\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    assert(dsp == 0);
-    assert(result == rt);
-
-    /* Clear dspcontrol */
-    dsp = 0;
-    __asm
-        ("wrdsp %0\n\t"
-         :
-         : "r"(dsp)
-        );
-
-    ach = 0x3fffffff;
-    acl = 0x2bcdef01;
-    result = 0x7ffffffe;
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extr.w %0, $ac1, 0x1F\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    assert(dsp == 0);
-    assert(result == rt);
-
-    /* Clear dspcontrol */
-    dsp = 0;
-    __asm
-        ("wrdsp %0\n\t"
-         :
-         : "r"(dsp)
-        );
-
-    ach = 0xFFFFFFFF;
-    acl = 0xFFFFFFFF;
-    result = 0xFFFFFFFF;
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extr.w %0, $ac1, 0x1F\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(ach), "r"(acl)
-         );
-    dsp = (dsp >> 23) & 0x01;
-    assert(dsp == 0);
-    assert(result == rt);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/extrv_r_w.c b/tests/tcg/mips/mips32-dsp/extrv_r_w.c
deleted file mode 100644
index 2403b3a..0000000
--- a/tests/tcg/mips/mips32-dsp/extrv_r_w.c
+++ /dev/null
@@ -1,79 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rt, rs, ach, acl, dsp;
-    int result;
-
-    ach = 0x05;
-    acl = 0xB4CB;
-    dsp = 0x07;
-    rs  = 0x03;
-    result = 0xA0001699;
-
-    __asm
-        ("wrdsp %1, 0x01\n\t"
-         "mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "extrv_r.w %0, $ac1, %2\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(rs), "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    assert(dsp == 1);
-    assert(result == rt);
-
-    /* Clear dspcontrol */
-    dsp = 0;
-    __asm
-        ("wrdsp %0\n\t"
-         :
-         : "r"(dsp)
-        );
-
-    rs = 4;
-    ach = 0x01;
-    acl = 0xB4CB;
-    result = 0x10000B4D;
-    __asm
-        ("wrdsp %1, 0x01\n\t"
-         "mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "extrv_r.w %0, $ac1, %2\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(rs), "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    assert(dsp == 0);
-    assert(result == rt);
-
-    /* Clear dspcontrol */
-    dsp = 0;
-    __asm
-        ("wrdsp %0\n\t"
-         :
-         : "r"(dsp)
-        );
-
-    rs = 31;
-    ach = 0x3fffffff;
-    acl = 0x2bcdef01;
-    result = 0x7ffffffe;
-    __asm
-        ("wrdsp %1, 0x01\n\t"
-         "mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "extrv_r.w %0, $ac1, %2\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(rs), "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    assert(dsp == 0);
-    assert(result == rt);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/extrv_rs_w.c b/tests/tcg/mips/mips32-dsp/extrv_rs_w.c
deleted file mode 100644
index ccceeb9..0000000
--- a/tests/tcg/mips/mips32-dsp/extrv_rs_w.c
+++ /dev/null
@@ -1,77 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rt, rs, ach, acl, dsp;
-    int result;
-
-    rs = 0x03;
-    ach = 0x05;
-    acl = 0xB4CB;
-    result = 0x7FFFFFFF;
-    __asm
-        ("wrdsp %1, 0x01\n\t"
-         "mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "extrv_rs.w %0, $ac1, %2\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(rs), "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    assert(dsp == 1);
-    assert(result == rt);
-
-    /* Clear dspcontrol */
-    dsp = 0;
-    __asm
-        ("wrdsp %0\n\t"
-         :
-         : "r"(dsp)
-        );
-
-    rs = 0x04;
-    ach = 0x01;
-    acl = 0xB4CB;
-    result = 0x10000B4D;
-    __asm
-        ("wrdsp %1, 0x01\n\t"
-         "mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "extrv_rs.w %0, $ac1, %2\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(rs), "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    assert(dsp == 0);
-    assert(result == rt);
-
-    /* Clear dspcontrol */
-    dsp = 0;
-    __asm
-        ("wrdsp %0\n\t"
-         :
-         : "r"(dsp)
-        );
-
-    rs = 0x1F;
-    ach = 0x3fffffff;
-    acl = 0x2bcdef01;
-    result = 0x7ffffffe;
-    __asm
-        ("wrdsp %1, 0x01\n\t"
-         "mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "extrv_rs.w %0, $ac1, %2\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(rs), "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    assert(dsp == 0);
-    assert(result == rt);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/extrv_s_h.c b/tests/tcg/mips/mips32-dsp/extrv_s_h.c
deleted file mode 100644
index feac3e2..0000000
--- a/tests/tcg/mips/mips32-dsp/extrv_s_h.c
+++ /dev/null
@@ -1,88 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rt, rs, ach, acl, dsp;
-    int result;
-
-    ach = 0x05;
-    acl = 0xB4CB;
-    dsp = 0x07;
-    rs  = 0x03;
-    result = 0x00007FFF;
-
-    __asm
-        ("wrdsp %1, 0x01\n\t"
-         "mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "extrv_s.h %0, $ac1, %2\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(rs), "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    assert(dsp == 1);
-    assert(result == rt);
-
-    rs = 0x08;
-    ach = 0xffffffff;
-    acl = 0x12344321;
-    result = 0xFFFF8000;
-    __asm
-        ("wrdsp %1, 0x01\n\t"
-         "mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "extrv_s.h %0, $ac1, %2\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(rs), "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    assert(dsp == 1);
-    assert(result == rt);
-
-    /* Clear dsp */
-    dsp = 0;
-    __asm
-        ("wrdsp %0\n\t"
-         :
-         : "r"(dsp)
-        );
-
-    rs = 0x04;
-    ach = 0x00;
-    acl = 0x4321;
-    result = 0x432;
-    __asm
-        ("wrdsp %1, 0x01\n\t"
-         "mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "extrv_s.h %0, $ac1, %2\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(rs), "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    assert(dsp == 0);
-    assert(result == rt);
-
-    rs = 0x1C;
-    ach = 0x123;
-    acl = 0x87654321;
-    result = 0x1238;
-    __asm
-        ("wrdsp %1, 0x01\n\t"
-         "mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "extrv_s.h %0, $ac1, %2\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(rs), "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    assert(dsp == 0);
-    assert(result == rt);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/extrv_w.c b/tests/tcg/mips/mips32-dsp/extrv_w.c
deleted file mode 100644
index 9e8b238..0000000
--- a/tests/tcg/mips/mips32-dsp/extrv_w.c
+++ /dev/null
@@ -1,80 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rt, rs, ach, acl, dsp;
-    int result;
-
-    ach = 0x05;
-    acl = 0xB4CB;
-    dsp = 0x07;
-    rs  = 0x03;
-    result = 0xA0001699;
-
-    __asm
-        ("wrdsp %1, 0x01\n\t"
-         "mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "extrv.w %0, $ac1, %2\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(rs), "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    assert(dsp == 1);
-    assert(result == rt);
-
-    /* Clear dspcontrol */
-    dsp = 0;
-    __asm
-        ("wrdsp %0\n\t"
-         :
-         : "r"(dsp)
-        );
-
-    rs = 4;
-    ach = 0x01;
-    acl = 0xB4CB;
-    result = 0x10000B4C;
-    __asm
-        ("wrdsp %1, 0x01\n\t"
-         "mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "extrv.w %0, $ac1, %2\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(rs), "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    assert(dsp == 0);
-    assert(result == rt);
-
-    /* Clear dspcontrol */
-    dsp = 0;
-    __asm
-        ("wrdsp %0\n\t"
-         :
-         : "r"(dsp)
-        );
-
-    rs = 31;
-    ach = 0x3fffffff;
-    acl = 0x2bcdef01;
-    result = 0x7ffffffe;
-    __asm
-        ("wrdsp %1, 0x01\n\t"
-         "mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "extrv.w %0, $ac1, %2\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(rs), "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    assert(dsp == 0);
-    assert(result == rt);
-
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/insv.c b/tests/tcg/mips/mips32-dsp/insv.c
deleted file mode 100644
index 9d67469..0000000
--- a/tests/tcg/mips/mips32-dsp/insv.c
+++ /dev/null
@@ -1,36 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rt, rs, dsp;
-    int result;
-
-    /* msb = 10, lsb = 5 */
-    dsp    = 0x305;
-    rt     = 0x12345678;
-    rs     = 0x87654321;
-    result = 0x12345438;
-    __asm
-        ("wrdsp %2, 0x03\n\t"
-         "insv  %0, %1\n\t"
-         : "+r"(rt)
-         : "r"(rs), "r"(dsp)
-        );
-    assert(rt == result);
-
-    dsp    = 0x1000;
-    rt     = 0xF0F0F0F0;
-    rs     = 0xA5A5A5A5;
-    result = 0xA5A5A5A5;
-
-    __asm
-        ("wrdsp %2\n\t"
-         "insv  %0, %1\n\t"
-         : "+r"(rt)
-         : "r"(rs), "r"(dsp)
-        );
-    assert(rt == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/lbux.c b/tests/tcg/mips/mips32-dsp/lbux.c
deleted file mode 100644
index 2337abe..0000000
--- a/tests/tcg/mips/mips32-dsp/lbux.c
+++ /dev/null
@@ -1,25 +0,0 @@
-#include <stdio.h>
-#include <assert.h>
-
-int main(void)
-{
-    int value, rd;
-    int *p;
-    unsigned long addr, index;
-    int result;
-
-    value  = 0xBCDEF389;
-    p = &value;
-    addr = (unsigned long)p;
-    index  = 0;
-    result = value & 0xFF;
-    __asm
-        ("lbux %0, %1(%2)\n\t"
-         : "=r"(rd)
-         : "r"(index), "r"(addr)
-        );
-
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/lhx.c b/tests/tcg/mips/mips32-dsp/lhx.c
deleted file mode 100644
index 10be3b3..0000000
--- a/tests/tcg/mips/mips32-dsp/lhx.c
+++ /dev/null
@@ -1,25 +0,0 @@
-#include <stdio.h>
-#include <assert.h>
-
-int main(void)
-{
-    int value, rd;
-    int *p;
-    unsigned long addr, index;
-    int result;
-
-    value  = 0xBCDEF389;
-    p = &value;
-    addr = (unsigned long)p;
-    index  = 0;
-    result = 0xFFFFF389;
-    __asm
-        ("lhx %0, %1(%2)\n\t"
-         : "=r"(rd)
-         : "r"(index), "r"(addr)
-        );
-
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/lwx.c b/tests/tcg/mips/mips32-dsp/lwx.c
deleted file mode 100644
index e6543c9..0000000
--- a/tests/tcg/mips/mips32-dsp/lwx.c
+++ /dev/null
@@ -1,25 +0,0 @@
-#include <stdio.h>
-#include <assert.h>
-
-int main(void)
-{
-    int value, rd;
-    int *p;
-    unsigned long addr, index;
-    int result;
-
-    value  = 0xBCDEF389;
-    p = &value;
-    addr = (unsigned long)p;
-    index  = 0;
-    result = 0xBCDEF389;
-    __asm
-        ("lwx %0, %1(%2)\n\t"
-         : "=r"(rd)
-         : "r"(index), "r"(addr)
-        );
-
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/madd.c b/tests/tcg/mips/mips32-dsp/madd.c
deleted file mode 100644
index af4bfcf..0000000
--- a/tests/tcg/mips/mips32-dsp/madd.c
+++ /dev/null
@@ -1,31 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rt, rs;
-    int achi, acli;
-    int acho, aclo;
-    int resulth, resultl;
-
-    achi = 0x05;
-    acli = 0xB4CB;
-    rs  = 0x01;
-    rt  = 0x01;
-    resulth = 0x05;
-    resultl = 0xB4CC;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "madd $ac1, %4, %5\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-    assert(resulth == acho);
-    assert(resultl == aclo);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/maddu.c b/tests/tcg/mips/mips32-dsp/maddu.c
deleted file mode 100644
index af4bfcf..0000000
--- a/tests/tcg/mips/mips32-dsp/maddu.c
+++ /dev/null
@@ -1,31 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rt, rs;
-    int achi, acli;
-    int acho, aclo;
-    int resulth, resultl;
-
-    achi = 0x05;
-    acli = 0xB4CB;
-    rs  = 0x01;
-    rt  = 0x01;
-    resulth = 0x05;
-    resultl = 0xB4CC;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "madd $ac1, %4, %5\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-    assert(resulth == acho);
-    assert(resultl == aclo);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/main.c b/tests/tcg/mips/mips32-dsp/main.c
deleted file mode 100644
index b296b20..0000000
--- a/tests/tcg/mips/mips32-dsp/main.c
+++ /dev/null
@@ -1,6 +0,0 @@
-#include<stdio.h>
-
-int main()
-{
-    printf("hello world\n");
-}
diff --git a/tests/tcg/mips/mips32-dsp/maq_s_w_phl.c b/tests/tcg/mips/mips32-dsp/maq_s_w_phl.c
deleted file mode 100644
index 0f7c070..0000000
--- a/tests/tcg/mips/mips32-dsp/maq_s_w_phl.c
+++ /dev/null
@@ -1,55 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rt, rs;
-    int achi, acli;
-    int dsp;
-    int acho, aclo;
-    int resulth, resultl;
-    int resdsp;
-
-    achi = 0x00000005;
-    acli = 0x0000B4CB;
-    rs  = 0xFF060000;
-    rt  = 0xCB000000;
-    resulth = 0x00000005;
-    resultl = 0x006838CB;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "maq_s.w.phl $ac1, %4, %5\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-    assert(resulth == acho);
-    assert(resultl == aclo);
-
-    achi = 0x00000006;
-    acli = 0x0000B4CB;
-    rs  = 0x80000000;
-    rt  = 0x80000000;
-    resulth = 0x00000006;
-    resultl = 0x8000B4CA;
-    resdsp = 1;
-
-    __asm
-        ("mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "maq_s.w.phl $ac1, %5, %6\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "=r"(acho), "=r"(aclo), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-    assert(resulth == acho);
-    assert(resultl == aclo);
-    assert(((dsp >> 17) & 0x01) == resdsp);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/maq_s_w_phr.c b/tests/tcg/mips/mips32-dsp/maq_s_w_phr.c
deleted file mode 100644
index 942722a..0000000
--- a/tests/tcg/mips/mips32-dsp/maq_s_w_phr.c
+++ /dev/null
@@ -1,55 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rt, rs;
-    int achi, acli;
-    int dsp;
-    int acho, aclo;
-    int resulth, resultl;
-    int resdsp;
-
-    achi = 0x00000005;
-    acli = 0x0000B4CB;
-    rs  = 0x0000FF06;
-    rt  = 0x0000CB00;
-    resulth = 0x00000005;
-    resultl = 0x006838CB;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "maq_s.w.phr $ac1, %4, %5\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-    assert(resulth == acho);
-    assert(resultl == aclo);
-
-    achi = 0x00000006;
-    acli = 0x0000B4CB;
-    rs  = 0x00008000;
-    rt  = 0x00008000;
-    resulth = 0x00000006;
-    resultl = 0x8000B4CA;
-    resdsp = 1;
-
-    __asm
-        ("mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "maq_s.w.phr $ac1, %5, %6\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "=r"(acho), "=r"(aclo), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-    assert(resulth == acho);
-    assert(resultl == aclo);
-    assert(((dsp >> 17) & 0x01) == resdsp);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/maq_sa_w_phl.c b/tests/tcg/mips/mips32-dsp/maq_sa_w_phl.c
deleted file mode 100644
index d83dce6..0000000
--- a/tests/tcg/mips/mips32-dsp/maq_sa_w_phl.c
+++ /dev/null
@@ -1,55 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rt, rs;
-    int achi, acli;
-    int dsp;
-    int acho, aclo;
-    int resulth, resultl;
-    int resdsp;
-
-    achi = 0x00000000;
-    acli = 0x0000B4CB;
-    rs = 0xFF060000;
-    rt = 0xCB000000;
-    resulth = 0x00000000;
-    resultl = 0x006838CB;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "maq_sa.w.phl $ac1, %4, %5\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-    assert(resulth == acho);
-    assert(resultl == aclo);
-
-    achi = 0x00000000;
-    acli = 0x0000B4CB;
-    rs  = 0x80000000;
-    rt  = 0x80000000;
-    resulth = 0x00;
-    resultl = 0x7fffffff;
-    resdsp = 0x01;
-
-    __asm
-        ("mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "maq_sa.w.phl $ac1, %5, %6\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "=r"(acho), "=r"(aclo), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-    assert(resulth == acho);
-    assert(resultl == aclo);
-    assert(((dsp >> 17) & 0x01) == 0x01);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/maq_sa_w_phr.c b/tests/tcg/mips/mips32-dsp/maq_sa_w_phr.c
deleted file mode 100644
index d233111..0000000
--- a/tests/tcg/mips/mips32-dsp/maq_sa_w_phr.c
+++ /dev/null
@@ -1,55 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rt, rs;
-    int achi, acli;
-    int dsp;
-    int acho, aclo;
-    int resulth, resultl;
-    int resdsp;
-
-    achi = 0x00000000;
-    acli = 0x0000B4CB;
-    rs  = 0x0000FF06;
-    rt  = 0x0000CB00;
-    resulth = 0x00000000;
-    resultl = 0x006838CB;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "maq_sa.w.phr $ac1, %4, %5\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-    assert(resulth == acho);
-    assert(resultl == aclo);
-
-    achi = 0x00000000;
-    acli = 0x0000B4CB;
-    rs  = 0x00008000;
-    rt  = 0x00008000;
-    resulth = 0x00000000;
-    resultl = 0x7FFFFFFF;
-    resdsp = 0x01;
-
-    __asm
-        ("mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "maq_sa.w.phr $ac1, %5, %6\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "=r"(acho), "=r"(aclo), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-    assert(resulth == acho);
-    assert(resultl == aclo);
-    assert(((dsp >> 17) & 0x01) == 0x01);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/mfhi.c b/tests/tcg/mips/mips32-dsp/mfhi.c
deleted file mode 100644
index 43a8066..0000000
--- a/tests/tcg/mips/mips32-dsp/mfhi.c
+++ /dev/null
@@ -1,21 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int achi, acho;
-    int result;
-
-    achi   = 0x004433;
-    result = 0x004433;
-
-    __asm
-        ("mthi %1, $ac1\n\t"
-         "mfhi %0, $ac1\n\t"
-         : "=r"(acho)
-         : "r"(achi)
-        );
-    assert(result == acho);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/mflo.c b/tests/tcg/mips/mips32-dsp/mflo.c
deleted file mode 100644
index caeafdb..0000000
--- a/tests/tcg/mips/mips32-dsp/mflo.c
+++ /dev/null
@@ -1,21 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int acli, aclo;
-    int result;
-
-    acli   = 0x004433;
-    result = 0x004433;
-
-    __asm
-        ("mthi %1, $ac1\n\t"
-         "mfhi %0, $ac1\n\t"
-         : "=r"(aclo)
-         : "r"(acli)
-        );
-    assert(result == aclo);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/modsub.c b/tests/tcg/mips/mips32-dsp/modsub.c
deleted file mode 100644
index c294eeb..0000000
--- a/tests/tcg/mips/mips32-dsp/modsub.c
+++ /dev/null
@@ -1,30 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int result;
-
-    rs     = 0xFFFFFFFF;
-    rt     = 0x000000FF;
-    result = 0xFFFFFF00;
-    __asm
-        ("modsub %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(result == rd);
-
-    rs     = 0x00000000;
-    rt     = 0x00CD1FFF;
-    result = 0x0000CD1F;
-    __asm
-        ("modsub %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(result == rd);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/msub.c b/tests/tcg/mips/mips32-dsp/msub.c
deleted file mode 100644
index 5779e6f..0000000
--- a/tests/tcg/mips/mips32-dsp/msub.c
+++ /dev/null
@@ -1,30 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int achi, acli, rs, rt;
-    int acho, aclo;
-    int resulth, resultl;
-
-    rs      = 0x00BBAACC;
-    rt      = 0x0B1C3D2F;
-    achi    = 0x00004433;
-    acli    = 0xFFCC0011;
-    resulth = 0xFFF81F29;
-    resultl = 0xB355089D;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "msub $ac1, %4, %5\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-    assert(acho == resulth);
-    assert(aclo == resultl);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/msubu.c b/tests/tcg/mips/mips32-dsp/msubu.c
deleted file mode 100644
index e0f9b5a..0000000
--- a/tests/tcg/mips/mips32-dsp/msubu.c
+++ /dev/null
@@ -1,30 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int achi, acli, rs, rt;
-    int acho, aclo;
-    int resulth, resultl;
-
-    rs      = 0x00BBAACC;
-    rt      = 0x0B1C3D2F;
-    achi    = 0x00004433;
-    acli    = 0xFFCC0011;
-    resulth = 0xFFF81F29;
-    resultl = 0xB355089D;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "msubu $ac1, %4, %5\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-    assert(acho == resulth);
-    assert(aclo == resultl);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/mthi.c b/tests/tcg/mips/mips32-dsp/mthi.c
deleted file mode 100644
index 43a8066..0000000
--- a/tests/tcg/mips/mips32-dsp/mthi.c
+++ /dev/null
@@ -1,21 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int achi, acho;
-    int result;
-
-    achi   = 0x004433;
-    result = 0x004433;
-
-    __asm
-        ("mthi %1, $ac1\n\t"
-         "mfhi %0, $ac1\n\t"
-         : "=r"(acho)
-         : "r"(achi)
-        );
-    assert(result == acho);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/mthlip.c b/tests/tcg/mips/mips32-dsp/mthlip.c
deleted file mode 100644
index 85f94d8..0000000
--- a/tests/tcg/mips/mips32-dsp/mthlip.c
+++ /dev/null
@@ -1,58 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rs, ach, acl, dsp;
-    int result, resulth, resultl;
-
-    dsp = 0x07;
-    ach = 0x05;
-    acl = 0xB4CB;
-    rs  = 0x00FFBBAA;
-    resulth = 0xB4CB;
-    resultl = 0x00FFBBAA;
-    result  = 0x27;
-
-    __asm
-        ("wrdsp %0, 0x01\n\t"
-         "mthi %1, $ac1\n\t"
-         "mtlo %2, $ac1\n\t"
-         "mthlip %3, $ac1\n\t"
-         "mfhi %1, $ac1\n\t"
-         "mflo %2, $ac1\n\t"
-         "rddsp %0\n\t"
-         : "+r"(dsp), "+r"(ach), "+r"(acl)
-         : "r"(rs)
-        );
-    dsp = dsp & 0x3F;
-    assert(dsp == result);
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-    dsp = 0x1f;
-    ach = 0x05;
-    acl = 0xB4CB;
-    rs  = 0x00FFBBAA;
-    resulth = 0xB4CB;
-    resultl = 0x00FFBBAA;
-    result  = 0x3f;
-
-    __asm
-        ("wrdsp %0, 0x01\n\t"
-         "mthi %1, $ac1\n\t"
-         "mtlo %2, $ac1\n\t"
-         "mthlip %3, $ac1\n\t"
-         "mfhi %1, $ac1\n\t"
-         "mflo %2, $ac1\n\t"
-         "rddsp %0\n\t"
-         : "+r"(dsp), "+r"(ach), "+r"(acl)
-         : "r"(rs)
-        );
-    dsp = dsp & 0x3F;
-    assert(dsp == result);
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/mtlo.c b/tests/tcg/mips/mips32-dsp/mtlo.c
deleted file mode 100644
index caeafdb..0000000
--- a/tests/tcg/mips/mips32-dsp/mtlo.c
+++ /dev/null
@@ -1,21 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int acli, aclo;
-    int result;
-
-    acli   = 0x004433;
-    result = 0x004433;
-
-    __asm
-        ("mthi %1, $ac1\n\t"
-         "mfhi %0, $ac1\n\t"
-         : "=r"(aclo)
-         : "r"(acli)
-        );
-    assert(result == aclo);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/muleq_s_w_phl.c b/tests/tcg/mips/mips32-dsp/muleq_s_w_phl.c
deleted file mode 100644
index b3a5370..0000000
--- a/tests/tcg/mips/mips32-dsp/muleq_s_w_phl.c
+++ /dev/null
@@ -1,41 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt, dsp;
-    int result, resultdsp;
-
-    rs = 0x80001234;
-    rt = 0x80001234;
-    result = 0x7FFFFFFF;
-    resultdsp = 1;
-
-    __asm
-        ("muleq_s.w.phl %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 21) & 0x01;
-    assert(rd  == result);
-    assert(dsp == resultdsp);
-
-    rs = 0x12349988;
-    rt = 0x43219988;
-    result = 0x98be968;
-    resultdsp = 1;
-
-    __asm
-        ("muleq_s.w.phl %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 21) & 0x01;
-    assert(rd  == result);
-    assert(dsp == resultdsp);
-
-    return 0;
-}
-
diff --git a/tests/tcg/mips/mips32-dsp/muleq_s_w_phr.c b/tests/tcg/mips/mips32-dsp/muleq_s_w_phr.c
deleted file mode 100644
index 8066d7d..0000000
--- a/tests/tcg/mips/mips32-dsp/muleq_s_w_phr.c
+++ /dev/null
@@ -1,40 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt, dsp;
-    int result, resultdsp;
-
-    rs = 0x8000;
-    rt = 0x8000;
-    result = 0x7FFFFFFF;
-    resultdsp = 1;
-
-    __asm
-        ("muleq_s.w.phr %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 21) & 0x01;
-    assert(rd  == result);
-    assert(dsp == resultdsp);
-
-    rs = 0x1234;
-    rt = 0x4321;
-    result = 0x98be968;
-    resultdsp = 1;
-
-    __asm
-        ("muleq_s.w.phr %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 21) & 0x01;
-    assert(rd  == result);
-    assert(dsp == resultdsp);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/muleu_s_ph_qbl.c b/tests/tcg/mips/mips32-dsp/muleu_s_ph_qbl.c
deleted file mode 100644
index 66a3828..0000000
--- a/tests/tcg/mips/mips32-dsp/muleu_s_ph_qbl.c
+++ /dev/null
@@ -1,25 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt, dsp;
-    int result, resultdsp;
-
-    rs = 0x80001234;
-    rt = 0x80004321;
-    result = 0xFFFF0000;
-    resultdsp = 1;
-
-    __asm
-        ("muleu_s.ph.qbl %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 21) & 0x01;
-    assert(rd  == result);
-    assert(dsp == resultdsp);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/muleu_s_ph_qbr.c b/tests/tcg/mips/mips32-dsp/muleu_s_ph_qbr.c
deleted file mode 100644
index 4cc6c8f..0000000
--- a/tests/tcg/mips/mips32-dsp/muleu_s_ph_qbr.c
+++ /dev/null
@@ -1,25 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt, dsp;
-    int result, resultdsp;
-
-    rs = 0x8000;
-    rt = 0x80004321;
-    result = 0xFFFF0000;
-    resultdsp = 1;
-
-    __asm
-        ("muleu_s.ph.qbr %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 21) & 0x01;
-    assert(rd  == result);
-    assert(dsp == resultdsp);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/mulq_rs_ph.c b/tests/tcg/mips/mips32-dsp/mulq_rs_ph.c
deleted file mode 100644
index 370c2a8..0000000
--- a/tests/tcg/mips/mips32-dsp/mulq_rs_ph.c
+++ /dev/null
@@ -1,42 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt, dsp;
-    int result, resultdsp;
-
-    rs = 0x80001234;
-    rt = 0x80004321;
-    result = 0x7FFF098C;
-    resultdsp = 1;
-
-    __asm
-        ("wrdsp $0\n\t"
-         "mulq_rs.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 21) & 0x01;
-    assert(rd  == result);
-    assert(dsp == resultdsp);
-
-    rs = 0x80011234;
-    rt = 0x80024321;
-    result = 0x7FFD098C;
-    resultdsp = 0;
-
-    __asm
-        ("wrdsp $0\n\t"
-         "mulq_rs.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 21) & 0x01;
-    assert(rd  == result);
-    assert(dsp == resultdsp);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/mult.c b/tests/tcg/mips/mips32-dsp/mult.c
deleted file mode 100644
index 15e6fde..0000000
--- a/tests/tcg/mips/mips32-dsp/mult.c
+++ /dev/null
@@ -1,24 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rs, rt, ach, acl;
-    int result, resulth, resultl;
-
-    rs  = 0x00FFBBAA;
-    rt  = 0x4B231000;
-    resulth = 0x4b0f01;
-    resultl = 0x71f8a000;
-    __asm
-        ("mult $ac1, %2, %3\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "=r"(ach), "=r"(acl)
-         : "r"(rs), "r"(rt)
-        );
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/multu.c b/tests/tcg/mips/mips32-dsp/multu.c
deleted file mode 100644
index 85d36c1..0000000
--- a/tests/tcg/mips/mips32-dsp/multu.c
+++ /dev/null
@@ -1,24 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rs, rt, ach, acl;
-    int result, resulth, resultl;
-
-    rs  = 0x00FFBBAA;
-    rt  = 0x4B231000;
-    resulth = 0x4b0f01;
-    resultl = 0x71f8a000;
-    __asm
-        ("multu $ac1, %2, %3\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "=r"(ach), "=r"(acl)
-         : "r"(rs), "r"(rt)
-        );
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/packrl_ph.c b/tests/tcg/mips/mips32-dsp/packrl_ph.c
deleted file mode 100644
index 1f8e699..0000000
--- a/tests/tcg/mips/mips32-dsp/packrl_ph.c
+++ /dev/null
@@ -1,21 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int result;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result = 0x56788765;
-
-    __asm
-        ("packrl.ph %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(result == rd);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/pick_ph.c b/tests/tcg/mips/mips32-dsp/pick_ph.c
deleted file mode 100644
index 929a002..0000000
--- a/tests/tcg/mips/mips32-dsp/pick_ph.c
+++ /dev/null
@@ -1,49 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt, dsp;
-    int result;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    dsp = 0x0A000000;
-    result = 0x12344321;
-
-    __asm
-        ("wrdsp %3, 0x10\n\t"
-         "pick.ph %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt), "r"(dsp)
-        );
-    assert(rd == result);
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    dsp = 0x03000000;
-    result = 0x12345678;
-
-    __asm
-        ("wrdsp %3, 0x10\n\t"
-         "pick.ph %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt), "r"(dsp)
-        );
-    assert(rd == result);
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    dsp = 0x00000000;
-    result = 0x87654321;
-
-    __asm
-        ("wrdsp %3, 0x10\n\t"
-         "pick.ph %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt), "r"(dsp)
-        );
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/pick_qb.c b/tests/tcg/mips/mips32-dsp/pick_qb.c
deleted file mode 100644
index a790475..0000000
--- a/tests/tcg/mips/mips32-dsp/pick_qb.c
+++ /dev/null
@@ -1,36 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt, dsp;
-    int result;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    dsp = 0x0f000000;
-    result = 0x12345678;
-
-    __asm
-        ("wrdsp %3, 0x10\n\t"
-         "pick.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt), "r"(dsp)
-        );
-    assert(rd == result);
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    dsp = 0x00000000;
-    result = 0x87654321;
-
-    __asm
-        ("wrdsp %3, 0x10\n\t"
-         "pick.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt), "r"(dsp)
-        );
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/preceq_w_phl.c b/tests/tcg/mips/mips32-dsp/preceq_w_phl.c
deleted file mode 100644
index bf70bf7..0000000
--- a/tests/tcg/mips/mips32-dsp/preceq_w_phl.c
+++ /dev/null
@@ -1,20 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rt;
-    int result;
-
-    rt = 0x87654321;
-    result = 0x87650000;
-
-    __asm
-        ("preceq.w.phl %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    assert(result == rd);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/preceq_w_phr.c b/tests/tcg/mips/mips32-dsp/preceq_w_phr.c
deleted file mode 100644
index 3f885ef..0000000
--- a/tests/tcg/mips/mips32-dsp/preceq_w_phr.c
+++ /dev/null
@@ -1,20 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rt;
-    int result;
-
-    rt = 0x87654321;
-    result = 0x43210000;
-
-    __asm
-        ("preceq.w.phr %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    assert(result == rd);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/precequ_ph_qbl.c b/tests/tcg/mips/mips32-dsp/precequ_ph_qbl.c
deleted file mode 100644
index 63b7a95..0000000
--- a/tests/tcg/mips/mips32-dsp/precequ_ph_qbl.c
+++ /dev/null
@@ -1,20 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rt;
-    int result;
-
-    rt = 0x87654321;
-    result = 0x43803280;
-
-    __asm
-        ("precequ.ph.qbl %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    assert(result == rd);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/precequ_ph_qbla.c b/tests/tcg/mips/mips32-dsp/precequ_ph_qbla.c
deleted file mode 100644
index 31627f0..0000000
--- a/tests/tcg/mips/mips32-dsp/precequ_ph_qbla.c
+++ /dev/null
@@ -1,20 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rt;
-    int result;
-
-    rt = 0x87654321;
-    result = 0x43802180;
-
-    __asm
-        ("precequ.ph.qbla %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    assert(result == rd);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/precequ_ph_qbr.c b/tests/tcg/mips/mips32-dsp/precequ_ph_qbr.c
deleted file mode 100644
index b6f72d3..0000000
--- a/tests/tcg/mips/mips32-dsp/precequ_ph_qbr.c
+++ /dev/null
@@ -1,20 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rt;
-    int result;
-
-    rt = 0x87654321;
-    result = 0x21801080;
-
-    __asm
-        ("precequ.ph.qbr %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    assert(result == rd);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/precequ_ph_qbra.c b/tests/tcg/mips/mips32-dsp/precequ_ph_qbra.c
deleted file mode 100644
index 4764fd0..0000000
--- a/tests/tcg/mips/mips32-dsp/precequ_ph_qbra.c
+++ /dev/null
@@ -1,20 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rt;
-    int result;
-
-    rt = 0x87654321;
-    result = 0x32801080;
-
-    __asm
-        ("precequ.ph.qbra %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    assert(result == rd);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/preceu_ph_qbl.c b/tests/tcg/mips/mips32-dsp/preceu_ph_qbl.c
deleted file mode 100644
index fa95c26..0000000
--- a/tests/tcg/mips/mips32-dsp/preceu_ph_qbl.c
+++ /dev/null
@@ -1,20 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rt;
-    int result;
-
-    rt = 0x87654321;
-    result = 0x00870065;
-
-    __asm
-        ("preceu.ph.qbl %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    assert(result == rd);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/preceu_ph_qbla.c b/tests/tcg/mips/mips32-dsp/preceu_ph_qbla.c
deleted file mode 100644
index 021f21a..0000000
--- a/tests/tcg/mips/mips32-dsp/preceu_ph_qbla.c
+++ /dev/null
@@ -1,20 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rt;
-    int result;
-
-    rt = 0x87654321;
-    result = 0x00870043;
-
-    __asm
-        ("preceu.ph.qbla %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    assert(result == rd);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/preceu_ph_qbr.c b/tests/tcg/mips/mips32-dsp/preceu_ph_qbr.c
deleted file mode 100644
index 03df18c..0000000
--- a/tests/tcg/mips/mips32-dsp/preceu_ph_qbr.c
+++ /dev/null
@@ -1,20 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rt;
-    int result;
-
-    rt = 0x87654321;
-    result = 0x00430021;
-
-    __asm
-        ("preceu.ph.qbr %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    assert(result == rd);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/preceu_ph_qbra.c b/tests/tcg/mips/mips32-dsp/preceu_ph_qbra.c
deleted file mode 100644
index 6343276..0000000
--- a/tests/tcg/mips/mips32-dsp/preceu_ph_qbra.c
+++ /dev/null
@@ -1,20 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rt;
-    int result;
-
-    rt = 0x87654321;
-    result = 0x00650021;
-
-    __asm
-        ("preceu.ph.qbra %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    assert(result == rd);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/precrq_ph_w.c b/tests/tcg/mips/mips32-dsp/precrq_ph_w.c
deleted file mode 100644
index 25d45f1..0000000
--- a/tests/tcg/mips/mips32-dsp/precrq_ph_w.c
+++ /dev/null
@@ -1,21 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int result;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result = 0x12348765;
-
-    __asm
-        ("precrq.ph.w %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(result == rd);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/precrq_qb_ph.c b/tests/tcg/mips/mips32-dsp/precrq_qb_ph.c
deleted file mode 100644
index fe23acc..0000000
--- a/tests/tcg/mips/mips32-dsp/precrq_qb_ph.c
+++ /dev/null
@@ -1,21 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int result;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result = 0x12568743;
-
-    __asm
-        ("precrq.qb.ph %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(result == rd);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/precrq_rs_ph_w.c b/tests/tcg/mips/mips32-dsp/precrq_rs_ph_w.c
deleted file mode 100644
index da6845b..0000000
--- a/tests/tcg/mips/mips32-dsp/precrq_rs_ph_w.c
+++ /dev/null
@@ -1,51 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int dsp;
-    int result;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result = 0x12348765;
-
-    __asm
-        ("wrdsp $0\n\t"
-         "precrq_rs.ph.w %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(result == rd);
-
-    rs = 0x7FFFC678;
-    rt = 0x865432A0;
-    result = 0x7FFF8654;
-
-    __asm
-        ("wrdsp $0\n\t"
-         "precrq_rs.ph.w %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    assert(((dsp >> 22) & 0x01) == 1);
-    assert(result == rd);
-
-    rs = 0xBEEFFEED;
-    rt = 0x7FFF8000;
-    result = 0xBEF07FFF;
-
-    __asm
-        ("wrdsp $0\n\t"
-         "precrq_rs.ph.w %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    assert(((dsp >> 22) & 0x01) == 1);
-    assert(result == rd);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/precrqu_s_qb_ph.c b/tests/tcg/mips/mips32-dsp/precrqu_s_qb_ph.c
deleted file mode 100644
index 7481d5a..0000000
--- a/tests/tcg/mips/mips32-dsp/precrqu_s_qb_ph.c
+++ /dev/null
@@ -1,24 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int dsp;
-    int result;
-
-    rs = 0x12345678;
-    rt = 0x87657FFF;
-    result = 0x24AC00FF;
-
-    __asm
-        ("precrqu_s.qb.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    assert(result == rd);
-    assert(((dsp >> 22) & 0x01) == 0x01);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/raddu_w_qb.c b/tests/tcg/mips/mips32-dsp/raddu_w_qb.c
deleted file mode 100644
index 77a983c..0000000
--- a/tests/tcg/mips/mips32-dsp/raddu_w_qb.c
+++ /dev/null
@@ -1,20 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs;
-    int result;
-
-    rs = 0x12345678;
-    result = 0x114;
-
-    __asm
-        ("raddu.w.qb %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rs)
-        );
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/rddsp.c b/tests/tcg/mips/mips32-dsp/rddsp.c
deleted file mode 100644
index 2f30285..0000000
--- a/tests/tcg/mips/mips32-dsp/rddsp.c
+++ /dev/null
@@ -1,46 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int dsp_i, dsp_o;
-    int ccond_i, outflag_i, efi_i, c_i, scount_i, pos_i;
-    int ccond_o, outflag_o, efi_o, c_o, scount_o, pos_o;
-
-    ccond_i   = 0x0000000C;  /* 4 */
-    outflag_i = 0x0000001B;  /* 3 */
-    efi_i     = 0x00000001;  /* 5 */
-    c_i       = 0x00000001;  /* 2 */
-    scount_i  = 0x0000000F;  /* 1 */
-    pos_i     = 0x0000000C;  /* 0 */
-
-    dsp_i = (ccond_i   << 24) | \
-            (outflag_i << 16) | \
-            (efi_i     << 14) | \
-            (c_i       << 13) | \
-            (scount_i  <<  7) | \
-            pos_i;
-
-    __asm
-        ("wrdsp %1, 0x3F\n\t"
-         "rddsp %0, 0x3F\n\t"
-         : "=r"(dsp_o)
-         : "r"(dsp_i)
-        );
-
-    ccond_o   = (dsp_o >> 24) & 0xFF;
-    outflag_o = (dsp_o >> 16) & 0xFF;
-    efi_o     = (dsp_o >> 14) & 0x01;
-    c_o       = (dsp_o >> 14) & 0x01;
-    scount_o  = (dsp_o >>  7) & 0x3F;
-    pos_o     =  dsp_o & 0x1F;
-
-    assert(ccond_o   == ccond_i);
-    assert(outflag_o == outflag_i);
-    assert(efi_o     == efi_i);
-    assert(c_o       == c_i);
-    assert(scount_o  == scount_i);
-    assert(pos_o     == pos_i);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/repl_ph.c b/tests/tcg/mips/mips32-dsp/repl_ph.c
deleted file mode 100644
index 2107495..0000000
--- a/tests/tcg/mips/mips32-dsp/repl_ph.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, result;
-
-    result = 0x01BF01BF;
-    __asm
-        ("repl.ph %0, 0x1BF\n\t"
-         : "=r"(rd)
-        );
-    assert(rd == result);
-
-    result = 0x01FF01FF;
-    __asm
-        ("repl.ph %0, 0x01FF\n\t"
-         : "=r"(rd)
-        );
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/repl_qb.c b/tests/tcg/mips/mips32-dsp/repl_qb.c
deleted file mode 100644
index 6631393..0000000
--- a/tests/tcg/mips/mips32-dsp/repl_qb.c
+++ /dev/null
@@ -1,16 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, result;
-
-    result = 0xBFBFBFBF;
-    __asm
-        ("repl.qb %0, 0xBF\n\t"
-         : "=r"(rd)
-        );
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/replv_ph.c b/tests/tcg/mips/mips32-dsp/replv_ph.c
deleted file mode 100644
index 07fb15f..0000000
--- a/tests/tcg/mips/mips32-dsp/replv_ph.c
+++ /dev/null
@@ -1,19 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rt;
-    int result;
-
-    rt = 0x12345678;
-    result = 0x56785678;
-    __asm
-        ("replv.ph %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/replv_qb.c b/tests/tcg/mips/mips32-dsp/replv_qb.c
deleted file mode 100644
index dd1271f..0000000
--- a/tests/tcg/mips/mips32-dsp/replv_qb.c
+++ /dev/null
@@ -1,19 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rt;
-    int result;
-
-    rt     = 0x12345678;
-    result = 0x78787878;
-    __asm
-        ("replv.qb %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/shilo.c b/tests/tcg/mips/mips32-dsp/shilo.c
deleted file mode 100644
index ce8ebc6..0000000
--- a/tests/tcg/mips/mips32-dsp/shilo.c
+++ /dev/null
@@ -1,45 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int ach, acl;
-    int resulth, resultl;
-
-    ach = 0xBBAACCFF;
-    acl = 0x1C3B001D;
-
-    resulth = 0x17755;
-    resultl = 0x99fe3876;
-
-    __asm
-        ("mthi %0, $ac1\n\t"
-         "mtlo %1, $ac1\n\t"
-         "shilo $ac1, 0x0F\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "+r"(ach), "+r"(acl)
-        );
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-
-    ach = 0x1;
-    acl = 0x80000000;
-
-    resulth = 0x3;
-    resultl = 0x0;
-
-    __asm
-        ("mthi %0, $ac1\n\t"
-         "mtlo %1, $ac1\n\t"
-         "shilo $ac1, -1\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "+r"(ach), "+r"(acl)
-        );
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/shilov.c b/tests/tcg/mips/mips32-dsp/shilov.c
deleted file mode 100644
index e1d6cea..0000000
--- a/tests/tcg/mips/mips32-dsp/shilov.c
+++ /dev/null
@@ -1,49 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rs, ach, acl;
-    int resulth, resultl;
-
-    rs  = 0x0F;
-    ach = 0xBBAACCFF;
-    acl = 0x1C3B001D;
-
-    resulth = 0x17755;
-    resultl = 0x99fe3876;
-
-    __asm
-        ("mthi %0, $ac1\n\t"
-         "mtlo %1, $ac1\n\t"
-         "shilov $ac1, %2\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "+r"(ach), "+r"(acl)
-         : "r"(rs)
-        );
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-
-    rs  = 0xffffffff;
-    ach = 0x1;
-    acl = 0x80000000;
-
-    resulth = 0x3;
-    resultl = 0x0;
-
-    __asm
-        ("mthi %0, $ac1\n\t"
-         "mtlo %1, $ac1\n\t"
-         "shilov $ac1, %2\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "+r"(ach), "+r"(acl)
-         : "r"(rs)
-        );
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/shll_ph.c b/tests/tcg/mips/mips32-dsp/shll_ph.c
deleted file mode 100644
index 5fa58cc..0000000
--- a/tests/tcg/mips/mips32-dsp/shll_ph.c
+++ /dev/null
@@ -1,55 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rt, dsp;
-    int result, resultdsp;
-
-    rt        = 0x12345678;
-    result    = 0xA000C000;
-    resultdsp = 1;
-
-    __asm
-        ("wrdsp $0\n\t"
-         "shll.ph %0, %2, 0x0B\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt)
-        );
-    dsp = (dsp >> 22) & 0x01;
-    assert(dsp == resultdsp);
-    assert(rd  == result);
-
-    rt        = 0x7fff8000;
-    result    = 0xfffe0000;
-    resultdsp = 1;
-
-    __asm
-        ("wrdsp $0\n\t"
-         "shll.ph %0, %2, 0x01\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt)
-        );
-    dsp = (dsp >> 22) & 0x01;
-    assert(dsp == resultdsp);
-    assert(rd  == result);
-
-    rt        = 0x00000001;
-    result    = 0x00008000;
-    resultdsp = 1;
-
-    __asm
-        ("wrdsp $0\n\t"
-         "shll.ph %0, %2, 0x0F\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt)
-        );
-    dsp = (dsp >> 22) & 0x01;
-    assert(dsp == resultdsp);
-    assert(rd  == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/shll_qb.c b/tests/tcg/mips/mips32-dsp/shll_qb.c
deleted file mode 100644
index 729716d..0000000
--- a/tests/tcg/mips/mips32-dsp/shll_qb.c
+++ /dev/null
@@ -1,55 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rt, dsp;
-    int result, resultdsp;
-
-    rt     = 0x87654321;
-    result  = 0x87654321;
-    resultdsp = 0x00;
-
-    __asm
-        ("wrdsp $0\n\t"
-         "shll.qb %0, %2, 0x00\n\t"
-         "rddsp   %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt)
-        );
-    dsp = (dsp >> 22) & 0x01;
-    assert(dsp == resultdsp);
-    assert(rd == result);
-
-    rt     = 0x87654321;
-    result = 0x38281808;
-    resultdsp = 0x01;
-
-    __asm
-        ("wrdsp $0\n\t"
-         "shll.qb %0, %2, 0x03\n\t"
-         "rddsp   %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt)
-        );
-    dsp = (dsp >> 22) & 0x01;
-    assert(dsp == resultdsp);
-    assert(rd == result);
-
-    rt     = 0x00000001;
-    result = 0x00000080;
-    resultdsp = 0x00;
-
-    __asm
-        ("wrdsp $0\n\t"
-         "shll.qb %0, %2, 0x07\n\t"
-         "rddsp   %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt)
-        );
-    dsp = (dsp >> 22) & 0x01;
-    assert(dsp == resultdsp);
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/shll_s_ph.c b/tests/tcg/mips/mips32-dsp/shll_s_ph.c
deleted file mode 100644
index 910fea3..0000000
--- a/tests/tcg/mips/mips32-dsp/shll_s_ph.c
+++ /dev/null
@@ -1,24 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rt, dsp;
-    int result, resultdsp;
-
-    rt        = 0x12345678;
-    result    = 0x7FFF7FFF;
-    resultdsp = 0x01;
-
-    __asm
-        ("shll_s.ph %0, %2, 0x0B\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt)
-        );
-    dsp = (dsp >> 22) & 0x01;
-    assert(dsp == resultdsp);
-    assert(rd  == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/shll_s_w.c b/tests/tcg/mips/mips32-dsp/shll_s_w.c
deleted file mode 100644
index 628c752..0000000
--- a/tests/tcg/mips/mips32-dsp/shll_s_w.c
+++ /dev/null
@@ -1,52 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rt, dsp;
-    int result, resultdsp;
-
-    rt        = 0x82345678;
-    result    = 0x82345678;
-    resultdsp = 0x00;
-
-    __asm
-        ("shll_s.w %0, %2, 0x0\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt)
-        );
-    dsp = (dsp >> 22) & 0x01;
-    assert(dsp == resultdsp);
-    assert(rd  == result);
-
-    rt        = 0x82345678;
-    result    = 0x80000000;
-    resultdsp = 0x01;
-
-    __asm
-        ("shll_s.w %0, %2, 0x0B\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt)
-        );
-    dsp = (dsp >> 22) & 0x01;
-    assert(dsp == resultdsp);
-    assert(rd  == result);
-
-    rt        = 0x12345678;
-    result    = 0x7FFFFFFF;
-    resultdsp = 0x01;
-
-    __asm
-        ("shll_s.w %0, %2, 0x0B\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt)
-        );
-    dsp = (dsp >> 22) & 0x01;
-    assert(dsp == resultdsp);
-    assert(rd  == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/shllv_ph.c b/tests/tcg/mips/mips32-dsp/shllv_ph.c
deleted file mode 100644
index f98a632..0000000
--- a/tests/tcg/mips/mips32-dsp/shllv_ph.c
+++ /dev/null
@@ -1,40 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt, dsp;
-    int result, resultdsp;
-
-    rs        = 0x0;
-    rt        = 0x12345678;
-    result    = 0x12345678;
-    resultdsp = 0;
-
-    __asm
-        ("shllv.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt), "r"(rs)
-        );
-    dsp = (dsp >> 22) & 0x01;
-    assert(dsp == resultdsp);
-    assert(rd  == result);
-
-    rs        = 0x0B;
-    rt        = 0x12345678;
-    result    = 0xA000C000;
-    resultdsp = 1;
-
-    __asm
-        ("shllv.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt), "r"(rs)
-        );
-    dsp = (dsp >> 22) & 0x01;
-    assert(dsp == resultdsp);
-    assert(rd  == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/shllv_qb.c b/tests/tcg/mips/mips32-dsp/shllv_qb.c
deleted file mode 100644
index 6d8ff4a..0000000
--- a/tests/tcg/mips/mips32-dsp/shllv_qb.c
+++ /dev/null
@@ -1,38 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt, dsp;
-    int result, resultdsp;
-
-    rs     = 0x03;
-    rt     = 0x87654321;
-    result = 0x38281808;
-    resultdsp = 0x01;
-
-    __asm
-        ("shllv.qb %0, %2, %3\n\t"
-         "rddsp   %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt), "r"(rs)
-        );
-    dsp = (dsp >> 22) & 0x01;
-    assert(rd == result);
-
-    rs     = 0x00;
-    rt     = 0x87654321;
-    result = 0x87654321;
-    resultdsp = 0x01;
-
-    __asm
-        ("shllv.qb %0, %2, %3\n\t"
-         "rddsp   %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt), "r"(rs)
-        );
-    dsp = (dsp >> 22) & 0x01;
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/shllv_s_ph.c b/tests/tcg/mips/mips32-dsp/shllv_s_ph.c
deleted file mode 100644
index fc9bd32..0000000
--- a/tests/tcg/mips/mips32-dsp/shllv_s_ph.c
+++ /dev/null
@@ -1,40 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt, dsp;
-    int result, resultdsp;
-
-    rs        = 0x0;
-    rt        = 0x12345678;
-    result    = 0x12345678;
-    resultdsp = 0x0;
-
-    __asm
-        ("shllv_s.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt), "r"(rs)
-        );
-    dsp = (dsp >> 22) & 0x01;
-    assert(dsp == resultdsp);
-    assert(rd  == result);
-
-    rs        = 0x0B;
-    rt        = 0x12345678;
-    result    = 0x7FFF7FFF;
-    resultdsp = 0x01;
-
-    __asm
-        ("shllv_s.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt), "r"(rs)
-        );
-    dsp = (dsp >> 22) & 0x01;
-    assert(dsp == resultdsp);
-    assert(rd  == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/shllv_s_w.c b/tests/tcg/mips/mips32-dsp/shllv_s_w.c
deleted file mode 100644
index 350c256..0000000
--- a/tests/tcg/mips/mips32-dsp/shllv_s_w.c
+++ /dev/null
@@ -1,40 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt, dsp;
-    int result, resultdsp;
-
-    rs        = 0x0B;
-    rt        = 0x12345678;
-    result    = 0x7FFFFFFF;
-    resultdsp = 0x01;
-
-    __asm
-        ("shllv_s.w %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt), "r"(rs)
-        );
-    dsp = (dsp >> 22) & 0x01;
-    assert(dsp == resultdsp);
-    assert(rd  == result);
-
-    rs        = 0x0;
-    rt        = 0x12345678;
-    result    = 0x12345678;
-    resultdsp = 0x01;
-
-    __asm
-        ("shllv_s.w %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt), "r"(rs)
-        );
-    dsp = (dsp >> 22) & 0x01;
-    assert(dsp == resultdsp);
-    assert(rd  == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/shra_ph.c b/tests/tcg/mips/mips32-dsp/shra_ph.c
deleted file mode 100644
index 5b2d840..0000000
--- a/tests/tcg/mips/mips32-dsp/shra_ph.c
+++ /dev/null
@@ -1,30 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rt;
-    int result;
-
-    rt     = 0x87654321;
-    result = 0xF0EC0864;
-
-    __asm
-        ("shra.ph %0, %1, 0x03\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    assert(rd == result);
-
-    rt     = 0x87654321;
-    result = 0x87654321;
-
-    __asm
-        ("shra.ph %0, %1, 0x00\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/shra_r_ph.c b/tests/tcg/mips/mips32-dsp/shra_r_ph.c
deleted file mode 100644
index adc4ae6..0000000
--- a/tests/tcg/mips/mips32-dsp/shra_r_ph.c
+++ /dev/null
@@ -1,30 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rt;
-    int result;
-
-    rt     = 0x87654321;
-    result = 0xF0ED0864;
-
-    __asm
-        ("shra_r.ph %0, %1, 0x03\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    assert(rd == result);
-
-    rt     = 0x87654321;
-    result = 0x87654321;
-
-    __asm
-        ("shra_r.ph %0, %1, 0x00\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/shra_r_w.c b/tests/tcg/mips/mips32-dsp/shra_r_w.c
deleted file mode 100644
index ec0cf2c..0000000
--- a/tests/tcg/mips/mips32-dsp/shra_r_w.c
+++ /dev/null
@@ -1,30 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rt;
-    int result;
-
-    rt     = 0x87654321;
-    result = 0xF0ECA864;
-
-    __asm
-        ("shra_r.w %0, %1, 0x03\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    assert(rd == result);
-
-    rt     = 0x87654321;
-    result = 0x87654321;
-
-    __asm
-        ("shra_r.w %0, %1, 0x0\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/shrav_ph.c b/tests/tcg/mips/mips32-dsp/shrav_ph.c
deleted file mode 100644
index 6e42aaf..0000000
--- a/tests/tcg/mips/mips32-dsp/shrav_ph.c
+++ /dev/null
@@ -1,32 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int result;
-
-    rs     = 0x03;
-    rt     = 0x87654321;
-    result = 0xF0EC0864;
-
-    __asm
-        ("shrav.ph %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rt), "r"(rs)
-        );
-    assert(rd == result);
-
-    rs     = 0x00;
-    rt     = 0x87654321;
-    result = 0x87654321;
-
-    __asm
-        ("shrav.ph %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rt), "r"(rs)
-        );
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/shrav_r_ph.c b/tests/tcg/mips/mips32-dsp/shrav_r_ph.c
deleted file mode 100644
index f03b978..0000000
--- a/tests/tcg/mips/mips32-dsp/shrav_r_ph.c
+++ /dev/null
@@ -1,32 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int result;
-
-    rs     = 0x03;
-    rt     = 0x87654321;
-    result = 0xF0ED0864;
-
-    __asm
-        ("shrav_r.ph %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rt), "r"(rs)
-        );
-    assert(rd == result);
-
-    rs     = 0x00;
-    rt     = 0x87654321;
-    result = 0x87654321;
-
-    __asm
-        ("shrav_r.ph %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rt), "r"(rs)
-        );
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/shrav_r_w.c b/tests/tcg/mips/mips32-dsp/shrav_r_w.c
deleted file mode 100644
index 2ab03bb..0000000
--- a/tests/tcg/mips/mips32-dsp/shrav_r_w.c
+++ /dev/null
@@ -1,32 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int result;
-
-    rs     = 0x03;
-    rt     = 0x87654321;
-    result = 0xF0ECA864;
-
-    __asm
-        ("shrav_r.w %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rt), "r"(rs)
-        );
-    assert(rd == result);
-
-    rs     = 0x00;
-    rt     = 0x40000000;
-    result = 0x40000000;
-
-    __asm
-        ("shrav_r.w %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rt), "r"(rs)
-        );
-
-    assert(rd == result);
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/shrl_qb.c b/tests/tcg/mips/mips32-dsp/shrl_qb.c
deleted file mode 100644
index a7e4e6a..0000000
--- a/tests/tcg/mips/mips32-dsp/shrl_qb.c
+++ /dev/null
@@ -1,31 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rt;
-    int result;
-
-    rt     = 0x12345678;
-    result = 0x00010203;
-
-    __asm
-        ("shrl.qb %0, %1, 0x05\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    assert(rd == result);
-
-    rt     = 0x12345678;
-    result = 0x12345678;
-
-    __asm
-        ("shrl.qb %0, %1, 0x0\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/shrlv_qb.c b/tests/tcg/mips/mips32-dsp/shrlv_qb.c
deleted file mode 100644
index db77f6d..0000000
--- a/tests/tcg/mips/mips32-dsp/shrlv_qb.c
+++ /dev/null
@@ -1,32 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int result;
-
-    rs     = 0x05;
-    rt     = 0x12345678;
-    result = 0x00010203;
-
-    __asm
-        ("shrlv.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rt), "r"(rs)
-        );
-    assert(rd == result);
-
-    rs     = 0x00;
-    rt     = 0x12345678;
-    result = 0x12345678;
-
-    __asm
-        ("shrlv.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rt), "r"(rs)
-        );
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/subq_ph.c b/tests/tcg/mips/mips32-dsp/subq_ph.c
deleted file mode 100644
index fdd7b38..0000000
--- a/tests/tcg/mips/mips32-dsp/subq_ph.c
+++ /dev/null
@@ -1,40 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt, dsp;
-    int result, resultdsp;
-
-    rs = 0x77777777;
-    rt = 0x67654321;
-    result    = 0x10123456;
-    resultdsp = 0x0;
-
-    __asm
-        ("subq.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 20) & 0x01;
-    assert(dsp == resultdsp);
-    assert(rd  == result);
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result    = 0x8ACF1357;
-    resultdsp = 0x01;
-
-    __asm
-        ("subq.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 20) & 0x01;
-    assert(dsp == resultdsp);
-    assert(rd  == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/subq_s_ph.c b/tests/tcg/mips/mips32-dsp/subq_s_ph.c
deleted file mode 100644
index 64c89eb..0000000
--- a/tests/tcg/mips/mips32-dsp/subq_s_ph.c
+++ /dev/null
@@ -1,58 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt, dsp;
-    int result, resultdsp;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result    = 0x7FFF1357;
-    resultdsp = 0x01;
-
-    __asm
-        ("wrdsp $0\n\t"
-         "subq_s.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 20) & 0x01;
-    assert(dsp == resultdsp);
-    assert(rd  == result);
-
-    rs = 0x12348000;
-    rt = 0x87657000;
-    result    = 0x7FFF8000;
-    resultdsp = 0x01;
-
-    __asm
-        ("wrdsp $0\n\t"
-         "subq_s.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 20) & 0x01;
-    assert(dsp == resultdsp);
-    assert(rd  == result);
-
-    rs = 0x12340000;
-    rt = 0x87658000;
-    result    = 0x7FFF7FFF;
-    resultdsp = 0x01;
-
-    __asm
-        ("wrdsp $0\n\t"
-         "subq_s.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 20) & 0x01;
-    assert(dsp == resultdsp);
-    assert(rd  == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/subq_s_w.c b/tests/tcg/mips/mips32-dsp/subq_s_w.c
deleted file mode 100644
index 9d456a9..0000000
--- a/tests/tcg/mips/mips32-dsp/subq_s_w.c
+++ /dev/null
@@ -1,74 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt, dsp;
-    int result, resultdsp;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result    = 0x7FFFFFFF;
-    resultdsp = 0x01;
-
-    __asm
-        ("wrdsp $0\n\t"
-         "subq_s.w %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 20) & 0x01;
-    assert(dsp == resultdsp);
-    assert(rd  == result);
-
-    rs = 0x66666;
-    rt = 0x55555;
-    result    = 0x11111;
-    resultdsp = 0x0;
-
-    __asm
-        ("wrdsp $0\n\t"
-         "subq_s.w %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 20) & 0x01;
-    assert(dsp == resultdsp);
-    assert(rd  == result);
-
-    rs = 0x0;
-    rt = 0x80000000;
-    result    = 0x7FFFFFFF;
-    resultdsp = 0x01;
-
-    __asm
-        ("wrdsp $0\n\t"
-         "subq_s.w %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 20) & 0x01;
-    assert(dsp == resultdsp);
-    assert(rd  == result);
-
-    rs = 0x80000000;
-    rt = 0x80000000;
-    result    = 0;
-    resultdsp = 0x00;
-
-    __asm
-        ("wrdsp $0\n\t"
-         "subq_s.w %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 20) & 0x01;
-    assert(dsp == resultdsp);
-    assert(rd  == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/subu_qb.c b/tests/tcg/mips/mips32-dsp/subu_qb.c
deleted file mode 100644
index 4209096..0000000
--- a/tests/tcg/mips/mips32-dsp/subu_qb.c
+++ /dev/null
@@ -1,25 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt, dsp;
-    int result, resultdsp;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result    = 0x8BCF1357;
-    resultdsp = 0x01;
-
-    __asm
-        ("subu.qb %0, %2, %3\n\t"
-         "rddsp   %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 20) & 0x01;
-    assert(dsp == resultdsp);
-    assert(rd  == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/subu_s_qb.c b/tests/tcg/mips/mips32-dsp/subu_s_qb.c
deleted file mode 100644
index 3d65053..0000000
--- a/tests/tcg/mips/mips32-dsp/subu_s_qb.c
+++ /dev/null
@@ -1,25 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt, dsp;
-    int result, resultdsp;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result    = 0x00001357;
-    resultdsp = 0x01;
-
-    __asm
-        ("subu_s.qb %0, %2, %3\n\t"
-         "rddsp   %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 20) & 0x01;
-    assert(dsp == resultdsp);
-    assert(rd  == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dsp/wrdsp.c b/tests/tcg/mips/mips32-dsp/wrdsp.c
deleted file mode 100644
index dc54943..0000000
--- a/tests/tcg/mips/mips32-dsp/wrdsp.c
+++ /dev/null
@@ -1,46 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int dsp_i, dsp_o;
-    int ccond_i, outflag_i, efi_i, c_i, scount_i, pos_i;
-    int ccond_o, outflag_o, efi_o, c_o, scount_o, pos_o;
-
-    ccond_i   = 0x000000BC;  /* 4 */
-    outflag_i = 0x0000001B;  /* 3 */
-    efi_i     = 0x00000001;  /* 5 */
-    c_i       = 0x00000001;  /* 2 */
-    scount_i  = 0x0000000F;  /* 1 */
-    pos_i     = 0x0000000C;  /* 0 */
-
-    dsp_i = (ccond_i   << 24) | \
-            (outflag_i << 16) | \
-            (efi_i     << 14) | \
-            (c_i       << 13) | \
-            (scount_i  <<  7) | \
-            pos_i;
-
-    __asm
-        ("wrdsp %1, 0x3F\n\t"
-         "rddsp %0, 0x3F\n\t"
-         : "=r"(dsp_o)
-         : "r"(dsp_i)
-        );
-
-    ccond_o   = (dsp_o >> 24) & 0xFF;
-    outflag_o = (dsp_o >> 16) & 0xFF;
-    efi_o     = (dsp_o >> 14) & 0x01;
-    c_o       = (dsp_o >> 14) & 0x01;
-    scount_o  = (dsp_o >>  7) & 0x3F;
-    pos_o     =  dsp_o & 0x1F;
-
-    assert(ccond_o   == (ccond_i & 0x0F));
-    assert(outflag_o == outflag_i);
-    assert(efi_o     == efi_i);
-    assert(c_o       == c_i);
-    assert(scount_o  == scount_i);
-    assert(pos_o     == pos_i);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/absq_s_qb.c b/tests/tcg/mips/mips32-dspr2/absq_s_qb.c
deleted file mode 100644
index af4683f..0000000
--- a/tests/tcg/mips/mips32-dspr2/absq_s_qb.c
+++ /dev/null
@@ -1,35 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int input, result, dsp;
-    int hope;
-
-    input = 0x701BA35E;
-    hope  = 0x701B5D5E;
-
-    __asm
-        ("absq_s.qb %0, %1\n\t"
-         : "=r"(result)
-         : "r"(input)
-        );
-    assert(result == hope);
-
-
-    input = 0x801BA35E;
-    hope  = 0x7F1B5D5E;
-
-    __asm
-        ("absq_s.qb %0, %2\n\t"
-         "rddsp %1\n\t"
-         : "=r"(result), "=r"(dsp)
-         : "r"(input)
-        );
-    dsp = dsp >> 20;
-    dsp &= 0x01;
-    assert(dsp == 1);
-    assert(result == hope);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/addqh_ph.c b/tests/tcg/mips/mips32-dspr2/addqh_ph.c
deleted file mode 100644
index 921f0ea..0000000
--- a/tests/tcg/mips/mips32-dspr2/addqh_ph.c
+++ /dev/null
@@ -1,30 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int result;
-
-    rs     = 0x706A13FE;
-    rt     = 0x13065174;
-    result = 0x41B832B9;
-    __asm
-        ("addqh.ph %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(rd == result);
-
-    rs     = 0x81000100;
-    rt     = 0xc2000100;
-    result = 0xa1800100;
-    __asm
-        ("addqh.ph %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/addqh_r_ph.c b/tests/tcg/mips/mips32-dspr2/addqh_r_ph.c
deleted file mode 100644
index 213ba37..0000000
--- a/tests/tcg/mips/mips32-dspr2/addqh_r_ph.c
+++ /dev/null
@@ -1,30 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int result;
-
-    rs     = 0x706A13FE;
-    rt     = 0x13065174;
-    result = 0x41B832B9;
-    __asm
-        ("addqh_r.ph %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(rd == result);
-
-    rs     = 0x81010100;
-    rt     = 0xc2000100;
-    result = 0xa1810100;
-    __asm
-        ("addqh_r.ph %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/addqh_r_w.c b/tests/tcg/mips/mips32-dspr2/addqh_r_w.c
deleted file mode 100644
index 75a75c5..0000000
--- a/tests/tcg/mips/mips32-dspr2/addqh_r_w.c
+++ /dev/null
@@ -1,34 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int result;
-
-    rs     = 0x00000010;
-    rt     = 0x00000001;
-    result = 0x00000009;
-
-    __asm
-        ("addqh_r.w  %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-
-    assert(rd == result);
-
-    rs     = 0xFFFFFFFE;
-    rt     = 0x00000001;
-    result = 0x00000000;
-
-    __asm
-        ("addqh_r.w  %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/addqh_w.c b/tests/tcg/mips/mips32-dspr2/addqh_w.c
deleted file mode 100644
index de6926e..0000000
--- a/tests/tcg/mips/mips32-dspr2/addqh_w.c
+++ /dev/null
@@ -1,34 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int result;
-
-    rs     = 0x00000010;
-    rt     = 0x00000001;
-    result = 0x00000008;
-
-    __asm
-        ("addqh.w  %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-
-    assert(rd == result);
-
-    rs     = 0xFFFFFFFE;
-    rt     = 0x00000001;
-    result = 0xFFFFFFFF;
-
-    __asm
-        ("addqh.w  %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/addu_ph.c b/tests/tcg/mips/mips32-dspr2/addu_ph.c
deleted file mode 100644
index 1d7a25a..0000000
--- a/tests/tcg/mips/mips32-dspr2/addu_ph.c
+++ /dev/null
@@ -1,33 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int dsp;
-    int result;
-
-    rs     = 0x00FF00FF;
-    rt     = 0x00010001;
-    result = 0x01000100;
-    __asm
-        ("addu.ph %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(rd == result);
-
-    rs     = 0xFFFF1111;
-    rt     = 0x00020001;
-    result = 0x00011112;
-    __asm
-        ("addu.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    assert(rd == result);
-    assert(((dsp >> 20) & 0x01) == 1);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/addu_s_ph.c b/tests/tcg/mips/mips32-dspr2/addu_s_ph.c
deleted file mode 100644
index 979651b..0000000
--- a/tests/tcg/mips/mips32-dspr2/addu_s_ph.c
+++ /dev/null
@@ -1,33 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int dsp;
-    int result;
-
-    rs     = 0x00FE00FE;
-    rt     = 0x00020001;
-    result = 0x010000FF;
-    __asm
-        ("addu_s.ph %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(rd == result);
-
-    rs     = 0xFFFF1111;
-    rt     = 0x00020001;
-    result = 0xFFFF1112;
-    __asm
-        ("addu_s.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    assert(rd == result);
-    assert(((dsp >> 20) & 0x01) == 1);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/adduh_qb.c b/tests/tcg/mips/mips32-dspr2/adduh_qb.c
deleted file mode 100644
index a1f5d63..0000000
--- a/tests/tcg/mips/mips32-dspr2/adduh_qb.c
+++ /dev/null
@@ -1,30 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int result;
-
-    rs     = 0xFF0055AA;
-    rt     = 0x0113421B;
-    result = 0x80094B62;
-    __asm
-        ("adduh.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(rd == result);
-
-    rs     = 0xFFFF0FFF;
-    rt     = 0x00010111;
-    result = 0x7F800888;
-    __asm
-        ("adduh.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/adduh_r_qb.c b/tests/tcg/mips/mips32-dspr2/adduh_r_qb.c
deleted file mode 100644
index 81e98c1..0000000
--- a/tests/tcg/mips/mips32-dspr2/adduh_r_qb.c
+++ /dev/null
@@ -1,30 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int result;
-
-    rs     = 0xFF0055AA;
-    rt     = 0x01112211;
-    result = 0x80093C5E;
-    __asm
-        ("adduh_r.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(rd == result);
-
-    rs     = 0xFFFF0FFF;
-    rt     = 0x00010111;
-    result = 0x80800888;
-    __asm
-        ("adduh_r.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/append.c b/tests/tcg/mips/mips32-dspr2/append.c
deleted file mode 100644
index 9a91e16..0000000
--- a/tests/tcg/mips/mips32-dspr2/append.c
+++ /dev/null
@@ -1,30 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rs, rt;
-    int result;
-
-    rs     = 0xFF0055AA;
-    rt     = 0x0113421B;
-    result = 0x02268436;
-    __asm
-        ("append %0, %1, 0x01\n\t"
-         : "+r"(rt)
-         : "r"(rs)
-        );
-    assert(rt == result);
-
-    rs     = 0xFFFF0FFF;
-    rt     = 0x00010111;
-    result = 0x0010111F;
-    __asm
-        ("append %0, %1, 0x04\n\t"
-         : "+r"(rt)
-         : "r"(rs)
-        );
-    assert(rt == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/balign.c b/tests/tcg/mips/mips32-dspr2/balign.c
deleted file mode 100644
index 537cf04..0000000
--- a/tests/tcg/mips/mips32-dspr2/balign.c
+++ /dev/null
@@ -1,30 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rs, rt;
-    int result;
-
-    rs     = 0xFF0055AA;
-    rt     = 0x0113421B;
-    result = 0x13421BFF;
-    __asm
-        ("balign %0, %1, 0x01\n\t"
-         : "+r"(rt)
-         : "r"(rs)
-        );
-    assert(rt == result);
-
-    rs     = 0xFFFF0FFF;
-    rt     = 0x00010111;
-    result = 0x11FFFF0F;
-    __asm
-        ("balign %0, %1, 0x03\n\t"
-         : "+r"(rt)
-         : "r"(rs)
-        );
-    assert(rt == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/cmpgdu_eq_qb.c b/tests/tcg/mips/mips32-dspr2/cmpgdu_eq_qb.c
deleted file mode 100644
index 2d6340d..0000000
--- a/tests/tcg/mips/mips32-dspr2/cmpgdu_eq_qb.c
+++ /dev/null
@@ -1,37 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int dsp;
-    int result;
-
-    rs = 0x11777066;
-    rt = 0x55AA70FF;
-    result = 0x02;
-    __asm
-        ("cmpgdu.eq.qb %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 24) & 0x0F;
-    assert(rd  == result);
-    assert(dsp == result);
-
-    rs     = 0x11777066;
-    rt     = 0x11777066;
-    result = 0x0F;
-    __asm
-        ("cmpgdu.eq.qb %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 24) & 0x0F;
-    assert(rd  == result);
-    assert(dsp == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/cmpgdu_le_qb.c b/tests/tcg/mips/mips32-dspr2/cmpgdu_le_qb.c
deleted file mode 100644
index a0ecdca..0000000
--- a/tests/tcg/mips/mips32-dspr2/cmpgdu_le_qb.c
+++ /dev/null
@@ -1,37 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int dsp;
-    int result;
-
-    rs         = 0x11777066;
-    rt         = 0x55AA70FF;
-    result     = 0x0F;
-    __asm
-        ("cmpgdu.le.qb %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 24) & 0x0F;
-    assert(rd  == result);
-    assert(dsp == result);
-
-    rs     = 0x11777066;
-    rt     = 0x11707066;
-    result = 0x0B;
-    __asm
-        ("cmpgdu.le.qb %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 24) & 0x0F;
-    assert(rd  == result);
-    assert(dsp == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/cmpgdu_lt_qb.c b/tests/tcg/mips/mips32-dspr2/cmpgdu_lt_qb.c
deleted file mode 100644
index dba99e3..0000000
--- a/tests/tcg/mips/mips32-dspr2/cmpgdu_lt_qb.c
+++ /dev/null
@@ -1,37 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int dsp;
-    int result;
-
-    rs         = 0x11777066;
-    rt         = 0x55AA70FF;
-    result     = 0x0D;
-    __asm
-        ("cmpgdu.lt.qb %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 24) & 0x0F;
-    assert(rd  == result);
-    assert(dsp == result);
-
-    rs     = 0x11777066;
-    rt     = 0x11777066;
-    result = 0x00;
-    __asm
-        ("cmpgdu.lt.qb %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 24) & 0x0F;
-    assert(rd  == result);
-    assert(dsp == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/dpa_w_ph.c b/tests/tcg/mips/mips32-dspr2/dpa_w_ph.c
deleted file mode 100644
index fae49f1..0000000
--- a/tests/tcg/mips/mips32-dspr2/dpa_w_ph.c
+++ /dev/null
@@ -1,44 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rs, rt;
-    int ach = 5, acl = 5;
-    int resulth, resultl;
-
-    rs     = 0x00FF00FF;
-    rt     = 0x00010002;
-    resulth = 0x05;
-    resultl = 0x0302;
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpa.w.ph $ac1, %2, %3\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         : "+r"(ach), "+r"(acl)
-         : "r"(rs), "r"(rt)
-        );
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-    ach = 6, acl = 7;
-    rs     = 0xFFFF00FF;
-    rt     = 0xFFFF0002;
-    resulth = 0x06;
-    resultl = 0x206;
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpa.w.ph $ac1, %2, %3\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         : "+r"(ach), "+r"(acl)
-         : "r"(rs), "r"(rt)
-        );
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/dpaqx_s_w_ph.c b/tests/tcg/mips/mips32-dspr2/dpaqx_s_w_ph.c
deleted file mode 100644
index ce87830..0000000
--- a/tests/tcg/mips/mips32-dspr2/dpaqx_s_w_ph.c
+++ /dev/null
@@ -1,79 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rs, rt, dsp;
-    int ach = 5, acl = 5;
-    int resulth, resultl, resultdsp;
-
-    rs     = 0x800000FF;
-    rt     = 0x00018000;
-    resulth = 0x05;
-    resultl = 0x80000202;
-    resultdsp = 0x01;
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpaqx_s.w.ph $ac1, %3, %4\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "+r"(ach), "+r"(acl), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 17) & 0x01;
-    assert(dsp == resultdsp);
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-    ach    = 5;
-    acl    = 5;
-    rs     = 0x00FF00FF;
-    rt     = 0x00010002;
-    resulth = 0x05;
-    resultl = 0x05FF;
-    /***********************************************************
-     * Because of we set outflag at last time, although this
-     * time we set nothing, but it is stay the last time value.
-     **********************************************************/
-    resultdsp = 0x01;
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpaqx_s.w.ph $ac1, %3, %4\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "+r"(ach), "+r"(acl), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 17) & 0x01;
-    assert(dsp == resultdsp);
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-    ach    = 5;
-    acl    = 5;
-    rs     = 0x800000FF;
-    rt     = 0x00028000;
-    resulth = 0x05;
-    resultl = 0x80000400;
-    resultdsp = 0x01;
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpaqx_s.w.ph $ac1, %3, %4\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "+r"(ach), "+r"(acl), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 17) & 0x01;
-    assert(dsp == resultdsp);
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/dpaqx_sa_w_ph.c b/tests/tcg/mips/mips32-dspr2/dpaqx_sa_w_ph.c
deleted file mode 100644
index d551d64..0000000
--- a/tests/tcg/mips/mips32-dspr2/dpaqx_sa_w_ph.c
+++ /dev/null
@@ -1,57 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rs, rt, dsp;
-    int ach, acl;
-    int resulth, resultl, resultdsp;
-
-    ach = 0x00000005;
-    acl = 0x00000005;
-    rs     = 0x00FF00FF;
-    rt     = 0x00010002;
-    resulth = 0x00;
-    resultl = 0x7FFFFFFF;
-    resultdsp = 0x01;
-    dsp = 0;
-    __asm
-        ("wrdsp %2\n\t"
-         "mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpaqx_sa.w.ph $ac1, %3, %4\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "+r"(ach), "+r"(acl), "+r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    assert(dsp >> (16 + 1) == resultdsp);
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-    ach = 0x00000009;
-    acl = 0x0000000B;
-    rs     = 0x800000FF;
-    rt     = 0x00018000;
-    resulth = 0x00;
-    resultl = 0x7FFFFFFF;
-    resultdsp = 0x01;
-    dsp = 0;
-    __asm
-        ("wrdsp %2\n\t"
-         "mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpaqx_sa.w.ph $ac1, %3, %4\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "+r"(ach), "+r"(acl), "+r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    assert(dsp >> (16 + 1) == resultdsp);
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/dpax_w_ph.c b/tests/tcg/mips/mips32-dspr2/dpax_w_ph.c
deleted file mode 100644
index 514797c..0000000
--- a/tests/tcg/mips/mips32-dspr2/dpax_w_ph.c
+++ /dev/null
@@ -1,44 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rs, rt;
-    int ach = 5, acl = 5;
-    int resulth, resultl;
-
-    rs     = 0x00FF00FF;
-    rt     = 0x00010002;
-    resulth = 0x05;
-    resultl = 0x0302;
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpax.w.ph $ac1, %2, %3\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         : "+r"(ach), "+r"(acl)
-         : "r"(rs), "r"(rt)
-        );
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-    ach = 6, acl = 7;
-    rs     = 0xFFFF00FF;
-    rt     = 0xFFFF0002;
-    resulth = 0x05;
-    resultl = 0xFFFFFF06;
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpax.w.ph $ac1, %2, %3\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         : "+r"(ach), "+r"(acl)
-         : "r"(rs), "r"(rt)
-        );
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/dps_w_ph.c b/tests/tcg/mips/mips32-dspr2/dps_w_ph.c
deleted file mode 100644
index f51f9b9..0000000
--- a/tests/tcg/mips/mips32-dspr2/dps_w_ph.c
+++ /dev/null
@@ -1,44 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rs, rt;
-    int ach = 5, acl = 5;
-    int resulth, resultl;
-
-    rs     = 0x00FF00FF;
-    rt     = 0x00010002;
-    resulth = 0x04;
-    resultl = 0xFFFFFD08;
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dps.w.ph $ac1, %2, %3\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         : "+r"(ach), "+r"(acl)
-         : "r"(rs), "r"(rt)
-        );
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-    ach = 6, acl = 7;
-    rs     = 0xFFFF00FF;
-    rt     = 0xFFFF0002;
-    resulth = 0x05;
-    resultl = 0xFFFFFE08;
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dps.w.ph $ac1, %2, %3\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         : "+r"(ach), "+r"(acl)
-         : "r"(rs), "r"(rt)
-        );
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/dpsqx_s_w_ph.c b/tests/tcg/mips/mips32-dspr2/dpsqx_s_w_ph.c
deleted file mode 100644
index e40543f..0000000
--- a/tests/tcg/mips/mips32-dspr2/dpsqx_s_w_ph.c
+++ /dev/null
@@ -1,54 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rs, rt, dsp;
-    int ach = 5, acl = 5;
-    int resulth, resultl, resultdsp;
-
-    rs      = 0xBC0123AD;
-    rt      = 0x01643721;
-    resulth = 0x00000005;
-    resultl = 0x1CE5E09B;
-    resultdsp = 0x00;
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpsqx_s.w.ph $ac1, %3, %4\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "+r"(ach), "+r"(acl), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 17) & 0x01;
-    assert(dsp == resultdsp);
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-    ach = 0x99F13005;
-    acl = 0x51730062;
-    rs      = 0x80008000;
-    rt      = 0x80008000;
-
-    resulth = 0x99F13004;
-    resultl = 0x51730064;
-    resultdsp = 0x01;
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpsqx_s.w.ph $ac1, %3, %4\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "+r"(ach), "+r"(acl), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 17) & 0x01;
-    assert(dsp == resultdsp);
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/dpsqx_sa_w_ph.c b/tests/tcg/mips/mips32-dspr2/dpsqx_sa_w_ph.c
deleted file mode 100644
index 7da278e..0000000
--- a/tests/tcg/mips/mips32-dspr2/dpsqx_sa_w_ph.c
+++ /dev/null
@@ -1,53 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rs, rt, dsp;
-    int ach = 5, acl = 5;
-    int resulth, resultl, resultdsp;
-
-    rs = 0xBC0123AD;
-    rt = 0x01643721;
-    resulth = 0x00;
-    resultl = 0x7FFFFFFF;
-    resultdsp = 0x01;
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpsqx_sa.w.ph $ac1, %3, %4\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "+r"(ach), "+r"(acl), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 17) & 0x01;
-    assert(dsp == resultdsp);
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-    ach = 0x8c0b354A;
-    acl = 0xbbc02249;
-    rs = 0x800023AD;
-    rt = 0x01648000;
-    resulth = 0xffffffff;
-    resultl = 0x80000000;
-    resultdsp = 0x01;
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpsqx_sa.w.ph $ac1, %3, %4\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "+r"(ach), "+r"(acl), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 17) & 0x01;
-    assert(dsp == resultdsp);
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/dpsx_w_ph.c b/tests/tcg/mips/mips32-dspr2/dpsx_w_ph.c
deleted file mode 100644
index bb49a40..0000000
--- a/tests/tcg/mips/mips32-dspr2/dpsx_w_ph.c
+++ /dev/null
@@ -1,27 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rs, rt;
-    int ach = 5, acl = 5;
-    int resulth, resultl;
-
-    rs      = 0xBC0123AD;
-    rt      = 0x01643721;
-    resulth = 0x05;
-    resultl = 0xE72F050;
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpsx.w.ph $ac1, %2, %3\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         : "+r"(ach), "+r"(acl)
-         : "r"(rs), "r"(rt)
-        );
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/mul_ph.c b/tests/tcg/mips/mips32-dspr2/mul_ph.c
deleted file mode 100644
index c7e9d60..0000000
--- a/tests/tcg/mips/mips32-dspr2/mul_ph.c
+++ /dev/null
@@ -1,47 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt, dsp;
-    int result, resultdsp;
-
-    rs = 0x03FB1234;
-    rt = 0x0BCC4321;
-    result = 0xF504F4B4;
-    resultdsp = 1;
-
-    __asm
-        ("mul.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 21) & 0x01;
-    assert(rd  == result);
-    assert(dsp == resultdsp);
-
-    dsp = 0;
-    __asm
-        ("wrdsp %0\n\t"
-         :
-         : "r"(dsp)
-        );
-
-    rs = 0x00210010;
-    rt = 0x00110005;
-    result = 0x2310050;
-    resultdsp = 0;
-
-    __asm
-        ("mul.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 21) & 0x01;
-    assert(rd  == result);
-    assert(dsp == resultdsp);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/mul_s_ph.c b/tests/tcg/mips/mips32-dspr2/mul_s_ph.c
deleted file mode 100644
index 33da110..0000000
--- a/tests/tcg/mips/mips32-dspr2/mul_s_ph.c
+++ /dev/null
@@ -1,62 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt, dsp;
-    int result, resultdsp;
-
-    rs = 0x03FB1234;
-    rt = 0x0BCC4321;
-    result = 0x7fff7FFF;
-    resultdsp = 1;
-
-    __asm
-        ("mul_s.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 21) & 0x01;
-    assert(rd  == result);
-    assert(dsp == resultdsp);
-
-    rs = 0x7fffff00;
-    rt = 0xff007fff;
-    result = 0x80008000;
-    resultdsp = 1;
-
-    __asm
-        ("mul_s.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 21) & 0x01;
-    assert(rd  == result);
-    assert(dsp == resultdsp);
-
-    dsp = 0;
-    __asm
-        ("wrdsp %0\n\t"
-         :
-         : "r"(dsp)
-        );
-
-    rs = 0x00320001;
-    rt = 0x00210002;
-    result = 0x06720002;
-    resultdsp = 0;
-
-    __asm
-        ("mul_s.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 21) & 0x01;
-    assert(rd  == result);
-    assert(dsp == resultdsp);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/mulq_rs_w.c b/tests/tcg/mips/mips32-dspr2/mulq_rs_w.c
deleted file mode 100644
index 7ba633b..0000000
--- a/tests/tcg/mips/mips32-dspr2/mulq_rs_w.c
+++ /dev/null
@@ -1,36 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt, dsp;
-    int result, resultdsp;
-
-    rs = 0x80001234;
-    rt = 0x80004321;
-    result = 0x7FFFAAAB;
-
-    __asm
-        ("mulq_rs.w %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(rd  == result);
-
-    rs = 0x80000000;
-    rt = 0x80000000;
-    result = 0x7FFFFFFF;
-    resultdsp = 1;
-
-    __asm
-        ("mulq_rs.w %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 21) & 0x01;
-    assert(rd  == result);
-    assert(dsp == resultdsp);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/mulq_s_ph.c b/tests/tcg/mips/mips32-dspr2/mulq_s_ph.c
deleted file mode 100644
index 00e0155..0000000
--- a/tests/tcg/mips/mips32-dspr2/mulq_s_ph.c
+++ /dev/null
@@ -1,40 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt, dsp;
-    int result, resultdsp;
-
-    rs = 0x80000000;
-    rt = 0x0ffc0000;
-    result = 0xF0040000;
-    resultdsp = 0;
-
-    __asm
-        ("mulq_s.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 21) & 0x01;
-    assert(rd  == result);
-    assert(dsp == resultdsp);
-
-    rs = 0x80001234;
-    rt = 0x80004321;
-    result = 0x7FFF098B;
-    resultdsp = 1;
-
-    __asm
-        ("mulq_s.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 21) & 0x01;
-    assert(rd  == result);
-    assert(dsp == resultdsp);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/mulq_s_w.c b/tests/tcg/mips/mips32-dspr2/mulq_s_w.c
deleted file mode 100644
index 9c2be06..0000000
--- a/tests/tcg/mips/mips32-dspr2/mulq_s_w.c
+++ /dev/null
@@ -1,36 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt, dsp;
-    int result, resultdsp;
-
-    rs = 0x80001234;
-    rt = 0x80004321;
-    result = 0x7FFFAAAB;
-
-    __asm
-        ("mulq_s.w %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(rd  == result);
-
-    rs = 0x80000000;
-    rt = 0x80000000;
-    result = 0x7FFFFFFF;
-    resultdsp = 1;
-
-    __asm
-        ("mulq_s.w %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 21) & 0x01;
-    assert(rd  == result);
-    assert(dsp == resultdsp);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/mulsa_w_ph.c b/tests/tcg/mips/mips32-dspr2/mulsa_w_ph.c
deleted file mode 100644
index a694093..0000000
--- a/tests/tcg/mips/mips32-dspr2/mulsa_w_ph.c
+++ /dev/null
@@ -1,29 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rs, rt, ach, acl;
-    int resulth, resultl;
-
-    ach = 0x05;
-    acl = 0x00BBDDCC;
-    rs = 0x80001234;
-    rt = 0x80004321;
-    resulth = 0x05;
-    resultl = 0x3BF5E918;
-
-    __asm
-        ("mthi %0, $ac1\n\t"
-         "mtlo %1, $ac1\n\t"
-         "mulsa.w.ph $ac1, %2, %3\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "+r"(ach), "+r"(acl)
-         : "r"(rs), "r"(rt)
-        );
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/mulsaq_s_w_ph.c b/tests/tcg/mips/mips32-dspr2/mulsaq_s_w_ph.c
deleted file mode 100644
index 06c91a4..0000000
--- a/tests/tcg/mips/mips32-dspr2/mulsaq_s_w_ph.c
+++ /dev/null
@@ -1,29 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rs, rt, ach, acl;
-    int resulth, resultl;
-
-    ach = 0x05;
-    acl = 0x00BBDDCC;
-    rs = 0x80001234;
-    rt = 0x80004321;
-    resulth = 0x05;
-    resultl = 0x772ff463;
-
-    __asm
-        ("mthi %0, $ac1\n\t"
-         "mtlo %1, $ac1\n\t"
-         "mulsaq_s.w.ph $ac1, %2, %3\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "+r"(ach), "+r"(acl)
-         : "r"(rs), "r"(rt)
-        );
-    assert(ach == resulth);
-    assert(acl == resultl);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/precr_qb_ph.c b/tests/tcg/mips/mips32-dspr2/precr_qb_ph.c
deleted file mode 100644
index 3a2b3fd..0000000
--- a/tests/tcg/mips/mips32-dspr2/precr_qb_ph.c
+++ /dev/null
@@ -1,21 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int result;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result = 0x34786521;
-
-    __asm
-        ("precr.qb.ph %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(result == rd);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/precr_sra_ph_w.c b/tests/tcg/mips/mips32-dspr2/precr_sra_ph_w.c
deleted file mode 100644
index 5c9baab..0000000
--- a/tests/tcg/mips/mips32-dspr2/precr_sra_ph_w.c
+++ /dev/null
@@ -1,32 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rs, rt;
-    int result;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result = 0x43215678;
-
-    __asm
-        ("precr_sra.ph.w %0, %1, 0x00\n\t"
-         : "+r"(rt)
-         : "r"(rs)
-        );
-    assert(result == rt);
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result = 0xFFFF0000;
-
-    __asm
-        ("precr_sra.ph.w %0, %1, 0x1F\n\t"
-         : "+r"(rt)
-         : "r"(rs)
-        );
-    assert(result == rt);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/precr_sra_r_ph_w.c b/tests/tcg/mips/mips32-dspr2/precr_sra_r_ph_w.c
deleted file mode 100644
index 6474a10..0000000
--- a/tests/tcg/mips/mips32-dspr2/precr_sra_r_ph_w.c
+++ /dev/null
@@ -1,32 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rs, rt;
-    int result;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result = 0x43215678;
-
-    __asm
-        ("precr_sra_r.ph.w %0, %1, 0x00\n\t"
-         : "+r"(rt)
-         : "r"(rs)
-        );
-    assert(result == rt);
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result = 0xFFFF0000;
-
-    __asm
-        ("precr_sra_r.ph.w %0, %1, 0x1F\n\t"
-         : "+r"(rt)
-         : "r"(rs)
-        );
-    assert(result == rt);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/prepend.c b/tests/tcg/mips/mips32-dspr2/prepend.c
deleted file mode 100644
index f6bcd47..0000000
--- a/tests/tcg/mips/mips32-dspr2/prepend.c
+++ /dev/null
@@ -1,30 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rs, rt;
-    int result;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result = 0x87654321;
-    __asm
-        ("prepend %0, %1, 0x00\n\t"
-         : "+r"(rt)
-         : "r"(rs)
-        );
-    assert(rt == result);
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result = 0xACF10ECA;
-    __asm
-        ("prepend %0, %1, 0x0F\n\t"
-         : "+r"(rt)
-         : "r"(rs)
-        );
-    assert(rt == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/shra_qb.c b/tests/tcg/mips/mips32-dspr2/shra_qb.c
deleted file mode 100644
index 48193de..0000000
--- a/tests/tcg/mips/mips32-dspr2/shra_qb.c
+++ /dev/null
@@ -1,30 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rt;
-    int result;
-
-    rt = 0x12345678;
-    result = 0x02060A0F;
-
-    __asm
-        ("shra.qb %0, %1, 0x03\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    assert(rd == result);
-
-    rt = 0x87654321;
-    result = 0xF00C0804;
-
-    __asm
-        ("shra.qb %0, %1, 0x03\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/shra_r_qb.c b/tests/tcg/mips/mips32-dspr2/shra_r_qb.c
deleted file mode 100644
index 29afa0e..0000000
--- a/tests/tcg/mips/mips32-dspr2/shra_r_qb.c
+++ /dev/null
@@ -1,30 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rt;
-    int result;
-
-    rt = 0x12345678;
-    result = 0x02070B0F;
-
-    __asm
-        ("shra_r.qb %0, %1, 0x03\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    assert(rd == result);
-
-    rt = 0x87654321;
-    result = 0xF10D0804;
-
-    __asm
-        ("shra_r.qb %0, %1, 0x03\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/shrav_qb.c b/tests/tcg/mips/mips32-dspr2/shrav_qb.c
deleted file mode 100644
index b21e1b7..0000000
--- a/tests/tcg/mips/mips32-dspr2/shrav_qb.c
+++ /dev/null
@@ -1,32 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int result;
-
-    rs = 0x03;
-    rt = 0x12345678;
-    result = 0x02060A0F;
-
-    __asm
-        ("shrav.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rt), "r"(rs)
-        );
-    assert(rd == result);
-
-    rs = 0x03;
-    rt = 0x87654321;
-    result = 0xF00C0804;
-
-    __asm
-        ("shrav.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rt), "r"(rs)
-        );
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/shrav_r_qb.c b/tests/tcg/mips/mips32-dspr2/shrav_r_qb.c
deleted file mode 100644
index 9ea8aa0..0000000
--- a/tests/tcg/mips/mips32-dspr2/shrav_r_qb.c
+++ /dev/null
@@ -1,32 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int result;
-
-    rs = 0x03;
-    rt = 0x12345678;
-    result = 0x02070B0F;
-
-    __asm
-        ("shrav_r.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rt), "r"(rs)
-        );
-    assert(rd == result);
-
-    rs = 0x03;
-    rt = 0x87654321;
-    result = 0xF10D0804;
-
-    __asm
-        ("shrav_r.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rt), "r"(rs)
-        );
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/shrl_ph.c b/tests/tcg/mips/mips32-dspr2/shrl_ph.c
deleted file mode 100644
index 724b9a7..0000000
--- a/tests/tcg/mips/mips32-dspr2/shrl_ph.c
+++ /dev/null
@@ -1,20 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rt;
-    int result;
-
-    rt     = 0x12345678;
-    result = 0x009102B3;
-
-    __asm
-        ("shrl.ph %0, %1, 0x05\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/shrlv_ph.c b/tests/tcg/mips/mips32-dspr2/shrlv_ph.c
deleted file mode 100644
index ac79aa6..0000000
--- a/tests/tcg/mips/mips32-dspr2/shrlv_ph.c
+++ /dev/null
@@ -1,21 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int result;
-
-    rs     = 0x05;
-    rt     = 0x12345678;
-    result = 0x009102B3;
-
-    __asm
-        ("shrlv.ph %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rt), "r"(rs)
-        );
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/subqh_ph.c b/tests/tcg/mips/mips32-dspr2/subqh_ph.c
deleted file mode 100644
index dbc0967..0000000
--- a/tests/tcg/mips/mips32-dspr2/subqh_ph.c
+++ /dev/null
@@ -1,21 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int result;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result = 0x456709AB;
-
-    __asm
-        ("subqh.ph %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/subqh_r_ph.c b/tests/tcg/mips/mips32-dspr2/subqh_r_ph.c
deleted file mode 100644
index 24ef0f1..0000000
--- a/tests/tcg/mips/mips32-dspr2/subqh_r_ph.c
+++ /dev/null
@@ -1,21 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int result;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result = 0x456809AC;
-
-    __asm
-        ("subqh_r.ph %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/subqh_r_w.c b/tests/tcg/mips/mips32-dspr2/subqh_r_w.c
deleted file mode 100644
index d460f86..0000000
--- a/tests/tcg/mips/mips32-dspr2/subqh_r_w.c
+++ /dev/null
@@ -1,21 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int result;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result = 0x456789AC;
-
-    __asm
-        ("subqh_r.w %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/subqh_w.c b/tests/tcg/mips/mips32-dspr2/subqh_w.c
deleted file mode 100644
index 42be3de..0000000
--- a/tests/tcg/mips/mips32-dspr2/subqh_w.c
+++ /dev/null
@@ -1,21 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int result;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result = 0x456789AB;
-
-    __asm
-        ("subqh.w %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/subu_ph.c b/tests/tcg/mips/mips32-dspr2/subu_ph.c
deleted file mode 100644
index 0d39a01..0000000
--- a/tests/tcg/mips/mips32-dspr2/subu_ph.c
+++ /dev/null
@@ -1,40 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt, dsp;
-    int result, resultdsp;
-
-    rs = 0x87654321;
-    rt = 0x11111111;
-    result    = 0x76543210;
-    resultdsp = 0x00;
-
-    __asm
-        ("subu.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 20) & 0x01;
-    assert(dsp == resultdsp);
-    assert(rd  == result);
-
-    rs = 0x87654321;
-    rt = 0x12345678;
-    result    = 0x7531ECA9;
-    resultdsp = 0x01;
-
-    __asm
-        ("subu.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 20) & 0x01;
-    assert(dsp == resultdsp);
-    assert(rd  == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/subu_s_ph.c b/tests/tcg/mips/mips32-dspr2/subu_s_ph.c
deleted file mode 100644
index 8e4da4f..0000000
--- a/tests/tcg/mips/mips32-dspr2/subu_s_ph.c
+++ /dev/null
@@ -1,25 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt, dsp;
-    int result, resultdsp;
-
-    rs = 0x87654321;
-    rt = 0x12345678;
-    result    = 0x75310000;
-    resultdsp = 0x01;
-
-    __asm
-        ("subu_s.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 20) & 0x01;
-    assert(dsp == resultdsp);
-    assert(rd  == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/subuh_qb.c b/tests/tcg/mips/mips32-dspr2/subuh_qb.c
deleted file mode 100644
index 92cfc76..0000000
--- a/tests/tcg/mips/mips32-dspr2/subuh_qb.c
+++ /dev/null
@@ -1,21 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int result;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result = 0xC5E7092B;
-
-    __asm
-        ("subuh.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips32-dspr2/subuh_r_qb.c b/tests/tcg/mips/mips32-dspr2/subuh_r_qb.c
deleted file mode 100644
index dac81d4..0000000
--- a/tests/tcg/mips/mips32-dspr2/subuh_r_qb.c
+++ /dev/null
@@ -1,32 +0,0 @@
-#include<stdio.h>
-#include<assert.h>
-
-int main()
-{
-    int rd, rs, rt;
-    int result;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result = 0xC6E80A2C;
-
-    __asm
-        ("subuh_r.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(rd == result);
-
-    rs = 0xBEFC292A;
-    rt = 0x9205C1B4;
-    result = 0x167cb4bb;
-
-    __asm
-        ("subuh_r.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    assert(rd == result);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/absq_s_ob.c b/tests/tcg/mips/mips64-dsp/absq_s_ob.c
deleted file mode 100644
index 6214031..0000000
--- a/tests/tcg/mips/mips64-dsp/absq_s_ob.c
+++ /dev/null
@@ -1,63 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, result, dspcontrol;
-    rt = 0x7F7F7F7F7F7F7F7F;
-    result = 0x7F7F7F7F7F7F7F7F;
-
-
-    __asm
-        (".set mips64\n\t"
-         "absq_s.ob %0 %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-
-    if (result != rd) {
-        printf("absq_s.ob test 1 error\n");
-
-        return -1;
-    }
-
-    __asm
-        ("rddsp %0\n\t"
-         : "=r"(rd)
-        );
-    rd >> 20;
-    rd = rd & 0x1;
-    if (rd != 0) {
-        printf("absq_s.ob test 1 dspcontrol overflow flag error\n");
-
-        return -1;
-    }
-
-    rt = 0x80FFFFFFFFFFFFFF;
-    result = 0x7F01010101010101;
-
-    __asm
-        ("absq_s.ob %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    if (result != rd) {
-        printf("absq_s.ob test 2 error\n");
-
-        return -1;
-    }
-
-    __asm
-        ("rddsp %0\n\t"
-         : "=r"(rd)
-        );
-    rd = rd >> 20;
-    rd = rd & 0x1;
-    if (rd != 1) {
-        printf("absq_s.ob test 2 dspcontrol overflow flag error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
-
diff --git a/tests/tcg/mips/mips64-dsp/absq_s_ph.c b/tests/tcg/mips/mips64-dsp/absq_s_ph.c
deleted file mode 100644
index 238416d..0000000
--- a/tests/tcg/mips/mips64-dsp/absq_s_ph.c
+++ /dev/null
@@ -1,37 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt;
-    long long result;
-
-    rt     = 0x10017EFD;
-    result = 0x10017EFD;
-
-    __asm
-        ("absq_s.ph %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    if (rd != result) {
-        printf("absq_s.ph wrong\n");
-
-        return -1;
-    }
-
-    rt     = 0x8000A536;
-    result = 0x7FFF5ACA;
-
-    __asm
-        ("absq_s.ph %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    if (rd != result) {
-        printf("absq_s.ph wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/absq_s_pw.c b/tests/tcg/mips/mips64-dsp/absq_s_pw.c
deleted file mode 100644
index 48fc763..0000000
--- a/tests/tcg/mips/mips64-dsp/absq_s_pw.c
+++ /dev/null
@@ -1,66 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, result, dspcontrol;
-    rd = 0;
-    rt = 0x7F7F7F7F7F7F7F7F;
-    result = 0x7F7F7F7F7F7F7F7F;
-
-
-    __asm
-        ("absq_s.pw %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-
-    if (result != rd) {
-        printf("absq_s.pw test 1 error\n");
-
-        return -1;
-    }
-
-    rd = 0;
-    __asm
-        ("rddsp %0\n\t"
-         : "=r"(rd)
-        );
-    rd >> 20;
-    rd = rd & 0x1;
-    if (rd != 0) {
-        printf("absq_s.pw test 1 dspcontrol overflow flag error\n");
-
-        return -1;
-    }
-
-    rd = 0;
-    rt = 0x80000000FFFFFFFF;
-    result = 0x7FFFFFFF00000001;
-
-    __asm
-        ("absq_s.pw %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    if (result != rd) {
-        printf("absq_s.pw test 2 error\n");
-
-        return -1;
-    }
-
-    rd = 0;
-    __asm
-        ("rddsp %0\n\t"
-         : "=r"(rd)
-        );
-    rd = rd >> 20;
-    rd = rd & 0x1;
-    if (rd != 1) {
-        printf("absq_s.pw test 2 dspcontrol overflow flag error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
-
diff --git a/tests/tcg/mips/mips64-dsp/absq_s_qh.c b/tests/tcg/mips/mips64-dsp/absq_s_qh.c
deleted file mode 100644
index 9001a9e..0000000
--- a/tests/tcg/mips/mips64-dsp/absq_s_qh.c
+++ /dev/null
@@ -1,40 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, result, dspcontrol;
-    rd = 0;
-    rt = 0x7F7F7F7F7F7F7F7F;
-    result = 0x7F7F7F7F7F7F7F7F;
-
-
-    __asm
-        ("absq_s.qh %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-
-    if (result != rd) {
-        printf("absq_s.qh test 1 error\n");
-
-        return -1;
-    }
-
-    rd = 0;
-    rt = 0x8000FFFFFFFFFFFF;
-    result = 0x7FFF000100000001;
-
-    __asm
-        ("absq_s.pw %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    if (result != rd) {
-        printf("absq_s.rw test 2 error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
-
diff --git a/tests/tcg/mips/mips64-dsp/absq_s_w.c b/tests/tcg/mips/mips64-dsp/absq_s_w.c
deleted file mode 100644
index 414c8bd..0000000
--- a/tests/tcg/mips/mips64-dsp/absq_s_w.c
+++ /dev/null
@@ -1,48 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt;
-    long long result;
-
-    rt     = 0x80000000;
-    result = 0x7FFFFFFF;
-    __asm
-        ("absq_s.w %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    if (rd != result) {
-        printf("absq_s_w.ph wrong\n");
-
-        return -1;
-    }
-
-    rt     = 0x80030000;
-    result = 0x7FFD0000;
-    __asm
-        ("absq_s.w %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    if (rd != result) {
-        printf("absq_s_w.ph wrong\n");
-
-        return -1;
-    }
-
-    rt     = 0x31036080;
-    result = 0x31036080;
-    __asm
-        ("absq_s.w %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    if (rd != result) {
-        printf("absq_s_w.ph wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/addq_ph.c b/tests/tcg/mips/mips64-dsp/addq_ph.c
deleted file mode 100644
index 22a36d9..0000000
--- a/tests/tcg/mips/mips64-dsp/addq_ph.c
+++ /dev/null
@@ -1,57 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long dsp;
-    long long result;
-
-    rs     = 0xFFFFFFFF;
-    rt     = 0x10101010;
-    result = 0x100F100F;
-    __asm
-        ("addq.ph   %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    if (rd != result) {
-        printf("1 addq.ph wrong\n");
-
-        return -1;
-    }
-
-    rs     = 0x3712847D;
-    rt     = 0x0031AF2D;
-    result = 0x374333AA;
-    __asm
-        ("addq.ph   %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    if (rd != result) {
-        printf("2 addq.ph wrong\n");
-
-        return -1;
-    }
-
-    rs     = 0x7fff847D;
-    rt     = 0x0031AF2D;
-    result = 0xffffffff803033AA;
-    __asm
-        ("addq.ph   %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-
-    __asm("rddsp %0\n\t"
-          : "=r"(dsp)
-         );
-
-    if (rd != result || (((dsp >> 20) & 0x01) != 1)) {
-        printf("3 addq.ph wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/addq_pw.c b/tests/tcg/mips/mips64-dsp/addq_pw.c
deleted file mode 100644
index 99a7668..0000000
--- a/tests/tcg/mips/mips64-dsp/addq_pw.c
+++ /dev/null
@@ -1,46 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, result, dspreg, dspresult;
-
-    rs = 0x123456787FFFFFFF;
-    rt = 0x1111111100000101;
-    result = 0x2345678980000100;
-    dspresult = 0x1;
-
-    __asm
-        ("addq.pw %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dspreg)
-         : "r"(rs), "r"(rt)
-        );
-
-    dspreg = ((dspreg >> 20) & 0x01);
-    if ((rd != result) || (dspreg != dspresult)) {
-        printf("addq.pw error\n");
-
-        return -1;
-    }
-
-    rs = 0x1234567880FFFFFF;
-    rt = 0x1111111180000001;
-    result = 0x2345678901000000;
-    dspresult = 0x1;
-
-    __asm
-        ("addq.pw %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dspreg)
-         : "r"(rs), "r"(rt)
-        );
-
-    dspreg = ((dspreg >> 20) & 0x01);
-    if ((rd != result) || (dspreg != dspresult)) {
-        printf("addq.pw error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/addq_qh.c b/tests/tcg/mips/mips64-dsp/addq_qh.c
deleted file mode 100644
index 4b874af..0000000
--- a/tests/tcg/mips/mips64-dsp/addq_qh.c
+++ /dev/null
@@ -1,28 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, result, dspreg, dspresult;
-
-    rs = 0x123456787FFF8010;
-    rt = 0x1111111100018000;
-    result = 0x2345678980000010;
-    dspresult = 0x1;
-
-    __asm
-        ("addq.qh %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dspreg)
-         : "r"(rs), "r"(rt)
-        );
-
-    dspreg = ((dspreg >> 20) & 0x01);
-
-    if ((rd != result) || (dspreg != dspresult)) {
-        printf("addq.qh error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/addq_s_ph.c b/tests/tcg/mips/mips64-dsp/addq_s_ph.c
deleted file mode 100644
index ad84cdc..0000000
--- a/tests/tcg/mips/mips64-dsp/addq_s_ph.c
+++ /dev/null
@@ -1,84 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long dsp;
-    long long result;
-
-    rs     = 0xFFFFFFFF;
-    rt     = 0x10101010;
-    result = 0x100F100F;
-    __asm
-        ("addq_s.ph   %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    if (rd != result) {
-        printf("1 addq_s.ph wrong\n");
-
-        return -1;
-    }
-
-    rs     = 0x3712847D;
-    rt     = 0x0031AF2D;
-    result = 0x37438000;
-    __asm
-        ("addq_s.ph   %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-
-    __asm
-        ("rddsp %0\n\t"
-         : "=r"(dsp)
-        );
-
-    if ((rd != result) || (((dsp >> 20) & 0x01) != 1)) {
-        printf("2 addq_s.ph wrong\n");
-
-        return -1;
-    }
-
-    rs     = 0x7fff847D;
-    rt     = 0x0031AF2D;
-    result = 0x7fff8000;
-    __asm
-        ("addq_s.ph   %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-
-    __asm
-        ("rddsp %0\n\t"
-         : "=r"(dsp)
-        );
-
-    if ((rd != result) || (((dsp >> 20) & 0x01) != 1)) {
-        printf("3 addq_s.ph wrong\n");
-
-        return -1;
-    }
-
-    rs     = 0x8030847D;
-    rt     = 0x8a00AF2D;
-    result = 0xffffffff80008000;
-    __asm
-        ("addq_s.ph   %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-
-    __asm
-        ("rddsp %0\n\t"
-         : "=r"(dsp)
-        );
-
-    if ((rd != result) || (((dsp >> 20) & 0x01) != 1)) {
-        printf("4 addq_s.ph wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/addq_s_pw.c b/tests/tcg/mips/mips64-dsp/addq_s_pw.c
deleted file mode 100644
index 2e380bb..0000000
--- a/tests/tcg/mips/mips64-dsp/addq_s_pw.c
+++ /dev/null
@@ -1,45 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, result, dspreg, dspresult;
-    rs = 0x123456787FFFFFFF;
-    rt = 0x1111111100000001;
-    result = 0x234567897FFFFFFF;
-    dspresult = 0x1;
-
-    __asm
-        ("addq_s.pw %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dspreg)
-         : "r"(rs), "r"(rt)
-        );
-
-    dspreg = ((dspreg >> 20) & 0x01);
-    if ((rd != result) || (dspreg != dspresult)) {
-        printf("addq_s.pw error\n");
-
-        return -1;
-    }
-
-    rs = 0x80FFFFFFE00000FF;
-    rt = 0x80000001200000DD;
-    result = 0x80000000000001DC;
-    dspresult = 0x01;
-
-    __asm
-        ("addq_s.pw %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dspreg)
-         : "r"(rs), "r"(rt)
-        );
-
-    dspreg = ((dspreg >> 20) & 0x01);
-    if ((rd != result) || (dspreg != dspresult)) {
-        printf("addq_s.pw error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/addq_s_qh.c b/tests/tcg/mips/mips64-dsp/addq_s_qh.c
deleted file mode 100644
index b638a2b..0000000
--- a/tests/tcg/mips/mips64-dsp/addq_s_qh.c
+++ /dev/null
@@ -1,26 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, result, dspreg, dspresult;
-    rs = 0x123456787FFF8000;
-    rt = 0x1111111100028000;
-    result = 0x234567897FFF8000;
-    dspresult = 0x1;
-
-    __asm
-        ("addq_s.qh %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dspreg)
-         : "r"(rs), "r"(rt)
-        );
-
-    dspreg = ((dspreg >> 20) & 0x01);
-    if ((rd != result) || (dspreg != dspresult)) {
-        printf("addq_s.qh error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/addq_s_w.c b/tests/tcg/mips/mips64-dsp/addq_s_w.c
deleted file mode 100644
index 3e08f5d..0000000
--- a/tests/tcg/mips/mips64-dsp/addq_s_w.c
+++ /dev/null
@@ -1,48 +0,0 @@
-#include "io.h"
-
-int main()
-{
-    long long rd, rs, rt;
-    long long result;
-
-    rt     = 0x10017EFD;
-    rs     = 0x11111111;
-    result = 0x2112900e;
-
-    __asm
-        ("addq_s.w %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    if (rd != result) {
-        printf("addq_s.w error\n");
-    }
-
-    rt     = 0x80017EFD;
-    rs     = 0x81111111;
-    result = 0xffffffff80000000;
-
-    __asm
-        ("addq_s.w %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    if (rd != result) {
-        printf("addq_s.w error\n");
-    }
-
-    rt     = 0x7fffffff;
-    rs     = 0x01111111;
-    result = 0x7fffffff;
-
-    __asm
-        ("addq_s.w %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    if (rd != result) {
-        printf("addq_s.w error\n");
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/addsc.c b/tests/tcg/mips/mips64-dsp/addsc.c
deleted file mode 100644
index 4b684b9..0000000
--- a/tests/tcg/mips/mips64-dsp/addsc.c
+++ /dev/null
@@ -1,39 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long dsp;
-    long long result;
-
-    rs     = 0x0000000F;
-    rt     = 0x00000001;
-    result = 0x00000010;
-    __asm
-        ("addsc %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    if (rd != result) {
-        printf("1 addsc wrong\n");
-
-        return -1;
-    }
-
-    rs     = 0xFFFF0FFF;
-    rt     = 0x00010111;
-    result = 0x00001110;
-    __asm
-        ("addsc %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    if ((rd != result) || (((dsp >> 13) & 0x01) != 1)) {
-        printf("2 addsc wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/addu_ob.c b/tests/tcg/mips/mips64-dsp/addu_ob.c
deleted file mode 100644
index 17f9c66..0000000
--- a/tests/tcg/mips/mips64-dsp/addu_ob.c
+++ /dev/null
@@ -1,28 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, result, dspreg, dspresult;
-
-    rs = 0x123456789ABCDEF0;
-    rt = 0x3456123498DEF390;
-    result = 0x468A68AC329AD180;
-    dspresult = 0x01;
-
-    __asm
-        ("addu.ob %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dspreg)
-         : "r"(rs), "r"(rt)
-        );
-
-    dspreg = ((dspreg >> 20) & 0x01);
-
-    if ((rd != result) || (dspreg != dspresult)) {
-        printf("addu.ob error\n\t");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/addu_qb.c b/tests/tcg/mips/mips64-dsp/addu_qb.c
deleted file mode 100644
index 3b9b5fc..0000000
--- a/tests/tcg/mips/mips64-dsp/addu_qb.c
+++ /dev/null
@@ -1,40 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long dsp;
-    long long result;
-
-    rs     = 0x00FF00FF;
-    rt     = 0x00010001;
-    result = 0x00000000;
-    __asm
-        ("addu.qb %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    if ((rd != result) || (((dsp >> 20) & 0x01) != 1)) {
-        printf("1 addu.qb wrong\n");
-
-        return -1;
-    }
-
-    rs     = 0xFFFF1111;
-    rt     = 0x00020001;
-    result = 0xFFFFFFFFFF011112;
-    __asm
-        ("addu.qb %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    if ((rd != result) || (((dsp >> 20) & 0x01) != 1)) {
-        printf("2 addu.qb wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/addu_s_ob.c b/tests/tcg/mips/mips64-dsp/addu_s_ob.c
deleted file mode 100644
index e89a463..0000000
--- a/tests/tcg/mips/mips64-dsp/addu_s_ob.c
+++ /dev/null
@@ -1,27 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, result, dspreg, dspresult;
-    rs = 0x123456789ABCDEF0;
-    rt = 0x3456123498DEF390;
-    result = 0x468A68ACFFFFFFFF;
-    dspresult = 0x01;
-
-    __asm
-        ("addu_s.ob %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dspreg)
-         : "r"(rs), "r"(rt)
-        );
-
-    dspreg = ((dspreg >> 20) & 0x01);
-
-    if ((rd != result) || (dspreg != dspresult)) {
-        printf("addu_s.ob error\n\t");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/addu_s_qb.c b/tests/tcg/mips/mips64-dsp/addu_s_qb.c
deleted file mode 100644
index cb84293..0000000
--- a/tests/tcg/mips/mips64-dsp/addu_s_qb.c
+++ /dev/null
@@ -1,40 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long dsp;
-    long long result;
-
-    rs     = 0x10FF01FF;
-    rt     = 0x10010001;
-    result = 0x20FF01FF;
-    __asm
-        ("addu_s.qb %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    if ((rd != result) || (((dsp >> 20) & 0x1) != 1)) {
-        printf("1 addu_s.qb error 1\n");
-
-        return -1;
-    }
-
-    rs     = 0xFFFFFFFFFFFF1111;
-    rt     = 0x00020001;
-    result = 0xFFFFFFFFFFFF1112;
-    __asm
-        ("addu_s.qb %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    if ((rd != result) || (((dsp >> 20) & 0x1) != 1)) {
-        printf("2 addu_s.qb error 2\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/addwc.c b/tests/tcg/mips/mips64-dsp/addwc.c
deleted file mode 100644
index 5929cd2..0000000
--- a/tests/tcg/mips/mips64-dsp/addwc.c
+++ /dev/null
@@ -1,59 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long dspi, dspo;
-    long long result;
-
-    rs     = 0x10FF01FF;
-    rt     = 0x10010001;
-    dspi   = 0x00002000;
-    result = 0x21000201;
-    __asm
-        ("wrdsp %3\n"
-         "addwc %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt), "r"(dspi)
-        );
-    if (rd != result) {
-        printf("1 addwc wrong\n");
-
-        return -1;
-    }
-
-    rs     = 0xFFFF1111;
-    rt     = 0x00020001;
-    dspi   = 0x00;
-    result = 0x00011112;
-    __asm
-        ("wrdsp %3\n"
-         "addwc %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt), "r"(dspi)
-        );
-    if (rd != result) {
-        printf("2 addwc wrong\n");
-
-        return -1;
-    }
-
-    rs     = 0x8FFF1111;
-    rt     = 0x80020001;
-    dspi   = 0x00;
-    result = 0x10011112;
-    __asm
-        ("wrdsp %4\n"
-         "addwc %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dspo)
-         : "r"(rs), "r"(rt), "r"(dspi)
-        );
-    if ((rd != result) || (((dspo >> 20) & 0x01) != 1)) {
-        printf("3 addwc wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/bitrev.c b/tests/tcg/mips/mips64-dsp/bitrev.c
deleted file mode 100644
index ac24ef3..0000000
--- a/tests/tcg/mips/mips64-dsp/bitrev.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt;
-    long long result;
-
-    rt     = 0x12345678;
-    result = 0x00001E6A;
-
-    __asm
-        ("bitrev %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    if (rd != result) {
-        printf("bitrev wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/bposge32.c b/tests/tcg/mips/mips64-dsp/bposge32.c
deleted file mode 100644
index 97bce44..0000000
--- a/tests/tcg/mips/mips64-dsp/bposge32.c
+++ /dev/null
@@ -1,50 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long dsp, sum;
-    long long result;
-
-    dsp =  0x20;
-    sum = 0x01;
-    result = 0x02;
-
-    __asm
-        ("wrdsp %1\n\t"
-         "bposge32 test1\n\t"
-         "nop\n\t"
-         "addi %0, 0xA2\n\t"
-         "nop\n\t"
-         "test1:\n\t"
-         "addi %0, 0x01\n\t"
-         : "+r"(sum)
-         : "r"(dsp)
-        );
-    if (sum != result) {
-        printf("bposge32 wrong\n");
-
-        return -1;
-    }
-
-    dsp =  0x10;
-    sum = 0x01;
-    result = 0xA4;
-
-    __asm
-        ("wrdsp %1\n\t"
-         "bposge32 test2\n\t"
-         "nop\n\t"
-         "addi %0, 0xA2\n\t"
-         "nop\n\t"
-         "test2:\n\t"
-         "addi %0, 0x01\n\t"
-         : "+r"(sum)
-         : "r"(dsp)
-        );
-    if (sum != result) {
-        printf("bposge32 wrong\n");
-
-        return -1;
-    }
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/bposge64.c b/tests/tcg/mips/mips64-dsp/bposge64.c
deleted file mode 100644
index 36161ad..0000000
--- a/tests/tcg/mips/mips64-dsp/bposge64.c
+++ /dev/null
@@ -1,50 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long dsp, sum;
-    long long result;
-
-    dsp =  0x40;
-    sum = 0x01;
-    result = 0x02;
-
-    __asm
-        ("wrdsp %1\n\t"
-         "bposge64 test1\n\t"
-         "nop\n\t"
-         "addi %0, 0xA2\n\t"
-         "nop\n\t"
-         "test1:\n\t"
-         "addi %0, 0x01\n\t"
-         : "+r"(sum)
-         : "r"(dsp)
-        );
-    if (sum != result) {
-        printf("bposge64 wrong\n");
-
-        return -1;
-    }
-
-    dsp =  0x10;
-    sum = 0x01;
-    result = 0xA4;
-
-    __asm
-        ("wrdsp %1\n\t"
-         "bposge64 test2\n\t"
-         "nop\n\t"
-         "addi %0, 0xA2\n\t"
-         "nop\n\t"
-         "test2:\n\t"
-         "addi %0, 0x01\n\t"
-         : "+r"(sum)
-         : "r"(dsp)
-        );
-    if (sum != result) {
-        printf("bposge64 wrong\n");
-
-        return -1;
-    }
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/cmp_eq_ph.c b/tests/tcg/mips/mips64-dsp/cmp_eq_ph.c
deleted file mode 100644
index 63069d0..0000000
--- a/tests/tcg/mips/mips64-dsp/cmp_eq_ph.c
+++ /dev/null
@@ -1,42 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long result;
-
-    rs     = 0x11777066;
-    rt     = 0x55AA33FF;
-    result = 0x00;
-    __asm
-        ("cmp.eq.ph %1, %2\n\t"
-         "rddsp %0\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-
-    rd = (rd >> 24) & 0x03;
-    if (rd != result) {
-        printf("cmp.eq.ph wrong\n");
-
-        return -1;
-    }
-
-    rs     = 0x11777066;
-    rt     = 0x11777066;
-    result = 0x03;
-    __asm
-        ("cmp.eq.ph %1, %2\n\t"
-         "rddsp %0\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    rd = (rd >> 24) & 0x03;
-    if (rd != result) {
-        printf("cmp.eq.ph wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/cmp_eq_pw.c b/tests/tcg/mips/mips64-dsp/cmp_eq_pw.c
deleted file mode 100644
index bae4c06..0000000
--- a/tests/tcg/mips/mips64-dsp/cmp_eq_pw.c
+++ /dev/null
@@ -1,46 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-  long long rs, rt, dspreg, dspresult;
-
-  rs = 0x123456789ABCDEFF;
-  rt = 0x123456789ABCDEFF;
-  dspresult = 0x03;
-
-  __asm
-      ("cmp.eq.pw %1, %2\n\t"
-       "rddsp %0\n\t"
-       : "=r"(dspreg)
-       : "r"(rs), "r"(rt)
-      );
-
-  dspreg = ((dspreg >> 24) & 0x03);
-
-  if (dspreg != dspresult) {
-    printf("1 cmp.eq.pw error\n");
-
-    return -1;
-  }
-
-  rs = 0x123456799ABCDEFe;
-  rt = 0x123456789ABCDEFF;
-  dspresult = 0x00;
-
-  __asm
-      ("cmp.eq.pw %1, %2\n\t"
-       "rddsp %0\n\t"
-       : "=r"(dspreg)
-       : "r"(rs), "r"(rt)
-      );
-
-  dspreg = ((dspreg >> 24) & 0x03);
-
-  if (dspreg != dspresult) {
-    printf("2 cmp.eq.pw error\n");
-
-    return -1;
-  }
-
-  return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/cmp_eq_qh.c b/tests/tcg/mips/mips64-dsp/cmp_eq_qh.c
deleted file mode 100644
index 49ea271..0000000
--- a/tests/tcg/mips/mips64-dsp/cmp_eq_qh.c
+++ /dev/null
@@ -1,46 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-  long long rs, rt, dspreg, dspresult;
-
-  rs = 0x123456789ABCDEF0;
-  rt = 0x123456789ABCDEFF;
-  dspresult = 0x0E;
-
-  __asm
-      ("cmp.eq.qh %1, %2\n\t"
-        "rddsp %0\n\t"
-        : "=r"(dspreg)
-        : "r"(rs), "r"(rt)
-       );
-
-  dspreg = ((dspreg >> 24) & 0x0F);
-
-  if (dspreg != dspresult) {
-    printf("cmp.eq.qh error\n");
-
-    return -1;
-  }
-
-  rs = 0x12355a789A4CD3F0;
-  rt = 0x123456789ABCDEFF;
-  dspresult = 0x00;
-
-  __asm
-      ("cmp.eq.qh %1, %2\n\t"
-        "rddsp %0\n\t"
-        : "=r"(dspreg)
-        : "r"(rs), "r"(rt)
-       );
-
-  dspreg = ((dspreg >> 24) & 0x0F);
-
-  if (dspreg != dspresult) {
-    printf("cmp.eq.qh error\n");
-
-    return -1;
-  }
-
-  return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/cmp_le_ph.c b/tests/tcg/mips/mips64-dsp/cmp_le_ph.c
deleted file mode 100644
index 12d24f1..0000000
--- a/tests/tcg/mips/mips64-dsp/cmp_le_ph.c
+++ /dev/null
@@ -1,40 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long result;
-
-    rs     = 0x11777066;
-    rt     = 0x55AA33FF;
-    result = 0x02;
-    __asm
-        ("cmp.le.ph %1, %2\n\t"
-         "rddsp %0\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-
-    rd = (rd >> 24) & 0x03;
-    if (rd != result) {
-        printf("cmp.le.ph wrong\n");
-
-        return -1;
-    }
-    rs     = 0x11777066;
-    rt     = 0x11777066;
-    result = 0x03;
-    __asm
-        ("cmp.le.ph %1, %2\n\t"
-         "rddsp %0\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    rd = (rd >> 24) & 0x03;
-    if (rd != result) {
-        printf("cmp.le.ph wrong\n");
-
-        return -1;
-    }
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/cmp_le_pw.c b/tests/tcg/mips/mips64-dsp/cmp_le_pw.c
deleted file mode 100644
index 6acc43c..0000000
--- a/tests/tcg/mips/mips64-dsp/cmp_le_pw.c
+++ /dev/null
@@ -1,46 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rs, rt, dspreg, dspresult;
-
-    rs = 0x123456789ABCDEF0;
-    rt = 0x123456789ABCDEFF;
-    dspresult = 0x03;
-
-    __asm
-        ("cmp.le.pw %1, %2\n\t"
-         "rddsp %0\n\t"
-         : "=r"(dspreg)
-         : "r"(rs), "r"(rt)
-        );
-
-    dspreg = ((dspreg >> 24) & 0x03);
-
-    if (dspreg != dspresult) {
-        printf("1 cmp.le.pw error\n");
-
-        return -1;
-    }
-
-    rs = 0x123456799ABCEEFF;
-    rt = 0x123456789ABCDEFF;
-    dspresult = 0x00;
-
-    __asm
-        ("cmp.le.pw %1, %2\n\t"
-         "rddsp %0\n\t"
-         : "=r"(dspreg)
-         : "r"(rs), "r"(rt)
-        );
-
-    dspreg = ((dspreg >> 24) & 0x03);
-
-    if (dspreg != dspresult) {
-        printf("2 cmp.le.pw error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/cmp_le_qh.c b/tests/tcg/mips/mips64-dsp/cmp_le_qh.c
deleted file mode 100644
index c9ce216..0000000
--- a/tests/tcg/mips/mips64-dsp/cmp_le_qh.c
+++ /dev/null
@@ -1,46 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rs, rt, dspreg, dspresult;
-
-    rs = 0x123456789ABCDEF0;
-    rt = 0x123456789ABCDEFF;
-    dspresult = 0x0F;
-
-    __asm
-        ("cmp.le.qh %1, %2\n\t"
-         "rddsp %0\n\t"
-         : "=r"(dspreg)
-         : "r"(rs), "r"(rt)
-        );
-
-    dspreg = ((dspreg >> 24) & 0x0F);
-
-    if (dspreg != dspresult) {
-        printf("cmp.le.qh error\n");
-
-        return -1;
-    }
-
-    rs = 0x823456789ABCDEF0;
-    rt = 0x123456789ABCDEFF;
-    dspresult = 0x0f;
-
-    __asm
-        ("cmp.le.qh %1, %2\n\t"
-         "rddsp %0\n\t"
-         : "=r"(dspreg)
-         : "r"(rs), "r"(rt)
-        );
-
-    dspreg = ((dspreg >> 24) & 0x0F);
-
-    if (dspreg != dspresult) {
-        printf("cmp.le.qh error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/cmp_lt_ph.c b/tests/tcg/mips/mips64-dsp/cmp_lt_ph.c
deleted file mode 100644
index 1d91228..0000000
--- a/tests/tcg/mips/mips64-dsp/cmp_lt_ph.c
+++ /dev/null
@@ -1,41 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long result;
-
-    rs     = 0x11777066;
-    rt     = 0x55AA33FF;
-    result = 0x02;
-    __asm
-        ("cmp.lt.ph %1, %2\n\t"
-         "rddsp %0\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-
-    rd = (rd >> 24) & 0x03;
-    if (rd != result) {
-        printf("cmp.lt.ph wrong\n");
-
-        return -1;
-    }
-    rs     = 0x11777066;
-    rt     = 0x11777066;
-    result = 0x00;
-    __asm
-        ("cmp.lt.ph %1, %2\n\t"
-         "rddsp %0\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    rd = (rd >> 24) & 0x03;
-    if (rd != result) {
-        printf("cmp.lt.ph2 wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/cmp_lt_pw.c b/tests/tcg/mips/mips64-dsp/cmp_lt_pw.c
deleted file mode 100644
index 87e74ca..0000000
--- a/tests/tcg/mips/mips64-dsp/cmp_lt_pw.c
+++ /dev/null
@@ -1,46 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rs, rt, dspreg, dspresult;
-
-    rs = 0x123456789ABCDEF0;
-    rt = 0x123456789ABCDEFF;
-    dspresult = 0x01;
-
-    __asm
-        ("cmp.lt.pw %1, %2\n\t"
-         "rddsp %0\n\t"
-         : "=r"(dspreg)
-         : "r"(rs), "r"(rt)
-        );
-
-    dspreg = ((dspreg >> 24) & 0x03);
-
-    if (dspreg != dspresult) {
-        printf("cmp.lt.pw error\n");
-
-        return -1;
-    }
-
-    rs = 0x123456779ABCDEFf;
-    rt = 0x123456789ABCDEFF;
-    dspresult = 0x02;
-
-    __asm
-        ("cmp.lt.pw %1, %2\n\t"
-         "rddsp %0\n\t"
-         : "=r"(dspreg)
-         : "r"(rs), "r"(rt)
-        );
-
-    dspreg = ((dspreg >> 24) & 0x03);
-
-    if (dspreg != dspresult) {
-        printf("cmp.lt.pw error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/cmp_lt_qh.c b/tests/tcg/mips/mips64-dsp/cmp_lt_qh.c
deleted file mode 100644
index 0a13a5e..0000000
--- a/tests/tcg/mips/mips64-dsp/cmp_lt_qh.c
+++ /dev/null
@@ -1,46 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rs, rt, dspreg, dspresult;
-
-    rs = 0x123558789ABCDEF0;
-    rt = 0x123456789ABCDEFF;
-    dspresult = 0x01;
-
-    __asm
-        ("cmp.lt.qh %1, %2\n\t"
-         "rddsp %0\n\t"
-         : "=r"(dspreg)
-         : "r"(rs), "r"(rt)
-        );
-
-    dspreg = ((dspreg >> 24) & 0x0F);
-
-    if (dspreg != dspresult) {
-        printf("cmp.lt.qh error\n");
-
-        return -1;
-    }
-
-    rs = 0x123356779ABbDEF0;
-    rt = 0x123456789ABCDEFF;
-    dspresult = 0x0f;
-
-    __asm
-        ("cmp.lt.qh %1, %2\n\t"
-         "rddsp %0\n\t"
-         : "=r"(dspreg)
-         : "r"(rs), "r"(rt)
-        );
-
-    dspreg = ((dspreg >> 24) & 0x0F);
-
-    if (dspreg != dspresult) {
-        printf("cmp.lt.qh error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/cmpgu_eq_ob.c b/tests/tcg/mips/mips64-dsp/cmpgu_eq_ob.c
deleted file mode 100644
index 697d73d..0000000
--- a/tests/tcg/mips/mips64-dsp/cmpgu_eq_ob.c
+++ /dev/null
@@ -1,40 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, result;
-
-    rs = 0x123456789ABCDEF0;
-    rt = 0x123456789ABCDEFF;
-    result = 0xFE;
-
-    __asm
-        ("cmpgu.eq.ob %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-
-    if (rd != result) {
-        printf("cmpgu.eq.ob error\n");
-
-        return -1;
-    }
-
-    rs = 0x133456789ABCDEF0;
-    rt = 0x123556789ABCDEFF;
-    result = 0x3E;
-
-    __asm
-        ("cmpgu.eq.ob %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-
-    if (rd != result) {
-        printf("cmpgu.eq.ob error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/cmpgu_eq_qb.c b/tests/tcg/mips/mips64-dsp/cmpgu_eq_qb.c
deleted file mode 100644
index b41c443..0000000
--- a/tests/tcg/mips/mips64-dsp/cmpgu_eq_qb.c
+++ /dev/null
@@ -1,38 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long result;
-
-    rs     = 0x11777066;
-    rt     = 0x55AA70FF;
-    result = 0x02;
-    __asm
-        ("cmpgu.eq.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-
-    if (rd != result) {
-        printf("cmpgu.eq.ph wrong\n");
-
-        return -1;
-    }
-
-    rs     = 0x11777066;
-    rt     = 0x11777066;
-    result = 0x0F;
-    __asm
-        ("cmpgu.eq.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    if (rd != result) {
-        printf("cmpgu.eq.ph wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/cmpgu_le_ob.c b/tests/tcg/mips/mips64-dsp/cmpgu_le_ob.c
deleted file mode 100644
index 8b65f18..0000000
--- a/tests/tcg/mips/mips64-dsp/cmpgu_le_ob.c
+++ /dev/null
@@ -1,40 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, result;
-
-    rs = 0x123456789ABCDEF0;
-    rt = 0x123456789ABCDEFF;
-    result = 0xFF;
-
-    __asm
-        ("cmpgu.le.ob %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-
-    if (rd != result) {
-        printf("cmpgu.le.ob error\n");
-
-        return -1;
-    }
-
-    rs = 0x823556789ABCDEF0;
-    rt = 0x123456789ABCDEFF;
-    result = 0x3F;
-
-    __asm
-        ("cmpgu.le.ob %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-
-    if (rd != result) {
-        printf("cmpgu.le.ob error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/cmpgu_le_qb.c b/tests/tcg/mips/mips64-dsp/cmpgu_le_qb.c
deleted file mode 100644
index dd2b091..0000000
--- a/tests/tcg/mips/mips64-dsp/cmpgu_le_qb.c
+++ /dev/null
@@ -1,37 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long result;
-
-    rs     = 0x11777066;
-    rt     = 0x55AA70FF;
-    result = 0x0F;
-    __asm
-        ("cmpgu.le.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    if (rd != result) {
-        printf("cmpgu.le.qb wrong\n");
-
-        return -1;
-    }
-
-    rs     = 0x11777066;
-    rt     = 0x11766066;
-    result = 0x09;
-    __asm
-        ("cmpgu.le.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    if (rd != result) {
-        printf("cmpgu.le.qb wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/cmpgu_lt_ob.c b/tests/tcg/mips/mips64-dsp/cmpgu_lt_ob.c
deleted file mode 100644
index 3e5c9dd..0000000
--- a/tests/tcg/mips/mips64-dsp/cmpgu_lt_ob.c
+++ /dev/null
@@ -1,40 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, result;
-
-    rs = 0x123456789ABCDEF0;
-    rt = 0x123456789ABCDEFF;
-    result = 0x01;
-
-    __asm
-        ("cmpgu.lt.ob %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-
-    if (rd != result) {
-        printf("cmpgu.lt.ob error\n");
-
-        return -1;
-    }
-
-    rs = 0x823455789ABCDEF0;
-    rt = 0x123356789ABCDEFF;
-    result = 0x21;
-
-    __asm
-        ("cmpgu.lt.ob %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-
-    if (rd != result) {
-        printf("cmpgu.lt.ob error\n");
-
-        return -1;
-    }
-
-   return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/cmpgu_lt_qb.c b/tests/tcg/mips/mips64-dsp/cmpgu_lt_qb.c
deleted file mode 100644
index a467cb7..0000000
--- a/tests/tcg/mips/mips64-dsp/cmpgu_lt_qb.c
+++ /dev/null
@@ -1,38 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long result;
-
-    rs     = 0x11777066;
-    rt     = 0x55AA70FF;
-    result = 0x0D;
-    __asm
-        ("cmpgu.lt.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-
-    if (rd != result) {
-        printf("cmpgu.lt.qb wrong\n");
-
-        return -1;
-    }
-
-    rs     = 0x11777066;
-    rt     = 0x11766066;
-    result = 0x00;
-    __asm
-        ("cmpgu.lt.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    if (rd != result) {
-        printf("cmpgu.lt.qb wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/cmpu_eq_ob.c b/tests/tcg/mips/mips64-dsp/cmpu_eq_ob.c
deleted file mode 100644
index 4d1983e..0000000
--- a/tests/tcg/mips/mips64-dsp/cmpu_eq_ob.c
+++ /dev/null
@@ -1,46 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, dspreg, dspresult;
-
-    rs = 0x123456789ABCDEF0;
-    rt = 0x123456789ABCDEFF;
-    dspresult = 0xFE;
-
-    __asm
-        ("cmpu.eq.ob %1, %2\n\t"
-         "rddsp %0"
-         : "=r"(dspreg)
-         : "r"(rs), "r"(rt)
-        );
-
-    dspreg = ((dspreg >> 24) & 0xFF);
-
-    if (dspreg != dspresult) {
-        printf("cmpu.eq.ob error\n");
-
-        return -1;
-    }
-
-    rs = 0x133516713A0CD1F0;
-    rt = 0x123456789ABCDEFF;
-    dspresult = 0x00;
-
-    __asm
-        ("cmpu.eq.ob %1, %2\n\t"
-         "rddsp %0"
-         : "=r"(dspreg)
-         : "r"(rs), "r"(rt)
-        );
-
-    dspreg = ((dspreg >> 24) & 0xFF);
-
-    if (dspreg != dspresult) {
-        printf("cmpu.eq.ob error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/cmpu_eq_qb.c b/tests/tcg/mips/mips64-dsp/cmpu_eq_qb.c
deleted file mode 100644
index 28f3bec..0000000
--- a/tests/tcg/mips/mips64-dsp/cmpu_eq_qb.c
+++ /dev/null
@@ -1,42 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rs, rt;
-    long long dsp;
-    long long result;
-
-    rs         = 0x11777066;
-    rt         = 0x55AA70FF;
-    result     = 0x02;
-    __asm
-        ("cmpu.eq.qb %1, %2\n\t"
-         "rddsp %0\n\t"
-         : "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 24) & 0x0F;
-    if (dsp != result) {
-        printf("cmpu.eq.qb wrong\n");
-
-        return -1;
-    }
-
-    rs     = 0x11777066;
-    rt     = 0x11777066;
-    result = 0x0F;
-    __asm
-        ("cmpu.eq.qb %1, %2\n\t"
-         "rddsp %0\n\t"
-         : "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 24) & 0x0F;
-    if (dsp != result) {
-        printf("cmpu.eq.qb wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/cmpu_le_ob.c b/tests/tcg/mips/mips64-dsp/cmpu_le_ob.c
deleted file mode 100644
index 8acbd1c..0000000
--- a/tests/tcg/mips/mips64-dsp/cmpu_le_ob.c
+++ /dev/null
@@ -1,44 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rs, rt, dspreg, dspresult;
-
-    rs = 0x123456789ABCDEF0;
-    rt = 0x123456789ABCDEFF;
-    dspresult = 0xFF;
-
-    __asm
-        ("cmpu.le.ob %1, %2\n\t"
-         "rddsp %0"
-         : "=r"(dspreg)
-         : "r"(rs), "r"(rt)
-        );
-
-    dspreg = dspreg >> 24;
-    if (dspreg != dspresult) {
-        printf("cmpu.le.ob error\n");
-
-        return -1;
-    }
-
-    rs = 0x823656789ABCDEF0;
-    rt = 0x123456789ABCDEFF;
-    dspresult = 0x3F;
-
-    __asm
-        ("cmpu.le.ob %1, %2\n\t"
-         "rddsp %0"
-         : "=r"(dspreg)
-         : "r"(rs), "r"(rt)
-        );
-
-    dspreg = dspreg >> 24;
-    if (dspreg != dspresult) {
-        printf("cmpu.le.ob error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/cmpu_le_qb.c b/tests/tcg/mips/mips64-dsp/cmpu_le_qb.c
deleted file mode 100644
index 8a17a08..0000000
--- a/tests/tcg/mips/mips64-dsp/cmpu_le_qb.c
+++ /dev/null
@@ -1,41 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rs, rt;
-    long long dsp;
-    long long result;
-
-    rs         = 0x11777066;
-    rt         = 0x55AA70FF;
-    result     = 0x0F;
-    __asm
-        ("cmpu.le.qb %1, %2\n\t"
-         "rddsp %0\n\t"
-         : "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 24) & 0x0F;
-    if (dsp != result) {
-        printf("cmpu.le.qb wrong\n");
-
-        return -1;
-    }
-
-    rs     = 0x11777066;
-    rt     = 0x11777066;
-    result = 0x0F;
-    __asm
-        ("cmpu.le.qb %1, %2\n\t"
-         "rddsp %0\n\t"
-         : "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 24) & 0x0F;
-    if (dsp != result) {
-        printf("cmpu.le.qb wrong\n");
-
-        return -1;
-    }
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/cmpu_lt_ob.c b/tests/tcg/mips/mips64-dsp/cmpu_lt_ob.c
deleted file mode 100644
index 34e312d..0000000
--- a/tests/tcg/mips/mips64-dsp/cmpu_lt_ob.c
+++ /dev/null
@@ -1,44 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rs, rt, dspreg, dspresult;
-
-    rs = 0x123456789ABCDEF0;
-    rt = 0x123456789ABCDEFF;
-    dspresult = 0x01;
-
-    __asm
-        ("cmpu.lt.ob %1, %2\n\t"
-         "rddsp %0"
-         : "=r"(dspreg)
-         : "r"(rs), "r"(rt)
-        );
-
-    dspreg = dspreg >> 24;
-    if (dspreg != dspresult) {
-        printf("cmpu.lt.ob error\n");
-
-        return -1;
-    }
-
-    rs = 0x823156789ABCDEF0;
-    rt = 0x123456789ABCDEFF;
-    dspresult = 0x41;
-
-    __asm
-        ("cmpu.lt.ob %1, %2\n\t"
-         "rddsp %0"
-         : "=r"(dspreg)
-         : "r"(rs), "r"(rt)
-        );
-
-    dspreg = dspreg >> 24;
-    if (dspreg != dspresult) {
-        printf("cmpu.lt.ob error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/cmpu_lt_qb.c b/tests/tcg/mips/mips64-dsp/cmpu_lt_qb.c
deleted file mode 100644
index adb75ee..0000000
--- a/tests/tcg/mips/mips64-dsp/cmpu_lt_qb.c
+++ /dev/null
@@ -1,42 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rs, rt;
-    long long dsp;
-    long long result;
-
-    rs         = 0x11777066;
-    rt         = 0x55AA70FF;
-    result     = 0x0D;
-    __asm
-        ("cmpu.lt.qb %1, %2\n\t"
-         "rddsp %0\n\t"
-         : "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 24) & 0x0F;
-    if (dsp != result) {
-        printf("cmpu.lt.qb wrong\n");
-
-        return -1;
-    }
-
-    rs     = 0x11777066;
-    rt     = 0x11777066;
-    result = 0x00;
-    __asm
-        ("cmpu.lt.qb %1, %2\n\t"
-         "rddsp %0\n\t"
-         : "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 24) & 0x0F;
-    if (dsp != result) {
-        printf("cmpu.lt.qb wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dappend.c b/tests/tcg/mips/mips64-dsp/dappend.c
deleted file mode 100644
index ba8e121..0000000
--- a/tests/tcg/mips/mips64-dsp/dappend.c
+++ /dev/null
@@ -1,37 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, rs;
-    long long res;
-    rt = 0x1234567887654321;
-    rs = 0xabcd1234abcd8765;
-
-    res = 0x1234567887654321;
-    __asm
-        ("dappend %0, %1, 0x0\n\t"
-         : "=r"(rt)
-         : "r"(rs)
-        );
-
-    if (rt != res) {
-        printf("dappend error\n");
-        return -1;
-    }
-
-    rt = 0x1234567887654321;
-    rs = 0xabcd1234abcd8765;
-
-    res = 0x2345678876543215;
-    __asm
-        ("dappend %0, %1, 0x4\n\t"
-         : "=r"(rt)
-         : "r"(rs)
-        );
-
-    if (rt != res) {
-        printf("dappend error\n");
-        return -1;
-    }
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dextp.c b/tests/tcg/mips/mips64-dsp/dextp.c
deleted file mode 100644
index a469cc0..0000000
--- a/tests/tcg/mips/mips64-dsp/dextp.c
+++ /dev/null
@@ -1,54 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, dsp;
-    long long achi, acli;
-    long long res, resdsp;
-    int rs;
-
-    rs = 0xabcd1234;
-
-    achi = 0x12345678;
-    acli = 0x87654321;
-    res = 0xff;
-    resdsp = 0x0;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "wrdsp %4\n\t"
-         "dextp %0, $ac1, 0x7\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rs)
-        );
-    dsp = (dsp >> 14) & 0x1;
-    if ((dsp != resdsp) || (rt != res)) {
-        printf("dextp error\n");
-        return -1;
-    }
-
-    rs = 0xabcd1200;
-
-    achi = 0x12345678;
-    acli = 0x87654321;
-    resdsp = 0x1;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "wrdsp %4\n\t"
-         "dextp %0, $ac1, 0x7\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rs)
-        );
-    dsp = (dsp >> 14) & 0x1;
-    if (dsp != resdsp) {
-        printf("dextp error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dextpdp.c b/tests/tcg/mips/mips64-dsp/dextpdp.c
deleted file mode 100644
index a2361e2..0000000
--- a/tests/tcg/mips/mips64-dsp/dextpdp.c
+++ /dev/null
@@ -1,59 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, dsp;
-    long long achi, acli;
-    long long res, resdsp, resdsppos;
-    int rs;
-    int tmp1, tmp2;
-
-    rs = 0xabcd1234;
-
-    achi = 0x12345678;
-    acli = 0x87654321;
-    res = 0xff;
-    resdsp = 0x0;
-    resdsppos = 0x2c;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "wrdsp %4\n\t"
-         "dextpdp %0, $ac1, 0x7\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rs)
-        );
-    tmp1 = (dsp >> 14) & 0x1;
-    tmp2 = dsp & 0x3f;
-
-    if ((tmp1 != resdsp) || (rt != res) || (tmp2 != resdsppos)) {
-        printf("dextpdp error\n");
-        return -1;
-    }
-
-    rs = 0xabcd1200;
-
-    achi = 0x12345678;
-    acli = 0x87654321;
-    resdsp = 0x1;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "wrdsp %4\n\t"
-         "dextpdp %0, $ac1, 0x7\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rs)
-        );
-    tmp1 = (dsp >> 14) & 0x1;
-
-    if (tmp1 != resdsp) {
-        printf("dextpdp error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dextpdpv.c b/tests/tcg/mips/mips64-dsp/dextpdpv.c
deleted file mode 100644
index 09c0b5b..0000000
--- a/tests/tcg/mips/mips64-dsp/dextpdpv.c
+++ /dev/null
@@ -1,63 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, rs, dsp;
-    long long achi, acli;
-    long long res, resdsp, resdsppos;
-    int rsdsp;
-    int tmp1, tmp2;
-
-    rsdsp = 0xabcd1234;
-    rs = 0x7;
-    achi = 0x12345678;
-    acli = 0x87654321;
-    res = 0xff;
-    resdsp = 0x0;
-    resdsppos = 0x2c;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "wrdsp %4, 0x1\n\t"
-         "wrdsp %4\n\t"
-         "dextpdpv %0, $ac1, %5\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rsdsp), "r"(rs)
-        );
-
-    tmp1 = (dsp >> 14) & 0x1;
-    tmp2 = dsp & 0x3f;
-
-    if ((tmp1 != resdsp) || (rt != res) || (tmp2 != resdsppos)) {
-        printf("dextpdpv error\n");
-        return -1;
-    }
-
-    rsdsp = 0xabcd1200;
-    rs = 0x7;
-    achi = 0x12345678;
-    acli = 0x87654321;
-    resdsp = 0x1;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "wrdsp %4, 0x1\n\t"
-         "wrdsp %4\n\t"
-         "dextpdpv %0, $ac1, %5\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rsdsp), "r"(rs)
-        );
-
-    tmp1 = (dsp >> 14) & 0x1;
-
-    if (tmp1 != resdsp) {
-        printf("dextpdpv error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dextpv.c b/tests/tcg/mips/mips64-dsp/dextpv.c
deleted file mode 100644
index 2626f3d..0000000
--- a/tests/tcg/mips/mips64-dsp/dextpv.c
+++ /dev/null
@@ -1,58 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, rs, dsp;
-    long long achi, acli;
-    long long res, resdsp;
-    int rsdsp;
-
-    rsdsp = 0xabcd1234;
-    rs = 0x7;
-
-    achi = 0x12345678;
-    acli = 0x87654321;
-    res = 0xff;
-    resdsp = 0x0;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "wrdsp %4, 0x1\n\t"
-         "wrdsp %4\n\t"
-         "dextpv %0, $ac1, %5\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rsdsp), "r"(rs)
-        );
-    dsp = (dsp >> 14) & 0x1;
-    if ((dsp != resdsp) || (rt != res)) {
-        printf("dextpv error\n");
-        return -1;
-    }
-
-    rsdsp = 0xabcd1200;
-    rs = 0x7;
-
-    achi = 0x12345678;
-    acli = 0x87654321;
-    resdsp = 0x1;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "wrdsp %4, 0x1\n\t"
-         "wrdsp %4\n\t"
-         "dextpv %0, $ac1, %5\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rsdsp), "r"(rs)
-        );
-    dsp = (dsp >> 14) & 0x1;
-    if (dsp != resdsp) {
-        printf("dextpv error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dextr_l.c b/tests/tcg/mips/mips64-dsp/dextr_l.c
deleted file mode 100644
index 538846d..0000000
--- a/tests/tcg/mips/mips64-dsp/dextr_l.c
+++ /dev/null
@@ -1,44 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt;
-    long long achi, acli;
-    long long res;
-
-    achi = 0x87654321;
-    acli = 0x12345678;
-
-    res = 0x2100000000123456;
-
-    __asm
-        ("mthi %1, $ac1\n\t"
-         "mtlo %2, $ac1\n\t"
-         "dextr.l %0, $ac1, 0x8\n\t"
-         : "=r"(rt)
-         : "r"(achi), "r"(acli)
-        );
-    if (rt != res) {
-        printf("dextr.l error\n");
-        return -1;
-    }
-
-    achi = 0x87654321;
-    acli = 0x12345678;
-
-    res = 0x12345678;
-
-    __asm
-        ("mthi %1, $ac1\n\t"
-         "mtlo %2, $ac1\n\t"
-         "dextr.l %0, $ac1, 0x0\n\t"
-         : "=r"(rt)
-         : "r"(achi), "r"(acli)
-        );
-    if (rt != res) {
-        printf("dextr.l error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dextr_r_l.c b/tests/tcg/mips/mips64-dsp/dextr_r_l.c
deleted file mode 100644
index a10a9ab..0000000
--- a/tests/tcg/mips/mips64-dsp/dextr_r_l.c
+++ /dev/null
@@ -1,54 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, dsp;
-    long long achi, acli;
-    long long res, resdsp;
-
-    achi = 0x87654321;
-    acli = 0x12345678;
-
-    res = 0x2100000000123456;
-    resdsp = 0x01;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "dextr_r.l %0, $ac1, 0x8\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(achi), "r"(acli)
-        );
-
-    dsp = (dsp >> 23) & 0x1;
-
-    if ((dsp != resdsp) || (rt != res)) {
-        printf("dextr_r.l error\n");
-        return -1;
-    }
-
-    achi = 0x87654321;
-    acli = 0x12345678;
-
-    res = 0x12345678;
-    resdsp = 0x01;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "dextr_r.l %0, $ac1, 0x0\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(achi), "r"(acli)
-        );
-
-    dsp = (dsp >> 23) & 0x1;
-
-    if ((dsp != resdsp) || (rt != res)) {
-        printf("dextr_r.l error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dextr_r_w.c b/tests/tcg/mips/mips64-dsp/dextr_r_w.c
deleted file mode 100644
index 2774e9b..0000000
--- a/tests/tcg/mips/mips64-dsp/dextr_r_w.c
+++ /dev/null
@@ -1,54 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, dsp;
-    long long achi, acli;
-    long long res, resdsp;
-
-    achi = 0x87654321;
-    acli = 0x12345678;
-
-    res = 0x123456;
-    resdsp = 0x01;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "dextr_r.w %0, $ac1, 0x8\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(achi), "r"(acli)
-        );
-
-    dsp = (dsp >> 23) & 0x1;
-
-    if ((dsp != resdsp) || (rt != res)) {
-        printf("dextr_r.w error\n");
-        return -1;
-    }
-
-    achi = 0x87654321;
-    acli = 0x12345678;
-
-    res = 0x12345678;
-    resdsp = 0x01;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "dextr_r.w %0, $ac1, 0x0\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(achi), "r"(acli)
-        );
-
-    dsp = (dsp >> 23) & 0x1;
-
-    if ((dsp != resdsp) || (rt != res)) {
-        printf("dextr_r.w error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dextr_rs_l.c b/tests/tcg/mips/mips64-dsp/dextr_rs_l.c
deleted file mode 100644
index 1a202fe..0000000
--- a/tests/tcg/mips/mips64-dsp/dextr_rs_l.c
+++ /dev/null
@@ -1,52 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, dsp;
-    long long achi, acli;
-    long long res, resdsp;
-
-    achi = 0x87654321;
-    acli = 0x12345678;
-
-    res = 0x8000000000000000;
-    resdsp = 0x1;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "dextr_rs.l %0, $ac1, 0x8\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(achi), "r"(acli)
-        );
-    dsp = (dsp >> 23) & 0x1;
-
-    if ((dsp != resdsp) || (rt != res)) {
-        printf("dextr_rs.l error\n");
-        return -1;
-    }
-
-    achi = 0x00;
-    acli = 0x12345678;
-
-    res = 0x12345678;
-    resdsp = 0x1;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "dextr_rs.l %0, $ac1, 0x0\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(achi), "r"(acli)
-        );
-    dsp = (dsp >> 23) & 0x1;
-
-    if ((dsp != resdsp) || (rt != res)) {
-        printf("dextr_rs.l error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dextr_rs_w.c b/tests/tcg/mips/mips64-dsp/dextr_rs_w.c
deleted file mode 100644
index ebe5f99..0000000
--- a/tests/tcg/mips/mips64-dsp/dextr_rs_w.c
+++ /dev/null
@@ -1,52 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, dsp;
-    long long achi, acli;
-    long long res, resdsp;
-
-    achi = 0x87654321;
-    acli = 0x12345678;
-
-    res = 0xffffffff80000000;
-    resdsp = 0x1;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "dextr_rs.w %0, $ac1, 0x8\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(achi), "r"(acli)
-        );
-    dsp = (dsp >> 23) & 0x1;
-
-    if ((dsp != resdsp) || (rt != res)) {
-        printf("dextr_rs.w error\n");
-        return -1;
-    }
-
-    achi = 0x00;
-    acli = 0x12345678;
-
-    res = 0x123456;
-    resdsp = 0x1;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "dextr_rs.w %0, $ac1, 0x8\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(achi), "r"(acli)
-        );
-    dsp = (dsp >> 23) & 0x1;
-
-    if ((dsp != resdsp) || (rt != res)) {
-        printf("dextr_rs.w error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dextr_s_h.c b/tests/tcg/mips/mips64-dsp/dextr_s_h.c
deleted file mode 100644
index 1adb554..0000000
--- a/tests/tcg/mips/mips64-dsp/dextr_s_h.c
+++ /dev/null
@@ -1,73 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, dsp;
-    long long achi, acli;
-    long long res, resdsp;
-
-    achi = 0x87654321;
-    acli = 0x12345678;
-
-    res = 0xffffffffffff8000;
-    resdsp = 0x1;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "dextr_s.h %0, $ac1, 0x8\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(achi), "r"(acli)
-        );
-    dsp = (dsp >> 23) & 0x1;
-
-    if ((dsp != resdsp) || (rt != res)) {
-        printf("1 dextr_s.h error\n");
-        return -1;
-    }
-
-    achi = 0x77654321;
-    acli = 0x12345678;
-
-    res = 0x7fff;
-    resdsp = 0x1;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "dextr_s.h %0, $ac1, 0x8\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(achi), "r"(acli)
-        );
-    dsp = (dsp >> 23) & 0x1;
-
-    if ((dsp != resdsp) || (rt != res)) {
-        printf("2 dextr_s.h error\n");
-        return -1;
-    }
-
-    achi = 0x00;
-    acli = 0x78;
-
-    res = 0x7;
-    resdsp = 0x1;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "dextr_s.h %0, $ac1, 0x4\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(achi), "r"(acli)
-        );
-    dsp = (dsp >> 23) & 0x1;
-
-    if ((dsp != resdsp) || (rt != res)) {
-        printf("3 dextr_s.h error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dextr_w.c b/tests/tcg/mips/mips64-dsp/dextr_w.c
deleted file mode 100644
index 79bed5d..0000000
--- a/tests/tcg/mips/mips64-dsp/dextr_w.c
+++ /dev/null
@@ -1,44 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt;
-    long long achi, acli;
-    long long res;
-
-    achi = 0x87654321;
-    acli = 0x12345678;
-
-    res = 0x123456;
-
-    __asm
-        ("mthi %1, $ac1\n\t"
-         "mtlo %2, $ac1\n\t"
-         "dextr.w %0, $ac1, 0x8\n\t"
-         : "=r"(rt)
-         : "r"(achi), "r"(acli)
-        );
-    if (rt != res) {
-        printf("dextr.w error\n");
-        return -1;
-    }
-
-    achi = 0x87654321;
-    acli = 0x12345678;
-
-    res = 0x12345678;
-
-    __asm
-        ("mthi %1, $ac1\n\t"
-         "mtlo %2, $ac1\n\t"
-         "dextr.w %0, $ac1, 0x0\n\t"
-         : "=r"(rt)
-         : "r"(achi), "r"(acli)
-        );
-    if (rt != res) {
-        printf("dextr.w error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dextrv_l.c b/tests/tcg/mips/mips64-dsp/dextrv_l.c
deleted file mode 100644
index 2e6187f..0000000
--- a/tests/tcg/mips/mips64-dsp/dextrv_l.c
+++ /dev/null
@@ -1,46 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, rs;
-    long long achi, acli;
-    long long res;
-
-    achi = 0x87654321;
-    acli = 0x12345678;
-    rs = 0x8;
-
-    res = 0x2100000000123456;
-
-    __asm
-        ("mthi %1, $ac1\n\t"
-         "mtlo %2, $ac1\n\t"
-         "dextrv.l %0, $ac1, %3\n\t"
-         : "=r"(rt)
-         : "r"(achi), "r"(acli), "r"(rs)
-        );
-    if (rt != res) {
-        printf("dextrv.l error\n");
-        return -1;
-    }
-
-    achi = 0x87654321;
-    acli = 0x12345678;
-    rs = 0x0;
-
-    res = 0x12345678;
-
-    __asm
-        ("mthi %1, $ac1\n\t"
-         "mtlo %2, $ac1\n\t"
-         "dextrv.l %0, $ac1, %3\n\t"
-         : "=r"(rt)
-         : "r"(achi), "r"(acli), "r"(rs)
-        );
-    if (rt != res) {
-        printf("dextrv.l error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dextrv_r_l.c b/tests/tcg/mips/mips64-dsp/dextrv_r_l.c
deleted file mode 100644
index b47a017..0000000
--- a/tests/tcg/mips/mips64-dsp/dextrv_r_l.c
+++ /dev/null
@@ -1,56 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, dsp, rs;
-    long long achi, acli;
-    long long res, resdsp;
-
-    achi = 0x87654321;
-    acli = 0x12345678;
-    rs = 0x8;
-
-    res = 0x2100000000123456;
-    resdsp = 0x01;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "dextrv_r.l %0, $ac1, %4\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rs)
-        );
-
-    dsp = (dsp >> 23) & 0x1;
-
-    if ((dsp != resdsp) || (rt != res)) {
-        printf("dextrv_r.l error\n");
-        return -1;
-    }
-
-    achi = 0x87654321;
-    acli = 0x12345678;
-    rs = 0x0;
-
-    res = 0x12345678;
-    resdsp = 0x01;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "dextrv_r.l %0, $ac1, %4\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rs)
-        );
-
-    dsp = (dsp >> 23) & 0x1;
-
-    if ((dsp != resdsp) || (rt != res)) {
-        printf("dextrv_r.l error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dextrv_r_w.c b/tests/tcg/mips/mips64-dsp/dextrv_r_w.c
deleted file mode 100644
index cd201de..0000000
--- a/tests/tcg/mips/mips64-dsp/dextrv_r_w.c
+++ /dev/null
@@ -1,56 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, rs, dsp;
-    long long achi, acli;
-    long long res, resdsp;
-
-    achi = 0x87654321;
-    acli = 0x12345678;
-    rs = 0x8;
-
-    res = 0x123456;
-    resdsp = 0x01;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "dextrv_r.w %0, $ac1, %4\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rs)
-        );
-
-    dsp = (dsp >> 23) & 0x1;
-
-    if ((dsp != resdsp) || (rt != res)) {
-        printf("dextrv_r.w error\n");
-        return -1;
-    }
-
-    achi = 0x87654321;
-    acli = 0x12345678;
-    rs = 0x0;
-
-    res = 0x12345678;
-    resdsp = 0x01;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "dextrv_r.w %0, $ac1, %4\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rs)
-        );
-
-    dsp = (dsp >> 23) & 0x1;
-
-    if ((dsp != resdsp) || (rt != res)) {
-        printf("dextrv_r.w error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dextrv_rs_l.c b/tests/tcg/mips/mips64-dsp/dextrv_rs_l.c
deleted file mode 100644
index 6ce4185..0000000
--- a/tests/tcg/mips/mips64-dsp/dextrv_rs_l.c
+++ /dev/null
@@ -1,54 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, rs, dsp;
-    long long achi, acli;
-    long long res, resdsp;
-
-    achi = 0x87654321;
-    acli = 0x12345678;
-    rs = 0x8;
-
-    res = 0x8000000000000000;
-    resdsp = 0x1;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "dextrv_rs.l %0, $ac1, %4\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rs)
-        );
-    dsp = (dsp >> 23) & 0x1;
-
-    if ((dsp != resdsp) || (rt != res)) {
-        printf("dextrv_rs.l error\n");
-        return -1;
-    }
-
-    achi = 0x00;
-    acli = 0x12345678;
-    rs = 0x0;
-
-    res = 0x12345678;
-    resdsp = 0x1;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "dextrv_rs.l %0, $ac1, %4\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rs)
-        );
-    dsp = (dsp >> 23) & 0x1;
-
-    if ((dsp != resdsp) || (rt != res)) {
-        printf("dextrv_rs.l error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dextrv_rs_w.c b/tests/tcg/mips/mips64-dsp/dextrv_rs_w.c
deleted file mode 100644
index a65183c..0000000
--- a/tests/tcg/mips/mips64-dsp/dextrv_rs_w.c
+++ /dev/null
@@ -1,54 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, rs, dsp;
-    long long achi, acli;
-    long long res, resdsp;
-
-    achi = 0x87654321;
-    acli = 0x12345678;
-    rs = 0x8;
-
-    res = 0xffffffff80000000;
-    resdsp = 0x1;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "dextrv_rs.w %0, $ac1, %4\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rs)
-        );
-    dsp = (dsp >> 23) & 0x1;
-
-    if ((dsp != resdsp) || (rt != res)) {
-        printf("dextrv_rs.w error\n");
-        return -1;
-    }
-
-    achi = 0x00;
-    acli = 0x12345678;
-    rs = 0x8;
-
-    res = 0x123456;
-    resdsp = 0x1;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "dextrv_rs.w %0, $ac1, %4\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rs)
-        );
-    dsp = (dsp >> 23) & 0x1;
-
-    if ((dsp != resdsp) || (rt != res)) {
-        printf("dextrv_rs.w error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dextrv_s_h.c b/tests/tcg/mips/mips64-dsp/dextrv_s_h.c
deleted file mode 100644
index 87d3aee..0000000
--- a/tests/tcg/mips/mips64-dsp/dextrv_s_h.c
+++ /dev/null
@@ -1,32 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, rs, dsp;
-    long long achi, acli;
-    long long res, resdsp;
-
-    achi = 0x87654321;
-    acli = 0x12345678;
-    rs = 0x8;
-
-    res = 0xffffffffffff8000;
-    resdsp = 0x1;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "dextrv_s.h %0, $ac1, %4\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rs)
-        );
-    dsp = (dsp >> 23) & 0x1;
-
-    if ((dsp != resdsp) || (rt != res)) {
-        printf("dextrv_s.h error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dextrv_w.c b/tests/tcg/mips/mips64-dsp/dextrv_w.c
deleted file mode 100644
index 973765c..0000000
--- a/tests/tcg/mips/mips64-dsp/dextrv_w.c
+++ /dev/null
@@ -1,46 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, rs;
-    long long achi, acli;
-    long long res;
-
-    achi = 0x87654321;
-    acli = 0x12345678;
-    rs = 0x8;
-
-    res = 0x123456;
-
-    __asm
-        ("mthi %1, $ac1\n\t"
-         "mtlo %2, $ac1\n\t"
-         "dextrv.w %0, $ac1, %3\n\t"
-         : "=r"(rt)
-         : "r"(achi), "r"(acli), "r"(rs)
-        );
-    if (rt != res) {
-        printf("dextrv.w error\n");
-        return -1;
-    }
-
-    achi = 0x87654321;
-    acli = 0x12345678;
-    rs = 0x0;
-
-    res = 0x12345678;
-
-    __asm
-        ("mthi %1, $ac1\n\t"
-         "mtlo %2, $ac1\n\t"
-         "dextrv.w %0, $ac1, %3\n\t"
-         : "=r"(rt)
-         : "r"(achi), "r"(acli), "r"(rs)
-        );
-    if (rt != res) {
-        printf("dextrv.w error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dinsv.c b/tests/tcg/mips/mips64-dsp/dinsv.c
deleted file mode 100644
index f619218..0000000
--- a/tests/tcg/mips/mips64-dsp/dinsv.c
+++ /dev/null
@@ -1,26 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rs, rt, dsp;
-    long long res;
-
-    rs = 0x1234567887654321;
-    rt = 0x1234567812345678;
-    dsp = 0x2222;
-    res = 0x1234567812345678;
-    __asm
-        ("wrdsp  %1, 0x3\n\t"
-         "wrdsp %1\n\t"
-         "dinsv %0, %2\n\t"
-         : "+r"(rt)
-         : "r"(dsp), "r"(rs)
-        );
-
-    if (rt != res) {
-        printf("dinsv error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dmadd.c b/tests/tcg/mips/mips64-dsp/dmadd.c
deleted file mode 100644
index fb22614..0000000
--- a/tests/tcg/mips/mips64-dsp/dmadd.c
+++ /dev/null
@@ -1,57 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, rs;
-    long long achi, acli;
-    long long acho, aclo;
-    long long resh, resl;
-
-    achi = 0x1;
-    acli = 0x1;
-
-    rs = 0x0000000100000001;
-    rt = 0x0000000200000002;
-
-    resh = 0x1;
-    resl = 0x5;
-    __asm
-       ("mthi %2, $ac1 \t\n"
-        "mtlo %3, $ac1 \t\n"
-        "dmadd $ac1, %4, %5\t\n"
-        "mfhi %0, $ac1 \t\n"
-        "mflo %1, $ac1 \t\n"
-        : "=r"(acho), "=r"(aclo)
-        : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-      );
-    if ((acho != resh) || (aclo != resl)) {
-        printf("1 dmadd error\n");
-
-        return -1;
-    }
-
-    achi = 0x1;
-    acli = 0x1;
-
-    rs = 0xaaaabbbbccccdddd;
-    rt = 0xaaaabbbbccccdddd;
-
-    resh = 0x0000000000000000;
-    resl = 0xffffffffca860b63;
-
-    __asm
-       ("mthi %2, $ac1 \t\n"
-        "mtlo %3, $ac1 \t\n"
-        "dmadd $ac1, %4, %5\t\n"
-        "mfhi %0, $ac1 \t\n"
-        "mflo %1, $ac1 \t\n"
-        : "=r"(acho), "=r"(aclo)
-        : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-      );
-    if ((acho != resh) || (aclo != resl)) {
-        printf("2 dmadd error\n");
-
-        return -1;
-    }
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dmaddu.c b/tests/tcg/mips/mips64-dsp/dmaddu.c
deleted file mode 100644
index 39ab0c1..0000000
--- a/tests/tcg/mips/mips64-dsp/dmaddu.c
+++ /dev/null
@@ -1,56 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, rs;
-    long long achi, acli;
-    long long acho, aclo;
-    long long resh, resl;
-    achi = 0x1;
-    acli = 0x2;
-
-    rs = 0x0000000200000002;
-    rt = 0x0000000200000002;
-    resh = 0x1;
-    resl = 0xa;
-    __asm
-        ("mthi %2, $ac1 \t\n"
-         "mtlo %3, $ac1 \t\n"
-         "dmaddu $ac1, %4, %5\t\n"
-         "mfhi %0, $ac1 \t\n"
-         "mflo %1, $ac1 \t\n"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-    if ((acho != resh) || (aclo != resl)) {
-        printf("1 dmaddu error\n");
-
-        return -1;
-    }
-
-    achi = 0x1;
-    acli = 0x1;
-
-    rs = 0xaaaabbbbccccdddd;
-    rt = 0xaaaabbbbccccdddd;
-
-    resh = 0x0000000000000002;
-    resl = 0xffffffffca860b63;
-
-    __asm
-        ("mthi %2, $ac1 \t\n"
-         "mtlo %3, $ac1 \t\n"
-         "dmaddu $ac1, %4, %5\t\n"
-         "mfhi %0, $ac1 \t\n"
-         "mflo %1, $ac1 \t\n"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-    if ((acho != resh) || (aclo != resl)) {
-        printf("2 dmaddu error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dmsub.c b/tests/tcg/mips/mips64-dsp/dmsub.c
deleted file mode 100644
index 16be617..0000000
--- a/tests/tcg/mips/mips64-dsp/dmsub.c
+++ /dev/null
@@ -1,59 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, rs;
-    long long achi, acli;
-    long long acho, aclo;
-    long long resh, resl;
-    achi = 0x1;
-    acli = 0x8;
-
-    rs = 0x0000000100000001;
-    rt = 0x0000000200000002;
-
-    resh = 0x1;
-    resl = 0x4;
-
-    __asm
-        ("mthi %2, $ac1 \t\n"
-         "mtlo %3, $ac1 \t\n"
-         "dmsub $ac1, %4, %5\t\n"
-         "mfhi %0, $ac1 \t\n"
-         "mflo %1, $ac1 \t\n"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-    if ((acho != resh) || (aclo != resl)) {
-        printf("1 dmsub error\n");
-
-        return -1;
-    }
-
-    achi = 0xfffffffF;
-    acli = 0xfffffffF;
-
-    rs = 0x8888999977776666;
-    rt = 0x9999888877776666;
-
-    resh = 0xffffffffffffffff;
-    resl = 0x789aae13;
-
-    __asm
-        ("mthi %2, $ac1 \t\n"
-         "mtlo %3, $ac1 \t\n"
-         "dmsub $ac1, %4, %5\t\n"
-         "mfhi %0, $ac1 \t\n"
-         "mflo %1, $ac1 \t\n"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-
-    if ((acho != resh) || (aclo != resl)) {
-        printf("2 dmsub error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dmsubu.c b/tests/tcg/mips/mips64-dsp/dmsubu.c
deleted file mode 100644
index cc4838a..0000000
--- a/tests/tcg/mips/mips64-dsp/dmsubu.c
+++ /dev/null
@@ -1,59 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, rs;
-    long long achi, acli;
-    long long acho, aclo;
-    long long resh, resl;
-    achi = 0x1;
-    acli = 0x8;
-
-    rs = 0x0000000100000001;
-    rt = 0x0000000200000002;
-
-    resh = 0x1;
-    resl = 0x4;
-
-    __asm
-        ("mthi %2, $ac1 \t\n"
-         "mtlo %3, $ac1 \t\n"
-         "dmsubu $ac1, %4, %5\t\n"
-         "mfhi %0, $ac1 \t\n"
-         "mflo %1, $ac1 \t\n"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-    if ((acho != resh) || (aclo != resl)) {
-        printf("1 dmsubu error\n");
-
-        return -1;
-    }
-
-    achi = 0xfffffffF;
-    acli = 0xfffffffF;
-
-    rs = 0x8888999977776666;
-    rt = 0x9999888877776666;
-
-    resh = 0xffffffffffffffff;
-    resl = 0x789aae13;
-
-    __asm
-        ("mthi %2, $ac1 \t\n"
-         "mtlo %3, $ac1 \t\n"
-         "dmsubu $ac1, %4, %5\t\n"
-         "mfhi %0, $ac1 \t\n"
-         "mflo %1, $ac1 \t\n"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-
-    if ((acho != resh) || (aclo != resl)) {
-        printf("2 dmsubu error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dmthlip.c b/tests/tcg/mips/mips64-dsp/dmthlip.c
deleted file mode 100644
index 027555f..0000000
--- a/tests/tcg/mips/mips64-dsp/dmthlip.c
+++ /dev/null
@@ -1,41 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rs, dsp;
-    long long achi, acli;
-
-    long long rsdsp;
-    long long acho, aclo;
-
-    long long res;
-    long long reshi, reslo;
-
-
-    rs = 0xaaaabbbbccccdddd;
-    achi = 0x87654321;
-    acli = 0x12345678;
-    dsp = 0x22;
-
-    res = 0x62;
-    reshi = 0x12345678;
-    reslo = 0xffffffffccccdddd;
-
-    __asm
-        ("mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "wrdsp %5\n\t"
-         "dmthlip %6, $ac1\n\t"
-         "rddsp %0\n\t"
-         "mfhi %1, $ac1\n\t"
-         "mflo %2, $ac1\n\t"
-         : "=r"(rsdsp), "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(dsp), "r"(rs)
-        );
-    if ((rsdsp != res) || (acho != reshi) || (aclo != reslo)) {
-        printf("dmthlip error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dpaq_s_w_ph.c b/tests/tcg/mips/mips64-dsp/dpaq_s_w_ph.c
deleted file mode 100644
index 1bca935..0000000
--- a/tests/tcg/mips/mips64-dsp/dpaq_s_w_ph.c
+++ /dev/null
@@ -1,32 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rs, rt, dsp;
-    long long ach = 0, acl = 0;
-    long long resulth, resultl, resultdsp;
-
-    rs        = 0x800000FF;
-    rt        = 0x80000002;
-    resulth   = 0x00;
-    resultl   = 0xFFFFFFFF800003FB;
-    resultdsp = 0x01;
-    __asm
-        ("mthi        %0, $ac1\n\t"
-         "mtlo        %1, $ac1\n\t"
-         "dpaq_s.w.ph $ac1, %3, %4\n\t"
-         "mfhi        %0,   $ac1\n\t"
-         "mflo        %1,   $ac1\n\t"
-         "rddsp       %2\n\t"
-         : "+r"(ach), "+r"(acl), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = dsp >> 17 & 0x01;
-    if ((dsp != resultdsp) || (ach != resulth) || (acl != resultl)) {
-        printf("dpaq_w.w.ph wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dpaq_s_w_qh.c b/tests/tcg/mips/mips64-dsp/dpaq_s_w_qh.c
deleted file mode 100644
index 844a347..0000000
--- a/tests/tcg/mips/mips64-dsp/dpaq_s_w_qh.c
+++ /dev/null
@@ -1,57 +0,0 @@
-#include"io.h"
-int main(void)
-{
-    long long rt, rs;
-    long long achi, acli;
-    long long acho, aclo;
-    long long resh, resl;
-
-    achi = 0x1;
-    acli = 0x1;
-    rs = 0x0001000100010001;
-    rt = 0x0002000200020002;
-    resh = 0x1;
-    resl = 0x11;
-
-    __asm
-        ("mthi %2, $ac1\t\n"
-         "mtlo %3, $ac1\t\n"
-         "dpaq_s.w.qh $ac1, %4, %5\t\n"
-         "mfhi %0, $ac1\t\n"
-         "mflo %1, $ac1\t\n"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-    if ((acho != resh) || (aclo != resl)) {
-        printf("1 dpaq_s.w.qh error\n");
-
-        return -1;
-    }
-
-    achi = 0xffffffff;
-    acli = 0xaaaaaaaa;
-
-    rs = 0x1111222233334444;
-    rt = 0xffffeeeeddddcccc;
-
-    resh = 0x00;
-    resl = 0xffffffffd27ad82e;
-
-    __asm
-        ("mthi %2, $ac1\t\n"
-         "mtlo %3, $ac1\t\n"
-         "dpaq_s.w.qh $ac1, %4, %5\t\n"
-         "mfhi %0, $ac1\t\n"
-         "mflo %1, $ac1\t\n"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-
-    if ((acho != resh) || (aclo != resl)) {
-        printf("2 dpaq_s.w.qh error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dpaq_sa_l_pw.c b/tests/tcg/mips/mips64-dsp/dpaq_sa_l_pw.c
deleted file mode 100644
index 1bb2ec2..0000000
--- a/tests/tcg/mips/mips64-dsp/dpaq_sa_l_pw.c
+++ /dev/null
@@ -1,88 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rs, rt;
-    long long achi, acli;
-    long long acho, aclo;
-    long long dsp;
-    long long resh, resl;
-    long long resdsp;
-
-    rs = 0x0000000100000001;
-    rt = 0x0000000200000002;
-    achi = 0x1;
-    acli = 0x1;
-    resh = 0xffffffffffffffff;
-    resl = 0x0;
-    resdsp = 0x01;
-
-    __asm
-        ("mthi        %3, $ac1\n\t"
-         "mtlo        %4, $ac1\n\t"
-         "dpaq_sa.l.pw $ac1, %5, %6\n\t"
-         "mfhi        %0,   $ac1\n\t"
-         "mflo        %1,   $ac1\n\t"
-         "rddsp       %2\n\t"
-         : "=r"(acho), "=r"(aclo), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-
-    if ((acho != resh) || (aclo != resl) || ((dsp >> (16 + 1)) != resdsp)) {
-        printf("1 dpaq_sa_l_pw error\n");
-
-        return -1;
-    }
-
-    rs = 0xaaaabbbbccccdddd;
-    rt = 0x3333444455556666;
-    achi = 0x88888888;
-    acli = 0x66666666;
-
-    resh = 0xffffffff88888887;
-    resl = 0xffffffff9e2661da;
-
-    __asm
-        ("mthi        %2, $ac1\n\t"
-         "mtlo        %3, $ac1\n\t"
-         "dpaq_sa.l.pw $ac1, %4, %5\n\t"
-         "mfhi        %0,   $ac1\n\t"
-         "mflo        %1,   $ac1\n\t"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-
-    if ((acho != resh) || (aclo != resl)) {
-        printf("2 dpaq_sa_l_pw error\n");
-
-        return -1;
-    }
-
-    rs = 0x8000000080000000;
-    rt = 0x8000000080000000;
-    achi = 0x88888888;
-    acli = 0x66666666;
-
-    resh = 0xffffffffffffffff;
-    resl = 0x00;
-    resdsp = 0x01;
-
-    __asm
-        ("mthi        %3, $ac1\n\t"
-         "mtlo        %4, $ac1\n\t"
-         "dpaq_sa.l.pw $ac1, %5, %6\n\t"
-         "mfhi        %0,   $ac1\n\t"
-         "mflo        %1,   $ac1\n\t"
-         "rddsp       %2\n\t"
-         : "=r"(acho), "=r"(aclo), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-
-    if ((acho != resh) || (aclo != resl) || ((dsp >> (16 + 1)) != resdsp)) {
-        printf("2 dpaq_sa_l_pw error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dpaq_sa_l_w.c b/tests/tcg/mips/mips64-dsp/dpaq_sa_l_w.c
deleted file mode 100644
index f840cdd..0000000
--- a/tests/tcg/mips/mips64-dsp/dpaq_sa_l_w.c
+++ /dev/null
@@ -1,82 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rs, rt, dsp;
-    long long ach = 0, acl = 0;
-    long long resulth, resultl, resultdsp;
-
-    rs        = 0x80000000;
-    rt        = 0x80000000;
-    resulth   = 0x7FFFFFFF;
-    resultl   = 0xffffffffFFFFFFFF;
-    resultdsp = 0x01;
-    __asm
-        ("mthi        %0, $ac1\n\t"
-         "mtlo        %0, $ac1\n\t"
-         "dpaq_sa.l.w $ac1, %3, %4\n\t"
-         "mfhi        %0,   $ac1\n\t"
-         "mflo        %1,   $ac1\n\t"
-         "rddsp       %2\n\t"
-         : "+r"(ach), "+r"(acl), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 17) & 0x01;
-    if ((dsp != resultdsp) || (ach != resulth) || (acl != resultl)) {
-        printf("dpaq_sa.l.w error\n");
-
-        return -1;
-    }
-
-    ach = 0x12;
-    acl = 0x48;
-    rs  = 0x80000000;
-    rt  = 0x80000000;
-
-    resulth   = 0x7FFFFFFF;
-    resultl   = 0xffffffffFFFFFFFF;
-    resultdsp = 0x01;
-    __asm
-        ("mthi        %0, $ac1\n\t"
-         "mtlo        %0, $ac1\n\t"
-         "dpaq_sa.l.w $ac1, %3, %4\n\t"
-         "mfhi        %0,   $ac1\n\t"
-         "mflo        %1,   $ac1\n\t"
-         "rddsp       %2\n\t"
-         : "+r"(ach), "+r"(acl), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 17) & 0x01;
-    if ((dsp != resultdsp) || (ach != resulth) || (acl != resultl)) {
-        printf("dpaq_sa.l.w error\n");
-
-        return -1;
-    }
-
-    ach = 0x741532A0;
-    acl = 0xfceabb08;
-    rs  = 0x80000000;
-    rt  = 0x80000000;
-
-    resulth   = 0x7fffffff;
-    resultl   = 0xffffffffffffffff;
-    resultdsp = 0x01;
-    __asm
-        ("mthi        %0, $ac1\n\t"
-         "mtlo        %0, $ac1\n\t"
-         "dpaq_sa.l.w $ac1, %3, %4\n\t"
-         "mfhi        %0,   $ac1\n\t"
-         "mflo        %1,   $ac1\n\t"
-         "rddsp       %2\n\t"
-         : "+r"(ach), "+r"(acl), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 17) & 0x01;
-    if ((dsp != resultdsp) || (ach != resulth) || (acl != resultl)) {
-        printf("dpaq_sa.l.w error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dpau_h_obl.c b/tests/tcg/mips/mips64-dsp/dpau_h_obl.c
deleted file mode 100644
index 54905e8..0000000
--- a/tests/tcg/mips/mips64-dsp/dpau_h_obl.c
+++ /dev/null
@@ -1,59 +0,0 @@
-
-#include "io.h"
-
-int main(void)
-{
-    long long rs, rt;
-    long long achi, acli;
-    long long acho, aclo;
-    long long resh, resl;
-
-    rs = 0x0000000100000001;
-    rt = 0x0000000200000002;
-    achi = 0x1;
-    acli = 0x1;
-    resh = 0x1;
-    resl = 0x3;
-
-    __asm
-        ("mthi        %2, $ac1\n\t"
-         "mtlo        %3, $ac1\n\t"
-         "dpau.h.obl $ac1, %4, %5\n\t"
-         "mfhi        %0,   $ac1\n\t"
-         "mflo        %1,   $ac1\n\t"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-
-    if ((acho != resh) || (aclo != resl)) {
-        printf("1 dpau.h.obl error\n");
-
-        return -1;
-    }
-
-    rs = 0xaaaabbbbccccdddd;
-    rt = 0x3333444455556666;
-    achi = 0x88888888;
-    acli = 0x66666666;
-
-    resh = 0xffffffff88888888;
-    resl = 0x66670d7a;
-
-    __asm
-        ("mthi        %2, $ac1\n\t"
-         "mtlo        %3, $ac1\n\t"
-         "dpau.h.obl $ac1, %4, %5\n\t"
-         "mfhi        %0,   $ac1\n\t"
-         "mflo        %1,   $ac1\n\t"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-
-    if ((acho != resh) || (aclo != resl)) {
-        printf("1 dpau.h.obl error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dpau_h_obr.c b/tests/tcg/mips/mips64-dsp/dpau_h_obr.c
deleted file mode 100644
index d7aa60b..0000000
--- a/tests/tcg/mips/mips64-dsp/dpau_h_obr.c
+++ /dev/null
@@ -1,59 +0,0 @@
-
-#include "io.h"
-
-int main(void)
-{
-    long long rs, rt;
-    long long achi, acli;
-    long long acho, aclo;
-    long long resh, resl;
-
-    rs = 0x0000000100000001;
-    rt = 0x0000000200000002;
-    achi = 0x1;
-    acli = 0x1;
-    resh = 0x1;
-    resl = 0x3;
-
-    __asm
-        ("mthi        %2, $ac1\n\t"
-         "mtlo        %3, $ac1\n\t"
-         "dpau.h.obr $ac1, %4, %5\n\t"
-         "mfhi        %0,   $ac1\n\t"
-         "mflo        %1,   $ac1\n\t"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-
-    if ((acho != resh) || (aclo != resl)) {
-        printf("1 dpau.h.obr error\n");
-
-        return -1;
-    }
-
-    rs = 0xccccddddaaaabbbb;
-    rt = 0x5555666633334444;
-    achi = 0x88888888;
-    acli = 0x66666666;
-
-    resh = 0xffffffff88888888;
-    resl = 0x66670d7a;
-
-    __asm
-        ("mthi        %2, $ac1\n\t"
-         "mtlo        %3, $ac1\n\t"
-         "dpau.h.obr $ac1, %4, %5\n\t"
-         "mfhi        %0,   $ac1\n\t"
-         "mflo        %1,   $ac1\n\t"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-
-    if ((acho != resh) || (aclo != resl)) {
-        printf("1 dpau.h.obr error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dpau_h_qbl.c b/tests/tcg/mips/mips64-dsp/dpau_h_qbl.c
deleted file mode 100644
index fcfd764..0000000
--- a/tests/tcg/mips/mips64-dsp/dpau_h_qbl.c
+++ /dev/null
@@ -1,29 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rs, rt;
-    long long ach = 5, acl = 3;
-    long long resulth, resultl;
-
-    rs        = 0x800000FF;
-    rt        = 0x80000002;
-    resulth   = 0x05;
-    resultl   = 0x4003;
-    __asm
-        ("mthi       %0, $ac1\n\t"
-         "mtlo       %1, $ac1\n\t"
-         "dpau.h.qbl $ac1, %2, %3\n\t"
-         "mfhi       %0,   $ac1\n\t"
-         "mflo       %1,   $ac1\n\t"
-         : "+r"(ach), "+r"(acl)
-         : "r"(rs), "r"(rt)
-        );
-    if ((ach != resulth) || (acl != resultl)) {
-        printf("dpau.h.qbl wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dpau_h_qbr.c b/tests/tcg/mips/mips64-dsp/dpau_h_qbr.c
deleted file mode 100644
index 3282461..0000000
--- a/tests/tcg/mips/mips64-dsp/dpau_h_qbr.c
+++ /dev/null
@@ -1,29 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rs, rt;
-    long long ach = 5, acl = 3;
-    long long resulth, resultl;
-
-    rs        = 0x800000FF;
-    rt        = 0x80000002;
-    resulth   = 0x05;
-    resultl   = 0x0201;
-    __asm
-        ("mthi       %0, $ac1\n\t"
-         "mtlo       %1, $ac1\n\t"
-         "dpau.h.qbr $ac1, %2, %3\n\t"
-         "mfhi       %0,   $ac1\n\t"
-         "mflo       %1,   $ac1\n\t"
-         : "+r"(ach), "+r"(acl)
-         : "r"(rs), "r"(rt)
-        );
-    if ((ach != resulth) || (acl != resultl)) {
-        printf("dpau.h.qbr wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dpsq_s_w_ph.c b/tests/tcg/mips/mips64-dsp/dpsq_s_w_ph.c
deleted file mode 100644
index 7660f03..0000000
--- a/tests/tcg/mips/mips64-dsp/dpsq_s_w_ph.c
+++ /dev/null
@@ -1,51 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rs, rt;
-    long long ach = 5, acl = 5;
-    long long resulth, resultl;
-
-    rs      = 0xBC0123AD;
-    rt      = 0x01643721;
-    resulth = 0x04;
-    resultl = 0xFFFFFFFFEE9794A3;
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpsq_s.w.ph $ac1, %2, %3\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         : "+r"(ach), "+r"(acl)
-         : "r"(rs), "r"(rt)
-        );
-    if ((ach != resulth) || (acl != resultl)) {
-        printf("1 dpsq_s.w.ph wrong\n");
-
-        return -1;
-    }
-
-    ach = 0x1424Ef1f;
-    acl = 0x1035219A;
-    rs      = 0x800083AD;
-    rt      = 0x80003721;
-    resulth = 0x1424ef1e;
-    resultl = 0x577ed901;
-
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpsq_s.w.ph $ac1, %2, %3\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         : "+r"(ach), "+r"(acl)
-         : "r"(rs), "r"(rt)
-        );
-    if ((ach != resulth) || (acl != resultl)) {
-        printf("2 dpsq_s.w.ph wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dpsq_s_w_qh.c b/tests/tcg/mips/mips64-dsp/dpsq_s_w_qh.c
deleted file mode 100644
index 2cc50c5..0000000
--- a/tests/tcg/mips/mips64-dsp/dpsq_s_w_qh.c
+++ /dev/null
@@ -1,56 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rs, rt;
-    long long achi, acli;
-    long long acho, aclo;
-    long long resh, resl;
-
-    rs = 0xffffeeeeddddcccc;
-    rt = 0x9999888877776666;
-    achi = 0x67576;
-    acli = 0x98878;
-
-    resh = 0x67576;
-    resl = 0x5b1682c4;
-    __asm
-        ("mthi  %2, $ac1\n\t"
-         "mtlo  %3, $ac1\n\t"
-         "dpsq_s.w.qh $ac1, %4, %5\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-    if ((acho != resh) || (aclo != resl)) {
-        printf("1 dpsq_s.w.qh wrong\n");
-
-        return -1;
-    }
-
-    rs = 0x8000800080008000;
-    rt = 0x8000800080008000;
-    achi = 0x67576;
-    acli = 0x98878;
-
-    resh = 0x67575;
-    resl = 0x0009887c;
-
-    __asm
-        ("mthi  %2, $ac1\n\t"
-         "mtlo  %3, $ac1\n\t"
-         "dpsq_s.w.qh $ac1, %4, %5\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-    if ((acho != resh) || (aclo != resl)) {
-        printf("2 dpsq_s.w.qh wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dpsq_sa_l_pw.c b/tests/tcg/mips/mips64-dsp/dpsq_sa_l_pw.c
deleted file mode 100644
index 7fc2503..0000000
--- a/tests/tcg/mips/mips64-dsp/dpsq_sa_l_pw.c
+++ /dev/null
@@ -1,76 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rs, rt, dsp;
-    long long achi, acli;
-    long long resh, resl, resdsp;
-
-    rs = 0x89789BC0123AD;
-    rt = 0x5467591643721;
-
-    achi = 0x98765437;
-    acli = 0x65489709;
-
-    resh = 0xffffffffffffffff;
-    resl = 0x00;
-
-    resdsp = 0x01;
-
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpsq_sa.l.pw $ac1, %3, %4\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "+r"(achi), "+r"(acli), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-
-    dsp = (dsp >> 17) & 0x01;
-    if ((dsp != resdsp) || (achi != resh) || (acli != resl)) {
-        printf("1 dpsq_sa.l.pw wrong\n");
-
-        return -1;
-    }
-
-    /* clear dspcontrol reg for next test use. */
-    dsp = 0;
-    __asm
-        ("wrdsp %0"
-         :
-         : "r"(dsp)
-        );
-
-    rs = 0x8B78980000000;
-    rt = 0x5867580000000;
-
-    achi = 0x98765437;
-    acli = 0x65489709;
-
-    resh = 0xffffffff98765436;
-    resl = 0x11d367d0;
-
-    resdsp = 0x01;
-
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpsq_sa.l.pw $ac1, %3, %4\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "+r"(achi), "+r"(acli), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-
-    dsp = (dsp >> 17) & 0x01;
-    if ((dsp != resdsp) || (achi != resh) || (acli != resl)) {
-        printf("2 dpsq_sa.l.pw wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dpsq_sa_l_w.c b/tests/tcg/mips/mips64-dsp/dpsq_sa_l_w.c
deleted file mode 100644
index f55afc9..0000000
--- a/tests/tcg/mips/mips64-dsp/dpsq_sa_l_w.c
+++ /dev/null
@@ -1,59 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rs, rt, dsp;
-    long long ach = 5, acl = 5;
-    long long resulth, resultl, resultdsp;
-
-    rs = 0xBC0123AD;
-    rt = 0x01643721;
-
-    resulth = 0xfffffffffdf4cbe0;
-    resultl = 0xFFFFFFFFd138776b;
-    resultdsp = 0x00;
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpsq_sa.l.w $ac1, %3, %4\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "+r"(ach), "+r"(acl), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 17) & 0x01;
-    if ((dsp != resultdsp) || (ach != resulth) || (acl != resultl)) {
-        printf("1 dpsq_sa.l.w wrong\n");
-
-        return -1;
-    }
-
-    ach = 0x54321123;
-    acl = 5;
-    rs = 0x80000000;
-    rt = 0x80000000;
-
-    resulth = 0xffffffffd4321123;
-    resultl = 0x06;
-    resultdsp = 0x01;
-
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpsq_sa.l.w $ac1, %3, %4\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "+r"(ach), "+r"(acl), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 17) & 0x01;
-    if ((dsp != resultdsp) || (ach != resulth) || (acl != resultl)) {
-        printf("2 dpsq_sa.l.w wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dpsu_h_obl.c b/tests/tcg/mips/mips64-dsp/dpsu_h_obl.c
deleted file mode 100644
index c0a8f4d..0000000
--- a/tests/tcg/mips/mips64-dsp/dpsu_h_obl.c
+++ /dev/null
@@ -1,32 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rs, rt;
-    long long ach = 5, acl = 5;
-    long long resulth, resultl;
-
-    rs      = 0x88886666BC0123AD;
-    rt      = 0x9999888801643721;
-
-    resulth = 0x04;
-    resultl = 0xFFFFFFFFFFFEF115;
-
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpsu.h.obl $ac1, %2, %3\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         : "+r"(ach), "+r"(acl)
-         : "r"(rs), "r"(rt)
-        );
-
-    if ((ach != resulth) || (acl != resultl)) {
-        printf("dpsu.h.obl wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dpsu_h_obr.c b/tests/tcg/mips/mips64-dsp/dpsu_h_obr.c
deleted file mode 100644
index aa0d47a..0000000
--- a/tests/tcg/mips/mips64-dsp/dpsu_h_obr.c
+++ /dev/null
@@ -1,32 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rs, rt;
-    long long ach = 5, acl = 5;
-    long long resulth, resultl;
-
-    rs      = 0x7878878888886666;
-    rt      = 0x9865454399998888;
-
-    resulth = 0x04;
-    resultl = 0xFFFFFFFFFFFeF115;
-
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpsu.h.obr $ac1, %2, %3\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         : "+r"(ach), "+r"(acl)
-         : "r"(rs), "r"(rt)
-        );
-
-    if ((ach != resulth) || (acl != resultl)) {
-        printf("dpsu.h.qbr wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dpsu_h_qbl.c b/tests/tcg/mips/mips64-dsp/dpsu_h_qbl.c
deleted file mode 100644
index da6dbb6..0000000
--- a/tests/tcg/mips/mips64-dsp/dpsu_h_qbl.c
+++ /dev/null
@@ -1,29 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rs, rt;
-    long long ach = 5, acl = 5;
-    long long resulth, resultl;
-
-    rs      = 0xBC0123AD;
-    rt      = 0x01643721;
-    resulth = 0x04;
-    resultl = 0xFFFFFFFFFFFFFEE5;
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpsu.h.qbl $ac1, %2, %3\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         : "+r"(ach), "+r"(acl)
-         : "r"(rs), "r"(rt)
-        );
-    if ((ach != resulth) || (acl != resultl)) {
-        printf("dpsu.h.qbl wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dpsu_h_qbr.c b/tests/tcg/mips/mips64-dsp/dpsu_h_qbr.c
deleted file mode 100644
index bf00b70..0000000
--- a/tests/tcg/mips/mips64-dsp/dpsu_h_qbr.c
+++ /dev/null
@@ -1,29 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rs, rt;
-    long long ach = 5, acl = 5;
-    long long resulth, resultl;
-
-    rs      = 0xBC0123AD;
-    rt      = 0x01643721;
-    resulth = 0x04;
-    resultl = 0xFFFFFFFFFFFFE233;
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpsu.h.qbr $ac1, %2, %3\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         : "+r"(ach), "+r"(acl)
-         : "r"(rs), "r"(rt)
-        );
-    if ((ach != resulth) || (acl != resultl)) {
-        printf("dpsu.h.qbr wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dshilo.c b/tests/tcg/mips/mips64-dsp/dshilo.c
deleted file mode 100644
index f50584b..0000000
--- a/tests/tcg/mips/mips64-dsp/dshilo.c
+++ /dev/null
@@ -1,52 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long achi, acli;
-    long long acho, aclo;
-    long long reshi, reslo;
-
-    achi = 0x87654321;
-    acli = 0x12345678;
-
-    reshi = 0xfffffffff8765432;
-    reslo = 0x1234567;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "dshilo $ac1, 0x4\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli)
-        );
-
-    if ((acho != reshi) || (aclo != reslo)) {
-        printf("1 dshilo error\n");
-        return -1;
-    }
-
-    achi = 0x87654321;
-    acli = 0x12345678;
-
-    reshi = 0x1234567;
-    reslo = 0x00;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "dshilo $ac1, -60\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli)
-        );
-
-    if ((acho != reshi) || (aclo != reslo)) {
-        printf("2 dshilo error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/dshilov.c b/tests/tcg/mips/mips64-dsp/dshilov.c
deleted file mode 100644
index 792bd23..0000000
--- a/tests/tcg/mips/mips64-dsp/dshilov.c
+++ /dev/null
@@ -1,54 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long achi, acli, rs;
-    long long acho, aclo;
-    long long reshi, reslo;
-
-    achi = 0x87654321;
-    acli = 0x12345678;
-    rs = 0x4;
-
-    reshi = 0xfffffffff8765432;
-    reslo = 0x1234567;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "dshilov $ac1, %4\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs)
-        );
-
-    if ((acho != reshi) || (aclo != reslo)) {
-        printf("dshilov error\n");
-        return -1;
-    }
-
-    rs = 0x44;
-    achi = 0x87654321;
-    acli = 0x12345678;
-
-    reshi = 0x1234567;
-    reslo = 0x00;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "dshilov $ac1, %4\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs)
-        );
-
-    if ((acho != reshi) || (aclo != reslo)) {
-        printf("dshilov error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/extp.c b/tests/tcg/mips/mips64-dsp/extp.c
deleted file mode 100644
index c72f54b..0000000
--- a/tests/tcg/mips/mips64-dsp/extp.c
+++ /dev/null
@@ -1,50 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, ach, acl, dsp;
-    long long result;
-
-    ach = 0x05;
-    acl = 0xB4CB;
-    dsp = 0x07;
-    result = 0x000C;
-
-    __asm
-        ("wrdsp %1, 0x01\n\t"
-         "mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extp %0, $ac1, 0x03\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 14) & 0x01;
-    if ((dsp != 0) || (result != rt)) {
-        printf("extp wrong\n");
-
-        return -1;
-    }
-
-    ach = 0x05;
-    acl = 0xB4CB;
-    dsp = 0x01;
-
-    __asm
-        ("wrdsp %1, 0x01\n\t"
-         "mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extp %0, $ac1, 0x03\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 14) & 0x01;
-    if (dsp != 1) {
-        printf("extp wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/extpdp.c b/tests/tcg/mips/mips64-dsp/extpdp.c
deleted file mode 100644
index f430193..0000000
--- a/tests/tcg/mips/mips64-dsp/extpdp.c
+++ /dev/null
@@ -1,51 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, ach, acl, dsp, pos, efi;
-    long long result;
-
-    ach = 0x05;
-    acl = 0xB4CB;
-    dsp = 0x07;
-    result = 0x000C;
-
-    __asm
-        ("wrdsp %1, 0x01\n\t"
-         "mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extpdp %0, $ac1, 0x03\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(ach), "r"(acl)
-        );
-    pos =  dsp & 0x3F;
-    efi = (dsp >> 14) & 0x01;
-    if ((pos != 3) || (efi != 0) || (result != rt)) {
-        printf("extpdp wrong\n");
-
-        return -1;
-    }
-
-    ach = 0x05;
-    acl = 0xB4CB;
-    dsp = 0x01;
-
-    __asm
-        ("wrdsp %1, 0x01\n\t"
-         "mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extpdp %0, $ac1, 0x03\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(ach), "r"(acl)
-        );
-    efi = (dsp >> 14) & 0x01;
-    if (efi != 1) {
-        printf("extpdp wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/extpdpv.c b/tests/tcg/mips/mips64-dsp/extpdpv.c
deleted file mode 100644
index ba57426..0000000
--- a/tests/tcg/mips/mips64-dsp/extpdpv.c
+++ /dev/null
@@ -1,52 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, rs, ach, acl, dsp, pos, efi;
-    long long result;
-
-    ach = 0x05;
-    acl = 0xB4CB;
-    dsp = 0x07;
-    rs  = 0x03;
-    result = 0x000C;
-
-    __asm
-        ("wrdsp %1, 0x01\n\t"
-         "mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extpdpv %0, $ac1, %4\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(ach), "r"(acl), "r"(rs)
-        );
-    pos =  dsp & 0x3F;
-    efi = (dsp >> 14) & 0x01;
-    if ((pos != 3) || (efi != 0) || (result != rt)) {
-        printf("extpdpv wrong\n");
-
-        return -1;
-    }
-
-    ach = 0x05;
-    acl = 0xB4CB;
-    dsp = 0x01;
-
-    __asm
-        ("wrdsp %1, 0x01\n\t"
-         "mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extpdpv %0, $ac1, %4\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(ach), "r"(acl), "r"(rs)
-        );
-    efi = (dsp >> 14) & 0x01;
-    if (efi != 1) {
-        printf("extpdpv wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/extpv.c b/tests/tcg/mips/mips64-dsp/extpv.c
deleted file mode 100644
index 158472b..0000000
--- a/tests/tcg/mips/mips64-dsp/extpv.c
+++ /dev/null
@@ -1,51 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, ac, ach, acl, dsp;
-    long long result;
-
-    ach = 0x05;
-    acl = 0xB4CB;
-    dsp = 0x07;
-    ac  = 0x03;
-    result = 0x000C;
-
-    __asm
-        ("wrdsp %1, 0x01\n\t"
-         "mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extpv %0, $ac1, %4\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(ach), "r"(acl), "r"(ac)
-        );
-    dsp = (dsp >> 14) & 0x01;
-    if ((dsp != 0) || (result != rt)) {
-        printf("extpv wrong\n");
-
-        return -1;
-    }
-
-    ach = 0x05;
-    acl = 0xB4CB;
-    dsp = 0x01;
-
-    __asm
-        ("wrdsp %1, 0x01\n\t"
-         "mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extpv %0, $ac1, %4\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(ach), "r"(acl), "r"(ac)
-        );
-    dsp = (dsp >> 14) & 0x01;
-    if (dsp != 1) {
-        printf("extpv wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/extr_r_w.c b/tests/tcg/mips/mips64-dsp/extr_r_w.c
deleted file mode 100644
index 94572ad..0000000
--- a/tests/tcg/mips/mips64-dsp/extr_r_w.c
+++ /dev/null
@@ -1,53 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, ach, acl, dsp;
-    long long result;
-
-    ach = 0x05;
-    acl = 0xB4CB;
-    result = 0xFFFFFFFFA0001699;
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extr_r.w %0, $ac1, 0x03\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    if ((dsp != 1) || (result != rt)) {
-        printf("1 extr_r.w wrong\n");
-
-        return -1;
-    }
-
-    /* Clear dspcontrol */
-    dsp = 0;
-    __asm
-        ("wrdsp %0\n\t"
-         :
-         : "r"(dsp)
-        );
-
-    ach = 0x01;
-    acl = 0xB4CB;
-    result = 0x10000B4D;
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extr_r.w %0, $ac1, 0x04\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    if ((dsp != 0) || (result != rt)) {
-        printf("2 extr_r.w wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/extr_rs_w.c b/tests/tcg/mips/mips64-dsp/extr_rs_w.c
deleted file mode 100644
index 73551f9..0000000
--- a/tests/tcg/mips/mips64-dsp/extr_rs_w.c
+++ /dev/null
@@ -1,53 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, ach, acl, dsp;
-    long long result;
-
-    ach = 0x05;
-    acl = 0xB4CB;
-    result = 0x7FFFFFFF;
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extr_rs.w %0, $ac1, 0x03\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    if ((dsp != 1) || (result != rt)) {
-        printf("1 extr_rs.w wrong\n");
-
-        return -1;
-    }
-
-    /* Clear dspcontrol */
-    dsp = 0;
-    __asm
-        ("wrdsp %0\n\t"
-         :
-         : "r"(dsp)
-        );
-
-    ach = 0x01;
-    acl = 0xB4CB;
-    result = 0x10000B4D;
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extr_rs.w %0, $ac1, 0x04\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    if ((dsp != 0) || (result != rt)) {
-        printf("2 extr_rs.w wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/extr_s_h.c b/tests/tcg/mips/mips64-dsp/extr_s_h.c
deleted file mode 100644
index de10cb5..0000000
--- a/tests/tcg/mips/mips64-dsp/extr_s_h.c
+++ /dev/null
@@ -1,71 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, ach, acl, dsp;
-    long long result;
-
-    ach = 0x05;
-    acl = 0xB4CB;
-    result = 0x00007FFF;
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extr_s.h %0, $ac1, 0x03\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    if ((dsp != 1) || (result != rt)) {
-        printf("extr_s.h wrong\n");
-
-        return -1;
-    }
-
-    ach = 0xffffffff;
-    acl = 0x12344321;
-    result = 0xffffffffFFFF8000;
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extr_s.h %0, $ac1, 0x08\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    if ((dsp != 1) || (result != rt)) {
-        printf("extr_s.h wrong\n");
-
-        return -1;
-    }
-
-    /* Clear dsp */
-    dsp = 0;
-    __asm
-        ("wrdsp %0\n\t"
-         :
-         : "r"(dsp)
-        );
-
-    ach = 0x00;
-    acl = 0x4321;
-    result = 0x432;
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extr_s.h %0, $ac1, 0x04\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    if ((dsp != 0) || (result != rt)) {
-        printf("extr_s.h wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/extr_w.c b/tests/tcg/mips/mips64-dsp/extr_w.c
deleted file mode 100644
index bd69576..0000000
--- a/tests/tcg/mips/mips64-dsp/extr_w.c
+++ /dev/null
@@ -1,53 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, ach, acl, dsp;
-    long long result;
-
-    ach = 0x05;
-    acl = 0xB4CB;
-    result = 0xFFFFFFFFA0001699;
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extr.w %0, $ac1, 0x03\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    if ((dsp != 1) || (result != rt)) {
-        printf("extr.w wrong\n");
-
-        return -1;
-    }
-
-    /* Clear dspcontrol */
-    dsp = 0;
-    __asm
-        ("wrdsp %0\n\t"
-         :
-         : "r"(dsp)
-        );
-
-    ach = 0x01;
-    acl = 0xB4CB;
-    result = 0x10000B4C;
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "extr.w %0, $ac1, 0x04\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "=r"(dsp)
-         : "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    if ((dsp != 0) || (result != rt)) {
-        printf("extr.w wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/extrv_r_w.c b/tests/tcg/mips/mips64-dsp/extrv_r_w.c
deleted file mode 100644
index 8379729..0000000
--- a/tests/tcg/mips/mips64-dsp/extrv_r_w.c
+++ /dev/null
@@ -1,59 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, rs, ach, acl, dsp;
-    long long result;
-
-    ach = 0x05;
-    acl = 0xB4CB;
-    dsp = 0x07;
-    rs  = 0x03;
-    result = 0xFFFFFFFFA0001699;
-
-    __asm
-        ("wrdsp %1, 0x01\n\t"
-         "mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "extrv_r.w %0, $ac1, %2\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(rs), "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    if ((dsp != 1) || (result != rt)) {
-        printf("extrv_r.w wrong\n");
-
-        return -1;
-    }
-
-    /* Clear dspcontrol */
-    dsp = 0;
-    __asm
-        ("wrdsp %0\n\t"
-         :
-         : "r"(dsp)
-        );
-
-    rs = 4;
-    ach = 0x01;
-    acl = 0xB4CB;
-    result = 0x10000B4D;
-    __asm
-        ("wrdsp %1, 0x01\n\t"
-         "mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "extrv_r.w %0, $ac1, %2\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(rs), "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    if ((dsp != 0) || (result != rt)) {
-        printf("extrv_r.w wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/extrv_rs_w.c b/tests/tcg/mips/mips64-dsp/extrv_rs_w.c
deleted file mode 100644
index 8707cd11..0000000
--- a/tests/tcg/mips/mips64-dsp/extrv_rs_w.c
+++ /dev/null
@@ -1,59 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, rs, ach, acl, dsp;
-    long long result;
-
-    ach = 0x05;
-    acl = 0xB4CB;
-    dsp = 0x07;
-    rs  = 0x03;
-    result = 0x7FFFFFFF;
-
-    __asm
-        ("wrdsp %1, 0x01\n\t"
-         "mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "extrv_rs.w %0, $ac1, %2\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(rs), "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    if ((dsp != 1) || (result != rt)) {
-        printf("1 extrv_rs.w wrong\n");
-
-        return -1;
-    }
-
-    /* Clear dspcontrol */
-    dsp = 0;
-    __asm
-        ("wrdsp %0\n\t"
-         :
-         : "r"(dsp)
-        );
-
-    rs = 4;
-    ach = 0x01;
-    acl = 0xB4CB;
-    result = 0x10000B4D;
-    __asm
-        ("wrdsp %1, 0x01\n\t"
-         "mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "extrv_rs.w %0, $ac1, %2\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(rs), "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    if ((dsp != 0) || (result != rt)) {
-        printf("2 extrv_rs.w wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/extrv_s_h.c b/tests/tcg/mips/mips64-dsp/extrv_s_h.c
deleted file mode 100644
index b6dcaeb..0000000
--- a/tests/tcg/mips/mips64-dsp/extrv_s_h.c
+++ /dev/null
@@ -1,79 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, rs, ach, acl, dsp;
-    long long result;
-
-    ach = 0x05;
-    acl = 0xB4CB;
-    dsp = 0x07;
-    rs  = 0x03;
-    result = 0x00007FFF;
-
-    __asm
-        ("wrdsp %1, 0x01\n\t"
-         "mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "extrv_s.h %0, $ac1, %2\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(rs), "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    if ((dsp != 1) || (result != rt)) {
-        printf("extrv_s.h wrong\n");
-
-        return -1;
-    }
-
-    rs = 0x08;
-    ach = 0xffffffff;
-    acl = 0x12344321;
-    result = 0xffffffffFFFF8000;
-    __asm
-        ("wrdsp %1, 0x01\n\t"
-         "mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "extrv_s.h %0, $ac1, %2\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(rs), "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    if ((dsp != 1) || (result != rt)) {
-        printf("extrv_s.h wrong\n");
-
-        return -1;
-    }
-
-    /* Clear dsp */
-    dsp = 0;
-    __asm
-        ("wrdsp %0\n\t"
-         :
-         : "r"(dsp)
-        );
-
-    rs = 0x04;
-    ach = 0x00;
-    acl = 0x4321;
-    result = 0x432;
-    __asm
-        ("wrdsp %1, 0x01\n\t"
-         "mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "extrv_s.h %0, $ac1, %2\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(rs), "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    if ((dsp != 0) || (result != rt)) {
-        printf("extrv_s.h wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/extrv_w.c b/tests/tcg/mips/mips64-dsp/extrv_w.c
deleted file mode 100644
index 8adffb3..0000000
--- a/tests/tcg/mips/mips64-dsp/extrv_w.c
+++ /dev/null
@@ -1,59 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, rs, ach, acl, dsp;
-    long long result;
-
-    ach = 0x05;
-    acl = 0xB4CB;
-    dsp = 0x07;
-    rs  = 0x03;
-    result = 0xFFFFFFFFA0001699;
-
-    __asm
-        ("wrdsp %1, 0x01\n\t"
-         "mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "extrv.w %0, $ac1, %2\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(rs), "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    if ((dsp != 1) || (result != rt)) {
-        printf("extrv.w wrong\n");
-
-        return -1;
-    }
-
-    /* Clear dspcontrol */
-    dsp = 0;
-    __asm
-        ("wrdsp %0\n\t"
-         :
-         : "r"(dsp)
-        );
-
-    rs = 4;
-    ach = 0x01;
-    acl = 0xB4CB;
-    result = 0x10000B4C;
-    __asm
-        ("wrdsp %1, 0x01\n\t"
-         "mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "extrv.w %0, $ac1, %2\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rt), "+r"(dsp)
-         : "r"(rs), "r"(ach), "r"(acl)
-        );
-    dsp = (dsp >> 23) & 0x01;
-    if ((dsp != 0) || (result != rt)) {
-        printf("extrv.w wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/insv.c b/tests/tcg/mips/mips64-dsp/insv.c
deleted file mode 100644
index fc5696f..0000000
--- a/tests/tcg/mips/mips64-dsp/insv.c
+++ /dev/null
@@ -1,26 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, rs, dsp;
-    long long result;
-
-    /* msb = 10, lsb = 5 */
-    dsp    = 0x305;
-    rt     = 0x12345678;
-    rs     = 0xffffffff87654321;
-    result = 0x12345338;
-    __asm
-        ("wrdsp %2, 0x03\n\t"
-         "insv  %0, %1\n\t"
-         : "+r"(rt)
-         : "r"(rs), "r"(dsp)
-        );
-    if (rt != result) {
-        printf("insv wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/lbux.c b/tests/tcg/mips/mips64-dsp/lbux.c
deleted file mode 100644
index dbdc87b..0000000
--- a/tests/tcg/mips/mips64-dsp/lbux.c
+++ /dev/null
@@ -1,27 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long value, rd;
-    long long *p;
-    unsigned long long addr, index;
-    long long result;
-
-    value  = 0xBCDEF389;
-    p = &value;
-    addr = (unsigned long long)p;
-    index  = 0;
-    result = value & 0xFF;
-    __asm
-        ("lbux %0, %1(%2)\n\t"
-         : "=r"(rd)
-         : "r"(index), "r"(addr)
-        );
-    if (rd != result) {
-        printf("lbux wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/ldx.c b/tests/tcg/mips/mips64-dsp/ldx.c
deleted file mode 100644
index 787d9f0..0000000
--- a/tests/tcg/mips/mips64-dsp/ldx.c
+++ /dev/null
@@ -1,27 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long value, rd;
-    long long *p;
-    unsigned long long addr, index;
-    long long result;
-
-    value  = 0xBCDEF389;
-    p = &value;
-    addr = (unsigned long long)p;
-    index  = 0;
-    result = 0xBCDEF389;
-    __asm
-        ("ldx %0, %1(%2)\n\t"
-         : "=r"(rd)
-         : "r"(index), "r"(addr)
-        );
-    if (rd != result) {
-        printf("lwx wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/lhx.c b/tests/tcg/mips/mips64-dsp/lhx.c
deleted file mode 100644
index 2020e56..0000000
--- a/tests/tcg/mips/mips64-dsp/lhx.c
+++ /dev/null
@@ -1,27 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long value, rd;
-    long long *p;
-    unsigned long long addr, index;
-    long long result;
-
-    value  = 0xBCDEF389;
-    p = &value;
-    addr = (unsigned long long)p;
-    index  = 0;
-    result = 0xFFFFFFFFFFFFF389;
-    __asm
-        ("lhx %0, %1(%2)\n\t"
-         : "=r"(rd)
-         : "r"(index), "r"(addr)
-        );
-    if (rd != result) {
-        printf("lhx wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/lwx.c b/tests/tcg/mips/mips64-dsp/lwx.c
deleted file mode 100644
index 6a81414..0000000
--- a/tests/tcg/mips/mips64-dsp/lwx.c
+++ /dev/null
@@ -1,27 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long value, rd;
-    long long *p;
-    unsigned long long addr, index;
-    long long result;
-
-    value  = 0xBCDEF389;
-    p = &value;
-    addr = (unsigned long long)p;
-    index  = 0;
-    result = 0xFFFFFFFFBCDEF389;
-    __asm
-        ("lwx %0, %1(%2)\n\t"
-         : "=r"(rd)
-         : "r"(index), "r"(addr)
-        );
-    if (rd != result) {
-        printf("lwx wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/madd.c b/tests/tcg/mips/mips64-dsp/madd.c
deleted file mode 100644
index de6e44f..0000000
--- a/tests/tcg/mips/mips64-dsp/madd.c
+++ /dev/null
@@ -1,33 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, rs;
-    long long achi, acli;
-    long long acho, aclo;
-    long long resulth, resultl;
-
-    achi = 0x05;
-    acli = 0xB4CB;
-    rs  = 0x01;
-    rt  = 0x01;
-    resulth = 0x05;
-    resultl = 0xB4CC;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "madd $ac1, %4, %5\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-    if ((resulth != acho) || (resultl != aclo)) {
-        printf("madd wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/maddu.c b/tests/tcg/mips/mips64-dsp/maddu.c
deleted file mode 100644
index e9f426a..0000000
--- a/tests/tcg/mips/mips64-dsp/maddu.c
+++ /dev/null
@@ -1,33 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, rs;
-    long long achi, acli;
-    long long acho, aclo;
-    long long resulth, resultl;
-
-    achi = 0x05;
-    acli = 0xB4CB;
-    rs  = 0x01;
-    rt  = 0x01;
-    resulth = 0x05;
-    resultl = 0xB4CC;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "madd $ac1, %4, %5\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-    if ((resulth != acho) || (resultl != aclo)) {
-        printf("maddu wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/maq_s_l_pwl.c b/tests/tcg/mips/mips64-dsp/maq_s_l_pwl.c
deleted file mode 100644
index c196b43..0000000
--- a/tests/tcg/mips/mips64-dsp/maq_s_l_pwl.c
+++ /dev/null
@@ -1,56 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, rs, dsp;
-    long long achi, acli;
-    long long acho, aclo;
-    long long resulth, resultl;
-
-    achi = 0x05;
-    acli = 0xB4CB;
-    rs  = 0x98765432FF060000;
-    rt  = 0xfdeca987CB000000;
-    resulth = 0x05;
-    resultl = 0x18278587;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "maq_s.l.pwl $ac1, %4, %5\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-    if ((resulth != acho) || (resultl != aclo)) {
-        printf("maq_s_l.w.pwl wrong 1\n");
-
-        return -1;
-    }
-
-    achi = 0x05;
-    acli = 0xB4CB;
-    rs  = 0x80000000FF060000;
-    rt  = 0x80000000CB000000;
-    resulth = 0x05;
-    resultl = 0xb4ca;
-
-    __asm
-        ("mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "maq_s.l.pwl $ac1, %5, %6\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "=r"(acho), "=r"(aclo), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 17) & 0x1;
-    if ((dsp != 0x1) || (resulth != acho) || (resultl != aclo)) {
-        printf("maq_s_l.w.pwl wrong 2\n");
-
-        return -1;
-    }
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/maq_s_l_pwr.c b/tests/tcg/mips/mips64-dsp/maq_s_l_pwr.c
deleted file mode 100644
index e2af69f..0000000
--- a/tests/tcg/mips/mips64-dsp/maq_s_l_pwr.c
+++ /dev/null
@@ -1,56 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, rs, dsp;
-    long long achi, acli;
-    long long acho, aclo;
-    long long resulth, resultl;
-
-    achi = 0x05;
-    acli = 0xB4CB;
-    rs  = 0x87898765432;
-    rt  = 0x7878fdeca987;
-    resulth = 0x05;
-    resultl = 0x18278587;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "maq_s.l.pwr $ac1, %4, %5\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-    if ((resulth != acho) || (resultl != aclo)) {
-        printf("maq_s.w.pwr wrong\n");
-
-        return -1;
-    }
-
-    achi = 0x05;
-    acli = 0xB4CB;
-    rs  = 0x89899980000000;
-    rt  = 0x88780000000;
-    resulth = 0x05;
-    resultl = 0xb4ca;
-
-    __asm
-        ("mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "maq_s.l.pwr $ac1, %5, %6\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "=r"(acho), "=r"(aclo), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 17) & 0x1;
-    if ((dsp != 0x1) || (resulth != acho) || (resultl != aclo)) {
-        printf("maq_s.w.pwr wrong\n");
-
-        return -1;
-    }
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/maq_s_w_phl.c b/tests/tcg/mips/mips64-dsp/maq_s_w_phl.c
deleted file mode 100644
index 7dba874..0000000
--- a/tests/tcg/mips/mips64-dsp/maq_s_w_phl.c
+++ /dev/null
@@ -1,60 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, rs;
-    long long achi, acli;
-    long long dsp;
-    long long acho, aclo;
-    long long resulth, resultl;
-    long long resdsp;
-
-    achi = 0x05;
-    acli = 0xB4CB;
-    rs  = 0xFF060000;
-    rt  = 0xCB000000;
-    resulth = 0x04;
-    resultl = 0xffffffff947438CB;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "maq_s.w.phl $ac1, %4, %5\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-    if ((resulth != acho) || (resultl != aclo)) {
-        printf("1 maq_s.w.phl error\n");
-
-        return -1;
-    }
-
-    achi = 0x06;
-    acli = 0xB4CB;
-    rs  = 0x80000000;
-    rt  = 0x80000000;
-    resulth = 0x6;
-    resultl = 0xffffffff8000b4ca;
-    resdsp = 1;
-
-    __asm
-        ("mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "maq_s.w.phl $ac1, %5, %6\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "=r"(acho), "=r"(aclo), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-    if ((resulth != acho) || (resultl != aclo) ||
-        (((dsp >> 17) & 0x01) != resdsp)) {
-        printf("2 maq_s.w.phl error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/maq_s_w_phr.c b/tests/tcg/mips/mips64-dsp/maq_s_w_phr.c
deleted file mode 100644
index 138ee2a..0000000
--- a/tests/tcg/mips/mips64-dsp/maq_s_w_phr.c
+++ /dev/null
@@ -1,60 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, rs;
-    long long achi, acli;
-    long long dsp;
-    long long acho, aclo;
-    long long resulth, resultl;
-    long long resdsp;
-
-    achi = 0x05;
-    acli = 0xB4CB;
-    rs  = 0xFF06;
-    rt  = 0xCB00;
-    resulth = 0x04;
-    resultl = 0xffffffff947438CB;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "maq_s.w.phr $ac1, %4, %5\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-    if ((resulth != acho) || (resultl != aclo)) {
-        printf("1 maq_s.w.phr error\n");
-
-        return -1;
-    }
-
-    achi = 0x06;
-    acli = 0xB4CB;
-    rs  = 0x8000;
-    rt  = 0x8000;
-    resulth = 0x6;
-    resultl = 0xffffffff8000b4ca;
-    resdsp = 1;
-
-    __asm
-        ("mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "maq_s.w.phr $ac1, %5, %6\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "=r"(acho), "=r"(aclo), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-    if ((resulth != acho) || (resultl != aclo) ||
-        (((dsp >> 17) & 0x01) != resdsp)) {
-        printf("2 maq_s.w.phr error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/maq_s_w_qhll.c b/tests/tcg/mips/mips64-dsp/maq_s_w_qhll.c
deleted file mode 100644
index 234a0af..0000000
--- a/tests/tcg/mips/mips64-dsp/maq_s_w_qhll.c
+++ /dev/null
@@ -1,62 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, rs, dsp;
-    long long achi, acli;
-    long long acho, aclo;
-    long long resulth, resultl;
-
-    achi = 0x05;
-    acli = 0x05;
-
-    rs  = 0x1234888899990000;
-    rt  = 0x9876888899990000;
-
-    resulth = 0x05;
-    resultl = 0x15ae87f5;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "maq_s.w.qhll $ac1, %4, %5\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-
-    if ((resulth != acho) || (resultl != aclo)) {
-        printf("maq_s.w.qhll wrong\n");
-
-        return -1;
-    }
-
-
-    achi = 0x04;
-    acli = 0x06;
-    rs  = 0x8000888899990000;
-    rt  = 0x8000888899990000;
-
-    resulth = 0x04;
-    resultl = 0xffffffff80000005;
-
-    __asm
-        ("mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "maq_s.w.qhll $ac1, %5, %6\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "=r"(acho), "=r"(aclo), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-
-    dsp = (dsp >> 17) & 0x1;
-    if ((dsp != 0x1) || (resulth != acho) || (resultl != aclo)) {
-        printf("maq_s.w.qhll wrong\n");
-
-        return -1;
-    }
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/maq_s_w_qhlr.c b/tests/tcg/mips/mips64-dsp/maq_s_w_qhlr.c
deleted file mode 100644
index 8768cba..0000000
--- a/tests/tcg/mips/mips64-dsp/maq_s_w_qhlr.c
+++ /dev/null
@@ -1,62 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, rs, dsp;
-    long long achi, acli;
-    long long acho, aclo;
-    long long resulth, resultl;
-
-    achi = 0x05;
-    acli = 0x05;
-
-    rs  = 0x1234123412340000;
-    rt  = 0x9876987698760000;
-
-    resulth = 0x05;
-    resultl = 0x15ae87f5;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "maq_s.w.qhlr $ac1, %4, %5\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-
-    if ((resulth != acho) || (resultl != aclo)) {
-        printf("1 maq_s.w.qhlr wrong\n");
-
-        return -1;
-    }
-
-
-    achi = 0x04;
-    acli = 0x06;
-    rs  = 0x8000800080000000;
-    rt  = 0x8000800080000000;
-
-    resulth = 0x04;
-    resultl = 0xffffffff80000005;
-
-    __asm
-        ("mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "maq_s.w.qhlr $ac1, %5, %6\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "=r"(acho), "=r"(aclo), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-
-    dsp = (dsp >> 17) & 0x1;
-    if ((dsp != 0x1) || (resulth != acho) || (resultl != aclo)) {
-        printf("2 maq_s.w.qhlr wrong\n");
-
-        return -1;
-    }
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/maq_s_w_qhrl.c b/tests/tcg/mips/mips64-dsp/maq_s_w_qhrl.c
deleted file mode 100644
index 5006e2b..0000000
--- a/tests/tcg/mips/mips64-dsp/maq_s_w_qhrl.c
+++ /dev/null
@@ -1,63 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, rs, dsp;
-    long long achi, acli;
-    long long acho, aclo;
-    long long resulth, resultl;
-
-    achi = 0x05;
-    acli = 0x05;
-
-    rs  = 0x1234888812340000;
-    rt  = 0x9876888898760000;
-
-    resulth = 0x05;
-    resultl = 0x15ae87f5;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "maq_s.w.qhrl $ac1, %4, %5\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-
-    if ((resulth != acho) || (resultl != aclo)) {
-        printf("1 maq_s.w.qhrl wrong\n");
-
-        return -1;
-    }
-
-
-    achi = 0x04;
-    acli = 0x06;
-    rs  = 0x8888999980000000;
-    rt  = 0x8888999980000000;
-
-    resulth = 0x04;
-    resultl = 0xffffffff80000005;
-
-    __asm
-        ("mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "maq_s.w.qhrl $ac1, %5, %6\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "=r"(acho), "=r"(aclo), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-
-    dsp = (dsp >> 17) & 0x1;
-    if ((dsp != 0x1) || (resulth != acho) || (resultl != aclo)) {
-        printf("2 maq_s.w.qhrl wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/maq_s_w_qhrr.c b/tests/tcg/mips/mips64-dsp/maq_s_w_qhrr.c
deleted file mode 100644
index 1d213a5..0000000
--- a/tests/tcg/mips/mips64-dsp/maq_s_w_qhrr.c
+++ /dev/null
@@ -1,63 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, rs, dsp;
-    long long achi, acli;
-    long long acho, aclo;
-    long long resulth, resultl;
-
-    achi = 0x05;
-    acli = 0x05;
-
-    rs  = 0x1234888812341234;
-    rt  = 0x9876888898769876;
-
-    resulth = 0x05;
-    resultl = 0x15ae87f5;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "maq_s.w.qhrr $ac1, %4, %5\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-
-    if ((resulth != acho) || (resultl != aclo)) {
-        printf("1 maq_s.w.qhrr wrong\n");
-
-        return -1;
-    }
-
-
-    achi = 0x04;
-    acli = 0x06;
-    rs  = 0x8000888899998000;
-    rt  = 0x8000888899998000;
-
-    resulth = 0x04;
-    resultl = 0xffffffff80000005;
-
-    __asm
-        ("mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "maq_s.w.qhrr $ac1, %5, %6\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "=r"(acho), "=r"(aclo), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-
-    dsp = (dsp >> 17) & 0x1;
-    if ((dsp != 0x1) || (resulth != acho) || (resultl != aclo)) {
-        printf("2 maq_s.w.qhrr wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/maq_sa_w_phl.c b/tests/tcg/mips/mips64-dsp/maq_sa_w_phl.c
deleted file mode 100644
index 5530ffb..0000000
--- a/tests/tcg/mips/mips64-dsp/maq_sa_w_phl.c
+++ /dev/null
@@ -1,60 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, rs;
-    long long achi, acli;
-    long long dsp;
-    long long acho, aclo;
-    long long resulth, resultl;
-    long long resdsp;
-
-    achi = 0x05;
-    acli = 0xB4CB;
-    rs = 0xFF060000;
-    rt = 0xCB000000;
-    resulth = 0xffffffffffffffff;
-    resultl = 0xffffffff947438cb;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "maq_sa.w.phl $ac1, %4, %5\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-    if ((resulth != acho) || (resultl != aclo)) {
-        printf("1 maq_sa.w.phl error\n");
-
-        return -1;
-    }
-
-    achi = 0x06;
-    acli = 0xB4CB;
-    rs  = 0x80000000;
-    rt  = 0x80000000;
-    resulth = 0x00;
-    resultl = 0x7fffffff;
-    resdsp = 0x01;
-
-    __asm
-        ("mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "maq_sa.w.phl $ac1, %5, %6\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "=r"(acho), "=r"(aclo), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-    if ((resulth != acho) || (resultl != aclo) ||
-        (((dsp >> 17) & 0x01) != 0x01)) {
-        printf("2 maq_sa.w.phl error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/maq_sa_w_phr.c b/tests/tcg/mips/mips64-dsp/maq_sa_w_phr.c
deleted file mode 100644
index b611cfa..0000000
--- a/tests/tcg/mips/mips64-dsp/maq_sa_w_phr.c
+++ /dev/null
@@ -1,60 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, rs;
-    long long achi, acli;
-    long long dsp;
-    long long acho, aclo;
-    long long resulth, resultl;
-    long long resdsp;
-
-    achi = 0x05;
-    acli = 0xB4CB;
-    rs = 0xFF06;
-    rt = 0xCB00;
-    resulth = 0xffffffffffffffff;
-    resultl = 0xffffffff947438cb;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "maq_sa.w.phr $ac1, %4, %5\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-    if ((resulth != acho) || (resultl != aclo)) {
-        printf("1 maq_sa.w.phr error\n");
-
-        return -1;
-    }
-
-    achi = 0x06;
-    acli = 0xB4CB;
-    rs  = 0x8000;
-    rt  = 0x8000;
-    resulth = 0x00;
-    resultl = 0x7fffffff;
-    resdsp = 0x01;
-
-    __asm
-        ("mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "maq_sa.w.phr $ac1, %5, %6\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "=r"(acho), "=r"(aclo), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-    if ((resulth != acho) || (resultl != aclo) ||
-        (((dsp >> 17) & 0x01) != 0x01)) {
-        printf("2 maq_sa.w.phr error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/maq_sa_w_qhll.c b/tests/tcg/mips/mips64-dsp/maq_sa_w_qhll.c
deleted file mode 100644
index 136ff2d..0000000
--- a/tests/tcg/mips/mips64-dsp/maq_sa_w_qhll.c
+++ /dev/null
@@ -1,62 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, rs, dsp;
-    long long achi, acli;
-    long long acho, aclo;
-    long long resulth, resultl;
-
-    achi = 0x05;
-    acli = 0x05;
-
-    rs  = 0x1234888899990000;
-    rt  = 0x9876888899990000;
-
-    resulth = 0x00;
-    resultl = 0x15ae87f5;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "maq_sa.w.qhll $ac1, %4, %5\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-
-    if ((resulth != acho) || (resultl != aclo)) {
-        printf("1 maq_sa.w.qhll wrong\n");
-
-        return -1;
-    }
-
-
-    achi = 0x04;
-    acli = 0x06;
-    rs  = 0x8000888899990000;
-    rt  = 0x8000888899990000;
-
-    resulth = 0x00;
-    resultl = 0x7fffffff;
-
-    __asm
-        ("mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "maq_sa.w.qhll $ac1, %5, %6\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "=r"(acho), "=r"(aclo), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-
-    dsp = (dsp >> 17) & 0x1;
-    if ((dsp != 0x1) || (resulth != acho) || (resultl != aclo)) {
-        printf("2 maq_sa.w.qhll wrong\n");
-
-        return -1;
-    }
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/maq_sa_w_qhlr.c b/tests/tcg/mips/mips64-dsp/maq_sa_w_qhlr.c
deleted file mode 100644
index dd0ae1c..0000000
--- a/tests/tcg/mips/mips64-dsp/maq_sa_w_qhlr.c
+++ /dev/null
@@ -1,64 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, rs, dsp;
-    long long achi, acli;
-    long long acho, aclo;
-    long long resulth, resultl;
-
-    achi = 0x05;
-    acli = 0x05;
-
-    rs  = 0x1234123412340000;
-    rt  = 0x9876987699990000;
-
-    resulth = 0x0;
-    resultl = 0x15ae87f5;
-
-    __asm
-        ("mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "maq_sa.w.qhlr $ac1, %5, %6\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "=r"(acho), "=r"(aclo), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-
-    dsp = (dsp >> 17) & 0x1;
-    if ((dsp != 0x0) || (resulth != acho) || (resultl != aclo)) {
-        printf("maq_sa.w.qhlr wrong\n");
-
-        return -1;
-    }
-
-
-    achi = 0x04;
-    acli = 0x06;
-    rs  = 0x8000800099990000;
-    rt  = 0x8000800099990000;
-
-    resulth = 0x00;
-    resultl = 0x7fffffff;
-
-    __asm
-        ("mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "maq_sa.w.qhlr $ac1, %5, %6\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "=r"(acho), "=r"(aclo), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-
-    dsp = (dsp >> 17) & 0x1;
-    if ((dsp != 0x1) || (resulth != acho) || (resultl != aclo)) {
-        printf("maq_sa.w.qhlr wrong\n");
-
-        return -1;
-    }
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/maq_sa_w_qhrl.c b/tests/tcg/mips/mips64-dsp/maq_sa_w_qhrl.c
deleted file mode 100644
index a3de6f8..0000000
--- a/tests/tcg/mips/mips64-dsp/maq_sa_w_qhrl.c
+++ /dev/null
@@ -1,64 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, rs, dsp;
-    long long achi, acli;
-    long long acho, aclo;
-    long long resulth, resultl;
-
-    achi = 0x05;
-    acli = 0x05;
-
-    rs  = 0x1234123412340000;
-    rt  = 0x9876987698760000;
-
-    resulth = 0x0;
-    resultl = 0x15ae87f5;
-
-    __asm
-        ("mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "maq_sa.w.qhrl $ac1, %5, %6\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "=r"(acho), "=r"(aclo), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-
-    dsp = (dsp >> 17) & 0x1;
-    if ((dsp != 0x0) || (resulth != acho) || (resultl != aclo)) {
-        printf("1 maq_sa.w.qhrl wrong\n");
-
-        return -1;
-    }
-
-
-    achi = 0x04;
-    acli = 0x06;
-    rs  = 0x8000800080000000;
-    rt  = 0x8000800080000000;
-
-    resulth = 0x00;
-    resultl = 0x7fffffff;
-
-    __asm
-        ("mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "maq_sa.w.qhrl $ac1, %5, %6\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "=r"(acho), "=r"(aclo), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-
-    dsp = (dsp >> 17) & 0x1;
-    if ((dsp != 0x1) || (resulth != acho) || (resultl != aclo)) {
-        printf("2 maq_sa.w.qhrl wrong\n");
-
-        return -1;
-    }
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/maq_sa_w_qhrr.c b/tests/tcg/mips/mips64-dsp/maq_sa_w_qhrr.c
deleted file mode 100644
index f021737..0000000
--- a/tests/tcg/mips/mips64-dsp/maq_sa_w_qhrr.c
+++ /dev/null
@@ -1,64 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, rs, dsp;
-    long long achi, acli;
-    long long acho, aclo;
-    long long resulth, resultl;
-
-    achi = 0x05;
-    acli = 0x05;
-
-    rs  = 0x1234123412341234;
-    rt  = 0x9876987698769876;
-
-    resulth = 0x0;
-    resultl = 0x15ae87f5;
-
-    __asm
-        ("mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "maq_sa.w.qhrr $ac1, %5, %6\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "=r"(acho), "=r"(aclo), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-
-    dsp = (dsp >> 17) & 0x1;
-    if ((dsp != 0x0) || (resulth != acho) || (resultl != aclo)) {
-        printf("1 maq_sa.w.qhrr wrong\n");
-
-        return -1;
-    }
-
-
-    achi = 0x04;
-    acli = 0x06;
-    rs  = 0x8000800080008000;
-    rt  = 0x8000800080008000;
-
-    resulth = 0x00;
-    resultl = 0x7fffffff;
-
-    __asm
-        ("mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "maq_sa.w.qhrr $ac1, %5, %6\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "=r"(acho), "=r"(aclo), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-
-    dsp = (dsp >> 17) & 0x1;
-    if ((dsp != 0x1) || (resulth != acho) || (resultl != aclo)) {
-        printf("2 maq_sa.w.qhrr wrong\n");
-
-        return -1;
-    }
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/mfhi.c b/tests/tcg/mips/mips64-dsp/mfhi.c
deleted file mode 100644
index ee915f7..0000000
--- a/tests/tcg/mips/mips64-dsp/mfhi.c
+++ /dev/null
@@ -1,24 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long achi, acho;
-    long long result;
-
-    achi   = 0x004433;
-    result = 0x004433;
-
-    __asm
-        ("mthi %1, $ac1\n\t"
-         "mfhi %0, $ac1\n\t"
-         : "=r"(acho)
-         : "r"(achi)
-        );
-    if (result != acho) {
-        printf("mfhi wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/mflo.c b/tests/tcg/mips/mips64-dsp/mflo.c
deleted file mode 100644
index cdc646b..0000000
--- a/tests/tcg/mips/mips64-dsp/mflo.c
+++ /dev/null
@@ -1,24 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long acli, aclo;
-    long long result;
-
-    acli   = 0x004433;
-    result = 0x004433;
-
-    __asm
-        ("mtlo %1, $ac1\n\t"
-         "mflo %0, $ac1\n\t"
-         : "=r"(aclo)
-         : "r"(acli)
-        );
-    if (result != aclo) {
-        printf("mflo wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/modsub.c b/tests/tcg/mips/mips64-dsp/modsub.c
deleted file mode 100644
index 2c91cb4..0000000
--- a/tests/tcg/mips/mips64-dsp/modsub.c
+++ /dev/null
@@ -1,37 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long result;
-
-    rs     = 0xFFFFFFFF;
-    rt     = 0x000000FF;
-    result = 0xFFFFFF00;
-    __asm
-        ("modsub %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    if (result != rd) {
-        printf("modsub wrong\n");
-
-        return -1;
-    }
-
-    rs     = 0x00000000;
-    rt     = 0x00CD1FFF;
-    result = 0x0000CD1F;
-    __asm
-        ("modsub %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    if (result != rd) {
-        printf("modsub wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/msub.c b/tests/tcg/mips/mips64-dsp/msub.c
deleted file mode 100644
index 75066b5..0000000
--- a/tests/tcg/mips/mips64-dsp/msub.c
+++ /dev/null
@@ -1,32 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long achi, acli, rs, rt;
-    long long acho, aclo;
-    long long resulth, resultl;
-
-    rs      = 0x00BBAACC;
-    rt      = 0x0B1C3D2F;
-    achi    = 0x00004433;
-    acli    = 0xFFCC0011;
-    resulth = 0xFFFFFFFFFFF81F29;
-    resultl = 0xFFFFFFFFB355089D;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "msub $ac1, %4, %5\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-    if ((acho != resulth) || (aclo != resultl)) {
-        printf("msub wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/msubu.c b/tests/tcg/mips/mips64-dsp/msubu.c
deleted file mode 100644
index 55f8ae0..0000000
--- a/tests/tcg/mips/mips64-dsp/msubu.c
+++ /dev/null
@@ -1,32 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long achi, acli, rs, rt;
-    long long acho, aclo;
-    long long resulth, resultl;
-
-    rs      = 0x00BBAACC;
-    rt      = 0x0B1C3D2F;
-    achi    = 0x00004433;
-    acli    = 0xFFCC0011;
-    resulth = 0xFFFFFFFFFFF81F29;
-    resultl = 0xFFFFFFFFB355089D;
-
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "msubu $ac1, %4, %5\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-    if ((acho != resulth) || (aclo != resultl)) {
-        printf("msubu wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/mthi.c b/tests/tcg/mips/mips64-dsp/mthi.c
deleted file mode 100644
index 8570051..0000000
--- a/tests/tcg/mips/mips64-dsp/mthi.c
+++ /dev/null
@@ -1,24 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long achi, acho;
-    long long result;
-
-    achi   = 0x004433;
-    result = 0x004433;
-
-    __asm
-        ("mthi %1, $ac1\n\t"
-         "mfhi %0, $ac1\n\t"
-         : "=r"(acho)
-         : "r"(achi)
-        );
-    if (result != acho) {
-        printf("mthi wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/mthlip.c b/tests/tcg/mips/mips64-dsp/mthlip.c
deleted file mode 100644
index 957cd42..0000000
--- a/tests/tcg/mips/mips64-dsp/mthlip.c
+++ /dev/null
@@ -1,61 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rs, ach, acl, dsp;
-    long long result, resulth, resultl;
-
-    dsp = 0x07;
-    ach = 0x05;
-    acl = 0xB4CB;
-    rs  = 0x00FFBBAA;
-    resulth = 0xB4CB;
-    resultl = 0x00FFBBAA;
-    result  = 0x27;
-
-    __asm
-        ("wrdsp %0, 0x01\n\t"
-         "mthi %1, $ac1\n\t"
-         "mtlo %2, $ac1\n\t"
-         "mthlip %3, $ac1\n\t"
-         "mfhi %1, $ac1\n\t"
-         "mflo %2, $ac1\n\t"
-         "rddsp %0\n\t"
-         : "+r"(dsp), "+r"(ach), "+r"(acl)
-         : "r"(rs)
-        );
-    dsp = dsp & 0x3F;
-    if ((dsp != result) || (ach != resulth) || (acl != resultl)) {
-        printf("mthlip wrong\n");
-
-        return -1;
-    }
-
-    dsp = 0x3f;
-    ach = 0x05;
-    acl = 0xB4CB;
-    rs  = 0x00FFBBAA;
-    resulth = 0xB4CB;
-    resultl = 0x00FFBBAA;
-    result  = 0x3f;
-
-    __asm
-        ("wrdsp %0, 0x01\n\t"
-         "mthi %1, $ac1\n\t"
-         "mtlo %2, $ac1\n\t"
-         "mthlip %3, $ac1\n\t"
-         "mfhi %1, $ac1\n\t"
-         "mflo %2, $ac1\n\t"
-         "rddsp %0\n\t"
-         : "+r"(dsp), "+r"(ach), "+r"(acl)
-         : "r"(rs)
-        );
-    dsp = dsp & 0x3F;
-    if ((dsp != result) || (ach != resulth) || (acl != resultl)) {
-        printf("mthlip wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/mtlo.c b/tests/tcg/mips/mips64-dsp/mtlo.c
deleted file mode 100644
index 304fffb..0000000
--- a/tests/tcg/mips/mips64-dsp/mtlo.c
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long acli, aclo;
-    long long result;
-
-    acli   = 0x004433;
-    result = 0x004433;
-
-    __asm
-        ("mthi %1, $ac1\n\t"
-         "mfhi %0, $ac1\n\t"
-         : "=r"(aclo)
-         : "r"(acli)
-        );
-    if (result != aclo) {
-        printf("mtlo wrong\n");
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/muleq_s_pw_qhl.c b/tests/tcg/mips/mips64-dsp/muleq_s_pw_qhl.c
deleted file mode 100644
index 6c68d45..0000000
--- a/tests/tcg/mips/mips64-dsp/muleq_s_pw_qhl.c
+++ /dev/null
@@ -1,56 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, result;
-
-    rd = 0;
-    rs = 0x45BCFFFF12345678;
-    rt = 0x98529AD287654321;
-    result = 0x52fbec7035a2ca5c;
-
-    __asm
-        ("muleq_s.pw.qhl %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-
-    if (result != rd) {
-        printf("1 muleq_s.pw.qhl error\n");
-
-        return -1;
-    }
-
-    rd = 0;
-    rs = 0x45BC800012345678;
-    rt = 0x9852800087654321;
-    result = 0x52fbec707FFFFFFF;
-
-    __asm
-        ("muleq_s.pw.qhl %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-
-    if (result != rd) {
-        printf("2 muleq_s.pw.qhl error\n");
-
-        return -1;
-    }
-
-    rd = 0;
-    __asm
-        ("rddsp %0\n\t"
-         : "=r"(rd)
-        );
-    rd = rd >> 21;
-    rd = rd & 0x1;
-
-    if (rd != 1) {
-        printf("3 muleq_s.pw.qhl error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/muleq_s_pw_qhr.c b/tests/tcg/mips/mips64-dsp/muleq_s_pw_qhr.c
deleted file mode 100644
index fa8b41f..0000000
--- a/tests/tcg/mips/mips64-dsp/muleq_s_pw_qhr.c
+++ /dev/null
@@ -1,57 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long result;
-
-    rd = 0;
-    rs = 0x1234567845BCFFFF;
-    rt = 0x8765432198529AD2;
-    result = 0x52fbec7035a2ca5c;
-
-    __asm
-        ("muleq_s.pw.qhr %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-
-    if (result != rd) {
-        printf("1 muleq_s.pw.qhr error\n");
-
-        return -1;
-    }
-
-    rd = 0;
-    rs = 0x1234567845BC8000;
-    rt = 0x8765432198528000;
-    result = 0x52fbec707FFFFFFF;
-
-    __asm
-        ("muleq_s.pw.qhr %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-
-    if (result != rd) {
-        printf("2 muleq_s.pw.qhr error\n");
-
-        return -1;
-    }
-
-    rd = 0;
-    __asm
-        ("rddsp %0\n\t"
-         : "=r"(rd)
-        );
-    rd = rd >> 21;
-    rd = rd & 0x1;
-
-    if (rd != 1) {
-        printf("3 muleq_s.pw.qhr error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/muleq_s_w_phl.c b/tests/tcg/mips/mips64-dsp/muleq_s_w_phl.c
deleted file mode 100644
index 997a9f6..0000000
--- a/tests/tcg/mips/mips64-dsp/muleq_s_w_phl.c
+++ /dev/null
@@ -1,46 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, dsp;
-    long long result, resultdsp;
-
-    rs = 0x80009988;
-    rt = 0x80009988;
-    result = 0x7FFFFFFF;
-    resultdsp = 1;
-
-    __asm
-        ("muleq_s.w.phl %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 21) & 0x01;
-    if ((rd  != result) || (dsp != resultdsp)) {
-        printf("muleq_s.w.phl wrong\n");
-
-        return -1;
-    }
-
-    rs = 0x12343322;
-    rt = 0x43213322;
-    result = 0x98be968;
-    resultdsp = 1;
-
-    __asm
-        ("muleq_s.w.phl %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 21) & 0x01;
-    if ((rd  != result) || (dsp != resultdsp)) {
-        printf("muleq_s.w.phl wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
-
diff --git a/tests/tcg/mips/mips64-dsp/muleq_s_w_phr.c b/tests/tcg/mips/mips64-dsp/muleq_s_w_phr.c
deleted file mode 100644
index 0e59479..0000000
--- a/tests/tcg/mips/mips64-dsp/muleq_s_w_phr.c
+++ /dev/null
@@ -1,45 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, dsp;
-    long long result, resultdsp;
-
-    rs = 0x8000;
-    rt = 0x8000;
-    result = 0x7FFFFFFF;
-    resultdsp = 1;
-
-    __asm
-        ("muleq_s.w.phr %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 21) & 0x01;
-    if ((rd  != result) || (dsp != resultdsp)) {
-        printf("muleq_s.w.phr wrong\n");
-
-        return -1;
-    }
-
-    rs = 0x1234;
-    rt = 0x4321;
-    result = 0x98be968;
-    resultdsp = 1;
-
-    __asm
-        ("muleq_s.w.phr %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 21) & 0x01;
-    if ((rd  != result) || (dsp != resultdsp)) {
-        printf("muleq_s.w.phr wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/muleu_s_ph_qbl.c b/tests/tcg/mips/mips64-dsp/muleu_s_ph_qbl.c
deleted file mode 100644
index 2f444c9..0000000
--- a/tests/tcg/mips/mips64-dsp/muleu_s_ph_qbl.c
+++ /dev/null
@@ -1,27 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, dsp;
-    long long result, resultdsp;
-
-    rs = 0x80001234;
-    rt = 0x80004321;
-    result = 0xFFFFFFFFFFFF0000;
-    resultdsp = 1;
-
-    __asm
-        ("muleu_s.ph.qbl %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 21) & 0x01;
-    if ((rd  != result) || (dsp != resultdsp)) {
-        printf("muleu_s.ph.qbl wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/muleu_s_ph_qbr.c b/tests/tcg/mips/mips64-dsp/muleu_s_ph_qbr.c
deleted file mode 100644
index 8bd0e99..0000000
--- a/tests/tcg/mips/mips64-dsp/muleu_s_ph_qbr.c
+++ /dev/null
@@ -1,27 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, dsp;
-    long long result, resultdsp;
-
-    rs = 0x8000;
-    rt = 0x80004321;
-    result = 0xFFFFFFFFFFFF0000;
-    resultdsp = 1;
-
-    __asm
-        ("muleu_s.ph.qbr %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 21) & 0x01;
-    if ((rd  != result) || (dsp != resultdsp)) {
-        printf("muleu_s.ph.qbr wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/muleu_s_qh_obl.c b/tests/tcg/mips/mips64-dsp/muleu_s_qh_obl.c
deleted file mode 100644
index db0d386..0000000
--- a/tests/tcg/mips/mips64-dsp/muleu_s_qh_obl.c
+++ /dev/null
@@ -1,30 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long dsp;
-    long long resdsp, result;
-
-    rd = 0;
-    rs = 0x1234567802020202;
-    rt = 0x0034432112344321;
-    result = 0x03A8FFFFFFFFFFFF;
-    resdsp = 0x01;
-
-    __asm
-        ("muleu_s.qh.obl %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-
-    dsp = (dsp >> 21) & 0x01;
-    if ((rd != result) || (resdsp != dsp)) {
-        printf("muleu_s.qh.obl error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/muleu_s_qh_obr.c b/tests/tcg/mips/mips64-dsp/muleu_s_qh_obr.c
deleted file mode 100644
index 52ed9c0..0000000
--- a/tests/tcg/mips/mips64-dsp/muleu_s_qh_obr.c
+++ /dev/null
@@ -1,31 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long dsp;
-    long long resdsp, result;
-
-    rd = 0;
-    rs = 0x0202020212345678;
-
-    rt = 0x0034432112344321;
-    result = 0x03A8FFFFFFFFFFFF;
-    resdsp = 0x01;
-
-    __asm
-        ("muleu_s.qh.obr %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-
-    dsp = (dsp >> 21) & 0x01;
-    if ((rd != result) || (resdsp != dsp)) {
-        printf("muleu_s.qh.obr error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/mulq_rs_ph.c b/tests/tcg/mips/mips64-dsp/mulq_rs_ph.c
deleted file mode 100644
index fd6233d..0000000
--- a/tests/tcg/mips/mips64-dsp/mulq_rs_ph.c
+++ /dev/null
@@ -1,27 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, dsp;
-    long long result, resultdsp;
-
-    rs = 0x80001234;
-    rt = 0x80004321;
-    result = 0x7FFF098C;
-    resultdsp = 1;
-
-    __asm
-        ("mulq_rs.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 21) & 0x01;
-    if ((rd  != result) || (dsp != resultdsp)) {
-        printf("mulq_rs.ph wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/mulq_rs_qh.c b/tests/tcg/mips/mips64-dsp/mulq_rs_qh.c
deleted file mode 100644
index 7863c05..0000000
--- a/tests/tcg/mips/mips64-dsp/mulq_rs_qh.c
+++ /dev/null
@@ -1,33 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, result, dsp, dspresult;
-    rt = 0x80003698CE8F9201;
-    rs = 0x800034634BCDE321;
-    result = 0x7fff16587a530313;
-
-    dspresult = 0x01;
-
-    __asm
-        ("mulq_rs.qh %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt), "r"(rs)
-        );
-
-    if (rd != result) {
-        printf("mulq_rs.qh error\n");
-
-        return -1;
-    }
-
-    dsp = (dsp >> 21) & 0x01;
-    if (dsp != dspresult) {
-        printf("mulq_rs.qh DSPControl Reg ouflag error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/mulsaq_s_l_pw.c b/tests/tcg/mips/mips64-dsp/mulsaq_s_l_pw.c
deleted file mode 100644
index 02548f8..0000000
--- a/tests/tcg/mips/mips64-dsp/mulsaq_s_l_pw.c
+++ /dev/null
@@ -1,59 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rs, rt, dsp;
-    long long achi, acli;
-    long long acho, aclo;
-    long long resl, resh;
-
-    achi = 0x4;
-    acli = 0x4;
-
-    rs = 0x1234567887654321;
-    rt = 0x8765432112345678;
-
-    resh = 0x4;
-    resl = 0x4;
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "mulsaq_s.l.pw $ac1, %4, %5\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-
-    if ((acho != resh) || (aclo != resl)) {
-        printf("1 mulsaq_s.l.pw wrong\n");
-
-        return -1;
-    }
-
-    achi = 0x4;
-    acli = 0x4;
-
-    rs = 0x8000000087654321;
-    rt = 0x8000000012345678;
-
-    resh = 0x4;
-    resl = 0x1e8ee513;
-    __asm
-        ("mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "mulsaq_s.l.pw $ac1, %5, %6\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "=r"(acho), "=r"(aclo), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 17) & 0x1;
-    if ((dsp != 0x1) || (acho != resh) || (aclo != resl)) {
-        printf("2 mulsaq_s.l.pw wrong\n");
-
-        return -1;
-    }
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/mulsaq_s_w_qh.c b/tests/tcg/mips/mips64-dsp/mulsaq_s_w_qh.c
deleted file mode 100644
index 92d7a0b..0000000
--- a/tests/tcg/mips/mips64-dsp/mulsaq_s_w_qh.c
+++ /dev/null
@@ -1,57 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rs, rt, dsp;
-    long long achi, acli;
-    long long acho, aclo;
-    long long resl, resh;
-
-    achi = 0x4;
-    acli = 0x4;
-
-    rs = 0x5678123443218765;
-    rt = 0x4321876556781234;
-
-    resh = 0x4;
-    resl = 0x342fcbd4;
-    __asm
-        ("mthi %2, $ac1\n\t"
-         "mtlo %3, $ac1\n\t"
-         "mulsaq_s.w.qh $ac1, %4, %5\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-
-    if ((acho != resh) || (aclo != resl)) {
-        printf("1 mulsaq_s.w.qh wrong\n");
-        return -1;
-    }
-
-    achi = 0x4;
-    acli = 0x4;
-
-    rs = 0x8000800087654321;
-    rt = 0x8000800012345678;
-
-    resh = 0x3;
-    resl = 0xffffffffe5e81a1c;
-    __asm
-        ("mthi %3, $ac1\n\t"
-         "mtlo %4, $ac1\n\t"
-         "mulsaq_s.w.qh $ac1, %5, %6\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "=r"(acho), "=r"(aclo), "=r"(dsp)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 17) & 0x1;
-    if ((dsp != 0x1) || (acho != resh) || (aclo != resl)) {
-        printf("2 mulsaq_s.w.qh wrong\n");
-        return -1;
-    }
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/mult.c b/tests/tcg/mips/mips64-dsp/mult.c
deleted file mode 100644
index 4a294d1..0000000
--- a/tests/tcg/mips/mips64-dsp/mult.c
+++ /dev/null
@@ -1,26 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rs, rt, ach, acl;
-    long long result, resulth, resultl;
-
-    rs  = 0x00FFBBAA;
-    rt  = 0x4B231000;
-    resulth = 0x4b0f01;
-    resultl = 0x71f8a000;
-    __asm
-        ("mult $ac1, %2, %3\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "=r"(ach), "=r"(acl)
-         : "r"(rs), "r"(rt)
-        );
-    if ((ach != resulth) || (acl != resultl)) {
-        printf("mult wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/multu.c b/tests/tcg/mips/mips64-dsp/multu.c
deleted file mode 100644
index 21a8a7c..0000000
--- a/tests/tcg/mips/mips64-dsp/multu.c
+++ /dev/null
@@ -1,26 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rs, rt, ach, acl;
-    long long result, resulth, resultl;
-
-    rs  = 0x00FFBBAA;
-    rt  = 0x4B231000;
-    resulth = 0x4b0f01;
-    resultl = 0x71f8a000;
-    __asm
-        ("multu $ac1, %2, %3\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "=r"(ach), "=r"(acl)
-         : "r"(rs), "r"(rt)
-        );
-    if ((ach != resulth) || (acl != resultl)) {
-        printf("multu wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/packrl_ph.c b/tests/tcg/mips/mips64-dsp/packrl_ph.c
deleted file mode 100644
index 3722b0a..0000000
--- a/tests/tcg/mips/mips64-dsp/packrl_ph.c
+++ /dev/null
@@ -1,24 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long result;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result = 0x56788765;
-
-    __asm
-        ("packrl.ph %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    if (result != rd) {
-        printf("packrl.ph wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/packrl_pw.c b/tests/tcg/mips/mips64-dsp/packrl_pw.c
deleted file mode 100644
index 7807418..0000000
--- a/tests/tcg/mips/mips64-dsp/packrl_pw.c
+++ /dev/null
@@ -1,24 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long res;
-
-    rs = 0x1234567887654321;
-    rt = 0xabcdef9812345678;
-
-    res = 0x87654321abcdef98;
-
-    __asm
-        ("packrl.pw %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    if (rd != res) {
-        printf("packrl.pw error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/pick_ob.c b/tests/tcg/mips/mips64-dsp/pick_ob.c
deleted file mode 100644
index 160049f..0000000
--- a/tests/tcg/mips/mips64-dsp/pick_ob.c
+++ /dev/null
@@ -1,66 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, dsp;
-    long long res;
-
-    dsp = 0xff000000;
-
-    rs = 0x1234567812345678;
-    rt = 0x8765432187654321;
-
-    res = 0x1234567812345678;
-
-    __asm
-        ("wrdsp %1, 0x10\n\t"
-         "pick.ob %0, %2, %3\n\t"
-         : "=r"(rd)
-         : "r"(dsp), "r"(rs), "r"(rt)
-        );
-
-    if (rd != res) {
-        printf("1 pick.ob error\n");
-        return -1;
-    }
-
-    dsp = 0x00000000;
-
-    rs = 0x1234567812345678;
-    rt = 0x8765432187654321;
-
-    res = 0x8765432187654321;
-
-    __asm
-        ("wrdsp %1, 0x10\n\t"
-         "pick.ob %0, %2, %3\n\t"
-         : "=r"(rd)
-         : "r"(dsp), "r"(rs), "r"(rt)
-        );
-
-    if (rd != res) {
-        printf("2 pick.ob error\n");
-        return -1;
-    }
-
-    dsp = 0x34000000;
-
-    rs = 0x1234567812345678;
-    rt = 0x8765432187654321;
-
-    res = 0x8765567887344321;
-
-    __asm
-        ("wrdsp %1, 0x10\n\t"
-         "pick.ob %0, %2, %3\n\t"
-         : "=r"(rd)
-         : "r"(dsp), "r"(rs), "r"(rt)
-        );
-
-    if (rd != res) {
-        printf("3 pick.ob error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/pick_ph.c b/tests/tcg/mips/mips64-dsp/pick_ph.c
deleted file mode 100644
index 8800c14..0000000
--- a/tests/tcg/mips/mips64-dsp/pick_ph.c
+++ /dev/null
@@ -1,60 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, dsp;
-    long long result;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    dsp = 0x0A000000;
-    result = 0x12344321;
-
-    __asm
-        ("wrdsp %3, 0x10\n\t"
-         "pick.ph %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt), "r"(dsp)
-        );
-    if (rd != result) {
-        printf("1 pick.ph wrong\n");
-
-        return -1;
-    }
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    dsp = 0x03000000;
-    result = 0x12345678;
-
-    __asm
-        ("wrdsp %3, 0x10\n\t"
-         "pick.ph %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt), "r"(dsp)
-        );
-    if (rd != result) {
-        printf("2 pick.ph wrong\n");
-
-        return -1;
-    }
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    dsp = 0x00000000;
-    result = 0xffffffff87654321;
-
-    __asm
-        ("wrdsp %3, 0x10\n\t"
-         "pick.ph %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt), "r"(dsp)
-        );
-    if (rd != result) {
-        printf("3 pick.ph wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/pick_pw.c b/tests/tcg/mips/mips64-dsp/pick_pw.c
deleted file mode 100644
index 24d80f5..0000000
--- a/tests/tcg/mips/mips64-dsp/pick_pw.c
+++ /dev/null
@@ -1,48 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, dsp;
-    long long res;
-    dsp = 0xff000000;
-
-    rs = 0x1234567812345678;
-    rt = 0x8765432187654321;
-
-    res = 0x1234567812345678;
-
-    __asm
-        ("wrdsp %1, 0x10\n\t"
-         "wrdsp %1\n\t"
-         "pick.pw %0, %2, %3\n\t"
-         : "=r"(rd), "+r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-
-    if (rd != res) {
-        printf("pick.pw error\n");
-        return -1;
-    }
-
-    dsp = 0x00000000;
-
-    rs = 0x1234567812345678;
-    rt = 0x8765432187654321;
-
-    res = 0x8765432187654321;
-
-    __asm
-        ("wrdsp %1, 0x10\n\t"
-         "wrdsp %1\n\t"
-         "pick.pw %0, %2, %3\n\t"
-         : "=r"(rd), "+r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-
-    if (rd != res) {
-        printf("pick.pw error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/pick_qb.c b/tests/tcg/mips/mips64-dsp/pick_qb.c
deleted file mode 100644
index 0d5de9d..0000000
--- a/tests/tcg/mips/mips64-dsp/pick_qb.c
+++ /dev/null
@@ -1,43 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, dsp;
-    long long result;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    dsp = 0x0f000000;
-    result = 0x12345678;
-
-    __asm
-        ("wrdsp %3, 0x10\n\t"
-         "pick.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt), "r"(dsp)
-        );
-    if (rd != result) {
-        printf("pick.qb wrong\n");
-
-        return -1;
-    }
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    dsp = 0x00000000;
-    result = 0xffffffff87654321;
-
-    __asm
-        ("wrdsp %3, 0x10\n\t"
-         "pick.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt), "r"(dsp)
-        );
-    if (rd != result) {
-        printf("pick.qb wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/pick_qh.c b/tests/tcg/mips/mips64-dsp/pick_qh.c
deleted file mode 100644
index aa2e293..0000000
--- a/tests/tcg/mips/mips64-dsp/pick_qh.c
+++ /dev/null
@@ -1,48 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, dsp;
-    long long res;
-    dsp = 0xff000000;
-
-    rs = 0x1234567812345678;
-    rt = 0x8765432187654321;
-
-    res = 0x1234567812345678;
-
-    __asm
-        ("wrdsp %1, 0x10\n\t"
-         "wrdsp %1\n\t"
-         "pick.qh %0, %2, %3\n\t"
-         : "=r"(rd), "+r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-
-    if (rd != res) {
-        printf("pick.qh error\n");
-        return -1;
-    }
-
-    dsp = 0x00000000;
-
-    rs = 0x1234567812345678;
-    rt = 0x8765432187654321;
-
-    res = 0x8765432187654321;
-
-    __asm
-        ("wrdsp %1, 0x10\n\t"
-         "wrdsp %1\n\t"
-         "pick.qh %0, %2, %3\n\t"
-         : "=r"(rd), "+r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-
-    if (rd != res) {
-        printf("pick.qh error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/preceq_l_pwl.c b/tests/tcg/mips/mips64-dsp/preceq_l_pwl.c
deleted file mode 100644
index 6455100..0000000
--- a/tests/tcg/mips/mips64-dsp/preceq_l_pwl.c
+++ /dev/null
@@ -1,24 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt;
-    long long result;
-    rt = 0xFFFFFFFF11111111;
-    result = 0xFFFFFFFF00000000;
-
-    __asm
-        ("preceq.l.pwl %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-
-    if (result != rd) {
-        printf("preceq.l.pwl wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
-
diff --git a/tests/tcg/mips/mips64-dsp/preceq_l_pwr.c b/tests/tcg/mips/mips64-dsp/preceq_l_pwr.c
deleted file mode 100644
index 1e05339..0000000
--- a/tests/tcg/mips/mips64-dsp/preceq_l_pwr.c
+++ /dev/null
@@ -1,24 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt;
-    long long result;
-    rt = 0xFFFFFFFF11111111;
-    result = 0x1111111100000000;
-
-    __asm
-        ("preceq.l.pwl %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-
-    if (result != rd) {
-        printf("preceq.l.pwr wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
-
diff --git a/tests/tcg/mips/mips64-dsp/preceq_pw_qhl.c b/tests/tcg/mips/mips64-dsp/preceq_pw_qhl.c
deleted file mode 100644
index f44b940..0000000
--- a/tests/tcg/mips/mips64-dsp/preceq_pw_qhl.c
+++ /dev/null
@@ -1,21 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, result;
-    rt = 0x0123456789ABCDEF;
-    result = 0x0123000045670000;
-
-    __asm
-        ("preceq.pw.qhl %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    if (result != rd) {
-        printf("preceq.pw.qhl error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/preceq_pw_qhla.c b/tests/tcg/mips/mips64-dsp/preceq_pw_qhla.c
deleted file mode 100644
index f0f78f4..0000000
--- a/tests/tcg/mips/mips64-dsp/preceq_pw_qhla.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, result;
-
-    rt = 0x123456789ABCDEF0;
-    result = 0x123400009ABC0000;
-
-    __asm
-        ("preceq.pw.qhla %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-
-    if (result != rd) {
-        printf("preceq.pw.qhla error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/preceq_pw_qhr.c b/tests/tcg/mips/mips64-dsp/preceq_pw_qhr.c
deleted file mode 100644
index 709d4f9..0000000
--- a/tests/tcg/mips/mips64-dsp/preceq_pw_qhr.c
+++ /dev/null
@@ -1,21 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, result;
-    rt = 0x0123456789ABCDEF;
-    result = 0x89AB0000CDEF0000;
-
-    __asm
-        ("preceq.pw.qhr %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    if (result != rd) {
-        printf("preceq.pw.qhr error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/preceq_pw_qhra.c b/tests/tcg/mips/mips64-dsp/preceq_pw_qhra.c
deleted file mode 100644
index 4d071ec..0000000
--- a/tests/tcg/mips/mips64-dsp/preceq_pw_qhra.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, result;
-
-    rt = 0x123456789ABCDEF0;
-    result = 0x56780000DEF00000;
-
-    __asm
-        ("preceq.pw.qhra %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-
-    if (result != rd) {
-        printf("preceq.pw.qhra error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/preceq_w_phl.c b/tests/tcg/mips/mips64-dsp/preceq_w_phl.c
deleted file mode 100644
index 4ed3fc0..0000000
--- a/tests/tcg/mips/mips64-dsp/preceq_w_phl.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt;
-    long long result;
-
-    rt = 0x87654321;
-    result = 0xFFFFFFFF87650000;
-
-    __asm
-        ("preceq.w.phl %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    if (result != rd) {
-        printf("preceq.w.phl wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/preceq_w_phr.c b/tests/tcg/mips/mips64-dsp/preceq_w_phr.c
deleted file mode 100644
index e2ea093..0000000
--- a/tests/tcg/mips/mips64-dsp/preceq_w_phr.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt;
-    long long result;
-
-    rt = 0x87654321;
-    result = 0x43210000;
-
-    __asm
-        ("preceq.w.phr %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    if (result != rd) {
-        printf("preceq.w.phr wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/precequ_ph_qbl.c b/tests/tcg/mips/mips64-dsp/precequ_ph_qbl.c
deleted file mode 100644
index 17b7331..0000000
--- a/tests/tcg/mips/mips64-dsp/precequ_ph_qbl.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt;
-    long long result;
-
-    rt = 0x87654321;
-    result = 0x43803280;
-
-    __asm
-        ("precequ.ph.qbl %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    if (result != rd) {
-        printf("precequ.ph.qbl wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/precequ_ph_qbla.c b/tests/tcg/mips/mips64-dsp/precequ_ph_qbla.c
deleted file mode 100644
index 15e9494..0000000
--- a/tests/tcg/mips/mips64-dsp/precequ_ph_qbla.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt;
-    long long result;
-
-    rt = 0x87654321;
-    result = 0x43802180;
-
-    __asm
-        ("precequ.ph.qbla %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    if (result != rd) {
-        printf("precequ.ph.qbla wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/precequ_ph_qbr.c b/tests/tcg/mips/mips64-dsp/precequ_ph_qbr.c
deleted file mode 100644
index 495368c..0000000
--- a/tests/tcg/mips/mips64-dsp/precequ_ph_qbr.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt;
-    long long result;
-
-    rt = 0x87654321;
-    result = 0x21801080;
-
-    __asm
-        ("precequ.ph.qbr %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    if (result != rd) {
-        printf("precequ.ph.qbr wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/precequ_ph_qbra.c b/tests/tcg/mips/mips64-dsp/precequ_ph_qbra.c
deleted file mode 100644
index 7c66369..0000000
--- a/tests/tcg/mips/mips64-dsp/precequ_ph_qbra.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt;
-    long long result;
-
-    rt = 0x87654321;
-    result = 0x32801080;
-
-    __asm
-        ("precequ.ph.qbra %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    if (result != rd) {
-        printf("precequ.ph.qbra wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/precequ_qh_obl.c b/tests/tcg/mips/mips64-dsp/precequ_qh_obl.c
deleted file mode 100644
index 176d236..0000000
--- a/tests/tcg/mips/mips64-dsp/precequ_qh_obl.c
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, result;
-    rt = 0x123456789ABCDEF0;
-    result = 0x09001A002B003C00;
-
-    __asm
-        ("precequ.qh.obla %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-
-    if (result != rd) {
-        printf("precequ.qh.obla error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/precequ_qh_obla.c b/tests/tcg/mips/mips64-dsp/precequ_qh_obla.c
deleted file mode 100644
index 93a36a4..0000000
--- a/tests/tcg/mips/mips64-dsp/precequ_qh_obla.c
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, result;
-    rt = 0x123456789ABCDEF0;
-    result = 0x09002B004D006F00;
-
-    __asm
-        ("precequ.qh.obla %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-
-    if (result != rd) {
-        printf("precequ.qh.obla error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/precequ_qh_obr.c b/tests/tcg/mips/mips64-dsp/precequ_qh_obr.c
deleted file mode 100644
index 1214730..0000000
--- a/tests/tcg/mips/mips64-dsp/precequ_qh_obr.c
+++ /dev/null
@@ -1,24 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, result;
-
-    rt = 0x123456789ABCDEF0;
-    result = 0x4D005E006F007000;
-
-    __asm
-        ("precequ.qh.obr %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-
-    if (result != rd) {
-        printf("precequ.qh.obr error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
-
diff --git a/tests/tcg/mips/mips64-dsp/precequ_qh_obra.c b/tests/tcg/mips/mips64-dsp/precequ_qh_obra.c
deleted file mode 100644
index 3aa0e09..0000000
--- a/tests/tcg/mips/mips64-dsp/precequ_qh_obra.c
+++ /dev/null
@@ -1,24 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, result;
-
-    rt = 0x123456789ABCDEF0;
-    result = 0x1A003C005D007000;
-
-    __asm
-        ("precequ.qh.obra %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-
-    if (result != rd) {
-        printf("precequ.qh.obra error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
-
diff --git a/tests/tcg/mips/mips64-dsp/preceu_ph_qbl.c b/tests/tcg/mips/mips64-dsp/preceu_ph_qbl.c
deleted file mode 100644
index 81f7917..0000000
--- a/tests/tcg/mips/mips64-dsp/preceu_ph_qbl.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt;
-    long long result;
-
-    rt = 0x87654321;
-    result = 0x00870065;
-
-    __asm
-        ("preceu.ph.qbl %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    if (result != rd) {
-        printf("preceu.ph.qbl wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/preceu_ph_qbla.c b/tests/tcg/mips/mips64-dsp/preceu_ph_qbla.c
deleted file mode 100644
index 38cf6a6..0000000
--- a/tests/tcg/mips/mips64-dsp/preceu_ph_qbla.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt;
-    long long result;
-
-    rt = 0x87654321;
-    result = 0x00870043;
-
-    __asm
-        ("preceu.ph.qbla %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    if (result != rd) {
-        printf("preceu.ph.qbla wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/preceu_ph_qbr.c b/tests/tcg/mips/mips64-dsp/preceu_ph_qbr.c
deleted file mode 100644
index 70c32b6..0000000
--- a/tests/tcg/mips/mips64-dsp/preceu_ph_qbr.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt;
-    long long result;
-
-    rt = 0x87654321;
-    result = 0x00430021;
-
-    __asm
-        ("preceu.ph.qbr %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    if (result != rd) {
-        printf("preceu.ph.qbr wrong");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/preceu_ph_qbra.c b/tests/tcg/mips/mips64-dsp/preceu_ph_qbra.c
deleted file mode 100644
index c6638aa..0000000
--- a/tests/tcg/mips/mips64-dsp/preceu_ph_qbra.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt;
-    long long result;
-
-    rt = 0x87654321;
-    result = 0x00650021;
-
-    __asm
-        ("preceu.ph.qbra %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    if (result != rd) {
-        printf("preceu.ph.qbra wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/preceu_qh_obl.c b/tests/tcg/mips/mips64-dsp/preceu_qh_obl.c
deleted file mode 100644
index 63f9373..0000000
--- a/tests/tcg/mips/mips64-dsp/preceu_qh_obl.c
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, result;
-    rt = 0x123456789ABCDEF0;
-    result = 0x0012003400560078;
-
-    __asm
-        ("preceu.qh.obl %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-
-    if (result != rd) {
-        printf("preceu.qh.obl error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/preceu_qh_obla.c b/tests/tcg/mips/mips64-dsp/preceu_qh_obla.c
deleted file mode 100644
index 5fb65e4..0000000
--- a/tests/tcg/mips/mips64-dsp/preceu_qh_obla.c
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, result;
-    rt = 0x123456789ABCDEF0;
-    result = 0x00120056009A00DE;
-
-    __asm
-        ("preceu.qh.obla %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-
-    if (result != rd) {
-        printf("preceu.qh.obla error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/preceu_qh_obr.c b/tests/tcg/mips/mips64-dsp/preceu_qh_obr.c
deleted file mode 100644
index 9af3b63..0000000
--- a/tests/tcg/mips/mips64-dsp/preceu_qh_obr.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, result;
-
-    rt = 0x123456789ABCDEF0;
-    result = 0x009A00BC00DE00F0;
-
-    __asm
-        ("preceu.qh.obr %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-
-    if (result != rd) {
-        printf("preceu.qh.obr error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/preceu_qh_obra.c b/tests/tcg/mips/mips64-dsp/preceu_qh_obra.c
deleted file mode 100644
index fd04083..0000000
--- a/tests/tcg/mips/mips64-dsp/preceu_qh_obra.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, result;
-
-    rt = 0x123456789ABCDEF0;
-    result = 0x0034007800BC00F0;
-
-    __asm
-        ("preceu.qh.obra %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-
-    if (result != rd) {
-        printf("preceu.qh.obra error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/precr_ob_qh.c b/tests/tcg/mips/mips64-dsp/precr_ob_qh.c
deleted file mode 100644
index ce2da79..0000000
--- a/tests/tcg/mips/mips64-dsp/precr_ob_qh.c
+++ /dev/null
@@ -1,25 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long res;
-
-    rs = 0x1234567812345678;
-    rt = 0x8765432187654321;
-
-    res = 0x3478347865216521;
-
-    __asm
-        ("precr.ob.qh %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-
-    if (rd != res) {
-        printf("precr.ob.qh error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/precr_sra_qh_pw.c b/tests/tcg/mips/mips64-dsp/precr_sra_qh_pw.c
deleted file mode 100644
index 8bb16de..0000000
--- a/tests/tcg/mips/mips64-dsp/precr_sra_qh_pw.c
+++ /dev/null
@@ -1,40 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rs, rt;
-    long long res;
-
-    rt = 0x8765432187654321;
-    rs = 0x1234567812345678;
-
-    res = 0x4321432156785678;
-
-    __asm
-        ("precr_sra.qh.pw %0, %1, 0x0\n\t"
-         : "=r"(rt)
-         : "r"(rs)
-        );
-
-    if (rt != res) {
-        printf("precr_sra.qh.pw error\n");
-        return -1;
-    }
-
-    rt = 0x8765432187654321;
-    rs = 0x1234567812345678;
-
-    res = 0x5432543245674567;
-
-    __asm
-        ("precr_sra.qh.pw %0, %1, 0x4\n\t"
-         : "=r"(rt)
-         : "r"(rs)
-        );
-
-    if (rt != res) {
-        printf("precr_sra.qh.pw error\n");
-        return -1;
-    }
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/precr_sra_r_qh_pw.c b/tests/tcg/mips/mips64-dsp/precr_sra_r_qh_pw.c
deleted file mode 100644
index 734ac32..0000000
--- a/tests/tcg/mips/mips64-dsp/precr_sra_r_qh_pw.c
+++ /dev/null
@@ -1,40 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rs, rt;
-    long long res;
-
-    rt = 0x8765432187654321;
-    rs = 0x1234567812345678;
-
-    res = 0x4321432156785678;
-
-    __asm
-        ("precr_sra_r.qh.pw %0, %1, 0x0\n\t"
-         : "=r"(rt)
-         : "r"(rs)
-        );
-
-    if (rt != res) {
-        printf("precr_sra_r.qh.pw error\n");
-        return -1;
-    }
-
-    rt = 0x8765432187654321;
-    rs = 0x1234567812345678;
-
-    res = 0x5432543245684568;
-
-    __asm
-        ("precr_sra_r.qh.pw %0, %1, 0x4\n\t"
-         : "=r"(rt)
-         : "r"(rs)
-        );
-
-    if (rt != res) {
-        printf("precr_sra_r.qh.pw error\n");
-        return -1;
-    }
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/precrq_ob_qh.c b/tests/tcg/mips/mips64-dsp/precrq_ob_qh.c
deleted file mode 100644
index 4f61b17..0000000
--- a/tests/tcg/mips/mips64-dsp/precrq_ob_qh.c
+++ /dev/null
@@ -1,25 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long res;
-
-    rs = 0x1234567812345678;
-    rt = 0x8765432187654321;
-
-    res = 0x1256125687438743;
-
-    __asm
-        ("precrq.ob.qh %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-
-    if (rd != res) {
-        printf("precrq.ob.qh error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/precrq_ph_w.c b/tests/tcg/mips/mips64-dsp/precrq_ph_w.c
deleted file mode 100644
index f0946ab..0000000
--- a/tests/tcg/mips/mips64-dsp/precrq_ph_w.c
+++ /dev/null
@@ -1,24 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long result;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result = 0x12348765;
-
-    __asm
-        ("precrq.ph.w %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    if (result != rd) {
-        printf("precrq.ph.w wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/precrq_pw_l.c b/tests/tcg/mips/mips64-dsp/precrq_pw_l.c
deleted file mode 100644
index da957c0..0000000
--- a/tests/tcg/mips/mips64-dsp/precrq_pw_l.c
+++ /dev/null
@@ -1,25 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long res;
-
-    rs = 0x1234567812345678;
-    rt = 0x8765432187654321;
-
-    res = 0x1234567887654321;
-
-    __asm
-        ("precrq.pw.l %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-
-    if (rd != res) {
-        printf("precrq.pw.l error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/precrq_qb_ph.c b/tests/tcg/mips/mips64-dsp/precrq_qb_ph.c
deleted file mode 100644
index f417c9f..0000000
--- a/tests/tcg/mips/mips64-dsp/precrq_qb_ph.c
+++ /dev/null
@@ -1,24 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long result;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result = 0x12568743;
-
-    __asm
-        ("precrq.qb.ph %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    if (result != rd) {
-        printf("precrq.qb.ph wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/precrq_qh_pw.c b/tests/tcg/mips/mips64-dsp/precrq_qh_pw.c
deleted file mode 100644
index 4a4ffef..0000000
--- a/tests/tcg/mips/mips64-dsp/precrq_qh_pw.c
+++ /dev/null
@@ -1,25 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long res;
-
-    rs = 0x1234567812345678;
-    rt = 0x8765432187654321;
-
-    res = 0x1234123487658765;
-
-    __asm
-        ("precrq.qh.pw %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-
-    if (rd != res) {
-        printf("precrq.qh.pw error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/precrq_rs_ph_w.c b/tests/tcg/mips/mips64-dsp/precrq_rs_ph_w.c
deleted file mode 100644
index 61da333..0000000
--- a/tests/tcg/mips/mips64-dsp/precrq_rs_ph_w.c
+++ /dev/null
@@ -1,41 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long dsp;
-    long long result;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result = 0x12348765;
-
-    __asm
-        ("precrq_rs.ph.w %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    if (result != rd) {
-        printf("1 precrq_rs.ph.w wrong\n");
-
-        return -1;
-    }
-
-    rs = 0x7fffC678;
-    rt = 0x865432A0;
-    result = 0x7fff8654;
-
-    __asm
-        ("precrq_rs.ph.w %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    if ((result != rd) || (((dsp >> 22) & 0x01) != 1)) {
-        printf("2 precrq_rs.ph.w wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/precrq_rs_qh_pw.c b/tests/tcg/mips/mips64-dsp/precrq_rs_qh_pw.c
deleted file mode 100644
index ac78728..0000000
--- a/tests/tcg/mips/mips64-dsp/precrq_rs_qh_pw.c
+++ /dev/null
@@ -1,43 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long dsp;
-    long long res;
-
-    rs = 0x1234567812345678;
-    rt = 0x8765432187654321;
-
-    res = 0x1234123487658765;
-
-    __asm
-        ("precrq_rs.qh.pw %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-
-    if (rd != res) {
-        printf("precrq_rs.qh.pw error\n");
-        return -1;
-    }
-
-    rs = 0x7fffC67812345678;
-    rt = 0x8765432187654321;
-
-    res = 0x7fff123487658765;
-
-    __asm
-        ("precrq_rs.qh.pw %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-
-    if (rd != res) {
-        printf("precrq_rs.qh.pw error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/precrqu_s_ob_qh.c b/tests/tcg/mips/mips64-dsp/precrqu_s_ob_qh.c
deleted file mode 100644
index e27c36b..0000000
--- a/tests/tcg/mips/mips64-dsp/precrqu_s_ob_qh.c
+++ /dev/null
@@ -1,27 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, dsp;
-    long long res, resdsp;
-
-    rs = 0x7fff567812345678;
-    rt = 0x8765432187654321;
-
-    res = 0xffac24ac00860086;
-    resdsp = 0x1;
-
-    __asm
-        ("precrqu_s.ob.qh %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 22) & 0x1;
-    if ((rd != res) || (dsp != resdsp)) {
-        printf("precrq_s.ob.qh error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/precrqu_s_qb_ph.c b/tests/tcg/mips/mips64-dsp/precrqu_s_qb_ph.c
deleted file mode 100644
index cb1fee4..0000000
--- a/tests/tcg/mips/mips64-dsp/precrqu_s_qb_ph.c
+++ /dev/null
@@ -1,26 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long dsp;
-    long long result;
-
-    rs = 0x12345678;
-    rt = 0x87657fff;
-    result = 0x24AC00FF;
-
-    __asm
-        ("precrqu_s.qb.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    if ((result != rd) || (((dsp >> 22) & 0x01) != 0x01)) {
-        printf("precrqu_s.qb.ph wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/prependd.c b/tests/tcg/mips/mips64-dsp/prependd.c
deleted file mode 100644
index b4208c2..0000000
--- a/tests/tcg/mips/mips64-dsp/prependd.c
+++ /dev/null
@@ -1,37 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, rs;
-    long long res;
-    rt = 0x1234567887654321;
-    rs = 0xabcd1234abcd8765;
-
-    res = 0x1234567887654321;
-    __asm
-        ("prependd %0, %1, 0x0\n\t"
-         : "=r"(rt)
-         : "r"(rs)
-        );
-
-    if (rt != res) {
-        printf("prependd error\n");
-        return -1;
-    }
-
-    rt = 0x1234567887654321;
-    rs = 0xabcd1234abcd8765;
-
-    res = 0xd876512345678876;
-    __asm
-        ("prependd %0, %1, 0x4\n\t"
-         : "=r"(rt)
-         : "r"(rs)
-        );
-
-    if (rt != res) {
-        printf("prependd error\n");
-        return -1;
-    }
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/prependw.c b/tests/tcg/mips/mips64-dsp/prependw.c
deleted file mode 100644
index d91bd20..0000000
--- a/tests/tcg/mips/mips64-dsp/prependw.c
+++ /dev/null
@@ -1,37 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, rs;
-    long long res;
-    rt = 0x1234567887654321;
-    rs = 0xabcd1234abcd8765;
-
-    res = 0x1234567887654321;
-    __asm
-        ("prependw %0, %1, 0x0\n\t"
-         : "=r"(rt)
-         : "r"(rs)
-        );
-
-    if (rt != res) {
-        printf("prependw error\n");
-        return -1;
-    }
-
-    rt = 0x1234567887654321;
-    rs = 0xabcd1234abcd8765;
-
-    res = 0x5123456788765432;
-    __asm
-        ("prependw %0, %1, 0x4\n\t"
-         : "=r"(rt)
-         : "r"(rs)
-        );
-
-    if (rt != res) {
-        printf("prependw error\n");
-        return -1;
-    }
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/printf.c b/tests/tcg/mips/mips64-dsp/printf.c
deleted file mode 100644
index cf8676d..0000000
--- a/tests/tcg/mips/mips64-dsp/printf.c
+++ /dev/null
@@ -1,266 +0,0 @@
-
-typedef unsigned long va_list;
-
-#define ACC    4
-#define __read(source)                    \
-({ va_list __res;                    \
-    __asm__ __volatile__(                \
-        "move\t%0, " #source "\n\t"        \
-        : "=r" (__res));            \
-    __res;                        \
-})
-
-enum format_type {
-    FORMAT_TYPE_NONE,
-    FORMAT_TYPE_HEX,
-    FORMAT_TYPE_ULONG,
-    FORMAT_TYPE_FLOAT
-};
-
-struct printf_spec {
-    char    type;
-};
-
-static int format_decode(char *fmt, struct printf_spec *spec)
-{
-    char *start = fmt;
-
-    for (; *fmt ; ++fmt) {
-        if (*fmt == '%') {
-            break;
-        }
-    }
-
-    switch (*++fmt) {
-    case 'x':
-        spec->type = FORMAT_TYPE_HEX;
-        break;
-
-    case 'd':
-        spec->type = FORMAT_TYPE_ULONG;
-        break;
-
-    case 'f':
-        spec->type = FORMAT_TYPE_FLOAT;
-        break;
-
-    default:
-        spec->type = FORMAT_TYPE_NONE;
-    }
-
-    return ++fmt - start;
-}
-
-void *memcpy(void *dest, void *src, int n)
-{
-    int i;
-    char *s = src;
-    char *d = dest;
-
-    for (i = 0; i < n; i++) {
-        d[i] = s[i];
-    }
-    return dest;
-}
-
-char *number(char *buf, va_list num)
-{
-    int i;
-    char *str = buf;
-    static char digits[16] = "0123456789abcdef";
-    str = str + sizeof(num) * 2;
-
-    for (i = 0; i < sizeof(num) * 2; i++) {
-        *--str = digits[num & 15];
-        num >>= 4;
-    }
-
-    return buf + sizeof(num) * 2;
-}
-
-char *__number(char *buf, va_list num)
-{
-    int i;
-    va_list mm = num;
-    char *str = buf;
-
-    if (!num) {
-        *str++ = '0';
-        return str;
-    }
-
-    for (i = 0; mm; mm = mm/10, i++) {
-        /* Do nothing. */
-    }
-
-    str = str + i;
-
-    while (num) {
-        *--str = num % 10 + 48;
-        num = num / 10;
-    }
-
-    return str + i;
-}
-
-va_list modf(va_list args, va_list *integer, va_list *num)
-{
-    int i;
-    double dot_v = 0;
-    va_list E, DOT, DOT_V;
-
-    if (!args) {
-        return 0;
-    }
-
-    for (i = 0, args = args << 1 >> 1; i < 52; i++) {
-        if ((args >> i) & 0x1) {
-            break;
-        }
-    }
-
-    *integer = 0;
-
-    if ((args >> 56 != 0x3f) || (args >> 52 == 0x3ff)) {
-        E = (args >> 52) - 1023;
-        DOT = 52 - E - i;
-        DOT_V = args << (12 + E) >> (12 + E) >> i;
-        *integer = ((args << 12 >> 12) >> (i + DOT)) | (1 << E);
-    } else {
-        E = ~((args >> 52) - 1023) + 1;
-        DOT_V = args << 12 >> 12;
-
-        dot_v += 1.0 / (1 << E);
-
-        for (i = 1; i <= 16; i++) {
-            if ((DOT_V >> (52 - i)) & 0x1) {
-                dot_v += 1.0 / (1 << E + i);
-            }
-        }
-
-        for (i = 1, E = 0; i <= ACC; i++) {
-            dot_v *= 10;
-            if (!(va_list)dot_v) {
-                E++;
-            }
-    }
-
-    *num = E;
-
-    return dot_v;
-    }
-
-    if (args & 0xf) {
-        for (i = 1; i <= 16; i++) {
-            if ((DOT_V >> (DOT - i)) & 0x1) {
-                dot_v += 1.0 / (1 << i);
-            }
-        }
-
-        for (i = 1, E = 0; i <= ACC; i++) {
-            dot_v *= 10;
-            if (!(va_list)dot_v) {
-                E++;
-            }
-        }
-
-        *num = E;
-
-        return dot_v;
-    } else if (DOT) {
-        for (i = 1; i <= DOT; i++) {
-            if ((DOT_V >> (DOT - i)) & 0x1) {
-                dot_v += 1.0 / (1 << i);
-            }
-        }
-
-        for (i = 1; i <= ACC; i++) {
-            dot_v = dot_v * 10;
-        }
-
-    return dot_v;
-    }
-
-    return 0;
-}
-
-int vsnprintf(char *buf, int size, char *fmt, va_list args)
-{
-    char *str, *mm;
-    struct printf_spec spec = {0};
-
-    str = mm = buf;
-
-    while (*fmt) {
-        char *old_fmt = fmt;
-        int read = format_decode(fmt, &spec);
-
-        fmt += read;
-
-        switch (spec.type) {
-        case FORMAT_TYPE_NONE: {
-            memcpy(str, old_fmt, read);
-            str += read;
-            break;
-        }
-        case FORMAT_TYPE_HEX: {
-            memcpy(str, old_fmt, read);
-            str = number(str + read, args);
-            for (; *mm ; ++mm) {
-                if (*mm == '%') {
-                    *mm = '0';
-                break;
-                }
-            }
-        break;
-        }
-        case FORMAT_TYPE_ULONG: {
-            memcpy(str, old_fmt, read - 2);
-            str = __number(str + read - 2, args);
-            break;
-        }
-        case FORMAT_TYPE_FLOAT: {
-            va_list integer, dot_v, num;
-            dot_v = modf(args, &integer, &num);
-            memcpy(str, old_fmt, read - 2);
-            str += read - 2;
-            if ((args >> 63 & 0x1)) {
-                *str++ = '-';
-            }
-            str = __number(str, integer);
-            if (dot_v) {
-                *str++ = '.';
-                while (num--) {
-                    *str++ = '0';
-                }
-                str = __number(str, dot_v);
-            }
-            break;
-        }
-        }
-    }
-    *str = '\0';
-
-    return str - buf;
-}
-
-static void serial_out(char *str)
-{
-    while (*str) {
-        *(char *)0xffffffffb80003f8 = *str++;
-    }
-}
-
-int vprintf(char *fmt, va_list args)
-{
-    int printed_len = 0;
-    static char printf_buf[512];
-    printed_len = vsnprintf(printf_buf, sizeof(printf_buf), fmt, args);
-    serial_out(printf_buf);
-    return printed_len;
-}
-
-int printf(char *fmt, ...)
-{
-    return vprintf(fmt, __read($5));
-}
diff --git a/tests/tcg/mips/mips64-dsp/raddu_l_ob.c b/tests/tcg/mips/mips64-dsp/raddu_l_ob.c
deleted file mode 100644
index 76ddf25..0000000
--- a/tests/tcg/mips/mips64-dsp/raddu_l_ob.c
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, result;
-    rs = 0x12345678ABCDEF0;
-    result = 0x000000000001E258;
-
-    __asm
-        ("raddu.l.ob %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs)
-        );
-
-    if (rd != result) {
-        printf("raddu.l.ob error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/raddu_w_qb.c b/tests/tcg/mips/mips64-dsp/raddu_w_qb.c
deleted file mode 100644
index c9d6535..0000000
--- a/tests/tcg/mips/mips64-dsp/raddu_w_qb.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs;
-    long long result;
-
-    rs = 0x12345678;
-    result = 0x114;
-
-    __asm
-        ("raddu.w.qb %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rs)
-        );
-    if (rd != result) {
-        printf("raddu.w.qb wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/rddsp.c b/tests/tcg/mips/mips64-dsp/rddsp.c
deleted file mode 100644
index 7165572..0000000
--- a/tests/tcg/mips/mips64-dsp/rddsp.c
+++ /dev/null
@@ -1,53 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long dsp_i, dsp_o;
-    long long ccond_i, outflag_i, efi_i, c_i, scount_i, pos_i;
-    long long ccond_o, outflag_o, efi_o, c_o, scount_o, pos_o;
-    long long ccond_r, outflag_r, efi_r, c_r, scount_r, pos_r;
-
-    ccond_i   = 0x000000BC;/* 4 */
-    outflag_i = 0x0000001B;/* 3 */
-    efi_i     = 0x00000001;/* 5 */
-    c_i       = 0x00000001;/* 2 */
-    scount_i  = 0x0000000F;/* 1 */
-    pos_i     = 0x0000000C;/* 0 */
-
-    dsp_i = (ccond_i   << 24) | \
-            (outflag_i << 16) | \
-            (efi_i     << 14) | \
-            (c_i       << 13) | \
-            (scount_i  <<  7) | \
-            pos_i;
-
-    ccond_r   = ccond_i;
-    outflag_r = outflag_i;
-    efi_r     = efi_i;
-    c_r       = c_i;
-    scount_r  = scount_i;
-    pos_r     = pos_i;
-
-    __asm
-        ("wrdsp %1, 0x3F\n\t"
-         "rddsp %0, 0x3F\n\t"
-         : "=r"(dsp_o)
-         : "r"(dsp_i)
-        );
-
-    ccond_o   = (dsp_o >> 24) & 0xFF;
-    outflag_o = (dsp_o >> 16) & 0xFF;
-    efi_o     = (dsp_o >> 14) & 0x01;
-    c_o       = (dsp_o >> 14) & 0x01;
-    scount_o  = (dsp_o >>  7) & 0x3F;
-    pos_o     =  dsp_o & 0x1F;
-
-    if ((ccond_o != ccond_r) || (outflag_o != outflag_r) || (efi_o != efi_r) \
-            || (c_o != c_r) || (scount_o != scount_r) || (pos_o != pos_r)) {
-        printf("rddsp wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/repl_ob.c b/tests/tcg/mips/mips64-dsp/repl_ob.c
deleted file mode 100644
index 20cb780..0000000
--- a/tests/tcg/mips/mips64-dsp/repl_ob.c
+++ /dev/null
@@ -1,21 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, result;
-    rd = 0;
-    result = 0xFFFFFFFFFFFFFFFF;
-
-    __asm
-        ("repl.ob %0, 0xFF\n\t"
-         : "=r"(rd)
-        );
-
-    if (result != rd) {
-        printf("repl.ob error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/repl_ph.c b/tests/tcg/mips/mips64-dsp/repl_ph.c
deleted file mode 100644
index 11d29bd..0000000
--- a/tests/tcg/mips/mips64-dsp/repl_ph.c
+++ /dev/null
@@ -1,30 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, result;
-
-    result = 0x01BF01BF;
-    __asm
-        ("repl.ph %0, 0x1BF\n\t"
-         : "=r"(rd)
-        );
-    if (rd != result) {
-        printf("repl.ph wrong\n");
-
-        return -1;
-    }
-
-    result = 0x01FF01FF;
-    __asm
-        ("repl.ph %0, 0x01FF\n\t"
-         : "=r"(rd)
-        );
-    if (rd != result) {
-        printf("repl.ph wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/repl_pw.c b/tests/tcg/mips/mips64-dsp/repl_pw.c
deleted file mode 100644
index d35376a..0000000
--- a/tests/tcg/mips/mips64-dsp/repl_pw.c
+++ /dev/null
@@ -1,34 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, result;
-    rd = 0;
-    result = 0x000001FF000001FF;
-
-    __asm
-        ("repl.pw %0, 0x1FF\n\t"
-         : "=r"(rd)
-        );
-
-    if (result != rd) {
-        printf("repl.pw error1\n");
-
-        return -1;
-    }
-
-    rd = 0;
-    result = 0xFFFFFE00FFFFFE00;
-    __asm
-        ("repl.pw %0, 0xFFFFFFFFFFFFFE00\n\t"
-         : "=r"(rd)
-        );
-
-    if (result != rd) {
-        printf("repl.pw error2\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/repl_qb.c b/tests/tcg/mips/mips64-dsp/repl_qb.c
deleted file mode 100644
index 592feae..0000000
--- a/tests/tcg/mips/mips64-dsp/repl_qb.c
+++ /dev/null
@@ -1,19 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, result;
-
-    result = 0xFFFFFFFFBFBFBFBF;
-    __asm
-        ("repl.qb %0, 0xBF\n\t"
-         : "=r"(rd)
-        );
-    if (rd != result) {
-        printf("repl.qb wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/repl_qh.c b/tests/tcg/mips/mips64-dsp/repl_qh.c
deleted file mode 100644
index 82afc37..0000000
--- a/tests/tcg/mips/mips64-dsp/repl_qh.c
+++ /dev/null
@@ -1,34 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, result;
-    rd = 0;
-    result = 0x01FF01FF01FF01FF;
-
-    __asm
-        ("repl.qh %0, 0x1FF\n\t"
-         : "=r"(rd)
-        );
-
-    if (result != rd) {
-        printf("repl.qh error 1\n");
-
-        return -1;
-    }
-
-    rd = 0;
-    result = 0xFE00FE00FE00FE00;
-    __asm
-        ("repl.qh %0, 0xFFFFFFFFFFFFFE00\n\t"
-         : "=r"(rd)
-        );
-
-    if (result != rd) {
-        printf("repl.qh error 2\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/replv_ob.c b/tests/tcg/mips/mips64-dsp/replv_ob.c
deleted file mode 100644
index 31ff318..0000000
--- a/tests/tcg/mips/mips64-dsp/replv_ob.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, result;
-
-    rt = 0xFF;
-    result = 0xFFFFFFFFFFFFFFFF;
-
-    __asm
-        ("replv.ob %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-
-    if (result != rd) {
-        printf("replv.ob error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/replv_ph.c b/tests/tcg/mips/mips64-dsp/replv_ph.c
deleted file mode 100644
index 0af7a36..0000000
--- a/tests/tcg/mips/mips64-dsp/replv_ph.c
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt;
-    long long result;
-
-    rt = 0x12345678;
-    result = 0x56785678;
-    __asm
-        ("replv.ph %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    if (rd != result) {
-        printf("replv.ph wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/replv_pw.c b/tests/tcg/mips/mips64-dsp/replv_pw.c
deleted file mode 100644
index e1789af..0000000
--- a/tests/tcg/mips/mips64-dsp/replv_pw.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, result;
-    rd = 0;
-    rt = 0xFFFFFFFF;
-    result = 0xFFFFFFFFFFFFFFFF;
-
-    __asm
-        ("replv.pw %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-
-    if (result != rd) {
-        printf("replv.pw error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/replv_qb.c b/tests/tcg/mips/mips64-dsp/replv_qb.c
deleted file mode 100644
index d99298c..0000000
--- a/tests/tcg/mips/mips64-dsp/replv_qb.c
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt;
-    long long result;
-
-    rt     = 0x12345678;
-    result = 0x78787878;
-    __asm
-        ("replv.qb %0, %1\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    if (rd != result) {
-        printf("replv.qb wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shilo.c b/tests/tcg/mips/mips64-dsp/shilo.c
deleted file mode 100644
index 5f454f6..0000000
--- a/tests/tcg/mips/mips64-dsp/shilo.c
+++ /dev/null
@@ -1,29 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long ach, acl;
-    long long resulth, resultl;
-
-    ach = 0xBBAACCFF;
-    acl = 0x1C3B001D;
-
-    resulth = 0x17755;
-    resultl = 0xFFFFFFFF99fe3876;
-
-    __asm
-        ("mthi %0, $ac1\n\t"
-         "mtlo %1, $ac1\n\t"
-         "shilo $ac1, 0x0F\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "+r"(ach), "+r"(acl)
-        );
-    if ((ach != resulth) || (acl != resultl)) {
-        printf("shilo wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shilov.c b/tests/tcg/mips/mips64-dsp/shilov.c
deleted file mode 100644
index e82615a..0000000
--- a/tests/tcg/mips/mips64-dsp/shilov.c
+++ /dev/null
@@ -1,31 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rs, ach, acl;
-    long long resulth, resultl;
-
-    rs  = 0x0F;
-    ach = 0xBBAACCFF;
-    acl = 0x1C3B001D;
-
-    resulth = 0x17755;
-    resultl = 0xFFFFFFFF99fe3876;
-
-    __asm
-        ("mthi %0, $ac1\n\t"
-         "mtlo %1, $ac1\n\t"
-         "shilov $ac1, %2\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "+r"(ach), "+r"(acl)
-         : "r"(rs)
-        );
-    if ((ach != resulth) || (acl != resultl)) {
-        printf("shilov wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shll_ob.c b/tests/tcg/mips/mips64-dsp/shll_ob.c
deleted file mode 100644
index 7dcb58f..0000000
--- a/tests/tcg/mips/mips64-dsp/shll_ob.c
+++ /dev/null
@@ -1,43 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, dsp;
-    long long res, resdsp;
-
-    rt = 0x9ba8765433456789;
-    res = 0x9ba8765433456789;
-    resdsp = 0x0;
-    __asm
-        ("shll.ob %0, %2, 0x0\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt)
-        );
-
-    dsp = (dsp >> 22) & 0x1;
-
-    if ((dsp != resdsp) || (rd != res)) {
-        printf("shll.ob error\n");
-        return -1;
-    }
-
-    rt = 0x9ba8765433456789;
-    res = 0xd840b0a098283848;
-    resdsp = 0x1;
-    __asm
-        ("shll.ob %0, %2, 0x3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt)
-        );
-
-    dsp = (dsp >> 22) & 0x1;
-
-    if ((dsp != resdsp) || (rd != res)) {
-        printf("shll.ob error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shll_ph.c b/tests/tcg/mips/mips64-dsp/shll_ph.c
deleted file mode 100644
index 42b462d..0000000
--- a/tests/tcg/mips/mips64-dsp/shll_ph.c
+++ /dev/null
@@ -1,43 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, dsp;
-    long long result, resultdsp;
-
-    rt        = 0x12345678;
-    result    = 0x12345678;
-    resultdsp = 0;
-
-    __asm
-        ("shll.ph %0, %2, 0x0\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt)
-        );
-    dsp = (dsp >> 22) & 0x01;
-    if ((dsp != resultdsp) || (rd  != result)) {
-        printf("shll.ph wrong\n");
-
-        return -1;
-    }
-
-    rt        = 0x12345678;
-    result    = 0xFFFFFFFFA000C000;
-    resultdsp = 1;
-
-    __asm
-        ("shll.ph %0, %2, 0x0B\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt)
-        );
-    dsp = (dsp >> 22) & 0x01;
-    if ((dsp != resultdsp) || (rd  != result)) {
-        printf("shll.ph wrong1\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shll_pw.c b/tests/tcg/mips/mips64-dsp/shll_pw.c
deleted file mode 100644
index d7878b2..0000000
--- a/tests/tcg/mips/mips64-dsp/shll_pw.c
+++ /dev/null
@@ -1,43 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, dsp;
-    long long result, resultdsp;
-
-    rt        = 0x8765432112345678;
-    result    = 0x8765432112345678;
-    resultdsp = 0;
-
-    __asm
-        ("shll.pw %0, %2, 0x0\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt)
-        );
-
-    dsp = (dsp >> 22) & 0x01;
-    if ((dsp != resultdsp) || (rd  != result)) {
-        printf("shll.pw wrong\n");
-        return -1;
-    }
-
-    rt        = 0x8765432112345678;
-    result    = 0x6543210034567800;
-    resultdsp = 1;
-
-    __asm
-        ("shll.pw %0, %2, 0x8\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt)
-        );
-
-    dsp = (dsp >> 22) & 0x01;
-    if ((dsp != resultdsp) || (rd  != result)) {
-        printf("shll.pw wrong\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shll_qb.c b/tests/tcg/mips/mips64-dsp/shll_qb.c
deleted file mode 100644
index c21ab66..0000000
--- a/tests/tcg/mips/mips64-dsp/shll_qb.c
+++ /dev/null
@@ -1,26 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, dsp;
-    long long result, resultdsp;
-
-    rt     = 0x87654321;
-    result = 0x38281808;
-    resultdsp = 0x01;
-
-    __asm
-        ("shll.qb %0, %2, 0x03\n\t"
-         "rddsp   %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt)
-        );
-    dsp = (dsp >> 22) & 0x01;
-    if (rd != result) {
-        printf("shll.qb wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shll_qh.c b/tests/tcg/mips/mips64-dsp/shll_qh.c
deleted file mode 100644
index 1380825..0000000
--- a/tests/tcg/mips/mips64-dsp/shll_qh.c
+++ /dev/null
@@ -1,42 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, dsp;
-    long long res, resdsp;
-
-    rt = 0x9ba8765433456789;
-    res = 0x9ba8765433456789;
-    resdsp = 0x0;
-    __asm
-        ("shll.qh %0, %2, 0x0\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt)
-        );
-    dsp = (dsp >> 22) & 0x1;
-
-    if ((dsp != resdsp) || (rd != res)) {
-        printf("shll.qh error\n");
-        return -1;
-    }
-
-    rt = 0x9ba8765433456789;
-    res = 0xdd40b2a09a283c48;
-    resdsp = 0x1;
-    __asm
-        ("shll.qh %0, %2, 0x3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt)
-        );
-
-    dsp = (dsp >> 22) & 0x1;
-
-    if ((dsp != resdsp) || (rd != res)) {
-        printf("shll.qh error1\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shll_s_ph.c b/tests/tcg/mips/mips64-dsp/shll_s_ph.c
deleted file mode 100644
index 1cf5d6d..0000000
--- a/tests/tcg/mips/mips64-dsp/shll_s_ph.c
+++ /dev/null
@@ -1,43 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, dsp;
-    long long result, resultdsp;
-
-    rt        = 0x12345678;
-    result    = 0x12345678;
-    resultdsp = 0x0;
-
-    __asm
-        ("shll_s.ph %0, %2, 0x0\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt)
-        );
-    dsp = (dsp >> 22) & 0x01;
-    if ((dsp != resultdsp) || (rd  != result)) {
-        printf("shll_s.ph wrong\n");
-
-        return -1;
-    }
-
-    rt        = 0x12345678;
-    result    = 0x7FFF7FFF;
-    resultdsp = 0x01;
-
-    __asm
-        ("shll_s.ph %0, %2, 0x0B\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt)
-        );
-    dsp = (dsp >> 22) & 0x01;
-    if ((dsp != resultdsp) || (rd  != result)) {
-        printf("shll_s.ph wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shll_s_pw.c b/tests/tcg/mips/mips64-dsp/shll_s_pw.c
deleted file mode 100644
index e38f686..0000000
--- a/tests/tcg/mips/mips64-dsp/shll_s_pw.c
+++ /dev/null
@@ -1,43 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, dsp;
-    long long result, resultdsp;
-
-    rt        = 0x8765432112345678;
-    result    = 0x8765432112345678;
-    resultdsp = 0;
-
-    __asm
-        ("shll_s.pw %0, %2, 0x0\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt)
-        );
-
-    dsp = (dsp >> 22) & 0x01;
-    if ((dsp != resultdsp) || (rd  != result)) {
-        printf("shll_s.pw wrong\n");
-        return -1;
-    }
-
-    rt        = 0x8765432112345678;
-    result    = 0x800000007fffffff;
-    resultdsp = 1;
-
-    __asm
-        ("shll_s.pw %0, %2, 0x8\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt)
-        );
-
-    dsp = (dsp >> 22) & 0x01;
-    if ((dsp != resultdsp) || (rd  != result)) {
-        printf("shll_s.pw wrong\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shll_s_qh.c b/tests/tcg/mips/mips64-dsp/shll_s_qh.c
deleted file mode 100644
index f2f57fa..0000000
--- a/tests/tcg/mips/mips64-dsp/shll_s_qh.c
+++ /dev/null
@@ -1,43 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, dsp;
-    long long res, resdsp;
-
-    rt = 0x9ba8765433456789;
-    res = 0x9ba8765433456789;
-    resdsp = 0x0;
-    __asm
-        ("shll_s.qh %0, %2, 0x0\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt)
-        );
-
-    dsp = (dsp >> 22) & 0x1;
-
-    if ((dsp != resdsp) || (rd != res)) {
-        printf("shll_s.qh error\n");
-        return -1;
-    }
-
-    rt = 0x9ba8765433456789;
-    res = 0x80007fff7fff7fff;
-    resdsp = 0x1;
-    __asm
-        ("shll_s.qh %0, %2, 0x3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt)
-        );
-
-    dsp = (dsp >> 22) & 0x1;
-
-    if ((dsp != resdsp) || (rd != res)) {
-        printf("shll_s.qh error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shll_s_w.c b/tests/tcg/mips/mips64-dsp/shll_s_w.c
deleted file mode 100644
index 5780061..0000000
--- a/tests/tcg/mips/mips64-dsp/shll_s_w.c
+++ /dev/null
@@ -1,26 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, dsp;
-    long long result, resultdsp;
-
-    rt        = 0x12345678;
-    result    = 0x7FFFFFFF;
-    resultdsp = 0x01;
-
-    __asm
-        ("shll_s.w %0, %2, 0x0B\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt)
-        );
-    dsp = (dsp >> 22) & 0x01;
-    if ((dsp != resultdsp) || (rd  != result)) {
-        printf("shll_s.w wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shllv_ob.c b/tests/tcg/mips/mips64-dsp/shllv_ob.c
deleted file mode 100644
index 96a2e6f..0000000
--- a/tests/tcg/mips/mips64-dsp/shllv_ob.c
+++ /dev/null
@@ -1,45 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, rs, dsp;
-    long long result, resultdsp;
-
-    rt        = 0x8765432112345678;
-    rs = 0x0;
-    result    = 0x8765432112345678;
-    resultdsp = 0;
-
-    __asm
-        ("shllv.ob %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt), "r"(rs)
-        );
-
-    dsp = (dsp >> 22) & 0x01;
-    if ((dsp != resultdsp) || (rd  != result)) {
-        printf("shllv.ob wrong\n");
-        return -1;
-    }
-
-    rt        = 0x8765432112345678;
-    rs = 0x4;
-    result    = 0x7050301020406080;
-    resultdsp = 1;
-
-    __asm
-        ("shllv.ob %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt), "r"(rs)
-        );
-
-    dsp = (dsp >> 22) & 0x01;
-    if ((dsp != resultdsp) || (rd  != result)) {
-        printf("shllv.ob wrong\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shllv_ph.c b/tests/tcg/mips/mips64-dsp/shllv_ph.c
deleted file mode 100644
index 532291f..0000000
--- a/tests/tcg/mips/mips64-dsp/shllv_ph.c
+++ /dev/null
@@ -1,27 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, dsp;
-    long long result, resultdsp;
-
-    rs        = 0x0B;
-    rt        = 0x12345678;
-    result    = 0xFFFFFFFFA000C000;
-    resultdsp = 1;
-
-    __asm
-        ("shllv.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt), "r"(rs)
-        );
-    dsp = (dsp >> 22) & 0x01;
-    if ((dsp != resultdsp) || (rd  != result)) {
-        printf("shllv.ph wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shllv_pw.c b/tests/tcg/mips/mips64-dsp/shllv_pw.c
deleted file mode 100644
index 8d4ec29..0000000
--- a/tests/tcg/mips/mips64-dsp/shllv_pw.c
+++ /dev/null
@@ -1,45 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, rs, dsp;
-    long long result, resultdsp;
-    rt        = 0x8765432112345678;
-    rs = 0x0;
-    result    = 0x8765432112345678;
-    resultdsp = 0;
-
-    __asm
-        ("shllv.pw %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt), "r"(rs)
-        );
-
-    dsp = (dsp >> 22) & 0x01;
-    if ((dsp != resultdsp) || (rd  != result)) {
-        printf("shllv.pw wrong\n");
-        return -1;
-    }
-
-
-    rt        = 0x8765432112345678;
-    rs = 0x8;
-    result    = 0x6543210034567800;
-    resultdsp = 1;
-
-    __asm
-        ("shllv.pw %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt), "r"(rs)
-        );
-
-    dsp = (dsp >> 22) & 0x01;
-    if ((dsp != resultdsp) || (rd  != result)) {
-        printf("shllv.pw wrong\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shllv_qb.c b/tests/tcg/mips/mips64-dsp/shllv_qb.c
deleted file mode 100644
index e49356b..0000000
--- a/tests/tcg/mips/mips64-dsp/shllv_qb.c
+++ /dev/null
@@ -1,27 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, dsp;
-    long long result, resultdsp;
-
-    rs     = 0x03;
-    rt     = 0x87654321;
-    result = 0x38281808;
-    resultdsp = 0x01;
-
-    __asm
-        ("shllv.qb %0, %2, %3\n\t"
-         "rddsp   %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt), "r"(rs)
-        );
-    dsp = (dsp >> 22) & 0x01;
-    if (rd != result) {
-        printf("shllv.qb wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shllv_qh.c b/tests/tcg/mips/mips64-dsp/shllv_qh.c
deleted file mode 100644
index 0de4077..0000000
--- a/tests/tcg/mips/mips64-dsp/shllv_qh.c
+++ /dev/null
@@ -1,45 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, rs, dsp;
-    long long result, resultdsp;
-
-    rt        = 0x8765432112345678;
-    rs = 0x0;
-    result    = 0x8765432112345678;
-    resultdsp = 0;
-
-    __asm
-        ("shllv.qh %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt), "r"(rs)
-        );
-
-    dsp = (dsp >> 22) & 0x01;
-    if ((dsp != resultdsp) || (rd  != result)) {
-        printf("shllv.qh wrong\n");
-        return -1;
-    }
-
-    rt        = 0x8765432112345678;
-    rs = 0x4;
-    result    = 0x7650321023406780;
-    resultdsp = 1;
-
-    __asm
-        ("shllv.qh %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt), "r"(rs)
-        );
-
-    dsp = (dsp >> 22) & 0x01;
-    if ((dsp != resultdsp) || (rd  != result)) {
-        printf("shllv.qh wrong\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shllv_s_ph.c b/tests/tcg/mips/mips64-dsp/shllv_s_ph.c
deleted file mode 100644
index 7e69f94..0000000
--- a/tests/tcg/mips/mips64-dsp/shllv_s_ph.c
+++ /dev/null
@@ -1,27 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, dsp;
-    long long result, resultdsp;
-
-    rs        = 0x0B;
-    rt        = 0x12345678;
-    result    = 0x7FFF7FFF;
-    resultdsp = 0x01;
-
-    __asm
-        ("shllv_s.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt), "r"(rs)
-        );
-    dsp = (dsp >> 22) & 0x01;
-    if ((dsp != resultdsp) || (rd  != result)) {
-        printf("shllv_s.ph wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shllv_s_pw.c b/tests/tcg/mips/mips64-dsp/shllv_s_pw.c
deleted file mode 100644
index f8dc8d2..0000000
--- a/tests/tcg/mips/mips64-dsp/shllv_s_pw.c
+++ /dev/null
@@ -1,45 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, rs, dsp;
-    long long result, resultdsp;
-
-    rt        = 0x8765432112345678;
-    rs = 0x0;
-    result    = 0x8765432112345678;
-    resultdsp = 0;
-
-    __asm
-        ("shllv_s.pw %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt), "r"(rs)
-        );
-
-    dsp = (dsp >> 22) & 0x01;
-    if ((dsp != resultdsp) || (rd  != result)) {
-        printf("shllv_s.pw wrong\n");
-        return -1;
-    }
-
-    rt        = 0x8765432112345678;
-    rs = 0x8;
-    result    = 0x800000007fffffff;
-    resultdsp = 1;
-
-    __asm
-        ("shllv_s.pw %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt), "r"(rs)
-        );
-
-    dsp = (dsp >> 22) & 0x01;
-    if ((dsp != resultdsp) || (rd  != result)) {
-        printf("shllv_s.pw wrong\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shllv_s_qh.c b/tests/tcg/mips/mips64-dsp/shllv_s_qh.c
deleted file mode 100644
index db3832d..0000000
--- a/tests/tcg/mips/mips64-dsp/shllv_s_qh.c
+++ /dev/null
@@ -1,45 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, rs, dsp;
-    long long result, resultdsp;
-
-    rt        = 0x8765432112345678;
-    rs = 0x0;
-    result    = 0x8765432112345678;
-    resultdsp = 0;
-
-    __asm
-        ("shllv_s.qh %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt), "r"(rs)
-        );
-
-    dsp = (dsp >> 22) & 0x01;
-    if ((dsp != resultdsp) || (rd  != result)) {
-        printf("shllv_s.qh wrong\n");
-        return -1;
-    }
-
-    rt        = 0x8765432112345678;
-    rs = 0x4;
-    result    = 0x80007fff7fff7fff;
-    resultdsp = 1;
-
-    __asm
-        ("shllv_s.qh %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt), "r"(rs)
-        );
-
-    dsp = (dsp >> 22) & 0x01;
-    if ((dsp != resultdsp) || (rd  != result)) {
-        printf("shllv_s.qh wrong\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shllv_s_w.c b/tests/tcg/mips/mips64-dsp/shllv_s_w.c
deleted file mode 100644
index 5f6af8b..0000000
--- a/tests/tcg/mips/mips64-dsp/shllv_s_w.c
+++ /dev/null
@@ -1,27 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, dsp;
-    long long result, resultdsp;
-
-    rs        = 0x0B;
-    rt        = 0x12345678;
-    result    = 0x7FFFFFFF;
-    resultdsp = 0x01;
-
-    __asm
-        ("shllv_s.w %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rt), "r"(rs)
-        );
-    dsp = (dsp >> 22) & 0x01;
-    if ((dsp != resultdsp) || (rd  != result)) {
-        printf("shllv_s.w wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shra_ob.c b/tests/tcg/mips/mips64-dsp/shra_ob.c
deleted file mode 100644
index d7fcfa8..0000000
--- a/tests/tcg/mips/mips64-dsp/shra_ob.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "io.h"
-
-int main()
-{
-    long long rd, rt;
-    long long res;
-
-    rt = 0xbc98756abc654389;
-    res = 0xfbf9f7f6fb0604f8;
-
-    __asm
-        ("shra.ob %0, %1, 0x4\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-
-    if (rd != res) {
-        printf("shra.ob error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shra_ph.c b/tests/tcg/mips/mips64-dsp/shra_ph.c
deleted file mode 100644
index a2dc014..0000000
--- a/tests/tcg/mips/mips64-dsp/shra_ph.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt;
-    long long result;
-
-    rt     = 0x87654321;
-    result = 0xFFFFFFFFF0EC0864;
-
-    __asm
-        ("shra.ph %0, %1, 0x03\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    if (rd != result) {
-        printf("shra.ph wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shra_pw.c b/tests/tcg/mips/mips64-dsp/shra_pw.c
deleted file mode 100644
index 33b1b8f..0000000
--- a/tests/tcg/mips/mips64-dsp/shra_pw.c
+++ /dev/null
@@ -1,36 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt;
-    long long res;
-
-    rt = 0x1234567887654321;
-    res = 0x01234567f8765432;
-
-    __asm
-        ("shra.pw %0, %1, 0x4"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-
-    if (rd != res) {
-        printf("shra.pw error\n");
-        return -1;
-    }
-
-    rt = 0x1234567887654321;
-    res = 0x1234567887654321;
-
-    __asm
-        ("shra.pw %0, %1, 0x0"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-
-    if (rd != res) {
-        printf("shra.pw error\n");
-        return -1;
-    }
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shra_qh.c b/tests/tcg/mips/mips64-dsp/shra_qh.c
deleted file mode 100644
index 85dbfef..0000000
--- a/tests/tcg/mips/mips64-dsp/shra_qh.c
+++ /dev/null
@@ -1,37 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt;
-    long long res;
-
-    rt = 0x8512345654323454;
-    res = 0xf851034505430345;
-
-    __asm
-        ("shra.qh %0, %1, 0x4\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-
-    if (rd != res) {
-        printf("shra.qh error\n");
-        return -1;
-    }
-
-    rt = 0x8512345654323454;
-    res = 0x8512345654323454;
-
-    __asm
-        ("shra.qh %0, %1, 0x0\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-
-    if (rd != res) {
-        printf("shra.qh error1\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shra_r_ob.c b/tests/tcg/mips/mips64-dsp/shra_r_ob.c
deleted file mode 100644
index 1847094..0000000
--- a/tests/tcg/mips/mips64-dsp/shra_r_ob.c
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "io.h"
-
-int main()
-{
-    long long rd, rt;
-    long long res;
-
-    rt = 0xbc98756abc654389;
-    res = 0xfcfaf8f7fc0705f9;
-
-    __asm
-        ("shra_r.ob %0, %1, 0x4\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-
-    if (rd != res) {
-        printf("shra_r.ob error\n");
-        return -1;
-    }
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shra_r_ph.c b/tests/tcg/mips/mips64-dsp/shra_r_ph.c
deleted file mode 100644
index e0943ad..0000000
--- a/tests/tcg/mips/mips64-dsp/shra_r_ph.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt;
-    long long result;
-
-    rt     = 0x87654321;
-    result = 0xFFFFFFFFF0ED0864;
-
-    __asm
-        ("shra_r.ph %0, %1, 0x03\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    if (rd != result) {
-        printf("shra_r.ph wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shra_r_pw.c b/tests/tcg/mips/mips64-dsp/shra_r_pw.c
deleted file mode 100644
index 6a86e68..0000000
--- a/tests/tcg/mips/mips64-dsp/shra_r_pw.c
+++ /dev/null
@@ -1,36 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt;
-    long long res;
-
-    rt = 0x1234567887654321;
-    res = 0x01234568f8765432;
-
-    __asm
-        ("shra_r.pw %0, %1, 0x4"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-
-    if (rd != res) {
-        printf("shra_r.pw error\n");
-        return -1;
-    }
-
-    rt = 0x1234567887654321;
-    res = 0x1234567887654321;
-
-    __asm
-        ("shra_r.pw %0, %1, 0x0"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-
-    if (rd != res) {
-        printf("shra_r.pw error\n");
-        return -1;
-    }
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shra_r_qh.c b/tests/tcg/mips/mips64-dsp/shra_r_qh.c
deleted file mode 100644
index d5c2110..0000000
--- a/tests/tcg/mips/mips64-dsp/shra_r_qh.c
+++ /dev/null
@@ -1,37 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt;
-    long long res;
-
-    rt = 0x8512345654323454;
-    res = 0xf0a2068b0a86068b;
-
-    __asm
-        ("shra_r.qh %0, %1, 0x3\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-
-    if (rd != res) {
-        printf("shra_r.qh error\n");
-        return -1;
-    }
-
-    rt = 0x8512345654323454;
-    res = 0x8512345654323454;
-
-    __asm
-        ("shra_r.qh %0, %1, 0x0\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-
-    if (rd != res) {
-        printf("shra_r.qh error1\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shra_r_w.c b/tests/tcg/mips/mips64-dsp/shra_r_w.c
deleted file mode 100644
index 36d2c9c..0000000
--- a/tests/tcg/mips/mips64-dsp/shra_r_w.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt;
-    long long result;
-
-    rt     = 0x87654321;
-    result = 0xFFFFFFFFF0ECA864;
-
-    __asm
-        ("shra_r.w %0, %1, 0x03\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    if (rd != result) {
-        printf("shra_r.w wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shrav_ph.c b/tests/tcg/mips/mips64-dsp/shrav_ph.c
deleted file mode 100644
index 1b4e983..0000000
--- a/tests/tcg/mips/mips64-dsp/shrav_ph.c
+++ /dev/null
@@ -1,24 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long result;
-
-    rs     = 0x03;
-    rt     = 0x87654321;
-    result = 0xFFFFFFFFF0EC0864;
-
-    __asm
-        ("shrav.ph %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rt), "r"(rs)
-        );
-    if (rd != result) {
-        printf("shrav.ph wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shrav_pw.c b/tests/tcg/mips/mips64-dsp/shrav_pw.c
deleted file mode 100644
index e19d515..0000000
--- a/tests/tcg/mips/mips64-dsp/shrav_pw.c
+++ /dev/null
@@ -1,38 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, rs;
-    long long res;
-
-    rt = 0x1234567887654321;
-    rs = 0x4;
-    res = 0x01234567f8765432;
-
-    __asm
-        ("shrav.pw %0, %1, %2"
-         : "=r"(rd)
-         : "r"(rt), "r"(rs)
-        );
-
-    if (rd != res) {
-        printf("shrav.pw error\n");
-        return -1;
-    }
-
-    rt = 0x1234567887654321;
-    rs = 0x0;
-    res = 0x1234567887654321;
-
-    __asm
-        ("shrav.pw %0, %1, %2"
-         : "=r"(rd)
-         : "r"(rt), "r"(rs)
-        );
-
-    if (rd != res) {
-        printf("shrav.pw error1\n");
-        return -1;
-    }
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shrav_qh.c b/tests/tcg/mips/mips64-dsp/shrav_qh.c
deleted file mode 100644
index dc92e09..0000000
--- a/tests/tcg/mips/mips64-dsp/shrav_qh.c
+++ /dev/null
@@ -1,39 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, rs;
-    long long res;
-
-    rt = 0x8512345654323454;
-    rs = 0x4;
-    res = 0xf851034505430345;
-
-    __asm
-        ("shrav.qh %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rt), "r"(rs)
-        );
-
-    if (rd != res) {
-        printf("shrav.qh error\n");
-        return -1;
-    }
-
-    rt = 0x8512345654323454;
-    rs = 0x0;
-    res = 0x8512345654323454;
-
-    __asm
-        ("shrav.qh %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rt), "r"(rs)
-        );
-
-    if (rd != res) {
-        printf("shrav.qh error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shrav_r_ph.c b/tests/tcg/mips/mips64-dsp/shrav_r_ph.c
deleted file mode 100644
index 350d529..0000000
--- a/tests/tcg/mips/mips64-dsp/shrav_r_ph.c
+++ /dev/null
@@ -1,24 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long result;
-
-    rs     = 0x03;
-    rt     = 0x87654321;
-    result = 0xFFFFFFFFF0ED0864;
-
-    __asm
-        ("shrav_r.ph %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rt), "r"(rs)
-        );
-    if (rd != result) {
-        printf("shrav_r.ph wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shrav_r_pw.c b/tests/tcg/mips/mips64-dsp/shrav_r_pw.c
deleted file mode 100644
index 25b0545..0000000
--- a/tests/tcg/mips/mips64-dsp/shrav_r_pw.c
+++ /dev/null
@@ -1,37 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, rs;
-    long long res;
-
-    rt = 0x1234567887654321;
-    rs = 0x4;
-    res = 0x01234568f8765432;
-
-    __asm
-        ("shrav_r.pw %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rt), "r"(rs)
-        );
-
-    if (rd != res) {
-        printf("shrav_r.pw error\n");
-        return -1;
-    }
-
-    rt = 0x1234567887654321;
-    rs = 0x0;
-    res = 0x1234567887654321;
-
-    __asm
-        ("shrav_r.pw %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rt), "r"(rs)
-        );
-    if (rd != res) {
-        printf("shrav_r.pw error\n");
-        return -1;
-    }
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shrav_r_qh.c b/tests/tcg/mips/mips64-dsp/shrav_r_qh.c
deleted file mode 100644
index fd187a1..0000000
--- a/tests/tcg/mips/mips64-dsp/shrav_r_qh.c
+++ /dev/null
@@ -1,39 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, rs;
-    long long res;
-
-    rt = 0x8512345654323454;
-    rs = 0x3;
-    res = 0xf0a2068b0a86068b;
-
-    __asm
-        ("shrav_r.qh %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rt), "r"(rs)
-        );
-
-    if (rd != res) {
-        printf("shrav_r.qh error\n");
-        return -1;
-    }
-
-    rt = 0x400000000000000;
-    rs = 0x0;
-    res = 0x400000000000000;
-
-    __asm
-        ("shrav_r.qh %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rt), "r"(rs)
-        );
-
-    if (rd != res) {
-        printf("shrav_r.qh error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shrav_r_w.c b/tests/tcg/mips/mips64-dsp/shrav_r_w.c
deleted file mode 100644
index 3766c72..0000000
--- a/tests/tcg/mips/mips64-dsp/shrav_r_w.c
+++ /dev/null
@@ -1,24 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long result;
-
-    rs     = 0x03;
-    rt     = 0x87654321;
-    result = 0xFFFFFFFFF0ECA864;
-
-    __asm
-        ("shrav_r.w %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rt), "r"(rs)
-        );
-    if (rd != result) {
-        printf("shrav_r.w wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shrl_ob.c b/tests/tcg/mips/mips64-dsp/shrl_ob.c
deleted file mode 100644
index a114571..0000000
--- a/tests/tcg/mips/mips64-dsp/shrl_ob.c
+++ /dev/null
@@ -1,38 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt;
-    long long res;
-
-    rt = 0xab76543212345678;
-    res = 0x150e0a0602060a0f;
-
-    __asm
-        ("shrl.ob %0, %1, 0x3\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-
-    if (rd != res) {
-        printf("shrl.ob error\n");
-        return -1;
-    }
-
-    rt = 0xab76543212345678;
-    res = 0xab76543212345678;
-
-    __asm
-        ("shrl.ob %0, %1, 0x0\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-
-    if (rd != res) {
-        printf("shrl.ob error\n");
-        return -1;
-    }
-
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shrl_qb.c b/tests/tcg/mips/mips64-dsp/shrl_qb.c
deleted file mode 100644
index c0e36db..0000000
--- a/tests/tcg/mips/mips64-dsp/shrl_qb.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt;
-    long long result;
-
-    rt     = 0x12345678;
-    result = 0x00010203;
-
-    __asm
-        ("shrl.qb %0, %1, 0x05\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    if (rd != result) {
-        printf("shrl.qb wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shrl_qh.c b/tests/tcg/mips/mips64-dsp/shrl_qh.c
deleted file mode 100644
index c156246..0000000
--- a/tests/tcg/mips/mips64-dsp/shrl_qh.c
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt;
-    long long res;
-
-    rt = 0x8765679abc543786;
-    res = 0x087606790bc50378;
-
-    __asm
-        ("shrl.qh %0, %1, 0x4\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-
-    if (rd != res) {
-        printf("shrl.qh error\n");
-        return -1;
-    }
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shrlv_ob.c b/tests/tcg/mips/mips64-dsp/shrlv_ob.c
deleted file mode 100644
index cb39c46..0000000
--- a/tests/tcg/mips/mips64-dsp/shrlv_ob.c
+++ /dev/null
@@ -1,39 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, rs;
-    long long res;
-
-    rt = 0xab76543212345678;
-    rs = 0x3;
-    res = 0x150e0a0602060a0f;
-
-    __asm
-        ("shrlv.ob %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rt), "r"(rs)
-        );
-
-    if (rd != res) {
-        printf("shrlv.ob error\n");
-        return -1;
-    }
-
-    rt = 0xab76543212345678;
-    rs = 0x0;
-    res = 0xab76543212345678;
-
-    __asm
-        ("shrlv.ob %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rt), "r"(rs)
-        );
-
-    if (rd != res) {
-        printf("shrlv.ob error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shrlv_qb.c b/tests/tcg/mips/mips64-dsp/shrlv_qb.c
deleted file mode 100644
index 5616aa9..0000000
--- a/tests/tcg/mips/mips64-dsp/shrlv_qb.c
+++ /dev/null
@@ -1,24 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long result;
-
-    rs     = 0x05;
-    rt     = 0x12345678;
-    result = 0x00010203;
-
-    __asm
-        ("shrlv.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rt), "r"(rs)
-        );
-    if (rd != result) {
-        printf("shrlv.qb wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/shrlv_qh.c b/tests/tcg/mips/mips64-dsp/shrlv_qh.c
deleted file mode 100644
index 05de2fd..0000000
--- a/tests/tcg/mips/mips64-dsp/shrlv_qh.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, rs;
-    long long res;
-
-    rt = 0x8765679abc543786;
-    rs = 0x4;
-    res = 0x087606790bc50378;
-
-    __asm
-        ("shrlv.qh %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rt), "r"(rs)
-        );
-
-    if (rd != res) {
-        printf("shrlv.qh error\n");
-        return -1;
-    }
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/subq_ph.c b/tests/tcg/mips/mips64-dsp/subq_ph.c
deleted file mode 100644
index 6a1b186..0000000
--- a/tests/tcg/mips/mips64-dsp/subq_ph.c
+++ /dev/null
@@ -1,27 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, dsp;
-    long long result, resultdsp;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result    = 0xFFFFFFFF8ACF1357;
-    resultdsp = 0x01;
-
-    __asm
-        ("subq.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 20) & 0x01;
-    if ((dsp != resultdsp) || (rd  != result)) {
-        printf("subq.ph wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/subq_pw.c b/tests/tcg/mips/mips64-dsp/subq_pw.c
deleted file mode 100644
index 32f96ba..0000000
--- a/tests/tcg/mips/mips64-dsp/subq_pw.c
+++ /dev/null
@@ -1,44 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, result, dspreg, dspresult;
-    rt = 0x123456789ABCDEF0;
-    rs = 0x123456789ABCDEF0;
-    result = 0x0;
-    dspresult = 0x0;
-
-    __asm
-        ("subq.pw %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dspreg)
-         : "r"(rs), "r"(rt)
-         );
-    dspreg = (dspreg >> 20) & 0x1;
-    if ((rd != result) || (dspreg != dspresult)) {
-        printf("subq.pw error1\n\t");
-
-        return -1;
-    }
-
-    rt = 0x123456789ABCDEF1;
-    rs = 0x123456789ABCDEF2;
-    result =  0x0000000000000001;
-    dspresult = 0x0;
-
-    __asm
-        ("subq.pw %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dspreg)
-         : "r"(rs), "r"(rt)
-        );
-    dspreg = (dspreg >> 20) & 0x1;
-    if ((rd != result) || (dspreg != dspresult)) {
-        printf("subq.pw error2\n");
-
-        return -1;
-    }
-
-    return 0;
-}
-
diff --git a/tests/tcg/mips/mips64-dsp/subq_qh.c b/tests/tcg/mips/mips64-dsp/subq_qh.c
deleted file mode 100644
index 76d5f0a..0000000
--- a/tests/tcg/mips/mips64-dsp/subq_qh.c
+++ /dev/null
@@ -1,26 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, result, dspreg, dspresult;
-    rt = 0x123456789ABCDEF0;
-    rs = 0x123456789ABCDEF0;
-    result = 0x0;
-    dspresult = 0x0;
-
-    __asm
-        ("subq.qh %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dspreg)
-         : "r"(rs), "r"(rt)
-        );
-    dspreg = (dspreg >> 20) & 0x1;
-    if ((rd != result) || (dspreg != dspresult)) {
-        printf("subq.qh error\n\t");
-
-        return -1;
-    }
-
-    return 0;
-}
-
diff --git a/tests/tcg/mips/mips64-dsp/subq_s_ph.c b/tests/tcg/mips/mips64-dsp/subq_s_ph.c
deleted file mode 100644
index 0b162f0..0000000
--- a/tests/tcg/mips/mips64-dsp/subq_s_ph.c
+++ /dev/null
@@ -1,27 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, dsp;
-    long long result, resultdsp;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result    = 0x7FFF1357;
-    resultdsp = 0x01;
-
-    __asm
-        ("subq_s.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 20) & 0x01;
-    if ((dsp != resultdsp) || (rd  != result)) {
-        printf("subq_s.ph wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/subq_s_pw.c b/tests/tcg/mips/mips64-dsp/subq_s_pw.c
deleted file mode 100644
index 4c080b7..0000000
--- a/tests/tcg/mips/mips64-dsp/subq_s_pw.c
+++ /dev/null
@@ -1,63 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, result, dspreg, dspresult;
-    rt = 0x9FFFFFFD9FFFFFFD;
-    rs = 0x4000000080000000;
-    result = 0x7fffffffe0000003;
-    dspresult = 0x1;
-
-    __asm
-        ("subq_s.pw %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dspreg)
-         : "r"(rs), "r"(rt)
-        );
-    dspreg = (dspreg >> 20) & 0x1;
-    if ((rd != result) || (dspreg != dspresult)) {
-        printf("subq_s.pw error1\n");
-
-        return -1;
-    }
-
-    rt = 0x123456789ABCDEF1;
-    rs = 0x123456789ABCDEF2;
-    result =  0x0000000000000001;
-    /* This time we do not set dspctrl, but set it in pre-action. */
-    dspresult = 0x1;
-
-    __asm
-        ("subq_s.pw %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dspreg)
-         : "r"(rs), "r"(rt)
-        );
-    dspreg = (dspreg >> 20) & 0x1;
-    if ((rd != result) || (dspreg != dspresult)) {
-        printf("subq_s.pw error2\n");
-
-        return -1;
-    }
-
-    rt = 0x8000000080000000;
-    rs = 0x7000000070000000;
-    dspresult = 0x1;
-
-    __asm
-        ("subq_s.pw %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dspreg)
-         : "r"(rs), "r"(rt)
-        );
-
-    dspreg = (dspreg >> 20) & 0x1;
-    if ((dspreg != dspresult)) {
-        printf("subq_s.pw error3\n");
-
-        return -1;
-    }
-
-    return 0;
-}
-
diff --git a/tests/tcg/mips/mips64-dsp/subq_s_qh.c b/tests/tcg/mips/mips64-dsp/subq_s_qh.c
deleted file mode 100644
index 4053b6b..0000000
--- a/tests/tcg/mips/mips64-dsp/subq_s_qh.c
+++ /dev/null
@@ -1,61 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, result, dspreg, dspresult;
-    rs = 0x123456789ABCDEF0;
-    rt = 0x123456789ABCDEF0;
-    result = 0x0;
-    dspresult = 0x0;
-
-    __asm
-        ("subq_s.qh %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dspreg)
-         : "r"(rs), "r"(rt)
-        );
-    dspreg = (dspreg >> 20) & 0x1;
-    if ((rd != result) || (dspreg != dspresult)) {
-        printf("subq_s.qh error1\n");
-
-        return -1;
-    }
-
-    rs = 0x4000000080000000;
-    rt = 0x9FFD00009FFC0000;
-    result =  0x7FFF0000E0040000;
-    dspresult = 0x1;
-
-    __asm
-        ("subq_s.qh %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dspreg)
-         : "r"(rs), "r"(rt)
-        );
-    dspreg = (dspreg >> 20) & 0x1;
-    if ((rd != result) || (dspreg != dspresult)) {
-        printf("subq_s.qh error2\n");
-
-        return -1;
-    }
-
-    rs = 0x8000000000000000;
-    rt = 0x7000000000000000;
-    result =  0x8000000000000000;
-    dspresult = 0x1;
-    __asm
-        ("subq_s.qh %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dspreg)
-         : "r"(rs), "r"(rt)
-        );
-
-    dspreg = (dspreg >> 20) & 0x1;
-    if ((rd != result) || (dspreg != dspresult)) {
-        printf("subq_s.qh error3\n");
-        return -1;
-    }
-
-    return 0;
-}
-
diff --git a/tests/tcg/mips/mips64-dsp/subq_s_w.c b/tests/tcg/mips/mips64-dsp/subq_s_w.c
deleted file mode 100644
index 91d32da..0000000
--- a/tests/tcg/mips/mips64-dsp/subq_s_w.c
+++ /dev/null
@@ -1,27 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, dsp;
-    long long result, resultdsp;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result    = 0x7FFFFFFF;
-    resultdsp = 0x01;
-
-    __asm
-        ("subq_s.w %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 20) & 0x01;
-    if ((dsp != resultdsp) || (rd  != result)) {
-        printf("subq_s.w wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/subu_ob.c b/tests/tcg/mips/mips64-dsp/subu_ob.c
deleted file mode 100644
index f670967..0000000
--- a/tests/tcg/mips/mips64-dsp/subu_ob.c
+++ /dev/null
@@ -1,26 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, result, dspreg, dspresult;
-    rs = 0x6F6F6F6F6F6F6F6F;
-    rt = 0x5E5E5E5E5E5E5E5E;
-    result = 0x1111111111111111;
-    dspresult = 0x0;
-
-    __asm
-        ("subu.ob %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dspreg)
-         : "r"(rs), "r"(rt)
-         );
-
-    if ((rd != result) || (dspreg != dspresult)) {
-        printf("subu.ob error\n");
-
-        return -1;
-    }
-
-    return 0;
-}
-
diff --git a/tests/tcg/mips/mips64-dsp/subu_qb.c b/tests/tcg/mips/mips64-dsp/subu_qb.c
deleted file mode 100644
index 9eb80df..0000000
--- a/tests/tcg/mips/mips64-dsp/subu_qb.c
+++ /dev/null
@@ -1,27 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, dsp;
-    long long result, resultdsp;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result    = 0xFFFFFFFF8BCF1357;
-    resultdsp = 0x01;
-
-    __asm
-        ("subu.qb %0, %2, %3\n\t"
-         "rddsp   %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 20) & 0x01;
-    if ((dsp != resultdsp) || (rd  != result)) {
-        printf("subu.qb wrong\n");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/subu_s_ob.c b/tests/tcg/mips/mips64-dsp/subu_s_ob.c
deleted file mode 100644
index 5df64e5..0000000
--- a/tests/tcg/mips/mips64-dsp/subu_s_ob.c
+++ /dev/null
@@ -1,26 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, dspreg, result, dspresult;
-    rs = 0x12345678ABCDEF0;
-    rt = 0x12345678ABCDEF1;
-    result = 0x00000000000;
-    dspresult = 0x01;
-
-    __asm
-        ("subu_s.ob %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dspreg)
-         : "r"(rs), "r"(rt)
-         );
-
-    dspreg = ((dspreg >> 20) & 0x01);
-    if ((rd != result) || (dspreg != dspresult)) {
-        printf("subu_s.ob error\n\t");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/subu_s_qb.c b/tests/tcg/mips/mips64-dsp/subu_s_qb.c
deleted file mode 100644
index 9de76f4..0000000
--- a/tests/tcg/mips/mips64-dsp/subu_s_qb.c
+++ /dev/null
@@ -1,27 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, dsp;
-    long long result, resultdsp;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result    = 0x00001357;
-    resultdsp = 0x01;
-
-    __asm
-        ("subu_s.qb %0, %2, %3\n\t"
-         "rddsp   %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 20) & 0x01;
-    if ((dsp != resultdsp) || (rd  != result)) {
-        printf("subu_s_qb wrong");
-
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dsp/wrdsp.c b/tests/tcg/mips/mips64-dsp/wrdsp.c
deleted file mode 100644
index 3033fd8..0000000
--- a/tests/tcg/mips/mips64-dsp/wrdsp.c
+++ /dev/null
@@ -1,48 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long dsp_i, dsp_o;
-    long long ccond_i, outflag_i, efi_i, c_i, scount_i, pos_i;
-    long long ccond_o, outflag_o, efi_o, c_o, scount_o, pos_o;
-    long long ccond_r, outflag_r, efi_r, c_r, scount_r, pos_r;
-
-    ccond_i = 0x000000BC;/* 4 */
-    outflag_i = 0x0000001B;/* 3 */
-    efi_i = 0x00000001;/* 5 */
-    c_i = 0x00000001;/* 2 */
-    scount_i = 0x0000000F;/* 1 */
-    pos_i = 0x0000000C;/* 0 */
-
-    dsp_i = (ccond_i << 24) | (outflag_i << 16) | (efi_i << 14) | (c_i << 13)
-            | (scount_i << 7) | pos_i;
-
-    ccond_r = ccond_i;
-    outflag_r = outflag_i;
-    efi_r = efi_i;
-    c_r = c_i;
-    scount_r = scount_i;
-    pos_r = pos_i;
-
-    __asm
-        ("wrdsp %1, 0x3F\n\t"
-         "rddsp %0, 0x3F\n\t"
-         : "=r"(dsp_o)
-         : "r"(dsp_i)
-        );
-
-    ccond_o = (dsp_o >> 24) & 0xFF;
-    outflag_o = (dsp_o >> 16) & 0xFF;
-    efi_o = (dsp_o >> 14) & 0x01;
-    c_o = (dsp_o >> 14) & 0x01;
-    scount_o = (dsp_o >> 7) & 0x3F;
-    pos_o = dsp_o & 0x1F;
-
-    if ((ccond_o != ccond_r) || (outflag_o != outflag_r) || (efi_o != efi_r) \
-            || (c_o != c_r) || (scount_o != scount_r) || (pos_o != pos_r)) {
-        printf("wrddsp wrong\n");
-
-        return -1;
-    }
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/absq_s_qb.c b/tests/tcg/mips/mips64-dspr2/absq_s_qb.c
deleted file mode 100644
index f7aec3e..0000000
--- a/tests/tcg/mips/mips64-dspr2/absq_s_qb.c
+++ /dev/null
@@ -1,42 +0,0 @@
-#include "io.h"
-int main()
-{
-    long long input, result, dsp;
-    long long hope;
-
-    input = 0x701BA35E;
-    hope  = 0x701B5D5E;
-
-    __asm
-        ("absq_s.qb %0, %1\n\t"
-         : "=r"(result)
-         : "r"(input)
-        );
-    if (result != hope) {
-        printf("absq_s.qb error\n");
-        return -1;
-    }
-
-    input = 0x801BA35E;
-    hope  = 0x7F1B5D5E;
-
-    __asm
-        ("absq_s.qb %0, %2\n\t"
-         "rddsp %1\n\t"
-         : "=r"(result), "=r"(dsp)
-         : "r"(input)
-        );
-    dsp = dsp >> 20;
-    dsp &= 0x01;
-    if (result != hope) {
-        printf("absq_s.qb error\n");
-        return -1;
-    }
-
-    if (dsp != 1) {
-        printf("absq_s.qb error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/addqh_ph.c b/tests/tcg/mips/mips64-dspr2/addqh_ph.c
deleted file mode 100644
index 6b43cb8..0000000
--- a/tests/tcg/mips/mips64-dspr2/addqh_ph.c
+++ /dev/null
@@ -1,35 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long result;
-
-    rs     = 0x706A13FE;
-    rt     = 0x13065174;
-    result = 0x41B832B9;
-    __asm
-        ("addqh.ph %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    if (result != rd) {
-        printf("addqh.ph error!\n");
-        return -1;
-    }
-
-    rs     = 0x81000100;
-    rt     = 0xc2000100;
-    result = 0xffffffffa1800100;
-    __asm
-        ("addqh.ph %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    if (result != rd) {
-        printf("addqh.ph error!\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/addqh_r_ph.c b/tests/tcg/mips/mips64-dspr2/addqh_r_ph.c
deleted file mode 100644
index 890ec98..0000000
--- a/tests/tcg/mips/mips64-dspr2/addqh_r_ph.c
+++ /dev/null
@@ -1,35 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long result;
-
-    rs     = 0x706A13FE;
-    rt     = 0x13065174;
-    result = 0x41B832B9;
-    __asm
-        ("addqh_r.ph %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    if (rd != result) {
-        printf("addqh_r.ph error\n");
-        return -1;
-    }
-
-    rs     = 0x81010100;
-    rt     = 0xc2000100;
-    result = 0xffffffffa1810100;
-    __asm
-        ("addqh_r.ph %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    if (rd != result) {
-        printf("addqh_r.ph error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/addqh_r_w.c b/tests/tcg/mips/mips64-dspr2/addqh_r_w.c
deleted file mode 100644
index d324dec..0000000
--- a/tests/tcg/mips/mips64-dspr2/addqh_r_w.c
+++ /dev/null
@@ -1,38 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long result;
-
-    rs     = 0x00000010;
-    rt     = 0x00000001;
-    result = 0x00000009;
-
-    __asm
-        ("addqh_r.w  %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-
-    if (rd != result) {
-        printf("addqh_r.w error!\n");
-        return -1;
-    }
-    rs     = 0xFFFFFFFE;
-    rt     = 0x00000001;
-    result = 0x00000000;
-
-    __asm
-        ("addqh_r.w  %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-
-    if (rd != result) {
-        printf("addqh_r.w error!\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/addqh_w.c b/tests/tcg/mips/mips64-dspr2/addqh_w.c
deleted file mode 100644
index 78559e6..0000000
--- a/tests/tcg/mips/mips64-dspr2/addqh_w.c
+++ /dev/null
@@ -1,39 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long result;
-
-    rs     = 0x00000010;
-    rt     = 0x00000001;
-    result = 0x00000008;
-
-    __asm
-        ("addqh.w  %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-
-    if (rd != result) {
-        printf("addqh.w wrong\n");
-        return -1;
-    }
-
-    rs     = 0xFFFFFFFE;
-    rt     = 0x00000001;
-    result = 0xFFFFFFFFFFFFFFFF;
-
-    __asm
-        ("addqh.w  %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-
-    if (rd != result) {
-        printf("addqh.w wrong\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/addu_ph.c b/tests/tcg/mips/mips64-dspr2/addu_ph.c
deleted file mode 100644
index d64c8cd..0000000
--- a/tests/tcg/mips/mips64-dspr2/addu_ph.c
+++ /dev/null
@@ -1,37 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long dsp;
-    long long result;
-
-    rs     = 0x00FF00FF;
-    rt     = 0x00010001;
-    result = 0x01000100;
-    __asm
-        ("addu.ph %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    if (rd != result) {
-        printf("1 addu.ph error\n");
-        return -1;
-    }
-
-    rs     = 0xFFFF1111;
-    rt     = 0x00020001;
-    result = 0x00011112;
-    __asm
-        ("addu.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    if ((rd != result) || (((dsp >> 20) & 0x01) != 1)) {
-        printf("2 addu.ph error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/addu_qh.c b/tests/tcg/mips/mips64-dspr2/addu_qh.c
deleted file mode 100644
index edcbf34..0000000
--- a/tests/tcg/mips/mips64-dspr2/addu_qh.c
+++ /dev/null
@@ -1,43 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, dspreg;
-    long long result, dspresult;
-
-    rs = 0x123456787FFF0000;
-    rt = 0x1111111180000000;
-    result = 0x23456789FFFF0000;
-    dspresult = 0x0;
-
-    __asm("addu.qh %0, %2, %3\n\t"
-          "rddsp %1\n\t"
-          : "=r"(rd), "=r"(dspreg)
-          : "r"(rs), "r"(rt)
-         );
-
-    dspreg = ((dspreg >> 20) & 0x01);
-    if ((rd != result) || (dspreg != dspresult)) {
-        printf("addu.qh error\n");
-        return -1;
-    }
-
-    rs = 0x123456787FFF0000;
-    rt = 0x1111111180020000;
-    result = 0x23456789FFFF0000;
-    dspresult = 0x01;
-
-    __asm("addu.qh %0, %2, %3\n\t"
-          "rddsp %1\n\t"
-          : "=r"(rd), "=r"(dspreg)
-          : "r"(rs), "r"(rt)
-         );
-
-    dspreg = ((dspreg >> 20) & 0x01);
-    if ((rd != result) || (dspreg != dspresult)) {
-        printf("addu.qh overflow error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/addu_s_ph.c b/tests/tcg/mips/mips64-dspr2/addu_s_ph.c
deleted file mode 100644
index 9250edb..0000000
--- a/tests/tcg/mips/mips64-dspr2/addu_s_ph.c
+++ /dev/null
@@ -1,37 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long dsp;
-    long long result;
-
-    rs     = 0x00FE00FE;
-    rt     = 0x00020001;
-    result = 0x010000FF;
-    __asm
-        ("addu_s.ph %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    if (rd != result) {
-        printf("addu_s.ph error\n");
-        return -1;
-    }
-
-    rs     = 0xFFFF1111;
-    rt     = 0x00020001;
-    result = 0xFFFFFFFFFFFF1112;
-    __asm
-        ("addu_s.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    if ((rd != result) || (((dsp >> 20) & 0x01) != 1)) {
-        printf("addu_s.ph error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/addu_s_qh.c b/tests/tcg/mips/mips64-dspr2/addu_s_qh.c
deleted file mode 100644
index b0c1626..0000000
--- a/tests/tcg/mips/mips64-dspr2/addu_s_qh.c
+++ /dev/null
@@ -1,43 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, dspreg;
-    long long result, dspresult;
-
-    rs = 0x123456787FFF0000;
-    rt = 0x1111111180000000;
-    result = 0x23456789FFFF0000;
-    dspresult = 0x0;
-
-    __asm("addu_s.qh %0, %2, %3\n\t"
-          "rddsp %1\n\t"
-          : "=r"(rd), "=r"(dspreg)
-          : "r"(rs), "r"(rt)
-         );
-
-    dspreg = ((dspreg >> 20) & 0x01);
-    if ((rd != result) || (dspreg != dspresult)) {
-        printf("1 addu_s.qh error\n");
-        return -1;
-    }
-
-    rs = 0x12345678FFFF0000;
-    rt = 0x11111111000F0000;
-    result = 0x23456789FFFF0000;
-    dspresult = 0x01;
-
-    __asm("addu_s.qh %0, %2, %3\n\t"
-          "rddsp %1\n\t"
-          : "=r"(rd), "=r"(dspreg)
-          : "r"(rs), "r"(rt)
-         );
-
-    dspreg = ((dspreg >> 20) & 0x01);
-    if ((rd != result) || (dspreg != dspresult)) {
-        printf("2 addu_s.qh error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/adduh_ob.c b/tests/tcg/mips/mips64-dspr2/adduh_ob.c
deleted file mode 100644
index 9b309f6..0000000
--- a/tests/tcg/mips/mips64-dspr2/adduh_ob.c
+++ /dev/null
@@ -1,35 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, result;
-    rs = 0xFF987CDEBCEF2356;
-    rt = 0xFF987CDEBCEF2354;
-    result = 0xFF987CDEBCEF2355;
-
-    __asm("adduh.ob %0, %1, %2\n\t"
-          : "=r"(rd)
-          : "r"(rs), "r"(rt)
-         );
-
-    if (rd != result) {
-        printf("adduh.ob error\n\t");
-        return -1;
-    }
-
-    rs = 0xac50691729945316;
-    rt = 0xb9234ca3f5573162;
-    result = 0xb2395a5d8f75423c;
-
-    __asm("adduh.ob %0, %1, %2\n\t"
-          : "=r"(rd)
-          : "r"(rs), "r"(rt)
-         );
-
-    if (rd != result) {
-        printf("adduh.ob error\n\t");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/adduh_qb.c b/tests/tcg/mips/mips64-dspr2/adduh_qb.c
deleted file mode 100644
index 796b409..0000000
--- a/tests/tcg/mips/mips64-dspr2/adduh_qb.c
+++ /dev/null
@@ -1,35 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long result;
-
-    rs     = 0xFF0055AA;
-    rt     = 0x0113421B;
-    result = 0xffffffff80094B62;
-    __asm
-        ("adduh.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    if (rd != result) {
-        printf("adduh.qb error\n");
-        return -1;
-    }
-    rs     = 0xFFFF0FFF;
-    rt     = 0x00010111;
-    result = 0x7F800888;
-
-    __asm
-        ("adduh.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    if (rd != result) {
-        printf("adduh.qb error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/adduh_r_ob.c b/tests/tcg/mips/mips64-dspr2/adduh_r_ob.c
deleted file mode 100644
index 832de83..0000000
--- a/tests/tcg/mips/mips64-dspr2/adduh_r_ob.c
+++ /dev/null
@@ -1,35 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, result;
-    rs = 0xFF987CDEBCEF2356;
-    rt = 0xFF987CDEBCEF2355;
-    result = 0xFF987CDEBCEF2356;
-
-    __asm("adduh_r.ob %0, %1, %2\n\t"
-          : "=r"(rd)
-          : "r"(rs), "r"(rt)
-         );
-
-    if (rd != result) {
-        printf("1 adduh_r.ob error\n\t");
-        return -1;
-    }
-
-    rs = 0xac50691729945316;
-    rt = 0xb9234ca3f5573162;
-    result = 0xb33a5b5d8f76423c;
-
-    __asm("adduh_r.ob %0, %1, %2\n\t"
-          : "=r"(rd)
-          : "r"(rs), "r"(rt)
-         );
-
-    if (rd != result) {
-        printf("2 adduh_r.ob error\n\t");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/adduh_r_qb.c b/tests/tcg/mips/mips64-dspr2/adduh_r_qb.c
deleted file mode 100644
index ae65fa5..0000000
--- a/tests/tcg/mips/mips64-dspr2/adduh_r_qb.c
+++ /dev/null
@@ -1,35 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long result;
-
-    rs     = 0xFF0055AA;
-    rt     = 0x01112211;
-    result = 0xffffffff80093C5E;
-    __asm
-        ("adduh_r.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    if (rd != result) {
-        printf("adduh_r.qb error\n");
-        return -1;
-    }
-
-    rs     = 0xFFFF0FFF;
-    rt     = 0x00010111;
-    result = 0xffffffff80800888;
-    __asm
-        ("adduh_r.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    if (rd != result) {
-        printf("adduh_r.qb error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/append.c b/tests/tcg/mips/mips64-dspr2/append.c
deleted file mode 100644
index 68a7cec..0000000
--- a/tests/tcg/mips/mips64-dspr2/append.c
+++ /dev/null
@@ -1,35 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long long rs, rt;
-    long long result;
-
-    rs     = 0xFF0055AA;
-    rt     = 0x0113421B;
-    result = 0x02268436;
-    __asm
-        ("append %0, %1, 0x01\n\t"
-         : "+r"(rt)
-         : "r"(rs)
-        );
-    if (rt != result) {
-        printf("append error\n");
-        return -1;
-    }
-
-    rs     = 0xFFFF0FFF;
-    rt     = 0x00010111;
-    result = 0x0010111F;
-    __asm
-        ("append %0, %1, 0x04\n\t"
-         : "+r"(rt)
-         : "r"(rs)
-        );
-    if (rt != result) {
-        printf("append error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/balign.c b/tests/tcg/mips/mips64-dspr2/balign.c
deleted file mode 100644
index 7fbe815..0000000
--- a/tests/tcg/mips/mips64-dspr2/balign.c
+++ /dev/null
@@ -1,35 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long long rs, rt;
-    long long result;
-
-    rs     = 0xFF0055AA;
-    rt     = 0x0113421B;
-    result = 0x13421BFF;
-    __asm
-        ("balign %0, %1, 0x01\n\t"
-         : "+r"(rt)
-         : "r"(rs)
-        );
-    if (rt != result) {
-        printf("balign error\n");
-        return -1;
-    }
-
-    rs     = 0xFFFF0FFF;
-    rt     = 0x00010111;
-    result = 0x11FFFF0F;
-    __asm
-        ("balign %0, %1, 0x03\n\t"
-         : "+r"(rt)
-         : "r"(rs)
-        );
-    if (rt != result) {
-        printf("balign error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/cmpgdu_eq_ob.c b/tests/tcg/mips/mips64-dspr2/cmpgdu_eq_ob.c
deleted file mode 100644
index 61217f3..0000000
--- a/tests/tcg/mips/mips64-dspr2/cmpgdu_eq_ob.c
+++ /dev/null
@@ -1,44 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, result, dspreg, dspresult;
-
-    rs = 0x123456789ABCDEF0;
-    rt = 0x123456789ABCDEFF;
-    result = 0xFE;
-    dspresult = 0xFE;
-
-    __asm("cmpgdu.eq.ob %0, %2, %3\n\t"
-          "rddsp %1"
-          : "=r"(rd), "=r"(dspreg)
-          : "r"(rs), "r"(rt)
-         );
-
-    dspreg = ((dspreg >> 24) & 0xFF);
-
-    if ((rd != result) || (dspreg != dspresult)) {
-        printf("1 cmpgdu.eq.ob error\n");
-        return -1;
-    }
-
-    rs = 0x133256789ABCDEF0;
-    rt = 0x123456789ABCDEFF;
-    result = 0x3E;
-    dspresult = 0x3E;
-
-    __asm("cmpgdu.eq.ob %0, %2, %3\n\t"
-          "rddsp %1"
-          : "=r"(rd), "=r"(dspreg)
-          : "r"(rs), "r"(rt)
-         );
-
-    dspreg = ((dspreg >> 24) & 0xFF);
-
-    if ((rd != result) || (dspreg != dspresult)) {
-        printf("2 cmpgdu.eq.ob error\n");
-        return -1;
-    }
-
-   return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/cmpgdu_eq_qb.c b/tests/tcg/mips/mips64-dspr2/cmpgdu_eq_qb.c
deleted file mode 100644
index c63f648..0000000
--- a/tests/tcg/mips/mips64-dspr2/cmpgdu_eq_qb.c
+++ /dev/null
@@ -1,41 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long dsp;
-    long long result;
-
-    rs         = 0x11777066;
-    rt         = 0x55AA70FF;
-    result     = 0x02;
-    __asm
-        ("cmpgdu.eq.qb %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 24) & 0x0F;
-    if ((rd != result) || (dsp != result)) {
-        printf("cmpgdu.eq.qb error\n");
-        return -1;
-    }
-
-    rs     = 0x11777066;
-    rt     = 0x11777066;
-    result = 0x0F;
-    __asm
-        ("cmpgdu.eq.qb %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 24) & 0x0F;
-
-    if ((rd != result) || (dsp != result)) {
-        printf("cmpgdu.eq.qb error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/cmpgdu_le_ob.c b/tests/tcg/mips/mips64-dspr2/cmpgdu_le_ob.c
deleted file mode 100644
index b3da098..0000000
--- a/tests/tcg/mips/mips64-dspr2/cmpgdu_le_ob.c
+++ /dev/null
@@ -1,44 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, result, dspreg, dspresult;
-
-    rs = 0x123456789abcdef0;
-    rt = 0x123456789abcdeff;
-    dspresult = 0xff;
-    result = 0xff;
-
-    __asm("cmpgdu.le.ob %0, %2, %3\n\t"
-          "rddsp %1"
-          : "=r"(rd), "=r"(dspreg)
-          : "r"(rs), "r"(rt)
-         );
-
-    dspreg = ((dspreg >> 24) & 0xff);
-
-    if ((rd != result) || (dspreg != dspresult)) {
-        printf("cmpgdu.le.ob error\n");
-        return -1;
-    }
-
-    rs = 0x113556789ABCDEF0;
-    rt = 0x123456789ABCDEFF;
-    result = 0xBE;
-    dspresult = 0xFE;
-
-    __asm("cmpgdu.eq.ob %0, %2, %3\n\t"
-          "rddsp %1"
-          : "=r"(rd), "=r"(dspreg)
-          : "r"(rs), "r"(rt)
-         );
-
-    dspreg = ((dspreg >> 24) & 0xFF);
-
-    if ((rd != result) || (dspreg != dspresult)) {
-        printf("cmpgdu.eq.ob error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/cmpgdu_le_qb.c b/tests/tcg/mips/mips64-dspr2/cmpgdu_le_qb.c
deleted file mode 100644
index f0a60ea..0000000
--- a/tests/tcg/mips/mips64-dspr2/cmpgdu_le_qb.c
+++ /dev/null
@@ -1,48 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long dsp;
-    long long result;
-
-    rs         = 0x11777066;
-    rt         = 0x55AA70FF;
-    result     = 0x0F;
-    __asm
-        ("cmpgdu.le.qb %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 24) & 0x0F;
-    if (rd  != result) {
-        printf("cmpgdu.le.qb error\n");
-        return -1;
-    }
-    if (dsp != result) {
-        printf("cmpgdu.le.qb error\n");
-        return -1;
-    }
-
-    rs     = 0x11777066;
-    rt     = 0x11707066;
-    result = 0x0B;
-    __asm
-        ("cmpgdu.le.qb %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 24) & 0x0F;
-    if (rd  != result) {
-        printf("cmpgdu.le.qb error\n");
-        return -1;
-    }
-    if (dsp != result) {
-        printf("cmpgdu.le.qb error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/cmpgdu_lt_ob.c b/tests/tcg/mips/mips64-dspr2/cmpgdu_lt_ob.c
deleted file mode 100644
index d80b4e6..0000000
--- a/tests/tcg/mips/mips64-dspr2/cmpgdu_lt_ob.c
+++ /dev/null
@@ -1,44 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, result, dspreg, dspresult;
-
-    rs = 0x123456789ABCDEF0;
-    rt = 0x123456789ABCDEFF;
-    dspresult = 0x01;
-    result = 0x01;
-
-    __asm("cmpgdu.lt.ob %0, %2, %3\n\t"
-          "rddsp %1"
-          : "=r"(rd), "=r"(dspreg)
-          : "r"(rs), "r"(rt)
-         );
-
-    dspreg = ((dspreg >> 24) & 0xFF);
-
-    if ((rd != result) || (dspreg != dspresult)) {
-        printf("cmpgdu.lt.ob error\n");
-        return -1;
-    }
-
-    rs = 0x143356789ABCDEF0;
-    rt = 0x123456789ABCDEFF;
-    dspresult = 0x41;
-    result = 0x41;
-
-    __asm("cmpgdu.lt.ob %0, %2, %3\n\t"
-          "rddsp %1"
-          : "=r"(rd), "=r"(dspreg)
-          : "r"(rs), "r"(rt)
-         );
-
-    dspreg = ((dspreg >> 24) & 0xFF);
-
-    if ((rd != result) || (dspreg != dspresult)) {
-        printf("cmpgdu.lt.ob error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/cmpgdu_lt_qb.c b/tests/tcg/mips/mips64-dspr2/cmpgdu_lt_qb.c
deleted file mode 100644
index a71e4e3..0000000
--- a/tests/tcg/mips/mips64-dspr2/cmpgdu_lt_qb.c
+++ /dev/null
@@ -1,48 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long dsp;
-    long long result;
-
-    rs         = 0x11777066;
-    rt         = 0x55AA70FF;
-    result     = 0x0D;
-    __asm
-        ("cmpgdu.lt.qb %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 24) & 0x0F;
-    if (rd  != result) {
-        printf("cmpgdu.lt.qb error\n");
-        return -1;
-    }
-    if (dsp != result) {
-        printf("cmpgdu.lt.qb error\n");
-        return -1;
-    }
-
-    rs     = 0x11777066;
-    rt     = 0x11777066;
-    result = 0x00;
-    __asm
-        ("cmpgdu.lt.qb %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 24) & 0x0F;
-    if (rd  != result) {
-        printf("cmpgdu.lt.qb error\n");
-        return -1;
-    }
-    if (dsp != result) {
-        printf("cmpgdu.lt.qb error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/dbalign.c b/tests/tcg/mips/mips64-dspr2/dbalign.c
deleted file mode 100644
index c7431b1..0000000
--- a/tests/tcg/mips/mips64-dspr2/dbalign.c
+++ /dev/null
@@ -1,39 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rt, rs;
-    long long res;
-
-    rt = 0x1234567887654321;
-    rs = 0xabcd1234abcd1234;
-
-    res = 0x34567887654321ab;
-
-    asm ("dbalign %0, %1, 0x1\n"
-         : "=r"(rt)
-         : "r"(rs)
-        );
-
-    if (rt != res) {
-        printf("dbalign error\n");
-        return -1;
-    }
-
-    rt = 0x1234567887654321;
-    rs = 0xabcd1234abcd1234;
-
-    res = 0x7887654321abcd12;
-
-    asm ("dbalign %0, %1, 0x3\n"
-         : "=r"(rt)
-         : "r"(rs)
-        );
-
-    if (rt != res) {
-        printf("dbalign error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/dpa_w_ph.c b/tests/tcg/mips/mips64-dspr2/dpa_w_ph.c
deleted file mode 100644
index 39dc99a..0000000
--- a/tests/tcg/mips/mips64-dspr2/dpa_w_ph.c
+++ /dev/null
@@ -1,47 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long long rs, rt;
-    long long ach = 5, acl = 5;
-    long long resulth, resultl;
-
-    rs = 0x00FF00FF;
-    rt = 0x00010002;
-    resulth = 0x05;
-    resultl = 0x0302;
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpa.w.ph $ac1, %2, %3\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         : "+r"(ach), "+r"(acl)
-         : "r"(rs), "r"(rt)
-        );
-    if ((ach != resulth) || (acl != resultl)) {
-        printf("1 dpa.w.ph error\n");
-        return -1;
-    }
-
-    ach = 6, acl = 7;
-    rs = 0xFFFF00FF;
-    rt = 0xFFFF0002;
-    resulth = 0x05;
-    resultl = 0xfffffffffffe0206;
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpa.w.ph $ac1, %2, %3\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         : "+r"(ach), "+r"(acl)
-         : "r"(rs), "r"(rt)
-        );
-    if ((ach != resulth) || (acl != resultl)) {
-        printf("2 dpa.w.ph error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/dpa_w_qh.c b/tests/tcg/mips/mips64-dspr2/dpa_w_qh.c
deleted file mode 100644
index 1411e44..0000000
--- a/tests/tcg/mips/mips64-dspr2/dpa_w_qh.c
+++ /dev/null
@@ -1,56 +0,0 @@
-#include"io.h"
-int main(void)
-{
-    long long rt, rs;
-    long long achi, acli;
-    long long acho, aclo;
-    long long resh, resl;
-
-    achi = 0x1;
-    acli = 0x1;
-
-    rs = 0x0001000100010001;
-    rt = 0x0002000200020002;
-
-    resh = 0x1;
-    resl = 0x9;
-
-    asm("mthi %2, $ac1\t\n"
-        "mtlo %3, $ac1\t\n"
-        "dpa.w.qh $ac1, %4, %5\t\n"
-        "mfhi %0, $ac1\t\n"
-        "mflo %1, $ac1\t\n"
-        : "=r"(acho), "=r"(aclo)
-        : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-       );
-
-    if ((acho != resh) || (aclo != resl)) {
-        printf("1 dpa.w.qh error\n");
-        return -1;
-    }
-
-
-    achi = 0xffffffff;
-    acli = 0xaaaaaaaa;
-
-    rs = 0xaaaabbbbccccdddd;
-    rt = 0x7777888899996666;
-
-    resh = 0xffffffffffffffff;
-    resl = 0x320cdf02;
-
-    asm("mthi %2, $ac1\t\n"
-        "mtlo %3, $ac1\t\n"
-        "dpa.w.qh $ac1, %4, %5\t\n"
-        "mfhi %0, $ac1\t\n"
-        "mflo %1, $ac1\t\n"
-        : "=r"(acho), "=r"(aclo)
-        : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-       );
-    if ((acho != resh) || (aclo != resl)) {
-        printf("2 dpa.w.qh error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/dpaqx_s_w_ph.c b/tests/tcg/mips/mips64-dspr2/dpaqx_s_w_ph.c
deleted file mode 100644
index 51252fb..0000000
--- a/tests/tcg/mips/mips64-dspr2/dpaqx_s_w_ph.c
+++ /dev/null
@@ -1,97 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long long rs, rt, dsp;
-    long long ach = 5, acl = 5;
-    long long resulth, resultl, resultdsp;
-
-    rs     = 0x800000FF;
-    rt     = 0x00018000;
-    resulth = 0x05;
-    resultl = 0xFFFFFFFF80000202;
-    resultdsp = 0x01;
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpaqx_s.w.ph $ac1, %3, %4\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "+r"(ach), "+r"(acl), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 17) & 0x01;
-    if (dsp != resultdsp) {
-        printf("dpaqx_s.w.ph error\n");
-        return -1;
-    }
-    if (ach != resulth) {
-        printf("dpaqx_s.w.ph error\n");
-        return -1;
-    }
-    if (acl != resultl) {
-        printf("dpaqx_s.w.ph error\n");
-        return -1;
-    }
-
-    ach    = 5;
-    acl    = 5;
-    rs     = 0x00FF00FF;
-    rt     = 0x00010002;
-    resulth = 0x05;
-    resultl = 0x05FF;
-    /***********************************************************
-     * Because of we set outflag at last time, although this
-     * time we set nothing, but it is stay the last time value.
-     **********************************************************/
-    resultdsp = 0x01;
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpaqx_s.w.ph $ac1, %3, %4\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "+r"(ach), "+r"(acl), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 17) & 0x01;
-    if (dsp != resultdsp) {
-        printf("dpaqx_s.w.ph error\n");
-        return -1;
-    }
-    if (ach != resulth) {
-        printf("dpaqx_s.w.ph error\n");
-        return -1;
-    }
-    if (acl != resultl) {
-        printf("dpaqx_s.w.ph error\n");
-        return -1;
-    }
-
-    ach    = 5;
-    acl    = 5;
-    rs     = 0x800000FF;
-    rt     = 0x00028000;
-    resulth = 0x05;
-    resultl = 0xffffffff80000400;
-    resultdsp = 0x01;
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpaqx_s.w.ph $ac1, %3, %4\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "+r"(ach), "+r"(acl), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 17) & 0x01;
-    if ((dsp != resultdsp) || (ach != resulth) || (acl != resultl)) {
-        printf("dpaqx_s.w.ph error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/dpaqx_sa_w_ph.c b/tests/tcg/mips/mips64-dspr2/dpaqx_sa_w_ph.c
deleted file mode 100644
index 18d6b3a..0000000
--- a/tests/tcg/mips/mips64-dspr2/dpaqx_sa_w_ph.c
+++ /dev/null
@@ -1,54 +0,0 @@
-#include "io.h"
-
-int main()
-{
-    long long rs, rt, dsp;
-    long long ach = 5, acl = 5;
-    long long resulth, resultl, resultdsp;
-
-    rs     = 0x00FF00FF;
-    rt     = 0x00010002;
-    resulth = 0x00;
-    resultl = 0x7FFFFFFF;
-    resultdsp = 0x01;
-    __asm
-        ("wrdsp %2\n\t"
-         "mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpaqx_sa.w.ph $ac1, %3, %4\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "+r"(ach), "+r"(acl), "+r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    if ((dsp >> (16 + 1) != resultdsp) || (ach != resulth) ||
-        (acl != resultl)) {
-        printf("dpaqx_sa.w.ph errror\n");
-    }
-
-    ach = 9;
-    acl = 0xb;
-    rs     = 0x800000FF;
-    rt     = 0x00018000;
-    resulth = 0x00;
-    resultl = 0x7fffffff;
-    resultdsp = 0x01;
-    __asm
-        ("wrdsp %2\n\t"
-         "mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpaqx_sa.w.ph $ac1, %3, %4\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "+r"(ach), "+r"(acl), "+r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    if ((dsp >> (16 + 1) != resultdsp) || (ach != resulth) ||
-        (acl != resultl)) {
-        printf("dpaqx_sa.w.ph errror\n");
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/dpax_w_ph.c b/tests/tcg/mips/mips64-dspr2/dpax_w_ph.c
deleted file mode 100644
index 9d595fc..0000000
--- a/tests/tcg/mips/mips64-dspr2/dpax_w_ph.c
+++ /dev/null
@@ -1,32 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long rs, rt;
-    long ach = 5, acl = 5;
-    long resulth, resultl;
-
-    rs     = 0x00FF00FF;
-    rt     = 0x00010002;
-    resulth = 0x05;
-    resultl = 0x0302;
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpax.w.ph $ac1, %2, %3\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         : "+r"(ach), "+r"(acl)
-         : "r"(rs), "r"(rt)
-        );
-    if (ach != resulth) {
-        printf("dpax.w.ph error\n");
-        return -1;
-    }
-    if (acl != resultl) {
-        printf("dpax.w.ph error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/dps_w_ph.c b/tests/tcg/mips/mips64-dspr2/dps_w_ph.c
deleted file mode 100644
index 99f292e..0000000
--- a/tests/tcg/mips/mips64-dspr2/dps_w_ph.c
+++ /dev/null
@@ -1,28 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long long rs, rt;
-    long long ach = 5, acl = 5;
-    long long resulth, resultl;
-
-    rs     = 0x00FF00FF;
-    rt     = 0x00010002;
-    resulth = 0x04;
-    resultl = 0xFFFFFFFFFFFFFFD08;
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dps.w.ph $ac1, %2, %3\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         : "+r"(ach), "+r"(acl)
-         : "r"(rs), "r"(rt)
-        );
-    if (ach != resulth || acl != resultl) {
-        printf("dps.w.ph error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/dps_w_qh.c b/tests/tcg/mips/mips64-dspr2/dps_w_qh.c
deleted file mode 100644
index 61277eb..0000000
--- a/tests/tcg/mips/mips64-dspr2/dps_w_qh.c
+++ /dev/null
@@ -1,55 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rs, rt;
-    long long achi, acli;
-    long long acho, aclo;
-    long long resh, resl;
-
-    rs = 0x0000000100000001;
-    rt = 0x0000000200000002;
-    achi = 0x1;
-    acli = 0x8;
-
-    resh = 0x1;
-    resl = 0x4;
-
-    asm ("mthi %2, $ac1\t\n"
-         "mtlo %3, $ac1\t\n"
-         "dps.w.qh $ac1, %4, %5\t\n"
-         "mfhi %0, $ac1\t\n"
-         "mflo %1, $ac1\t\n"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-
-    if ((acho != resh) || (aclo != resl)) {
-        printf("1 dps.w.qh error\n");
-        return -1;
-    }
-
-    rs = 0xaaaabbbbccccdddd;
-    rt = 0xaaaabbbbccccdddd;
-
-    achi = 0x88888888;
-    achi = 0x55555555;
-
-    resh = 0xfffffffff7777777;
-    resl = 0x0a38b181;
-
-    asm ("mthi %2, $ac1\t\n"
-         "mtlo %3, $ac1\t\n"
-         "dps.w.qh $ac1, %4, %5\t\n"
-         "mfhi %0, $ac1\t\n"
-         "mflo %1, $ac1\t\n"
-         : "=r"(acho), "=r"(aclo)
-         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
-        );
-
-    if ((acho != resh) || (aclo != resl)) {
-        printf("1 dps.w.qh error\n");
-        return -1;
-    }
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/dpsqx_s_w_ph.c b/tests/tcg/mips/mips64-dspr2/dpsqx_s_w_ph.c
deleted file mode 100644
index ba46a92..0000000
--- a/tests/tcg/mips/mips64-dspr2/dpsqx_s_w_ph.c
+++ /dev/null
@@ -1,55 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long long rs, rt, dsp;
-    long long ach = 5, acl = 5;
-    long long resulth, resultl, resultdsp;
-
-    rs = 0xBC0123AD;
-    rt = 0x01643721;
-    resulth = 0x04;
-    resultl = 0xFFFFFFFFAEA3E09B;
-    resultdsp = 0x00;
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpsqx_s.w.ph $ac1, %3, %4\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "+r"(ach), "+r"(acl), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 17) & 0x01;
-    if (dsp != resultdsp || ach != resulth || acl != resultl) {
-        printf("dpsqx_s.w.ph error\n");
-        return -1;
-    }
-
-    ach = 0x99f13005;
-    acl = 0x51730062;
-    rs = 0x80008000;
-    rt = 0x80008000;
-
-    resulth = 0xffffffff99f13004;
-    resultl = 0x51730064;
-    resultdsp = 0x01;
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpsqx_s.w.ph $ac1, %3, %4\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "+r"(ach), "+r"(acl), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 17) & 0x01;
-    if (dsp != resultdsp || ach != resulth || acl != resultl) {
-        printf("dpsqx_s.w.ph error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/dpsqx_sa_w_ph.c b/tests/tcg/mips/mips64-dspr2/dpsqx_sa_w_ph.c
deleted file mode 100644
index 24c8881..0000000
--- a/tests/tcg/mips/mips64-dspr2/dpsqx_sa_w_ph.c
+++ /dev/null
@@ -1,53 +0,0 @@
-#include"io.h"
-int main()
-{
-    long long rs, rt, dsp;
-    long long ach = 5, acl = 5;
-    long long resulth, resultl, resultdsp;
-
-    rs = 0xBC0123AD;
-    rt = 0x01643721;
-    resulth = 0x00;
-    resultl = 0x7FFFFFFF;
-    resultdsp = 0x01;
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpsqx_sa.w.ph $ac1, %3, %4\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "+r"(ach), "+r"(acl), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 17) & 0x01;
-    if (dsp != resultdsp || ach != resulth || acl != resultl) {
-        printf("dpsqx_sa.w.ph error\n");
-        return -1;
-    }
-
-    ach = 0x8c0b354A;
-    acl = 0xbbc02249;
-    rs      = 0x800023AD;
-    rt      = 0x01648000;
-    resulth = 0xffffffffffffffff;
-    resultl = 0xffffffff80000000;
-    resultdsp = 0x01;
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpsqx_sa.w.ph $ac1, %3, %4\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         "rddsp %2\n\t"
-         : "+r"(ach), "+r"(acl), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 17) & 0x01;
-    if (dsp != resultdsp || ach != resulth || acl != resultl) {
-        printf("dpsqx_sa.w.ph error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/dpsx_w_ph.c b/tests/tcg/mips/mips64-dspr2/dpsx_w_ph.c
deleted file mode 100644
index b6291b5..0000000
--- a/tests/tcg/mips/mips64-dspr2/dpsx_w_ph.c
+++ /dev/null
@@ -1,28 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long long rs, rt;
-    long long ach = 5, acl = 5;
-    long long resulth, resultl;
-
-    rs      = 0xBC0123AD;
-    rt      = 0x01643721;
-    resulth = 0x04;
-    resultl = 0xFFFFFFFFD751F050;
-    __asm
-        ("mthi  %0, $ac1\n\t"
-         "mtlo  %1, $ac1\n\t"
-         "dpsx.w.ph $ac1, %2, %3\n\t"
-         "mfhi  %0, $ac1\n\t"
-         "mflo  %1, $ac1\n\t"
-         : "+r"(ach), "+r"(acl)
-         : "r"(rs), "r"(rt)
-        );
-    if (ach != resulth || acl != resultl) {
-        printf("dpsx.w.ph error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/mul_ph.c b/tests/tcg/mips/mips64-dspr2/mul_ph.c
deleted file mode 100644
index 5a3d05c..0000000
--- a/tests/tcg/mips/mips64-dspr2/mul_ph.c
+++ /dev/null
@@ -1,50 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, dsp;
-    long long result, resultdsp;
-
-    rs = 0x03FB1234;
-    rt = 0x0BCC4321;
-    result = 0xFFFFFFFFF504F4B4;
-    resultdsp = 1;
-
-    __asm
-        ("mul.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 21) & 0x01;
-    if (rd  != result || dsp != resultdsp) {
-        printf("mul.ph wrong\n");
-        return -1;
-    }
-
-    dsp = 0;
-    __asm
-        ("wrdsp %0\n\t"
-         :
-         : "r"(dsp)
-        );
-
-    rs = 0x00210010;
-    rt = 0x00110005;
-    result = 0x2310050;
-    resultdsp = 0;
-
-    __asm
-        ("mul.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 21) & 0x01;
-    if (rd  != result || dsp != resultdsp) {
-        printf("mul.ph wrong\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/mul_s_ph.c b/tests/tcg/mips/mips64-dspr2/mul_s_ph.c
deleted file mode 100644
index 7c8b2c7..0000000
--- a/tests/tcg/mips/mips64-dspr2/mul_s_ph.c
+++ /dev/null
@@ -1,67 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, dsp;
-    long long result, resultdsp;
-
-    rs = 0x03FB1234;
-    rt = 0x0BCC4321;
-    result = 0x7fff7FFF;
-    resultdsp = 1;
-
-    __asm
-        ("mul_s.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 21) & 0x01;
-    if (rd != result || dsp != resultdsp) {
-        printf("1 mul_s.ph error\n");
-        return -1;
-    }
-
-    rs = 0x7fffff00;
-    rt = 0xff007fff;
-    result = 0xffffffff80008000;
-    resultdsp = 1;
-
-    __asm
-        ("mul_s.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 21) & 0x01;
-    if (rd != result || dsp != resultdsp) {
-        printf("2 mul_s.ph error\n");
-        return -1;
-    }
-
-    dsp = 0;
-    __asm
-        ("wrdsp %0\n\t"
-         :
-         : "r"(dsp)
-        );
-
-    rs = 0x00320001;
-    rt = 0x00210002;
-    result = 0x06720002;
-    resultdsp = 0;
-
-    __asm
-        ("mul_s.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 21) & 0x01;
-    if (rd != result || dsp != resultdsp) {
-        printf("3 mul_s.ph error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/mulq_rs_w.c b/tests/tcg/mips/mips64-dspr2/mulq_rs_w.c
deleted file mode 100644
index ffdc66d..0000000
--- a/tests/tcg/mips/mips64-dspr2/mulq_rs_w.c
+++ /dev/null
@@ -1,40 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, dsp;
-    long long result, resultdsp;
-
-    rs = 0x80001234;
-    rt = 0x80004321;
-    result = 0xFFFFFFFF80005555;
-
-    __asm
-        ("mulq_rs.w %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    if (rd != result) {
-        printf("mulq_rs.w error!\n");
-        return -1;
-    }
-
-    rs = 0x80000000;
-    rt = 0x80000000;
-    result = 0x7FFFFFFF;
-    resultdsp = 1;
-
-    __asm
-        ("mulq_rs.w %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 21) & 0x01;
-    if (rd != result || dsp != resultdsp) {
-        printf("mulq_rs.w error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/mulq_s_ph.c b/tests/tcg/mips/mips64-dspr2/mulq_s_ph.c
deleted file mode 100644
index b8c20c6..0000000
--- a/tests/tcg/mips/mips64-dspr2/mulq_s_ph.c
+++ /dev/null
@@ -1,26 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, dsp;
-    long long result, resultdsp;
-
-    rs = 0x80001234;
-    rt = 0x80004321;
-    result = 0x7FFF098B;
-    resultdsp = 1;
-
-    __asm
-        ("mulq_s.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 21) & 0x01;
-    if (rd  != result || dsp != resultdsp) {
-        printf("mulq_s.ph error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/mulq_s_w.c b/tests/tcg/mips/mips64-dspr2/mulq_s_w.c
deleted file mode 100644
index db74b71..0000000
--- a/tests/tcg/mips/mips64-dspr2/mulq_s_w.c
+++ /dev/null
@@ -1,40 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, dsp;
-    long long result, resultdsp;
-
-    rs = 0x80001234;
-    rt = 0x80004321;
-    result = 0xFFFFFFFF80005555;
-
-    __asm
-        ("mulq_s.w %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    if (rd != result) {
-        printf("mulq_s.w error\n");
-        return -1;
-    }
-
-    rs = 0x80000000;
-    rt = 0x80000000;
-    result = 0x7FFFFFFF;
-    resultdsp = 1;
-
-    __asm
-        ("mulq_s.w %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 21) & 0x01;
-    if (rd != result || dsp != resultdsp) {
-        printf("mulq_s.w error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/mulsa_w_ph.c b/tests/tcg/mips/mips64-dspr2/mulsa_w_ph.c
deleted file mode 100644
index 5b22a60..0000000
--- a/tests/tcg/mips/mips64-dspr2/mulsa_w_ph.c
+++ /dev/null
@@ -1,30 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long long rs, rt, ach, acl;
-    long long resulth, resultl;
-
-    ach = 0x05;
-    acl = 0x00BBDDCC;
-    rs = 0x80001234;
-    rt = 0x80004321;
-    resulth = 0x05;
-    resultl = 0x3BF5E918;
-
-    __asm
-        ("mthi %0, $ac1\n\t"
-         "mtlo %1, $ac1\n\t"
-         "mulsa.w.ph $ac1, %2, %3\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "+r"(ach), "+r"(acl)
-         : "r"(rs), "r"(rt)
-        );
-    if (ach != resulth || acl != resultl) {
-        printf("mulsa.w.ph error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/mulsaq_s_w_ph.c b/tests/tcg/mips/mips64-dspr2/mulsaq_s_w_ph.c
deleted file mode 100644
index 835a73d..0000000
--- a/tests/tcg/mips/mips64-dspr2/mulsaq_s_w_ph.c
+++ /dev/null
@@ -1,30 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long long rs, rt, ach, acl;
-    long long resulth, resultl;
-
-    ach = 0x05;
-    acl = 0x00BBDDCC;
-    rs = 0x80001234;
-    rt = 0x80004321;
-    resulth = 0x05;
-    resultl = 0x772ff463;
-
-    __asm
-        ("mthi %0, $ac1\n\t"
-         "mtlo %1, $ac1\n\t"
-         "mulsaq_s.w.ph $ac1, %2, %3\n\t"
-         "mfhi %0, $ac1\n\t"
-         "mflo %1, $ac1\n\t"
-         : "+r"(ach), "+r"(acl)
-         : "r"(rs), "r"(rt)
-        );
-    if (ach != resulth || acl != resultl) {
-        printf("mulsaq_s.w.ph error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/precr_qb_ph.c b/tests/tcg/mips/mips64-dspr2/precr_qb_ph.c
deleted file mode 100644
index 80d5e8d..0000000
--- a/tests/tcg/mips/mips64-dspr2/precr_qb_ph.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include"io.h"
-
-int main()
-{
-    long long rd, rs, rt;
-    long long result;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result = 0x34786521;
-
-    __asm
-        ("precr.qb.ph %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    if (result != rd) {
-        printf("precr.qb.ph error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/precr_sra_ph_w.c b/tests/tcg/mips/mips64-dspr2/precr_sra_ph_w.c
deleted file mode 100644
index b1d7bcd..0000000
--- a/tests/tcg/mips/mips64-dspr2/precr_sra_ph_w.c
+++ /dev/null
@@ -1,37 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long long rs, rt;
-    long long result;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result = 0x43215678;
-
-    __asm
-        ("precr_sra.ph.w %0, %1, 0x00\n\t"
-         : "+r"(rt)
-         : "r"(rs)
-        );
-    if (result != rt) {
-        printf("precr_sra.ph.w error\n");
-        return -1;
-    }
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result = 0xFFFFFFFFFFFF0000;
-
-    __asm
-        ("precr_sra.ph.w %0, %1, 0x1F\n\t"
-         : "+r"(rt)
-         : "r"(rs)
-        );
-    if (result != rt) {
-        printf("precr_sra.ph.w error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/precr_sra_r_ph_w.c b/tests/tcg/mips/mips64-dspr2/precr_sra_r_ph_w.c
deleted file mode 100644
index 62d220d..0000000
--- a/tests/tcg/mips/mips64-dspr2/precr_sra_r_ph_w.c
+++ /dev/null
@@ -1,37 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long long rs, rt;
-    long long result;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result = 0x43215678;
-
-    __asm
-        ("precr_sra_r.ph.w %0, %1, 0x00\n\t"
-         : "+r"(rt)
-         : "r"(rs)
-        );
-    if (result != rt) {
-        printf("precr_sra_r.ph.w error\n");
-        return -1;
-    }
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result = 0xFFFFFFFFFFFF0000;
-
-    __asm
-        ("precr_sra_r.ph.w %0, %1, 0x1F\n\t"
-         : "+r"(rt)
-         : "r"(rs)
-        );
-    if (result != rt) {
-        printf("precr_sra_r.ph.w error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/prepend.c b/tests/tcg/mips/mips64-dspr2/prepend.c
deleted file mode 100644
index 4ab083e..0000000
--- a/tests/tcg/mips/mips64-dspr2/prepend.c
+++ /dev/null
@@ -1,35 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long long rs, rt;
-    long long result;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result = 0xFFFFFFFF87654321;
-    __asm
-        ("prepend %0, %1, 0x00\n\t"
-         : "+r"(rt)
-         : "r"(rs)
-        );
-    if (rt != result) {
-        printf("prepend error\n");
-        return -1;
-    }
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result = 0xFFFFFFFFACF10ECA;
-    __asm
-        ("prepend %0, %1, 0x0F\n\t"
-         : "+r"(rt)
-         : "r"(rs)
-        );
-    if (rt != result) {
-        printf("prepend error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/printf.c b/tests/tcg/mips/mips64-dspr2/printf.c
deleted file mode 100644
index cf8676d..0000000
--- a/tests/tcg/mips/mips64-dspr2/printf.c
+++ /dev/null
@@ -1,266 +0,0 @@
-
-typedef unsigned long va_list;
-
-#define ACC    4
-#define __read(source)                    \
-({ va_list __res;                    \
-    __asm__ __volatile__(                \
-        "move\t%0, " #source "\n\t"        \
-        : "=r" (__res));            \
-    __res;                        \
-})
-
-enum format_type {
-    FORMAT_TYPE_NONE,
-    FORMAT_TYPE_HEX,
-    FORMAT_TYPE_ULONG,
-    FORMAT_TYPE_FLOAT
-};
-
-struct printf_spec {
-    char    type;
-};
-
-static int format_decode(char *fmt, struct printf_spec *spec)
-{
-    char *start = fmt;
-
-    for (; *fmt ; ++fmt) {
-        if (*fmt == '%') {
-            break;
-        }
-    }
-
-    switch (*++fmt) {
-    case 'x':
-        spec->type = FORMAT_TYPE_HEX;
-        break;
-
-    case 'd':
-        spec->type = FORMAT_TYPE_ULONG;
-        break;
-
-    case 'f':
-        spec->type = FORMAT_TYPE_FLOAT;
-        break;
-
-    default:
-        spec->type = FORMAT_TYPE_NONE;
-    }
-
-    return ++fmt - start;
-}
-
-void *memcpy(void *dest, void *src, int n)
-{
-    int i;
-    char *s = src;
-    char *d = dest;
-
-    for (i = 0; i < n; i++) {
-        d[i] = s[i];
-    }
-    return dest;
-}
-
-char *number(char *buf, va_list num)
-{
-    int i;
-    char *str = buf;
-    static char digits[16] = "0123456789abcdef";
-    str = str + sizeof(num) * 2;
-
-    for (i = 0; i < sizeof(num) * 2; i++) {
-        *--str = digits[num & 15];
-        num >>= 4;
-    }
-
-    return buf + sizeof(num) * 2;
-}
-
-char *__number(char *buf, va_list num)
-{
-    int i;
-    va_list mm = num;
-    char *str = buf;
-
-    if (!num) {
-        *str++ = '0';
-        return str;
-    }
-
-    for (i = 0; mm; mm = mm/10, i++) {
-        /* Do nothing. */
-    }
-
-    str = str + i;
-
-    while (num) {
-        *--str = num % 10 + 48;
-        num = num / 10;
-    }
-
-    return str + i;
-}
-
-va_list modf(va_list args, va_list *integer, va_list *num)
-{
-    int i;
-    double dot_v = 0;
-    va_list E, DOT, DOT_V;
-
-    if (!args) {
-        return 0;
-    }
-
-    for (i = 0, args = args << 1 >> 1; i < 52; i++) {
-        if ((args >> i) & 0x1) {
-            break;
-        }
-    }
-
-    *integer = 0;
-
-    if ((args >> 56 != 0x3f) || (args >> 52 == 0x3ff)) {
-        E = (args >> 52) - 1023;
-        DOT = 52 - E - i;
-        DOT_V = args << (12 + E) >> (12 + E) >> i;
-        *integer = ((args << 12 >> 12) >> (i + DOT)) | (1 << E);
-    } else {
-        E = ~((args >> 52) - 1023) + 1;
-        DOT_V = args << 12 >> 12;
-
-        dot_v += 1.0 / (1 << E);
-
-        for (i = 1; i <= 16; i++) {
-            if ((DOT_V >> (52 - i)) & 0x1) {
-                dot_v += 1.0 / (1 << E + i);
-            }
-        }
-
-        for (i = 1, E = 0; i <= ACC; i++) {
-            dot_v *= 10;
-            if (!(va_list)dot_v) {
-                E++;
-            }
-    }
-
-    *num = E;
-
-    return dot_v;
-    }
-
-    if (args & 0xf) {
-        for (i = 1; i <= 16; i++) {
-            if ((DOT_V >> (DOT - i)) & 0x1) {
-                dot_v += 1.0 / (1 << i);
-            }
-        }
-
-        for (i = 1, E = 0; i <= ACC; i++) {
-            dot_v *= 10;
-            if (!(va_list)dot_v) {
-                E++;
-            }
-        }
-
-        *num = E;
-
-        return dot_v;
-    } else if (DOT) {
-        for (i = 1; i <= DOT; i++) {
-            if ((DOT_V >> (DOT - i)) & 0x1) {
-                dot_v += 1.0 / (1 << i);
-            }
-        }
-
-        for (i = 1; i <= ACC; i++) {
-            dot_v = dot_v * 10;
-        }
-
-    return dot_v;
-    }
-
-    return 0;
-}
-
-int vsnprintf(char *buf, int size, char *fmt, va_list args)
-{
-    char *str, *mm;
-    struct printf_spec spec = {0};
-
-    str = mm = buf;
-
-    while (*fmt) {
-        char *old_fmt = fmt;
-        int read = format_decode(fmt, &spec);
-
-        fmt += read;
-
-        switch (spec.type) {
-        case FORMAT_TYPE_NONE: {
-            memcpy(str, old_fmt, read);
-            str += read;
-            break;
-        }
-        case FORMAT_TYPE_HEX: {
-            memcpy(str, old_fmt, read);
-            str = number(str + read, args);
-            for (; *mm ; ++mm) {
-                if (*mm == '%') {
-                    *mm = '0';
-                break;
-                }
-            }
-        break;
-        }
-        case FORMAT_TYPE_ULONG: {
-            memcpy(str, old_fmt, read - 2);
-            str = __number(str + read - 2, args);
-            break;
-        }
-        case FORMAT_TYPE_FLOAT: {
-            va_list integer, dot_v, num;
-            dot_v = modf(args, &integer, &num);
-            memcpy(str, old_fmt, read - 2);
-            str += read - 2;
-            if ((args >> 63 & 0x1)) {
-                *str++ = '-';
-            }
-            str = __number(str, integer);
-            if (dot_v) {
-                *str++ = '.';
-                while (num--) {
-                    *str++ = '0';
-                }
-                str = __number(str, dot_v);
-            }
-            break;
-        }
-        }
-    }
-    *str = '\0';
-
-    return str - buf;
-}
-
-static void serial_out(char *str)
-{
-    while (*str) {
-        *(char *)0xffffffffb80003f8 = *str++;
-    }
-}
-
-int vprintf(char *fmt, va_list args)
-{
-    int printed_len = 0;
-    static char printf_buf[512];
-    printed_len = vsnprintf(printf_buf, sizeof(printf_buf), fmt, args);
-    serial_out(printf_buf);
-    return printed_len;
-}
-
-int printf(char *fmt, ...)
-{
-    return vprintf(fmt, __read($5));
-}
diff --git a/tests/tcg/mips/mips64-dspr2/shra_qb.c b/tests/tcg/mips/mips64-dspr2/shra_qb.c
deleted file mode 100644
index cac3102..0000000
--- a/tests/tcg/mips/mips64-dspr2/shra_qb.c
+++ /dev/null
@@ -1,35 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long long rd, rt;
-    long long result;
-
-    rt = 0x12345678;
-    result = 0x02060A0F;
-
-    __asm
-        ("shra.qb %0, %1, 0x03\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    if (rd != result) {
-        printf("shra.qb error\n");
-        return -1;
-    }
-
-    rt = 0x87654321;
-    result = 0xFFFFFFFFF00C0804;
-
-    __asm
-        ("shra.qb %0, %1, 0x03\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    if (rd != result) {
-        printf("shra.qb error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/shra_r_qb.c b/tests/tcg/mips/mips64-dspr2/shra_r_qb.c
deleted file mode 100644
index 9c64f75..0000000
--- a/tests/tcg/mips/mips64-dspr2/shra_r_qb.c
+++ /dev/null
@@ -1,35 +0,0 @@
-#include "io.h"
-
-int main()
-{
-    int rd, rt;
-    int result;
-
-    rt = 0x12345678;
-    result = 0x02070B0F;
-
-    __asm
-        ("shra_r.qb %0, %1, 0x03\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    if (rd != result) {
-        printf("shra_r.qb wrong\n");
-        return -1;
-    }
-
-    rt = 0x87654321;
-    result = 0xF10D0804;
-
-    __asm
-        ("shra_r.qb %0, %1, 0x03\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    if (rd != result) {
-        printf("shra_r.qb wrong\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/shrav_ob.c b/tests/tcg/mips/mips64-dspr2/shrav_ob.c
deleted file mode 100644
index fbdfbab..0000000
--- a/tests/tcg/mips/mips64-dspr2/shrav_ob.c
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, rs;
-    long long res;
-
-    rt = 0x1234567887654321;
-    rs = 0x4;
-    res = 0xf1f3f5f7f8060402;
-
-    asm ("shrav.ob %0, %1, %2"
-        : "=r"(rd)
-        : "r"(rt), "r"(rs)
-        );
-
-    if (rd != res) {
-        printf("shra.ob error\n");
-        return -1;
-    }
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/shrav_qb.c b/tests/tcg/mips/mips64-dspr2/shrav_qb.c
deleted file mode 100644
index a716203..0000000
--- a/tests/tcg/mips/mips64-dspr2/shrav_qb.c
+++ /dev/null
@@ -1,37 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long result;
-
-    rs = 0x03;
-    rt = 0x12345678;
-    result = 0x02060A0F;
-
-    __asm
-        ("shrav.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rt), "r"(rs)
-        );
-    if (rd != result) {
-        printf("shrav.qb error\n");
-        return -1;
-    }
-
-    rs = 0x03;
-    rt = 0x87654321;
-    result = 0xFFFFFFFFF00C0804;
-
-    __asm
-        ("shrav.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rt), "r"(rs)
-        );
-    if (rd != result) {
-        printf("shrav.qb error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/shrav_r_ob.c b/tests/tcg/mips/mips64-dspr2/shrav_r_ob.c
deleted file mode 100644
index b80100a..0000000
--- a/tests/tcg/mips/mips64-dspr2/shrav_r_ob.c
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rt, rs;
-    long long res;
-
-    rt = 0x1234567887654321;
-    rs = 0x4;
-    res = 0xe3e7ebf0f1ede9e5;
-
-    asm ("shrav_r.ob %0, %1, %2"
-        : "=r"(rd)
-        : "r"(rt), "r"(rs)
-        );
-
-    if (rd != res) {
-        printf("shra_r.ob error\n");
-        return -1;
-    }
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/shrav_r_qb.c b/tests/tcg/mips/mips64-dspr2/shrav_r_qb.c
deleted file mode 100644
index 009080b..0000000
--- a/tests/tcg/mips/mips64-dspr2/shrav_r_qb.c
+++ /dev/null
@@ -1,37 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long result;
-
-    rs = 0x03;
-    rt = 0x12345678;
-    result = 0x02070B0F;
-
-    __asm
-        ("shrav_r.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rt), "r"(rs)
-        );
-    if (rd != result) {
-        printf("shrav_r.qb error\n");
-        return -1;
-    }
-
-    rs = 0x03;
-    rt = 0x87654321;
-    result = 0xFFFFFFFFF10D0804;
-
-    __asm
-        ("shrav_r.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rt), "r"(rs)
-        );
-    if (rd != result) {
-        printf("shrav_r.qb error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/shrl_ph.c b/tests/tcg/mips/mips64-dspr2/shrl_ph.c
deleted file mode 100644
index e32d976..0000000
--- a/tests/tcg/mips/mips64-dspr2/shrl_ph.c
+++ /dev/null
@@ -1,22 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long long rd, rt;
-    long long result;
-
-    rt     = 0x12345678;
-    result = 0x009102B3;
-
-    __asm
-        ("shrl.ph %0, %1, 0x05\n\t"
-         : "=r"(rd)
-         : "r"(rt)
-        );
-    if (rd != result) {
-        printf("shrl.ph error!\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/shrlv_ph.c b/tests/tcg/mips/mips64-dspr2/shrlv_ph.c
deleted file mode 100644
index 58c5488..0000000
--- a/tests/tcg/mips/mips64-dspr2/shrlv_ph.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long result;
-
-    rs     = 0x05;
-    rt     = 0x12345678;
-    result = 0x009102B3;
-
-    __asm
-        ("shrlv.ph %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rt), "r"(rs)
-        );
-    if (rd != result) {
-        printf("shrlv.ph error!\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/subqh_ph.c b/tests/tcg/mips/mips64-dspr2/subqh_ph.c
deleted file mode 100644
index 9037401..0000000
--- a/tests/tcg/mips/mips64-dspr2/subqh_ph.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long result;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result = 0x456709AB;
-
-    __asm
-        ("subqh.ph %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    if (rd != result) {
-        printf("subqh.ph error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/subqh_r_ph.c b/tests/tcg/mips/mips64-dspr2/subqh_r_ph.c
deleted file mode 100644
index b8f9d2f..0000000
--- a/tests/tcg/mips/mips64-dspr2/subqh_r_ph.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long result;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result = 0x456809AC;
-
-    __asm
-        ("subqh_r.ph %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    if (rd != result) {
-        printf("subqh_r.ph error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/subqh_r_w.c b/tests/tcg/mips/mips64-dspr2/subqh_r_w.c
deleted file mode 100644
index b025e40..0000000
--- a/tests/tcg/mips/mips64-dspr2/subqh_r_w.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include"io.h"
-
-int main()
-{
-    long long rd, rs, rt;
-    long long result;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result = 0x456789AC;
-
-    __asm
-        ("subqh_r.w %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    if (rd != result) {
-        printf("subqh_r.w error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/subqh_w.c b/tests/tcg/mips/mips64-dspr2/subqh_w.c
deleted file mode 100644
index 65f1760..0000000
--- a/tests/tcg/mips/mips64-dspr2/subqh_w.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long result;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result = 0x456789AB;
-
-    __asm
-        ("subqh.w %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    if (rd != result) {
-        printf("subqh.w error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/subu_ph.c b/tests/tcg/mips/mips64-dspr2/subu_ph.c
deleted file mode 100644
index 60a6b1b..0000000
--- a/tests/tcg/mips/mips64-dspr2/subu_ph.c
+++ /dev/null
@@ -1,26 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, dsp;
-    long long result, resultdsp;
-
-    rs = 0x87654321;
-    rt = 0x12345678;
-    result    = 0x7531ECA9;
-    resultdsp = 0x01;
-
-    __asm
-        ("subu.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 20) & 0x01;
-    if (dsp != resultdsp || rd  != result) {
-        printf("subu.ph error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/subu_qh.c b/tests/tcg/mips/mips64-dspr2/subu_qh.c
deleted file mode 100644
index 911cb34..0000000
--- a/tests/tcg/mips/mips64-dspr2/subu_qh.c
+++ /dev/null
@@ -1,24 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, dspreg, result, dspresult;
-    rs = 0x123456789ABCDEF0;
-    rt = 0x123456789ABCDEF1;
-    result = 0x000000000000000F;
-    dspresult = 0x01;
-
-    __asm("subu.qh %0, %2, %3\n\t"
-          "rddsp %1\n\t"
-          : "=r"(rd), "=r"(dspreg)
-          : "r"(rs), "r"(rt)
-         );
-
-    dspreg = ((dspreg >> 20) & 0x01);
-    if ((rd != result) || (dspreg != dspresult)) {
-        printf("subu.qh error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/subu_s_ph.c b/tests/tcg/mips/mips64-dspr2/subu_s_ph.c
deleted file mode 100644
index ae32cc0..0000000
--- a/tests/tcg/mips/mips64-dspr2/subu_s_ph.c
+++ /dev/null
@@ -1,25 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, dsp;
-    long long result, resultdsp;
-
-    rs = 0x87654321;
-    rt = 0x12345678;
-    result    = 0x75310000;
-    resultdsp = 0x01;
-
-    __asm
-        ("subu_s.ph %0, %2, %3\n\t"
-         "rddsp %1\n\t"
-         : "=r"(rd), "=r"(dsp)
-         : "r"(rs), "r"(rt)
-        );
-    dsp = (dsp >> 20) & 0x01;
-    if (dsp != resultdsp || rd  != result) {
-        printf("subu_s.ph error\n");
-        return -1;
-    }
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/subu_s_qh.c b/tests/tcg/mips/mips64-dspr2/subu_s_qh.c
deleted file mode 100644
index de7a29e..0000000
--- a/tests/tcg/mips/mips64-dspr2/subu_s_qh.c
+++ /dev/null
@@ -1,42 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, dspreg, result, dspresult;
-    rs = 0x1111111111111111;
-    rt = 0x2222222222222222;
-    result = 0x1111111111111111;
-    dspresult = 0x00;
-
-    __asm("subu_s.qh %0, %2, %3\n\t"
-          "rddsp %1\n\t"
-          : "=r"(rd), "=r"(dspreg)
-          : "r"(rs), "r"(rt)
-         );
-
-    dspreg = ((dspreg >> 20) & 0x01);
-    if ((rd != result) || (dspreg != dspresult)) {
-        printf("subu_s.qh error\n\t");
-        return -1;
-    }
-
-
-    rs = 0x8888888888888888;
-    rt = 0xa888a888a888a888;
-    result = 0x0000000000000000;
-    dspresult = 0x01;
-
-    __asm("subu_s.qh %0, %2, %3\n\t"
-          "rddsp %1\n\t"
-          : "=r"(rd), "=r"(dspreg)
-          : "r"(rs), "r"(rt)
-         );
-
-    dspreg = ((dspreg >> 20) & 0x01);
-    if ((rd != result) || (dspreg != dspresult)) {
-        printf("subu_s.qh error\n\t");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/subuh_ob.c b/tests/tcg/mips/mips64-dspr2/subuh_ob.c
deleted file mode 100644
index 3fc452b..0000000
--- a/tests/tcg/mips/mips64-dspr2/subuh_ob.c
+++ /dev/null
@@ -1,36 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, result;
-
-    rd = 0x0;
-    rs = 0x246856789ABCDEF0;
-    rt = 0x123456789ABCDEF0;
-    result = 0x091A000000000000;
-
-    __asm("subuh.ob %0, %1, %2\n\t"
-          : "=r"(rd)
-          : "r"(rs), "r"(rt)
-         );
-
-    if (rd != result) {
-        printf("subuh.ob error\n");
-        return -1;
-    }
-
-    rs = 0x246856789ABCDEF0;
-    rt = 0x1131517191B1D1F1;
-    result = 0x1b4f2d2d51637577;
-
-    __asm("subuh.ob %0, %1, %2\n\t"
-          : "=r"(rd)
-          : "r"(rs), "r"(rt)
-         );
-
-    if (rd != result) {
-        printf("subuh.ob error\n");
-        return -1;
-    }
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/subuh_qb.c b/tests/tcg/mips/mips64-dspr2/subuh_qb.c
deleted file mode 100644
index aac7a83..0000000
--- a/tests/tcg/mips/mips64-dspr2/subuh_qb.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long result;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result = 0xC5E7092B;
-
-    __asm
-        ("subuh.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    if (rd != result) {
-        printf("subuh.qb wrong\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/subuh_r_ob.c b/tests/tcg/mips/mips64-dspr2/subuh_r_ob.c
deleted file mode 100644
index fc20ffd..0000000
--- a/tests/tcg/mips/mips64-dspr2/subuh_r_ob.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "io.h"
-
-int main(void)
-{
-    long long rd, rs, rt, result;
-
-    rd = 0x0;
-    rs = 0x246956789ABCDEF0;
-    rt = 0x123456789ABCDEF0;
-    result = 0x091B000000000000;
-
-    __asm("subuh.ob %0, %1, %2\n\t"
-          : "=r"(rd)
-          : "r"(rs), "r"(rt)
-         );
-
-    if (rd != result) {
-        printf("subuh.ob error\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mips64-dspr2/subuh_r_qb.c b/tests/tcg/mips/mips64-dspr2/subuh_r_qb.c
deleted file mode 100644
index 66d4680..0000000
--- a/tests/tcg/mips/mips64-dspr2/subuh_r_qb.c
+++ /dev/null
@@ -1,37 +0,0 @@
-#include"io.h"
-
-int main(void)
-{
-    long long rd, rs, rt;
-    long long result;
-
-    rs = 0x12345678;
-    rt = 0x87654321;
-    result = 0xC6E80A2C;
-
-    __asm
-        ("subuh_r.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    if (rd != result) {
-        printf("1 subuh_r.qb wrong\n");
-        return -1;
-    }
-
-    rs = 0xBEFC292A;
-    rt = 0x9205C1B4;
-    result = 0x167cb4bb;
-
-    __asm
-        ("subuh_r.qb %0, %1, %2\n\t"
-         : "=r"(rd)
-         : "r"(rs), "r"(rt)
-        );
-    if (rd != result) {
-        printf("2 subuh_r.qb wrong\n");
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mipsr5900/div1.c b/tests/tcg/mips/mipsr5900/div1.c
deleted file mode 100644
index 83dafa0..0000000
--- a/tests/tcg/mips/mipsr5900/div1.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Test R5900-specific DIV1.
- */
-
-#include <stdio.h>
-#include <inttypes.h>
-#include <assert.h>
-
-struct quotient_remainder { int32_t quotient, remainder; };
-
-static struct quotient_remainder div1(int32_t rs, int32_t rt)
-{
-    int32_t lo, hi;
-
-    __asm__ __volatile__ (
-            "    div1 $0, %2, %3\n"
-            "    mflo1 %0\n"
-            "    mfhi1 %1\n"
-            : "=r" (lo), "=r" (hi)
-            : "r" (rs), "r" (rt));
-
-    assert(rs / rt == lo);
-    assert(rs % rt == hi);
-
-    return (struct quotient_remainder) { .quotient = lo, .remainder = hi };
-}
-
-static void verify_div1(int32_t rs, int32_t rt,
-                        int32_t expected_quotient,
-                        int32_t expected_remainder)
-{
-    struct quotient_remainder qr = div1(rs, rt);
-
-    assert(qr.quotient == expected_quotient);
-    assert(qr.remainder == expected_remainder);
-}
-
-static void verify_div1_negations(int32_t rs, int32_t rt,
-                                  int32_t expected_quotient,
-                                  int32_t expected_remainder)
-{
-    verify_div1(rs, rt, expected_quotient, expected_remainder);
-    verify_div1(rs, -rt, -expected_quotient, expected_remainder);
-    verify_div1(-rs, rt, -expected_quotient, -expected_remainder);
-    verify_div1(-rs, -rt, expected_quotient, -expected_remainder);
-}
-
-int main()
-{
-    verify_div1_negations(0, 1, 0, 0);
-    verify_div1_negations(1, 1, 1, 0);
-    verify_div1_negations(1, 2, 0, 1);
-    verify_div1_negations(17, 19, 0, 17);
-    verify_div1_negations(19, 17, 1, 2);
-    verify_div1_negations(77773, 101, 770, 3);
-
-    verify_div1(-0x80000000,  1, -0x80000000, 0);
-
-    /*
-     * Supplementary explanation from the Toshiba TX System RISC TX79 Core
-     * Architecture manual, A-38 and B-7, https://wiki.qemu.org/File:C790.pdf
-     *
-     * Normally, when 0x80000000 (-2147483648) the signed minimum value is
-     * divided by 0xFFFFFFFF (-1), the operation will result in an overflow.
-     * However, in this instruction an overflow exception doesn't occur and
-     * the result will be as follows:
-     *
-     * Quotient is 0x80000000 (-2147483648), and remainder is 0x00000000 (0).
-     */
-    verify_div1(-0x80000000, -1, -0x80000000, 0);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mipsr5900/divu1.c b/tests/tcg/mips/mipsr5900/divu1.c
deleted file mode 100644
index 72aeed3..0000000
--- a/tests/tcg/mips/mipsr5900/divu1.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Test R5900-specific DIVU1.
- */
-
-#include <stdio.h>
-#include <inttypes.h>
-#include <assert.h>
-
-struct quotient_remainder { uint32_t quotient, remainder; };
-
-static struct quotient_remainder divu1(uint32_t rs, uint32_t rt)
-{
-    uint32_t lo, hi;
-
-    __asm__ __volatile__ (
-            "    divu1 $0, %2, %3\n"
-            "    mflo1 %0\n"
-            "    mfhi1 %1\n"
-            : "=r" (lo), "=r" (hi)
-            : "r" (rs), "r" (rt));
-
-    assert(rs / rt == lo);
-    assert(rs % rt == hi);
-
-    return (struct quotient_remainder) { .quotient = lo, .remainder = hi };
-}
-
-static void verify_divu1(uint32_t rs, uint32_t rt,
-                         uint32_t expected_quotient,
-                         uint32_t expected_remainder)
-{
-    struct quotient_remainder qr = divu1(rs, rt);
-
-    assert(qr.quotient == expected_quotient);
-    assert(qr.remainder == expected_remainder);
-}
-
-int main()
-{
-    verify_divu1(0, 1, 0, 0);
-    verify_divu1(1, 1, 1, 0);
-    verify_divu1(1, 2, 0, 1);
-    verify_divu1(17, 19, 0, 17);
-    verify_divu1(19, 17, 1, 2);
-    verify_divu1(77773, 101, 770, 3);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mipsr5900/mflohi1.c b/tests/tcg/mips/mipsr5900/mflohi1.c
deleted file mode 100644
index eed3683..0000000
--- a/tests/tcg/mips/mipsr5900/mflohi1.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Test R5900-specific MFLO1 and MFHI1.
- */
-
-#include <stdio.h>
-#include <inttypes.h>
-#include <assert.h>
-
-int main()
-{
-    int32_t rs  = 12207031, rt  = 305175781;
-    int32_t rs1 = 32452867, rt1 = 49979687;
-    int64_t lo, hi, lo1, hi1;
-    int64_t r, r1;
-
-    /* Test both LO/HI and LO1/HI1 to verify separation. */
-    __asm__ __volatile__ (
-            "    mult $0, %4, %5\n"
-            "    mult1 $0, %6, %7\n"
-            "    mflo %0\n"
-            "    mfhi %1\n"
-            "    mflo1 %2\n"
-            "    mfhi1 %3\n"
-            : "=r" (lo),  "=r" (hi),
-              "=r" (lo1), "=r" (hi1)
-            : "r" (rs),  "r" (rt),
-              "r" (rs1), "r" (rt1));
-    r  = ((int64_t)hi  << 32) | (uint32_t)lo;
-    r1 = ((int64_t)hi1 << 32) | (uint32_t)lo1;
-
-    assert(r  == 3725290219116211);
-    assert(r1 == 1621984134912629);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mipsr5900/mtlohi1.c b/tests/tcg/mips/mipsr5900/mtlohi1.c
deleted file mode 100644
index 7f3e728..0000000
--- a/tests/tcg/mips/mipsr5900/mtlohi1.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Test R5900-specific MTLO1 and MTHI1.
- */
-
-#include <stdio.h>
-#include <inttypes.h>
-#include <assert.h>
-
-int main()
-{
-    int32_t tlo  = 12207031, thi  = 305175781;
-    int32_t tlo1 = 32452867, thi1 = 49979687;
-    int32_t flo, fhi, flo1, fhi1;
-
-    /* Test both LO/HI and LO1/HI1 to verify separation. */
-    __asm__ __volatile__ (
-            "    mtlo  %4\n"
-            "    mthi  %5\n"
-            "    mtlo1 %6\n"
-            "    mthi1 %7\n"
-            "    move  %0, $0\n"
-            "    move  %1, $0\n"
-            "    move  %2, $0\n"
-            "    move  %3, $0\n"
-            "    mflo  %0\n"
-            "    mfhi  %1\n"
-            "    mflo1 %2\n"
-            "    mfhi1 %3\n"
-            : "=r" (flo),  "=r" (fhi),
-              "=r" (flo1), "=r" (fhi1)
-            : "r" (tlo),  "r" (thi),
-              "r" (tlo1), "r" (thi1));
-
-    assert(flo  == 12207031);
-    assert(fhi  == 305175781);
-    assert(flo1 == 32452867);
-    assert(fhi1 == 49979687);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mipsr5900/mult.c b/tests/tcg/mips/mipsr5900/mult.c
deleted file mode 100644
index 5710b39..0000000
--- a/tests/tcg/mips/mipsr5900/mult.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Test R5900-specific three-operand MULT and MULT1.
- */
-
-#include <stdio.h>
-#include <inttypes.h>
-#include <assert.h>
-
-static int64_t mult(int32_t rs, int32_t rt)
-{
-    int32_t rd, lo, hi;
-    int64_t r;
-
-    __asm__ __volatile__ (
-            "    mult %0, %3, %4\n"
-            "    mflo %1\n"
-            "    mfhi %2\n"
-            : "=r" (rd), "=r" (lo), "=r" (hi)
-            : "r" (rs), "r" (rt));
-    r = ((int64_t)hi << 32) | (uint32_t)lo;
-
-    assert((int64_t)rs * rt == r);
-    assert(rd == lo);
-
-    return r;
-}
-
-static int64_t mult1(int32_t rs, int32_t rt)
-{
-    int32_t rd, lo, hi;
-    int64_t r;
-
-    __asm__ __volatile__ (
-            "    mult1 %0, %3, %4\n"
-            "    mflo1 %1\n"
-            "    mfhi1 %2\n"
-            : "=r" (rd), "=r" (lo), "=r" (hi)
-            : "r" (rs), "r" (rt));
-    r = ((int64_t)hi << 32) | (uint32_t)lo;
-
-    assert((int64_t)rs * rt == r);
-    assert(rd == lo);
-
-    return r;
-}
-
-static int64_t mult_variants(int32_t rs, int32_t rt)
-{
-    int64_t rd  = mult(rs, rt);
-    int64_t rd1 = mult1(rs, rt);
-
-    assert(rd == rd1);
-
-    return rd;
-}
-
-static void verify_mult_negations(int32_t rs, int32_t rt, int64_t expected)
-{
-    assert(mult_variants(rs, rt) == expected);
-    assert(mult_variants(-rs, rt) == -expected);
-    assert(mult_variants(rs, -rt) == -expected);
-    assert(mult_variants(-rs, -rt) == expected);
-}
-
-int main()
-{
-    verify_mult_negations(17, 19, 323);
-    verify_mult_negations(77773, 99991, 7776600043);
-    verify_mult_negations(12207031, 305175781, 3725290219116211);
-
-    assert(mult_variants(-0x80000000,  0x7FFFFFFF) == -0x3FFFFFFF80000000);
-    assert(mult_variants(-0x80000000, -0x7FFFFFFF) ==  0x3FFFFFFF80000000);
-    assert(mult_variants(-0x80000000, -0x80000000) ==  0x4000000000000000);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/mipsr5900/multu.c b/tests/tcg/mips/mipsr5900/multu.c
deleted file mode 100644
index f043904..0000000
--- a/tests/tcg/mips/mipsr5900/multu.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Test R5900-specific three-operand MULTU and MULTU1.
- */
-
-#include <stdio.h>
-#include <inttypes.h>
-#include <assert.h>
-
-static uint64_t multu(uint32_t rs, uint32_t rt)
-{
-    uint32_t rd, lo, hi;
-    uint64_t r;
-
-    __asm__ __volatile__ (
-            "    multu %0, %3, %4\n"
-            "    mflo %1\n"
-            "    mfhi %2\n"
-            : "=r" (rd), "=r" (lo), "=r" (hi)
-            : "r" (rs), "r" (rt));
-    r = ((uint64_t)hi << 32) | (uint32_t)lo;
-
-    assert((uint64_t)rs * rt == r);
-    assert(rd == lo);
-
-    return r;
-}
-
-static uint64_t multu1(uint32_t rs, uint32_t rt)
-{
-    uint32_t rd, lo, hi;
-    uint64_t r;
-
-    __asm__ __volatile__ (
-            "    multu1 %0, %3, %4\n"
-            "    mflo1 %1\n"
-            "    mfhi1 %2\n"
-            : "=r" (rd), "=r" (lo), "=r" (hi)
-            : "r" (rs), "r" (rt));
-    r = ((uint64_t)hi << 32) | (uint32_t)lo;
-
-    assert((uint64_t)rs * rt == r);
-    assert(rd == lo);
-
-    return r;
-}
-
-static uint64_t multu_variants(uint32_t rs, uint32_t rt)
-{
-    uint64_t rd  = multu(rs, rt);
-    uint64_t rd1 = multu1(rs, rt);
-
-    assert(rd == rd1);
-
-    return rd;
-}
-
-int main()
-{
-    assert(multu_variants(17, 19) == 323);
-    assert(multu_variants(77773, 99991) == 7776600043);
-    assert(multu_variants(12207031, 305175781) == 3725290219116211);
-
-    assert(multu_variants(0x80000000U, 0x7FFFFFFF) == 0x3FFFFFFF80000000);
-    assert(multu_variants(0x80000000U, 0x80000000U) ==  0x4000000000000000);
-    assert(multu_variants(0xFFFFFFFFU, 0xFFFFFFFFU) ==  0xFFFFFFFE00000001U);
-
-    return 0;
-}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_absq_s_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_absq_s_ob.c
new file mode 100644
index 0000000..6214031
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_absq_s_ob.c
@@ -0,0 +1,63 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, result, dspcontrol;
+    rt = 0x7F7F7F7F7F7F7F7F;
+    result = 0x7F7F7F7F7F7F7F7F;
+
+
+    __asm
+        (".set mips64\n\t"
+         "absq_s.ob %0 %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+
+    if (result != rd) {
+        printf("absq_s.ob test 1 error\n");
+
+        return -1;
+    }
+
+    __asm
+        ("rddsp %0\n\t"
+         : "=r"(rd)
+        );
+    rd >> 20;
+    rd = rd & 0x1;
+    if (rd != 0) {
+        printf("absq_s.ob test 1 dspcontrol overflow flag error\n");
+
+        return -1;
+    }
+
+    rt = 0x80FFFFFFFFFFFFFF;
+    result = 0x7F01010101010101;
+
+    __asm
+        ("absq_s.ob %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    if (result != rd) {
+        printf("absq_s.ob test 2 error\n");
+
+        return -1;
+    }
+
+    __asm
+        ("rddsp %0\n\t"
+         : "=r"(rd)
+        );
+    rd = rd >> 20;
+    rd = rd & 0x1;
+    if (rd != 1) {
+        printf("absq_s.ob test 2 dspcontrol overflow flag error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
+
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_absq_s_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_absq_s_ph.c
new file mode 100644
index 0000000..238416d
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_absq_s_ph.c
@@ -0,0 +1,37 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt;
+    long long result;
+
+    rt     = 0x10017EFD;
+    result = 0x10017EFD;
+
+    __asm
+        ("absq_s.ph %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    if (rd != result) {
+        printf("absq_s.ph wrong\n");
+
+        return -1;
+    }
+
+    rt     = 0x8000A536;
+    result = 0x7FFF5ACA;
+
+    __asm
+        ("absq_s.ph %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    if (rd != result) {
+        printf("absq_s.ph wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_absq_s_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_absq_s_pw.c
new file mode 100644
index 0000000..48fc763
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_absq_s_pw.c
@@ -0,0 +1,66 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, result, dspcontrol;
+    rd = 0;
+    rt = 0x7F7F7F7F7F7F7F7F;
+    result = 0x7F7F7F7F7F7F7F7F;
+
+
+    __asm
+        ("absq_s.pw %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+
+    if (result != rd) {
+        printf("absq_s.pw test 1 error\n");
+
+        return -1;
+    }
+
+    rd = 0;
+    __asm
+        ("rddsp %0\n\t"
+         : "=r"(rd)
+        );
+    rd >> 20;
+    rd = rd & 0x1;
+    if (rd != 0) {
+        printf("absq_s.pw test 1 dspcontrol overflow flag error\n");
+
+        return -1;
+    }
+
+    rd = 0;
+    rt = 0x80000000FFFFFFFF;
+    result = 0x7FFFFFFF00000001;
+
+    __asm
+        ("absq_s.pw %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    if (result != rd) {
+        printf("absq_s.pw test 2 error\n");
+
+        return -1;
+    }
+
+    rd = 0;
+    __asm
+        ("rddsp %0\n\t"
+         : "=r"(rd)
+        );
+    rd = rd >> 20;
+    rd = rd & 0x1;
+    if (rd != 1) {
+        printf("absq_s.pw test 2 dspcontrol overflow flag error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
+
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_absq_s_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_absq_s_qh.c
new file mode 100644
index 0000000..9001a9e
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_absq_s_qh.c
@@ -0,0 +1,40 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, result, dspcontrol;
+    rd = 0;
+    rt = 0x7F7F7F7F7F7F7F7F;
+    result = 0x7F7F7F7F7F7F7F7F;
+
+
+    __asm
+        ("absq_s.qh %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+
+    if (result != rd) {
+        printf("absq_s.qh test 1 error\n");
+
+        return -1;
+    }
+
+    rd = 0;
+    rt = 0x8000FFFFFFFFFFFF;
+    result = 0x7FFF000100000001;
+
+    __asm
+        ("absq_s.pw %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    if (result != rd) {
+        printf("absq_s.rw test 2 error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
+
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_absq_s_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_absq_s_w.c
new file mode 100644
index 0000000..414c8bd
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_absq_s_w.c
@@ -0,0 +1,48 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt;
+    long long result;
+
+    rt     = 0x80000000;
+    result = 0x7FFFFFFF;
+    __asm
+        ("absq_s.w %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    if (rd != result) {
+        printf("absq_s_w.ph wrong\n");
+
+        return -1;
+    }
+
+    rt     = 0x80030000;
+    result = 0x7FFD0000;
+    __asm
+        ("absq_s.w %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    if (rd != result) {
+        printf("absq_s_w.ph wrong\n");
+
+        return -1;
+    }
+
+    rt     = 0x31036080;
+    result = 0x31036080;
+    __asm
+        ("absq_s.w %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    if (rd != result) {
+        printf("absq_s_w.ph wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_ph.c
new file mode 100644
index 0000000..22a36d9
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_ph.c
@@ -0,0 +1,57 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long dsp;
+    long long result;
+
+    rs     = 0xFFFFFFFF;
+    rt     = 0x10101010;
+    result = 0x100F100F;
+    __asm
+        ("addq.ph   %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    if (rd != result) {
+        printf("1 addq.ph wrong\n");
+
+        return -1;
+    }
+
+    rs     = 0x3712847D;
+    rt     = 0x0031AF2D;
+    result = 0x374333AA;
+    __asm
+        ("addq.ph   %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    if (rd != result) {
+        printf("2 addq.ph wrong\n");
+
+        return -1;
+    }
+
+    rs     = 0x7fff847D;
+    rt     = 0x0031AF2D;
+    result = 0xffffffff803033AA;
+    __asm
+        ("addq.ph   %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+
+    __asm("rddsp %0\n\t"
+          : "=r"(dsp)
+         );
+
+    if (rd != result || (((dsp >> 20) & 0x01) != 1)) {
+        printf("3 addq.ph wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_pw.c
new file mode 100644
index 0000000..99a7668
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_pw.c
@@ -0,0 +1,46 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, result, dspreg, dspresult;
+
+    rs = 0x123456787FFFFFFF;
+    rt = 0x1111111100000101;
+    result = 0x2345678980000100;
+    dspresult = 0x1;
+
+    __asm
+        ("addq.pw %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dspreg)
+         : "r"(rs), "r"(rt)
+        );
+
+    dspreg = ((dspreg >> 20) & 0x01);
+    if ((rd != result) || (dspreg != dspresult)) {
+        printf("addq.pw error\n");
+
+        return -1;
+    }
+
+    rs = 0x1234567880FFFFFF;
+    rt = 0x1111111180000001;
+    result = 0x2345678901000000;
+    dspresult = 0x1;
+
+    __asm
+        ("addq.pw %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dspreg)
+         : "r"(rs), "r"(rt)
+        );
+
+    dspreg = ((dspreg >> 20) & 0x01);
+    if ((rd != result) || (dspreg != dspresult)) {
+        printf("addq.pw error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_qh.c
new file mode 100644
index 0000000..4b874af
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_qh.c
@@ -0,0 +1,28 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, result, dspreg, dspresult;
+
+    rs = 0x123456787FFF8010;
+    rt = 0x1111111100018000;
+    result = 0x2345678980000010;
+    dspresult = 0x1;
+
+    __asm
+        ("addq.qh %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dspreg)
+         : "r"(rs), "r"(rt)
+        );
+
+    dspreg = ((dspreg >> 20) & 0x01);
+
+    if ((rd != result) || (dspreg != dspresult)) {
+        printf("addq.qh error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_s_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_s_ph.c
new file mode 100644
index 0000000..ad84cdc
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_s_ph.c
@@ -0,0 +1,84 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long dsp;
+    long long result;
+
+    rs     = 0xFFFFFFFF;
+    rt     = 0x10101010;
+    result = 0x100F100F;
+    __asm
+        ("addq_s.ph   %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    if (rd != result) {
+        printf("1 addq_s.ph wrong\n");
+
+        return -1;
+    }
+
+    rs     = 0x3712847D;
+    rt     = 0x0031AF2D;
+    result = 0x37438000;
+    __asm
+        ("addq_s.ph   %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+
+    __asm
+        ("rddsp %0\n\t"
+         : "=r"(dsp)
+        );
+
+    if ((rd != result) || (((dsp >> 20) & 0x01) != 1)) {
+        printf("2 addq_s.ph wrong\n");
+
+        return -1;
+    }
+
+    rs     = 0x7fff847D;
+    rt     = 0x0031AF2D;
+    result = 0x7fff8000;
+    __asm
+        ("addq_s.ph   %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+
+    __asm
+        ("rddsp %0\n\t"
+         : "=r"(dsp)
+        );
+
+    if ((rd != result) || (((dsp >> 20) & 0x01) != 1)) {
+        printf("3 addq_s.ph wrong\n");
+
+        return -1;
+    }
+
+    rs     = 0x8030847D;
+    rt     = 0x8a00AF2D;
+    result = 0xffffffff80008000;
+    __asm
+        ("addq_s.ph   %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+
+    __asm
+        ("rddsp %0\n\t"
+         : "=r"(dsp)
+        );
+
+    if ((rd != result) || (((dsp >> 20) & 0x01) != 1)) {
+        printf("4 addq_s.ph wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_s_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_s_pw.c
new file mode 100644
index 0000000..2e380bb
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_s_pw.c
@@ -0,0 +1,45 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, result, dspreg, dspresult;
+    rs = 0x123456787FFFFFFF;
+    rt = 0x1111111100000001;
+    result = 0x234567897FFFFFFF;
+    dspresult = 0x1;
+
+    __asm
+        ("addq_s.pw %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dspreg)
+         : "r"(rs), "r"(rt)
+        );
+
+    dspreg = ((dspreg >> 20) & 0x01);
+    if ((rd != result) || (dspreg != dspresult)) {
+        printf("addq_s.pw error\n");
+
+        return -1;
+    }
+
+    rs = 0x80FFFFFFE00000FF;
+    rt = 0x80000001200000DD;
+    result = 0x80000000000001DC;
+    dspresult = 0x01;
+
+    __asm
+        ("addq_s.pw %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dspreg)
+         : "r"(rs), "r"(rt)
+        );
+
+    dspreg = ((dspreg >> 20) & 0x01);
+    if ((rd != result) || (dspreg != dspresult)) {
+        printf("addq_s.pw error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_s_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_s_qh.c
new file mode 100644
index 0000000..b638a2b
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_s_qh.c
@@ -0,0 +1,26 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, result, dspreg, dspresult;
+    rs = 0x123456787FFF8000;
+    rt = 0x1111111100028000;
+    result = 0x234567897FFF8000;
+    dspresult = 0x1;
+
+    __asm
+        ("addq_s.qh %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dspreg)
+         : "r"(rs), "r"(rt)
+        );
+
+    dspreg = ((dspreg >> 20) & 0x01);
+    if ((rd != result) || (dspreg != dspresult)) {
+        printf("addq_s.qh error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_s_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_s_w.c
new file mode 100644
index 0000000..3e08f5d
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_s_w.c
@@ -0,0 +1,48 @@
+#include "io.h"
+
+int main()
+{
+    long long rd, rs, rt;
+    long long result;
+
+    rt     = 0x10017EFD;
+    rs     = 0x11111111;
+    result = 0x2112900e;
+
+    __asm
+        ("addq_s.w %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    if (rd != result) {
+        printf("addq_s.w error\n");
+    }
+
+    rt     = 0x80017EFD;
+    rs     = 0x81111111;
+    result = 0xffffffff80000000;
+
+    __asm
+        ("addq_s.w %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    if (rd != result) {
+        printf("addq_s.w error\n");
+    }
+
+    rt     = 0x7fffffff;
+    rs     = 0x01111111;
+    result = 0x7fffffff;
+
+    __asm
+        ("addq_s.w %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    if (rd != result) {
+        printf("addq_s.w error\n");
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addsc.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addsc.c
new file mode 100644
index 0000000..4b684b9
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addsc.c
@@ -0,0 +1,39 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long dsp;
+    long long result;
+
+    rs     = 0x0000000F;
+    rt     = 0x00000001;
+    result = 0x00000010;
+    __asm
+        ("addsc %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    if (rd != result) {
+        printf("1 addsc wrong\n");
+
+        return -1;
+    }
+
+    rs     = 0xFFFF0FFF;
+    rt     = 0x00010111;
+    result = 0x00001110;
+    __asm
+        ("addsc %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    if ((rd != result) || (((dsp >> 13) & 0x01) != 1)) {
+        printf("2 addsc wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addu_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addu_ob.c
new file mode 100644
index 0000000..17f9c66
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addu_ob.c
@@ -0,0 +1,28 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, result, dspreg, dspresult;
+
+    rs = 0x123456789ABCDEF0;
+    rt = 0x3456123498DEF390;
+    result = 0x468A68AC329AD180;
+    dspresult = 0x01;
+
+    __asm
+        ("addu.ob %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dspreg)
+         : "r"(rs), "r"(rt)
+        );
+
+    dspreg = ((dspreg >> 20) & 0x01);
+
+    if ((rd != result) || (dspreg != dspresult)) {
+        printf("addu.ob error\n\t");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addu_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addu_qb.c
new file mode 100644
index 0000000..3b9b5fc
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addu_qb.c
@@ -0,0 +1,40 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long dsp;
+    long long result;
+
+    rs     = 0x00FF00FF;
+    rt     = 0x00010001;
+    result = 0x00000000;
+    __asm
+        ("addu.qb %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    if ((rd != result) || (((dsp >> 20) & 0x01) != 1)) {
+        printf("1 addu.qb wrong\n");
+
+        return -1;
+    }
+
+    rs     = 0xFFFF1111;
+    rt     = 0x00020001;
+    result = 0xFFFFFFFFFF011112;
+    __asm
+        ("addu.qb %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    if ((rd != result) || (((dsp >> 20) & 0x01) != 1)) {
+        printf("2 addu.qb wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addu_s_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addu_s_ob.c
new file mode 100644
index 0000000..e89a463
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addu_s_ob.c
@@ -0,0 +1,27 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, result, dspreg, dspresult;
+    rs = 0x123456789ABCDEF0;
+    rt = 0x3456123498DEF390;
+    result = 0x468A68ACFFFFFFFF;
+    dspresult = 0x01;
+
+    __asm
+        ("addu_s.ob %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dspreg)
+         : "r"(rs), "r"(rt)
+        );
+
+    dspreg = ((dspreg >> 20) & 0x01);
+
+    if ((rd != result) || (dspreg != dspresult)) {
+        printf("addu_s.ob error\n\t");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addu_s_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addu_s_qb.c
new file mode 100644
index 0000000..cb84293
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addu_s_qb.c
@@ -0,0 +1,40 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long dsp;
+    long long result;
+
+    rs     = 0x10FF01FF;
+    rt     = 0x10010001;
+    result = 0x20FF01FF;
+    __asm
+        ("addu_s.qb %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    if ((rd != result) || (((dsp >> 20) & 0x1) != 1)) {
+        printf("1 addu_s.qb error 1\n");
+
+        return -1;
+    }
+
+    rs     = 0xFFFFFFFFFFFF1111;
+    rt     = 0x00020001;
+    result = 0xFFFFFFFFFFFF1112;
+    __asm
+        ("addu_s.qb %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    if ((rd != result) || (((dsp >> 20) & 0x1) != 1)) {
+        printf("2 addu_s.qb error 2\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addwc.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addwc.c
new file mode 100644
index 0000000..5929cd2
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addwc.c
@@ -0,0 +1,59 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long dspi, dspo;
+    long long result;
+
+    rs     = 0x10FF01FF;
+    rt     = 0x10010001;
+    dspi   = 0x00002000;
+    result = 0x21000201;
+    __asm
+        ("wrdsp %3\n"
+         "addwc %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt), "r"(dspi)
+        );
+    if (rd != result) {
+        printf("1 addwc wrong\n");
+
+        return -1;
+    }
+
+    rs     = 0xFFFF1111;
+    rt     = 0x00020001;
+    dspi   = 0x00;
+    result = 0x00011112;
+    __asm
+        ("wrdsp %3\n"
+         "addwc %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt), "r"(dspi)
+        );
+    if (rd != result) {
+        printf("2 addwc wrong\n");
+
+        return -1;
+    }
+
+    rs     = 0x8FFF1111;
+    rt     = 0x80020001;
+    dspi   = 0x00;
+    result = 0x10011112;
+    __asm
+        ("wrdsp %4\n"
+         "addwc %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dspo)
+         : "r"(rs), "r"(rt), "r"(dspi)
+        );
+    if ((rd != result) || (((dspo >> 20) & 0x01) != 1)) {
+        printf("3 addwc wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_bitrev.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_bitrev.c
new file mode 100644
index 0000000..ac24ef3
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_bitrev.c
@@ -0,0 +1,23 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt;
+    long long result;
+
+    rt     = 0x12345678;
+    result = 0x00001E6A;
+
+    __asm
+        ("bitrev %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    if (rd != result) {
+        printf("bitrev wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_bposge32.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_bposge32.c
new file mode 100644
index 0000000..97bce44
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_bposge32.c
@@ -0,0 +1,50 @@
+#include "io.h"
+
+int main(void)
+{
+    long long dsp, sum;
+    long long result;
+
+    dsp =  0x20;
+    sum = 0x01;
+    result = 0x02;
+
+    __asm
+        ("wrdsp %1\n\t"
+         "bposge32 test1\n\t"
+         "nop\n\t"
+         "addi %0, 0xA2\n\t"
+         "nop\n\t"
+         "test1:\n\t"
+         "addi %0, 0x01\n\t"
+         : "+r"(sum)
+         : "r"(dsp)
+        );
+    if (sum != result) {
+        printf("bposge32 wrong\n");
+
+        return -1;
+    }
+
+    dsp =  0x10;
+    sum = 0x01;
+    result = 0xA4;
+
+    __asm
+        ("wrdsp %1\n\t"
+         "bposge32 test2\n\t"
+         "nop\n\t"
+         "addi %0, 0xA2\n\t"
+         "nop\n\t"
+         "test2:\n\t"
+         "addi %0, 0x01\n\t"
+         : "+r"(sum)
+         : "r"(dsp)
+        );
+    if (sum != result) {
+        printf("bposge32 wrong\n");
+
+        return -1;
+    }
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_bposge64.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_bposge64.c
new file mode 100644
index 0000000..36161ad
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_bposge64.c
@@ -0,0 +1,50 @@
+#include "io.h"
+
+int main(void)
+{
+    long long dsp, sum;
+    long long result;
+
+    dsp =  0x40;
+    sum = 0x01;
+    result = 0x02;
+
+    __asm
+        ("wrdsp %1\n\t"
+         "bposge64 test1\n\t"
+         "nop\n\t"
+         "addi %0, 0xA2\n\t"
+         "nop\n\t"
+         "test1:\n\t"
+         "addi %0, 0x01\n\t"
+         : "+r"(sum)
+         : "r"(dsp)
+        );
+    if (sum != result) {
+        printf("bposge64 wrong\n");
+
+        return -1;
+    }
+
+    dsp =  0x10;
+    sum = 0x01;
+    result = 0xA4;
+
+    __asm
+        ("wrdsp %1\n\t"
+         "bposge64 test2\n\t"
+         "nop\n\t"
+         "addi %0, 0xA2\n\t"
+         "nop\n\t"
+         "test2:\n\t"
+         "addi %0, 0x01\n\t"
+         : "+r"(sum)
+         : "r"(dsp)
+        );
+    if (sum != result) {
+        printf("bposge64 wrong\n");
+
+        return -1;
+    }
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_eq_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_eq_ph.c
new file mode 100644
index 0000000..63069d0
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_eq_ph.c
@@ -0,0 +1,42 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long result;
+
+    rs     = 0x11777066;
+    rt     = 0x55AA33FF;
+    result = 0x00;
+    __asm
+        ("cmp.eq.ph %1, %2\n\t"
+         "rddsp %0\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+
+    rd = (rd >> 24) & 0x03;
+    if (rd != result) {
+        printf("cmp.eq.ph wrong\n");
+
+        return -1;
+    }
+
+    rs     = 0x11777066;
+    rt     = 0x11777066;
+    result = 0x03;
+    __asm
+        ("cmp.eq.ph %1, %2\n\t"
+         "rddsp %0\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    rd = (rd >> 24) & 0x03;
+    if (rd != result) {
+        printf("cmp.eq.ph wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_eq_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_eq_pw.c
new file mode 100644
index 0000000..bae4c06
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_eq_pw.c
@@ -0,0 +1,46 @@
+#include "io.h"
+
+int main(void)
+{
+  long long rs, rt, dspreg, dspresult;
+
+  rs = 0x123456789ABCDEFF;
+  rt = 0x123456789ABCDEFF;
+  dspresult = 0x03;
+
+  __asm
+      ("cmp.eq.pw %1, %2\n\t"
+       "rddsp %0\n\t"
+       : "=r"(dspreg)
+       : "r"(rs), "r"(rt)
+      );
+
+  dspreg = ((dspreg >> 24) & 0x03);
+
+  if (dspreg != dspresult) {
+    printf("1 cmp.eq.pw error\n");
+
+    return -1;
+  }
+
+  rs = 0x123456799ABCDEFe;
+  rt = 0x123456789ABCDEFF;
+  dspresult = 0x00;
+
+  __asm
+      ("cmp.eq.pw %1, %2\n\t"
+       "rddsp %0\n\t"
+       : "=r"(dspreg)
+       : "r"(rs), "r"(rt)
+      );
+
+  dspreg = ((dspreg >> 24) & 0x03);
+
+  if (dspreg != dspresult) {
+    printf("2 cmp.eq.pw error\n");
+
+    return -1;
+  }
+
+  return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_eq_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_eq_qh.c
new file mode 100644
index 0000000..49ea271
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_eq_qh.c
@@ -0,0 +1,46 @@
+#include "io.h"
+
+int main(void)
+{
+  long long rs, rt, dspreg, dspresult;
+
+  rs = 0x123456789ABCDEF0;
+  rt = 0x123456789ABCDEFF;
+  dspresult = 0x0E;
+
+  __asm
+      ("cmp.eq.qh %1, %2\n\t"
+        "rddsp %0\n\t"
+        : "=r"(dspreg)
+        : "r"(rs), "r"(rt)
+       );
+
+  dspreg = ((dspreg >> 24) & 0x0F);
+
+  if (dspreg != dspresult) {
+    printf("cmp.eq.qh error\n");
+
+    return -1;
+  }
+
+  rs = 0x12355a789A4CD3F0;
+  rt = 0x123456789ABCDEFF;
+  dspresult = 0x00;
+
+  __asm
+      ("cmp.eq.qh %1, %2\n\t"
+        "rddsp %0\n\t"
+        : "=r"(dspreg)
+        : "r"(rs), "r"(rt)
+       );
+
+  dspreg = ((dspreg >> 24) & 0x0F);
+
+  if (dspreg != dspresult) {
+    printf("cmp.eq.qh error\n");
+
+    return -1;
+  }
+
+  return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_le_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_le_ph.c
new file mode 100644
index 0000000..12d24f1
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_le_ph.c
@@ -0,0 +1,40 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long result;
+
+    rs     = 0x11777066;
+    rt     = 0x55AA33FF;
+    result = 0x02;
+    __asm
+        ("cmp.le.ph %1, %2\n\t"
+         "rddsp %0\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+
+    rd = (rd >> 24) & 0x03;
+    if (rd != result) {
+        printf("cmp.le.ph wrong\n");
+
+        return -1;
+    }
+    rs     = 0x11777066;
+    rt     = 0x11777066;
+    result = 0x03;
+    __asm
+        ("cmp.le.ph %1, %2\n\t"
+         "rddsp %0\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    rd = (rd >> 24) & 0x03;
+    if (rd != result) {
+        printf("cmp.le.ph wrong\n");
+
+        return -1;
+    }
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_le_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_le_pw.c
new file mode 100644
index 0000000..6acc43c
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_le_pw.c
@@ -0,0 +1,46 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rs, rt, dspreg, dspresult;
+
+    rs = 0x123456789ABCDEF0;
+    rt = 0x123456789ABCDEFF;
+    dspresult = 0x03;
+
+    __asm
+        ("cmp.le.pw %1, %2\n\t"
+         "rddsp %0\n\t"
+         : "=r"(dspreg)
+         : "r"(rs), "r"(rt)
+        );
+
+    dspreg = ((dspreg >> 24) & 0x03);
+
+    if (dspreg != dspresult) {
+        printf("1 cmp.le.pw error\n");
+
+        return -1;
+    }
+
+    rs = 0x123456799ABCEEFF;
+    rt = 0x123456789ABCDEFF;
+    dspresult = 0x00;
+
+    __asm
+        ("cmp.le.pw %1, %2\n\t"
+         "rddsp %0\n\t"
+         : "=r"(dspreg)
+         : "r"(rs), "r"(rt)
+        );
+
+    dspreg = ((dspreg >> 24) & 0x03);
+
+    if (dspreg != dspresult) {
+        printf("2 cmp.le.pw error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_le_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_le_qh.c
new file mode 100644
index 0000000..c9ce216
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_le_qh.c
@@ -0,0 +1,46 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rs, rt, dspreg, dspresult;
+
+    rs = 0x123456789ABCDEF0;
+    rt = 0x123456789ABCDEFF;
+    dspresult = 0x0F;
+
+    __asm
+        ("cmp.le.qh %1, %2\n\t"
+         "rddsp %0\n\t"
+         : "=r"(dspreg)
+         : "r"(rs), "r"(rt)
+        );
+
+    dspreg = ((dspreg >> 24) & 0x0F);
+
+    if (dspreg != dspresult) {
+        printf("cmp.le.qh error\n");
+
+        return -1;
+    }
+
+    rs = 0x823456789ABCDEF0;
+    rt = 0x123456789ABCDEFF;
+    dspresult = 0x0f;
+
+    __asm
+        ("cmp.le.qh %1, %2\n\t"
+         "rddsp %0\n\t"
+         : "=r"(dspreg)
+         : "r"(rs), "r"(rt)
+        );
+
+    dspreg = ((dspreg >> 24) & 0x0F);
+
+    if (dspreg != dspresult) {
+        printf("cmp.le.qh error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_lt_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_lt_ph.c
new file mode 100644
index 0000000..1d91228
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_lt_ph.c
@@ -0,0 +1,41 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long result;
+
+    rs     = 0x11777066;
+    rt     = 0x55AA33FF;
+    result = 0x02;
+    __asm
+        ("cmp.lt.ph %1, %2\n\t"
+         "rddsp %0\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+
+    rd = (rd >> 24) & 0x03;
+    if (rd != result) {
+        printf("cmp.lt.ph wrong\n");
+
+        return -1;
+    }
+    rs     = 0x11777066;
+    rt     = 0x11777066;
+    result = 0x00;
+    __asm
+        ("cmp.lt.ph %1, %2\n\t"
+         "rddsp %0\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    rd = (rd >> 24) & 0x03;
+    if (rd != result) {
+        printf("cmp.lt.ph2 wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_lt_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_lt_pw.c
new file mode 100644
index 0000000..87e74ca
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_lt_pw.c
@@ -0,0 +1,46 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rs, rt, dspreg, dspresult;
+
+    rs = 0x123456789ABCDEF0;
+    rt = 0x123456789ABCDEFF;
+    dspresult = 0x01;
+
+    __asm
+        ("cmp.lt.pw %1, %2\n\t"
+         "rddsp %0\n\t"
+         : "=r"(dspreg)
+         : "r"(rs), "r"(rt)
+        );
+
+    dspreg = ((dspreg >> 24) & 0x03);
+
+    if (dspreg != dspresult) {
+        printf("cmp.lt.pw error\n");
+
+        return -1;
+    }
+
+    rs = 0x123456779ABCDEFf;
+    rt = 0x123456789ABCDEFF;
+    dspresult = 0x02;
+
+    __asm
+        ("cmp.lt.pw %1, %2\n\t"
+         "rddsp %0\n\t"
+         : "=r"(dspreg)
+         : "r"(rs), "r"(rt)
+        );
+
+    dspreg = ((dspreg >> 24) & 0x03);
+
+    if (dspreg != dspresult) {
+        printf("cmp.lt.pw error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_lt_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_lt_qh.c
new file mode 100644
index 0000000..0a13a5e
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_lt_qh.c
@@ -0,0 +1,46 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rs, rt, dspreg, dspresult;
+
+    rs = 0x123558789ABCDEF0;
+    rt = 0x123456789ABCDEFF;
+    dspresult = 0x01;
+
+    __asm
+        ("cmp.lt.qh %1, %2\n\t"
+         "rddsp %0\n\t"
+         : "=r"(dspreg)
+         : "r"(rs), "r"(rt)
+        );
+
+    dspreg = ((dspreg >> 24) & 0x0F);
+
+    if (dspreg != dspresult) {
+        printf("cmp.lt.qh error\n");
+
+        return -1;
+    }
+
+    rs = 0x123356779ABbDEF0;
+    rt = 0x123456789ABCDEFF;
+    dspresult = 0x0f;
+
+    __asm
+        ("cmp.lt.qh %1, %2\n\t"
+         "rddsp %0\n\t"
+         : "=r"(dspreg)
+         : "r"(rs), "r"(rt)
+        );
+
+    dspreg = ((dspreg >> 24) & 0x0F);
+
+    if (dspreg != dspresult) {
+        printf("cmp.lt.qh error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_eq_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_eq_ob.c
new file mode 100644
index 0000000..697d73d
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_eq_ob.c
@@ -0,0 +1,40 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, result;
+
+    rs = 0x123456789ABCDEF0;
+    rt = 0x123456789ABCDEFF;
+    result = 0xFE;
+
+    __asm
+        ("cmpgu.eq.ob %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+
+    if (rd != result) {
+        printf("cmpgu.eq.ob error\n");
+
+        return -1;
+    }
+
+    rs = 0x133456789ABCDEF0;
+    rt = 0x123556789ABCDEFF;
+    result = 0x3E;
+
+    __asm
+        ("cmpgu.eq.ob %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+
+    if (rd != result) {
+        printf("cmpgu.eq.ob error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_eq_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_eq_qb.c
new file mode 100644
index 0000000..b41c443
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_eq_qb.c
@@ -0,0 +1,38 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long result;
+
+    rs     = 0x11777066;
+    rt     = 0x55AA70FF;
+    result = 0x02;
+    __asm
+        ("cmpgu.eq.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+
+    if (rd != result) {
+        printf("cmpgu.eq.ph wrong\n");
+
+        return -1;
+    }
+
+    rs     = 0x11777066;
+    rt     = 0x11777066;
+    result = 0x0F;
+    __asm
+        ("cmpgu.eq.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    if (rd != result) {
+        printf("cmpgu.eq.ph wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_le_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_le_ob.c
new file mode 100644
index 0000000..8b65f18
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_le_ob.c
@@ -0,0 +1,40 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, result;
+
+    rs = 0x123456789ABCDEF0;
+    rt = 0x123456789ABCDEFF;
+    result = 0xFF;
+
+    __asm
+        ("cmpgu.le.ob %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+
+    if (rd != result) {
+        printf("cmpgu.le.ob error\n");
+
+        return -1;
+    }
+
+    rs = 0x823556789ABCDEF0;
+    rt = 0x123456789ABCDEFF;
+    result = 0x3F;
+
+    __asm
+        ("cmpgu.le.ob %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+
+    if (rd != result) {
+        printf("cmpgu.le.ob error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_le_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_le_qb.c
new file mode 100644
index 0000000..dd2b091
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_le_qb.c
@@ -0,0 +1,37 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long result;
+
+    rs     = 0x11777066;
+    rt     = 0x55AA70FF;
+    result = 0x0F;
+    __asm
+        ("cmpgu.le.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    if (rd != result) {
+        printf("cmpgu.le.qb wrong\n");
+
+        return -1;
+    }
+
+    rs     = 0x11777066;
+    rt     = 0x11766066;
+    result = 0x09;
+    __asm
+        ("cmpgu.le.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    if (rd != result) {
+        printf("cmpgu.le.qb wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_lt_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_lt_ob.c
new file mode 100644
index 0000000..3e5c9dd
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_lt_ob.c
@@ -0,0 +1,40 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, result;
+
+    rs = 0x123456789ABCDEF0;
+    rt = 0x123456789ABCDEFF;
+    result = 0x01;
+
+    __asm
+        ("cmpgu.lt.ob %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+
+    if (rd != result) {
+        printf("cmpgu.lt.ob error\n");
+
+        return -1;
+    }
+
+    rs = 0x823455789ABCDEF0;
+    rt = 0x123356789ABCDEFF;
+    result = 0x21;
+
+    __asm
+        ("cmpgu.lt.ob %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+
+    if (rd != result) {
+        printf("cmpgu.lt.ob error\n");
+
+        return -1;
+    }
+
+   return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_lt_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_lt_qb.c
new file mode 100644
index 0000000..a467cb7
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_lt_qb.c
@@ -0,0 +1,38 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long result;
+
+    rs     = 0x11777066;
+    rt     = 0x55AA70FF;
+    result = 0x0D;
+    __asm
+        ("cmpgu.lt.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+
+    if (rd != result) {
+        printf("cmpgu.lt.qb wrong\n");
+
+        return -1;
+    }
+
+    rs     = 0x11777066;
+    rt     = 0x11766066;
+    result = 0x00;
+    __asm
+        ("cmpgu.lt.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    if (rd != result) {
+        printf("cmpgu.lt.qb wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_eq_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_eq_ob.c
new file mode 100644
index 0000000..4d1983e
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_eq_ob.c
@@ -0,0 +1,46 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, dspreg, dspresult;
+
+    rs = 0x123456789ABCDEF0;
+    rt = 0x123456789ABCDEFF;
+    dspresult = 0xFE;
+
+    __asm
+        ("cmpu.eq.ob %1, %2\n\t"
+         "rddsp %0"
+         : "=r"(dspreg)
+         : "r"(rs), "r"(rt)
+        );
+
+    dspreg = ((dspreg >> 24) & 0xFF);
+
+    if (dspreg != dspresult) {
+        printf("cmpu.eq.ob error\n");
+
+        return -1;
+    }
+
+    rs = 0x133516713A0CD1F0;
+    rt = 0x123456789ABCDEFF;
+    dspresult = 0x00;
+
+    __asm
+        ("cmpu.eq.ob %1, %2\n\t"
+         "rddsp %0"
+         : "=r"(dspreg)
+         : "r"(rs), "r"(rt)
+        );
+
+    dspreg = ((dspreg >> 24) & 0xFF);
+
+    if (dspreg != dspresult) {
+        printf("cmpu.eq.ob error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_eq_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_eq_qb.c
new file mode 100644
index 0000000..28f3bec
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_eq_qb.c
@@ -0,0 +1,42 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rs, rt;
+    long long dsp;
+    long long result;
+
+    rs         = 0x11777066;
+    rt         = 0x55AA70FF;
+    result     = 0x02;
+    __asm
+        ("cmpu.eq.qb %1, %2\n\t"
+         "rddsp %0\n\t"
+         : "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 24) & 0x0F;
+    if (dsp != result) {
+        printf("cmpu.eq.qb wrong\n");
+
+        return -1;
+    }
+
+    rs     = 0x11777066;
+    rt     = 0x11777066;
+    result = 0x0F;
+    __asm
+        ("cmpu.eq.qb %1, %2\n\t"
+         "rddsp %0\n\t"
+         : "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 24) & 0x0F;
+    if (dsp != result) {
+        printf("cmpu.eq.qb wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_le_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_le_ob.c
new file mode 100644
index 0000000..8acbd1c
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_le_ob.c
@@ -0,0 +1,44 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rs, rt, dspreg, dspresult;
+
+    rs = 0x123456789ABCDEF0;
+    rt = 0x123456789ABCDEFF;
+    dspresult = 0xFF;
+
+    __asm
+        ("cmpu.le.ob %1, %2\n\t"
+         "rddsp %0"
+         : "=r"(dspreg)
+         : "r"(rs), "r"(rt)
+        );
+
+    dspreg = dspreg >> 24;
+    if (dspreg != dspresult) {
+        printf("cmpu.le.ob error\n");
+
+        return -1;
+    }
+
+    rs = 0x823656789ABCDEF0;
+    rt = 0x123456789ABCDEFF;
+    dspresult = 0x3F;
+
+    __asm
+        ("cmpu.le.ob %1, %2\n\t"
+         "rddsp %0"
+         : "=r"(dspreg)
+         : "r"(rs), "r"(rt)
+        );
+
+    dspreg = dspreg >> 24;
+    if (dspreg != dspresult) {
+        printf("cmpu.le.ob error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_le_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_le_qb.c
new file mode 100644
index 0000000..8a17a08
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_le_qb.c
@@ -0,0 +1,41 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rs, rt;
+    long long dsp;
+    long long result;
+
+    rs         = 0x11777066;
+    rt         = 0x55AA70FF;
+    result     = 0x0F;
+    __asm
+        ("cmpu.le.qb %1, %2\n\t"
+         "rddsp %0\n\t"
+         : "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 24) & 0x0F;
+    if (dsp != result) {
+        printf("cmpu.le.qb wrong\n");
+
+        return -1;
+    }
+
+    rs     = 0x11777066;
+    rt     = 0x11777066;
+    result = 0x0F;
+    __asm
+        ("cmpu.le.qb %1, %2\n\t"
+         "rddsp %0\n\t"
+         : "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 24) & 0x0F;
+    if (dsp != result) {
+        printf("cmpu.le.qb wrong\n");
+
+        return -1;
+    }
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_lt_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_lt_ob.c
new file mode 100644
index 0000000..34e312d
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_lt_ob.c
@@ -0,0 +1,44 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rs, rt, dspreg, dspresult;
+
+    rs = 0x123456789ABCDEF0;
+    rt = 0x123456789ABCDEFF;
+    dspresult = 0x01;
+
+    __asm
+        ("cmpu.lt.ob %1, %2\n\t"
+         "rddsp %0"
+         : "=r"(dspreg)
+         : "r"(rs), "r"(rt)
+        );
+
+    dspreg = dspreg >> 24;
+    if (dspreg != dspresult) {
+        printf("cmpu.lt.ob error\n");
+
+        return -1;
+    }
+
+    rs = 0x823156789ABCDEF0;
+    rt = 0x123456789ABCDEFF;
+    dspresult = 0x41;
+
+    __asm
+        ("cmpu.lt.ob %1, %2\n\t"
+         "rddsp %0"
+         : "=r"(dspreg)
+         : "r"(rs), "r"(rt)
+        );
+
+    dspreg = dspreg >> 24;
+    if (dspreg != dspresult) {
+        printf("cmpu.lt.ob error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_lt_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_lt_qb.c
new file mode 100644
index 0000000..adb75ee
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_lt_qb.c
@@ -0,0 +1,42 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rs, rt;
+    long long dsp;
+    long long result;
+
+    rs         = 0x11777066;
+    rt         = 0x55AA70FF;
+    result     = 0x0D;
+    __asm
+        ("cmpu.lt.qb %1, %2\n\t"
+         "rddsp %0\n\t"
+         : "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 24) & 0x0F;
+    if (dsp != result) {
+        printf("cmpu.lt.qb wrong\n");
+
+        return -1;
+    }
+
+    rs     = 0x11777066;
+    rt     = 0x11777066;
+    result = 0x00;
+    __asm
+        ("cmpu.lt.qb %1, %2\n\t"
+         "rddsp %0\n\t"
+         : "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 24) & 0x0F;
+    if (dsp != result) {
+        printf("cmpu.lt.qb wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dappend.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dappend.c
new file mode 100644
index 0000000..ba8e121
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dappend.c
@@ -0,0 +1,37 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, rs;
+    long long res;
+    rt = 0x1234567887654321;
+    rs = 0xabcd1234abcd8765;
+
+    res = 0x1234567887654321;
+    __asm
+        ("dappend %0, %1, 0x0\n\t"
+         : "=r"(rt)
+         : "r"(rs)
+        );
+
+    if (rt != res) {
+        printf("dappend error\n");
+        return -1;
+    }
+
+    rt = 0x1234567887654321;
+    rs = 0xabcd1234abcd8765;
+
+    res = 0x2345678876543215;
+    __asm
+        ("dappend %0, %1, 0x4\n\t"
+         : "=r"(rt)
+         : "r"(rs)
+        );
+
+    if (rt != res) {
+        printf("dappend error\n");
+        return -1;
+    }
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextp.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextp.c
new file mode 100644
index 0000000..a469cc0
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextp.c
@@ -0,0 +1,54 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, dsp;
+    long long achi, acli;
+    long long res, resdsp;
+    int rs;
+
+    rs = 0xabcd1234;
+
+    achi = 0x12345678;
+    acli = 0x87654321;
+    res = 0xff;
+    resdsp = 0x0;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "wrdsp %4\n\t"
+         "dextp %0, $ac1, 0x7\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rs)
+        );
+    dsp = (dsp >> 14) & 0x1;
+    if ((dsp != resdsp) || (rt != res)) {
+        printf("dextp error\n");
+        return -1;
+    }
+
+    rs = 0xabcd1200;
+
+    achi = 0x12345678;
+    acli = 0x87654321;
+    resdsp = 0x1;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "wrdsp %4\n\t"
+         "dextp %0, $ac1, 0x7\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rs)
+        );
+    dsp = (dsp >> 14) & 0x1;
+    if (dsp != resdsp) {
+        printf("dextp error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextpdp.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextpdp.c
new file mode 100644
index 0000000..a2361e2
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextpdp.c
@@ -0,0 +1,59 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, dsp;
+    long long achi, acli;
+    long long res, resdsp, resdsppos;
+    int rs;
+    int tmp1, tmp2;
+
+    rs = 0xabcd1234;
+
+    achi = 0x12345678;
+    acli = 0x87654321;
+    res = 0xff;
+    resdsp = 0x0;
+    resdsppos = 0x2c;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "wrdsp %4\n\t"
+         "dextpdp %0, $ac1, 0x7\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rs)
+        );
+    tmp1 = (dsp >> 14) & 0x1;
+    tmp2 = dsp & 0x3f;
+
+    if ((tmp1 != resdsp) || (rt != res) || (tmp2 != resdsppos)) {
+        printf("dextpdp error\n");
+        return -1;
+    }
+
+    rs = 0xabcd1200;
+
+    achi = 0x12345678;
+    acli = 0x87654321;
+    resdsp = 0x1;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "wrdsp %4\n\t"
+         "dextpdp %0, $ac1, 0x7\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rs)
+        );
+    tmp1 = (dsp >> 14) & 0x1;
+
+    if (tmp1 != resdsp) {
+        printf("dextpdp error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextpdpv.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextpdpv.c
new file mode 100644
index 0000000..09c0b5b
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextpdpv.c
@@ -0,0 +1,63 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, rs, dsp;
+    long long achi, acli;
+    long long res, resdsp, resdsppos;
+    int rsdsp;
+    int tmp1, tmp2;
+
+    rsdsp = 0xabcd1234;
+    rs = 0x7;
+    achi = 0x12345678;
+    acli = 0x87654321;
+    res = 0xff;
+    resdsp = 0x0;
+    resdsppos = 0x2c;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "wrdsp %4, 0x1\n\t"
+         "wrdsp %4\n\t"
+         "dextpdpv %0, $ac1, %5\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rsdsp), "r"(rs)
+        );
+
+    tmp1 = (dsp >> 14) & 0x1;
+    tmp2 = dsp & 0x3f;
+
+    if ((tmp1 != resdsp) || (rt != res) || (tmp2 != resdsppos)) {
+        printf("dextpdpv error\n");
+        return -1;
+    }
+
+    rsdsp = 0xabcd1200;
+    rs = 0x7;
+    achi = 0x12345678;
+    acli = 0x87654321;
+    resdsp = 0x1;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "wrdsp %4, 0x1\n\t"
+         "wrdsp %4\n\t"
+         "dextpdpv %0, $ac1, %5\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rsdsp), "r"(rs)
+        );
+
+    tmp1 = (dsp >> 14) & 0x1;
+
+    if (tmp1 != resdsp) {
+        printf("dextpdpv error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextpv.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextpv.c
new file mode 100644
index 0000000..2626f3d
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextpv.c
@@ -0,0 +1,58 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, rs, dsp;
+    long long achi, acli;
+    long long res, resdsp;
+    int rsdsp;
+
+    rsdsp = 0xabcd1234;
+    rs = 0x7;
+
+    achi = 0x12345678;
+    acli = 0x87654321;
+    res = 0xff;
+    resdsp = 0x0;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "wrdsp %4, 0x1\n\t"
+         "wrdsp %4\n\t"
+         "dextpv %0, $ac1, %5\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rsdsp), "r"(rs)
+        );
+    dsp = (dsp >> 14) & 0x1;
+    if ((dsp != resdsp) || (rt != res)) {
+        printf("dextpv error\n");
+        return -1;
+    }
+
+    rsdsp = 0xabcd1200;
+    rs = 0x7;
+
+    achi = 0x12345678;
+    acli = 0x87654321;
+    resdsp = 0x1;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "wrdsp %4, 0x1\n\t"
+         "wrdsp %4\n\t"
+         "dextpv %0, $ac1, %5\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rsdsp), "r"(rs)
+        );
+    dsp = (dsp >> 14) & 0x1;
+    if (dsp != resdsp) {
+        printf("dextpv error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_l.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_l.c
new file mode 100644
index 0000000..538846d
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_l.c
@@ -0,0 +1,44 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt;
+    long long achi, acli;
+    long long res;
+
+    achi = 0x87654321;
+    acli = 0x12345678;
+
+    res = 0x2100000000123456;
+
+    __asm
+        ("mthi %1, $ac1\n\t"
+         "mtlo %2, $ac1\n\t"
+         "dextr.l %0, $ac1, 0x8\n\t"
+         : "=r"(rt)
+         : "r"(achi), "r"(acli)
+        );
+    if (rt != res) {
+        printf("dextr.l error\n");
+        return -1;
+    }
+
+    achi = 0x87654321;
+    acli = 0x12345678;
+
+    res = 0x12345678;
+
+    __asm
+        ("mthi %1, $ac1\n\t"
+         "mtlo %2, $ac1\n\t"
+         "dextr.l %0, $ac1, 0x0\n\t"
+         : "=r"(rt)
+         : "r"(achi), "r"(acli)
+        );
+    if (rt != res) {
+        printf("dextr.l error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_r_l.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_r_l.c
new file mode 100644
index 0000000..a10a9ab
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_r_l.c
@@ -0,0 +1,54 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, dsp;
+    long long achi, acli;
+    long long res, resdsp;
+
+    achi = 0x87654321;
+    acli = 0x12345678;
+
+    res = 0x2100000000123456;
+    resdsp = 0x01;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "dextr_r.l %0, $ac1, 0x8\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(achi), "r"(acli)
+        );
+
+    dsp = (dsp >> 23) & 0x1;
+
+    if ((dsp != resdsp) || (rt != res)) {
+        printf("dextr_r.l error\n");
+        return -1;
+    }
+
+    achi = 0x87654321;
+    acli = 0x12345678;
+
+    res = 0x12345678;
+    resdsp = 0x01;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "dextr_r.l %0, $ac1, 0x0\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(achi), "r"(acli)
+        );
+
+    dsp = (dsp >> 23) & 0x1;
+
+    if ((dsp != resdsp) || (rt != res)) {
+        printf("dextr_r.l error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_r_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_r_w.c
new file mode 100644
index 0000000..2774e9b
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_r_w.c
@@ -0,0 +1,54 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, dsp;
+    long long achi, acli;
+    long long res, resdsp;
+
+    achi = 0x87654321;
+    acli = 0x12345678;
+
+    res = 0x123456;
+    resdsp = 0x01;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "dextr_r.w %0, $ac1, 0x8\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(achi), "r"(acli)
+        );
+
+    dsp = (dsp >> 23) & 0x1;
+
+    if ((dsp != resdsp) || (rt != res)) {
+        printf("dextr_r.w error\n");
+        return -1;
+    }
+
+    achi = 0x87654321;
+    acli = 0x12345678;
+
+    res = 0x12345678;
+    resdsp = 0x01;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "dextr_r.w %0, $ac1, 0x0\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(achi), "r"(acli)
+        );
+
+    dsp = (dsp >> 23) & 0x1;
+
+    if ((dsp != resdsp) || (rt != res)) {
+        printf("dextr_r.w error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_rs_l.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_rs_l.c
new file mode 100644
index 0000000..1a202fe
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_rs_l.c
@@ -0,0 +1,52 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, dsp;
+    long long achi, acli;
+    long long res, resdsp;
+
+    achi = 0x87654321;
+    acli = 0x12345678;
+
+    res = 0x8000000000000000;
+    resdsp = 0x1;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "dextr_rs.l %0, $ac1, 0x8\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(achi), "r"(acli)
+        );
+    dsp = (dsp >> 23) & 0x1;
+
+    if ((dsp != resdsp) || (rt != res)) {
+        printf("dextr_rs.l error\n");
+        return -1;
+    }
+
+    achi = 0x00;
+    acli = 0x12345678;
+
+    res = 0x12345678;
+    resdsp = 0x1;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "dextr_rs.l %0, $ac1, 0x0\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(achi), "r"(acli)
+        );
+    dsp = (dsp >> 23) & 0x1;
+
+    if ((dsp != resdsp) || (rt != res)) {
+        printf("dextr_rs.l error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_rs_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_rs_w.c
new file mode 100644
index 0000000..ebe5f99
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_rs_w.c
@@ -0,0 +1,52 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, dsp;
+    long long achi, acli;
+    long long res, resdsp;
+
+    achi = 0x87654321;
+    acli = 0x12345678;
+
+    res = 0xffffffff80000000;
+    resdsp = 0x1;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "dextr_rs.w %0, $ac1, 0x8\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(achi), "r"(acli)
+        );
+    dsp = (dsp >> 23) & 0x1;
+
+    if ((dsp != resdsp) || (rt != res)) {
+        printf("dextr_rs.w error\n");
+        return -1;
+    }
+
+    achi = 0x00;
+    acli = 0x12345678;
+
+    res = 0x123456;
+    resdsp = 0x1;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "dextr_rs.w %0, $ac1, 0x8\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(achi), "r"(acli)
+        );
+    dsp = (dsp >> 23) & 0x1;
+
+    if ((dsp != resdsp) || (rt != res)) {
+        printf("dextr_rs.w error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_s_h.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_s_h.c
new file mode 100644
index 0000000..1adb554
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_s_h.c
@@ -0,0 +1,73 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, dsp;
+    long long achi, acli;
+    long long res, resdsp;
+
+    achi = 0x87654321;
+    acli = 0x12345678;
+
+    res = 0xffffffffffff8000;
+    resdsp = 0x1;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "dextr_s.h %0, $ac1, 0x8\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(achi), "r"(acli)
+        );
+    dsp = (dsp >> 23) & 0x1;
+
+    if ((dsp != resdsp) || (rt != res)) {
+        printf("1 dextr_s.h error\n");
+        return -1;
+    }
+
+    achi = 0x77654321;
+    acli = 0x12345678;
+
+    res = 0x7fff;
+    resdsp = 0x1;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "dextr_s.h %0, $ac1, 0x8\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(achi), "r"(acli)
+        );
+    dsp = (dsp >> 23) & 0x1;
+
+    if ((dsp != resdsp) || (rt != res)) {
+        printf("2 dextr_s.h error\n");
+        return -1;
+    }
+
+    achi = 0x00;
+    acli = 0x78;
+
+    res = 0x7;
+    resdsp = 0x1;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "dextr_s.h %0, $ac1, 0x4\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(achi), "r"(acli)
+        );
+    dsp = (dsp >> 23) & 0x1;
+
+    if ((dsp != resdsp) || (rt != res)) {
+        printf("3 dextr_s.h error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_w.c
new file mode 100644
index 0000000..79bed5d
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_w.c
@@ -0,0 +1,44 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt;
+    long long achi, acli;
+    long long res;
+
+    achi = 0x87654321;
+    acli = 0x12345678;
+
+    res = 0x123456;
+
+    __asm
+        ("mthi %1, $ac1\n\t"
+         "mtlo %2, $ac1\n\t"
+         "dextr.w %0, $ac1, 0x8\n\t"
+         : "=r"(rt)
+         : "r"(achi), "r"(acli)
+        );
+    if (rt != res) {
+        printf("dextr.w error\n");
+        return -1;
+    }
+
+    achi = 0x87654321;
+    acli = 0x12345678;
+
+    res = 0x12345678;
+
+    __asm
+        ("mthi %1, $ac1\n\t"
+         "mtlo %2, $ac1\n\t"
+         "dextr.w %0, $ac1, 0x0\n\t"
+         : "=r"(rt)
+         : "r"(achi), "r"(acli)
+        );
+    if (rt != res) {
+        printf("dextr.w error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_l.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_l.c
new file mode 100644
index 0000000..2e6187f
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_l.c
@@ -0,0 +1,46 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, rs;
+    long long achi, acli;
+    long long res;
+
+    achi = 0x87654321;
+    acli = 0x12345678;
+    rs = 0x8;
+
+    res = 0x2100000000123456;
+
+    __asm
+        ("mthi %1, $ac1\n\t"
+         "mtlo %2, $ac1\n\t"
+         "dextrv.l %0, $ac1, %3\n\t"
+         : "=r"(rt)
+         : "r"(achi), "r"(acli), "r"(rs)
+        );
+    if (rt != res) {
+        printf("dextrv.l error\n");
+        return -1;
+    }
+
+    achi = 0x87654321;
+    acli = 0x12345678;
+    rs = 0x0;
+
+    res = 0x12345678;
+
+    __asm
+        ("mthi %1, $ac1\n\t"
+         "mtlo %2, $ac1\n\t"
+         "dextrv.l %0, $ac1, %3\n\t"
+         : "=r"(rt)
+         : "r"(achi), "r"(acli), "r"(rs)
+        );
+    if (rt != res) {
+        printf("dextrv.l error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_r_l.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_r_l.c
new file mode 100644
index 0000000..b47a017
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_r_l.c
@@ -0,0 +1,56 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, dsp, rs;
+    long long achi, acli;
+    long long res, resdsp;
+
+    achi = 0x87654321;
+    acli = 0x12345678;
+    rs = 0x8;
+
+    res = 0x2100000000123456;
+    resdsp = 0x01;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "dextrv_r.l %0, $ac1, %4\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rs)
+        );
+
+    dsp = (dsp >> 23) & 0x1;
+
+    if ((dsp != resdsp) || (rt != res)) {
+        printf("dextrv_r.l error\n");
+        return -1;
+    }
+
+    achi = 0x87654321;
+    acli = 0x12345678;
+    rs = 0x0;
+
+    res = 0x12345678;
+    resdsp = 0x01;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "dextrv_r.l %0, $ac1, %4\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rs)
+        );
+
+    dsp = (dsp >> 23) & 0x1;
+
+    if ((dsp != resdsp) || (rt != res)) {
+        printf("dextrv_r.l error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_r_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_r_w.c
new file mode 100644
index 0000000..cd201de
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_r_w.c
@@ -0,0 +1,56 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, rs, dsp;
+    long long achi, acli;
+    long long res, resdsp;
+
+    achi = 0x87654321;
+    acli = 0x12345678;
+    rs = 0x8;
+
+    res = 0x123456;
+    resdsp = 0x01;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "dextrv_r.w %0, $ac1, %4\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rs)
+        );
+
+    dsp = (dsp >> 23) & 0x1;
+
+    if ((dsp != resdsp) || (rt != res)) {
+        printf("dextrv_r.w error\n");
+        return -1;
+    }
+
+    achi = 0x87654321;
+    acli = 0x12345678;
+    rs = 0x0;
+
+    res = 0x12345678;
+    resdsp = 0x01;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "dextrv_r.w %0, $ac1, %4\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rs)
+        );
+
+    dsp = (dsp >> 23) & 0x1;
+
+    if ((dsp != resdsp) || (rt != res)) {
+        printf("dextrv_r.w error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_rs_l.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_rs_l.c
new file mode 100644
index 0000000..6ce4185
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_rs_l.c
@@ -0,0 +1,54 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, rs, dsp;
+    long long achi, acli;
+    long long res, resdsp;
+
+    achi = 0x87654321;
+    acli = 0x12345678;
+    rs = 0x8;
+
+    res = 0x8000000000000000;
+    resdsp = 0x1;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "dextrv_rs.l %0, $ac1, %4\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rs)
+        );
+    dsp = (dsp >> 23) & 0x1;
+
+    if ((dsp != resdsp) || (rt != res)) {
+        printf("dextrv_rs.l error\n");
+        return -1;
+    }
+
+    achi = 0x00;
+    acli = 0x12345678;
+    rs = 0x0;
+
+    res = 0x12345678;
+    resdsp = 0x1;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "dextrv_rs.l %0, $ac1, %4\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rs)
+        );
+    dsp = (dsp >> 23) & 0x1;
+
+    if ((dsp != resdsp) || (rt != res)) {
+        printf("dextrv_rs.l error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_rs_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_rs_w.c
new file mode 100644
index 0000000..a65183c
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_rs_w.c
@@ -0,0 +1,54 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, rs, dsp;
+    long long achi, acli;
+    long long res, resdsp;
+
+    achi = 0x87654321;
+    acli = 0x12345678;
+    rs = 0x8;
+
+    res = 0xffffffff80000000;
+    resdsp = 0x1;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "dextrv_rs.w %0, $ac1, %4\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rs)
+        );
+    dsp = (dsp >> 23) & 0x1;
+
+    if ((dsp != resdsp) || (rt != res)) {
+        printf("dextrv_rs.w error\n");
+        return -1;
+    }
+
+    achi = 0x00;
+    acli = 0x12345678;
+    rs = 0x8;
+
+    res = 0x123456;
+    resdsp = 0x1;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "dextrv_rs.w %0, $ac1, %4\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rs)
+        );
+    dsp = (dsp >> 23) & 0x1;
+
+    if ((dsp != resdsp) || (rt != res)) {
+        printf("dextrv_rs.w error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_s_h.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_s_h.c
new file mode 100644
index 0000000..87d3aee
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_s_h.c
@@ -0,0 +1,32 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, rs, dsp;
+    long long achi, acli;
+    long long res, resdsp;
+
+    achi = 0x87654321;
+    acli = 0x12345678;
+    rs = 0x8;
+
+    res = 0xffffffffffff8000;
+    resdsp = 0x1;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "dextrv_s.h %0, $ac1, %4\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rs)
+        );
+    dsp = (dsp >> 23) & 0x1;
+
+    if ((dsp != resdsp) || (rt != res)) {
+        printf("dextrv_s.h error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_w.c
new file mode 100644
index 0000000..973765c
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_w.c
@@ -0,0 +1,46 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, rs;
+    long long achi, acli;
+    long long res;
+
+    achi = 0x87654321;
+    acli = 0x12345678;
+    rs = 0x8;
+
+    res = 0x123456;
+
+    __asm
+        ("mthi %1, $ac1\n\t"
+         "mtlo %2, $ac1\n\t"
+         "dextrv.w %0, $ac1, %3\n\t"
+         : "=r"(rt)
+         : "r"(achi), "r"(acli), "r"(rs)
+        );
+    if (rt != res) {
+        printf("dextrv.w error\n");
+        return -1;
+    }
+
+    achi = 0x87654321;
+    acli = 0x12345678;
+    rs = 0x0;
+
+    res = 0x12345678;
+
+    __asm
+        ("mthi %1, $ac1\n\t"
+         "mtlo %2, $ac1\n\t"
+         "dextrv.w %0, $ac1, %3\n\t"
+         : "=r"(rt)
+         : "r"(achi), "r"(acli), "r"(rs)
+        );
+    if (rt != res) {
+        printf("dextrv.w error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dinsv.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dinsv.c
new file mode 100644
index 0000000..f619218
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dinsv.c
@@ -0,0 +1,26 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rs, rt, dsp;
+    long long res;
+
+    rs = 0x1234567887654321;
+    rt = 0x1234567812345678;
+    dsp = 0x2222;
+    res = 0x1234567812345678;
+    __asm
+        ("wrdsp  %1, 0x3\n\t"
+         "wrdsp %1\n\t"
+         "dinsv %0, %2\n\t"
+         : "+r"(rt)
+         : "r"(dsp), "r"(rs)
+        );
+
+    if (rt != res) {
+        printf("dinsv error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dmadd.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dmadd.c
new file mode 100644
index 0000000..fb22614
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dmadd.c
@@ -0,0 +1,57 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, rs;
+    long long achi, acli;
+    long long acho, aclo;
+    long long resh, resl;
+
+    achi = 0x1;
+    acli = 0x1;
+
+    rs = 0x0000000100000001;
+    rt = 0x0000000200000002;
+
+    resh = 0x1;
+    resl = 0x5;
+    __asm
+       ("mthi %2, $ac1 \t\n"
+        "mtlo %3, $ac1 \t\n"
+        "dmadd $ac1, %4, %5\t\n"
+        "mfhi %0, $ac1 \t\n"
+        "mflo %1, $ac1 \t\n"
+        : "=r"(acho), "=r"(aclo)
+        : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+      );
+    if ((acho != resh) || (aclo != resl)) {
+        printf("1 dmadd error\n");
+
+        return -1;
+    }
+
+    achi = 0x1;
+    acli = 0x1;
+
+    rs = 0xaaaabbbbccccdddd;
+    rt = 0xaaaabbbbccccdddd;
+
+    resh = 0x0000000000000000;
+    resl = 0xffffffffca860b63;
+
+    __asm
+       ("mthi %2, $ac1 \t\n"
+        "mtlo %3, $ac1 \t\n"
+        "dmadd $ac1, %4, %5\t\n"
+        "mfhi %0, $ac1 \t\n"
+        "mflo %1, $ac1 \t\n"
+        : "=r"(acho), "=r"(aclo)
+        : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+      );
+    if ((acho != resh) || (aclo != resl)) {
+        printf("2 dmadd error\n");
+
+        return -1;
+    }
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dmaddu.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dmaddu.c
new file mode 100644
index 0000000..39ab0c1
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dmaddu.c
@@ -0,0 +1,56 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, rs;
+    long long achi, acli;
+    long long acho, aclo;
+    long long resh, resl;
+    achi = 0x1;
+    acli = 0x2;
+
+    rs = 0x0000000200000002;
+    rt = 0x0000000200000002;
+    resh = 0x1;
+    resl = 0xa;
+    __asm
+        ("mthi %2, $ac1 \t\n"
+         "mtlo %3, $ac1 \t\n"
+         "dmaddu $ac1, %4, %5\t\n"
+         "mfhi %0, $ac1 \t\n"
+         "mflo %1, $ac1 \t\n"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+    if ((acho != resh) || (aclo != resl)) {
+        printf("1 dmaddu error\n");
+
+        return -1;
+    }
+
+    achi = 0x1;
+    acli = 0x1;
+
+    rs = 0xaaaabbbbccccdddd;
+    rt = 0xaaaabbbbccccdddd;
+
+    resh = 0x0000000000000002;
+    resl = 0xffffffffca860b63;
+
+    __asm
+        ("mthi %2, $ac1 \t\n"
+         "mtlo %3, $ac1 \t\n"
+         "dmaddu $ac1, %4, %5\t\n"
+         "mfhi %0, $ac1 \t\n"
+         "mflo %1, $ac1 \t\n"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+    if ((acho != resh) || (aclo != resl)) {
+        printf("2 dmaddu error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dmsub.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dmsub.c
new file mode 100644
index 0000000..16be617
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dmsub.c
@@ -0,0 +1,59 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, rs;
+    long long achi, acli;
+    long long acho, aclo;
+    long long resh, resl;
+    achi = 0x1;
+    acli = 0x8;
+
+    rs = 0x0000000100000001;
+    rt = 0x0000000200000002;
+
+    resh = 0x1;
+    resl = 0x4;
+
+    __asm
+        ("mthi %2, $ac1 \t\n"
+         "mtlo %3, $ac1 \t\n"
+         "dmsub $ac1, %4, %5\t\n"
+         "mfhi %0, $ac1 \t\n"
+         "mflo %1, $ac1 \t\n"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+    if ((acho != resh) || (aclo != resl)) {
+        printf("1 dmsub error\n");
+
+        return -1;
+    }
+
+    achi = 0xfffffffF;
+    acli = 0xfffffffF;
+
+    rs = 0x8888999977776666;
+    rt = 0x9999888877776666;
+
+    resh = 0xffffffffffffffff;
+    resl = 0x789aae13;
+
+    __asm
+        ("mthi %2, $ac1 \t\n"
+         "mtlo %3, $ac1 \t\n"
+         "dmsub $ac1, %4, %5\t\n"
+         "mfhi %0, $ac1 \t\n"
+         "mflo %1, $ac1 \t\n"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+
+    if ((acho != resh) || (aclo != resl)) {
+        printf("2 dmsub error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dmsubu.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dmsubu.c
new file mode 100644
index 0000000..cc4838a
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dmsubu.c
@@ -0,0 +1,59 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, rs;
+    long long achi, acli;
+    long long acho, aclo;
+    long long resh, resl;
+    achi = 0x1;
+    acli = 0x8;
+
+    rs = 0x0000000100000001;
+    rt = 0x0000000200000002;
+
+    resh = 0x1;
+    resl = 0x4;
+
+    __asm
+        ("mthi %2, $ac1 \t\n"
+         "mtlo %3, $ac1 \t\n"
+         "dmsubu $ac1, %4, %5\t\n"
+         "mfhi %0, $ac1 \t\n"
+         "mflo %1, $ac1 \t\n"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+    if ((acho != resh) || (aclo != resl)) {
+        printf("1 dmsubu error\n");
+
+        return -1;
+    }
+
+    achi = 0xfffffffF;
+    acli = 0xfffffffF;
+
+    rs = 0x8888999977776666;
+    rt = 0x9999888877776666;
+
+    resh = 0xffffffffffffffff;
+    resl = 0x789aae13;
+
+    __asm
+        ("mthi %2, $ac1 \t\n"
+         "mtlo %3, $ac1 \t\n"
+         "dmsubu $ac1, %4, %5\t\n"
+         "mfhi %0, $ac1 \t\n"
+         "mflo %1, $ac1 \t\n"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+
+    if ((acho != resh) || (aclo != resl)) {
+        printf("2 dmsubu error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dmthlip.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dmthlip.c
new file mode 100644
index 0000000..027555f
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dmthlip.c
@@ -0,0 +1,41 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rs, dsp;
+    long long achi, acli;
+
+    long long rsdsp;
+    long long acho, aclo;
+
+    long long res;
+    long long reshi, reslo;
+
+
+    rs = 0xaaaabbbbccccdddd;
+    achi = 0x87654321;
+    acli = 0x12345678;
+    dsp = 0x22;
+
+    res = 0x62;
+    reshi = 0x12345678;
+    reslo = 0xffffffffccccdddd;
+
+    __asm
+        ("mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "wrdsp %5\n\t"
+         "dmthlip %6, $ac1\n\t"
+         "rddsp %0\n\t"
+         "mfhi %1, $ac1\n\t"
+         "mflo %2, $ac1\n\t"
+         : "=r"(rsdsp), "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(dsp), "r"(rs)
+        );
+    if ((rsdsp != res) || (acho != reshi) || (aclo != reslo)) {
+        printf("dmthlip error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpaq_s_w_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpaq_s_w_ph.c
new file mode 100644
index 0000000..1bca935
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpaq_s_w_ph.c
@@ -0,0 +1,32 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rs, rt, dsp;
+    long long ach = 0, acl = 0;
+    long long resulth, resultl, resultdsp;
+
+    rs        = 0x800000FF;
+    rt        = 0x80000002;
+    resulth   = 0x00;
+    resultl   = 0xFFFFFFFF800003FB;
+    resultdsp = 0x01;
+    __asm
+        ("mthi        %0, $ac1\n\t"
+         "mtlo        %1, $ac1\n\t"
+         "dpaq_s.w.ph $ac1, %3, %4\n\t"
+         "mfhi        %0,   $ac1\n\t"
+         "mflo        %1,   $ac1\n\t"
+         "rddsp       %2\n\t"
+         : "+r"(ach), "+r"(acl), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = dsp >> 17 & 0x01;
+    if ((dsp != resultdsp) || (ach != resulth) || (acl != resultl)) {
+        printf("dpaq_w.w.ph wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpaq_s_w_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpaq_s_w_qh.c
new file mode 100644
index 0000000..844a347
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpaq_s_w_qh.c
@@ -0,0 +1,57 @@
+#include"io.h"
+int main(void)
+{
+    long long rt, rs;
+    long long achi, acli;
+    long long acho, aclo;
+    long long resh, resl;
+
+    achi = 0x1;
+    acli = 0x1;
+    rs = 0x0001000100010001;
+    rt = 0x0002000200020002;
+    resh = 0x1;
+    resl = 0x11;
+
+    __asm
+        ("mthi %2, $ac1\t\n"
+         "mtlo %3, $ac1\t\n"
+         "dpaq_s.w.qh $ac1, %4, %5\t\n"
+         "mfhi %0, $ac1\t\n"
+         "mflo %1, $ac1\t\n"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+    if ((acho != resh) || (aclo != resl)) {
+        printf("1 dpaq_s.w.qh error\n");
+
+        return -1;
+    }
+
+    achi = 0xffffffff;
+    acli = 0xaaaaaaaa;
+
+    rs = 0x1111222233334444;
+    rt = 0xffffeeeeddddcccc;
+
+    resh = 0x00;
+    resl = 0xffffffffd27ad82e;
+
+    __asm
+        ("mthi %2, $ac1\t\n"
+         "mtlo %3, $ac1\t\n"
+         "dpaq_s.w.qh $ac1, %4, %5\t\n"
+         "mfhi %0, $ac1\t\n"
+         "mflo %1, $ac1\t\n"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+
+    if ((acho != resh) || (aclo != resl)) {
+        printf("2 dpaq_s.w.qh error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpaq_sa_l_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpaq_sa_l_pw.c
new file mode 100644
index 0000000..1bb2ec2
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpaq_sa_l_pw.c
@@ -0,0 +1,88 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rs, rt;
+    long long achi, acli;
+    long long acho, aclo;
+    long long dsp;
+    long long resh, resl;
+    long long resdsp;
+
+    rs = 0x0000000100000001;
+    rt = 0x0000000200000002;
+    achi = 0x1;
+    acli = 0x1;
+    resh = 0xffffffffffffffff;
+    resl = 0x0;
+    resdsp = 0x01;
+
+    __asm
+        ("mthi        %3, $ac1\n\t"
+         "mtlo        %4, $ac1\n\t"
+         "dpaq_sa.l.pw $ac1, %5, %6\n\t"
+         "mfhi        %0,   $ac1\n\t"
+         "mflo        %1,   $ac1\n\t"
+         "rddsp       %2\n\t"
+         : "=r"(acho), "=r"(aclo), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+
+    if ((acho != resh) || (aclo != resl) || ((dsp >> (16 + 1)) != resdsp)) {
+        printf("1 dpaq_sa_l_pw error\n");
+
+        return -1;
+    }
+
+    rs = 0xaaaabbbbccccdddd;
+    rt = 0x3333444455556666;
+    achi = 0x88888888;
+    acli = 0x66666666;
+
+    resh = 0xffffffff88888887;
+    resl = 0xffffffff9e2661da;
+
+    __asm
+        ("mthi        %2, $ac1\n\t"
+         "mtlo        %3, $ac1\n\t"
+         "dpaq_sa.l.pw $ac1, %4, %5\n\t"
+         "mfhi        %0,   $ac1\n\t"
+         "mflo        %1,   $ac1\n\t"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+
+    if ((acho != resh) || (aclo != resl)) {
+        printf("2 dpaq_sa_l_pw error\n");
+
+        return -1;
+    }
+
+    rs = 0x8000000080000000;
+    rt = 0x8000000080000000;
+    achi = 0x88888888;
+    acli = 0x66666666;
+
+    resh = 0xffffffffffffffff;
+    resl = 0x00;
+    resdsp = 0x01;
+
+    __asm
+        ("mthi        %3, $ac1\n\t"
+         "mtlo        %4, $ac1\n\t"
+         "dpaq_sa.l.pw $ac1, %5, %6\n\t"
+         "mfhi        %0,   $ac1\n\t"
+         "mflo        %1,   $ac1\n\t"
+         "rddsp       %2\n\t"
+         : "=r"(acho), "=r"(aclo), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+
+    if ((acho != resh) || (aclo != resl) || ((dsp >> (16 + 1)) != resdsp)) {
+        printf("2 dpaq_sa_l_pw error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpaq_sa_l_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpaq_sa_l_w.c
new file mode 100644
index 0000000..f840cdd
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpaq_sa_l_w.c
@@ -0,0 +1,82 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rs, rt, dsp;
+    long long ach = 0, acl = 0;
+    long long resulth, resultl, resultdsp;
+
+    rs        = 0x80000000;
+    rt        = 0x80000000;
+    resulth   = 0x7FFFFFFF;
+    resultl   = 0xffffffffFFFFFFFF;
+    resultdsp = 0x01;
+    __asm
+        ("mthi        %0, $ac1\n\t"
+         "mtlo        %0, $ac1\n\t"
+         "dpaq_sa.l.w $ac1, %3, %4\n\t"
+         "mfhi        %0,   $ac1\n\t"
+         "mflo        %1,   $ac1\n\t"
+         "rddsp       %2\n\t"
+         : "+r"(ach), "+r"(acl), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 17) & 0x01;
+    if ((dsp != resultdsp) || (ach != resulth) || (acl != resultl)) {
+        printf("dpaq_sa.l.w error\n");
+
+        return -1;
+    }
+
+    ach = 0x12;
+    acl = 0x48;
+    rs  = 0x80000000;
+    rt  = 0x80000000;
+
+    resulth   = 0x7FFFFFFF;
+    resultl   = 0xffffffffFFFFFFFF;
+    resultdsp = 0x01;
+    __asm
+        ("mthi        %0, $ac1\n\t"
+         "mtlo        %0, $ac1\n\t"
+         "dpaq_sa.l.w $ac1, %3, %4\n\t"
+         "mfhi        %0,   $ac1\n\t"
+         "mflo        %1,   $ac1\n\t"
+         "rddsp       %2\n\t"
+         : "+r"(ach), "+r"(acl), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 17) & 0x01;
+    if ((dsp != resultdsp) || (ach != resulth) || (acl != resultl)) {
+        printf("dpaq_sa.l.w error\n");
+
+        return -1;
+    }
+
+    ach = 0x741532A0;
+    acl = 0xfceabb08;
+    rs  = 0x80000000;
+    rt  = 0x80000000;
+
+    resulth   = 0x7fffffff;
+    resultl   = 0xffffffffffffffff;
+    resultdsp = 0x01;
+    __asm
+        ("mthi        %0, $ac1\n\t"
+         "mtlo        %0, $ac1\n\t"
+         "dpaq_sa.l.w $ac1, %3, %4\n\t"
+         "mfhi        %0,   $ac1\n\t"
+         "mflo        %1,   $ac1\n\t"
+         "rddsp       %2\n\t"
+         : "+r"(ach), "+r"(acl), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 17) & 0x01;
+    if ((dsp != resultdsp) || (ach != resulth) || (acl != resultl)) {
+        printf("dpaq_sa.l.w error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpau_h_obl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpau_h_obl.c
new file mode 100644
index 0000000..54905e8
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpau_h_obl.c
@@ -0,0 +1,59 @@
+
+#include "io.h"
+
+int main(void)
+{
+    long long rs, rt;
+    long long achi, acli;
+    long long acho, aclo;
+    long long resh, resl;
+
+    rs = 0x0000000100000001;
+    rt = 0x0000000200000002;
+    achi = 0x1;
+    acli = 0x1;
+    resh = 0x1;
+    resl = 0x3;
+
+    __asm
+        ("mthi        %2, $ac1\n\t"
+         "mtlo        %3, $ac1\n\t"
+         "dpau.h.obl $ac1, %4, %5\n\t"
+         "mfhi        %0,   $ac1\n\t"
+         "mflo        %1,   $ac1\n\t"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+
+    if ((acho != resh) || (aclo != resl)) {
+        printf("1 dpau.h.obl error\n");
+
+        return -1;
+    }
+
+    rs = 0xaaaabbbbccccdddd;
+    rt = 0x3333444455556666;
+    achi = 0x88888888;
+    acli = 0x66666666;
+
+    resh = 0xffffffff88888888;
+    resl = 0x66670d7a;
+
+    __asm
+        ("mthi        %2, $ac1\n\t"
+         "mtlo        %3, $ac1\n\t"
+         "dpau.h.obl $ac1, %4, %5\n\t"
+         "mfhi        %0,   $ac1\n\t"
+         "mflo        %1,   $ac1\n\t"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+
+    if ((acho != resh) || (aclo != resl)) {
+        printf("1 dpau.h.obl error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpau_h_obr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpau_h_obr.c
new file mode 100644
index 0000000..d7aa60b
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpau_h_obr.c
@@ -0,0 +1,59 @@
+
+#include "io.h"
+
+int main(void)
+{
+    long long rs, rt;
+    long long achi, acli;
+    long long acho, aclo;
+    long long resh, resl;
+
+    rs = 0x0000000100000001;
+    rt = 0x0000000200000002;
+    achi = 0x1;
+    acli = 0x1;
+    resh = 0x1;
+    resl = 0x3;
+
+    __asm
+        ("mthi        %2, $ac1\n\t"
+         "mtlo        %3, $ac1\n\t"
+         "dpau.h.obr $ac1, %4, %5\n\t"
+         "mfhi        %0,   $ac1\n\t"
+         "mflo        %1,   $ac1\n\t"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+
+    if ((acho != resh) || (aclo != resl)) {
+        printf("1 dpau.h.obr error\n");
+
+        return -1;
+    }
+
+    rs = 0xccccddddaaaabbbb;
+    rt = 0x5555666633334444;
+    achi = 0x88888888;
+    acli = 0x66666666;
+
+    resh = 0xffffffff88888888;
+    resl = 0x66670d7a;
+
+    __asm
+        ("mthi        %2, $ac1\n\t"
+         "mtlo        %3, $ac1\n\t"
+         "dpau.h.obr $ac1, %4, %5\n\t"
+         "mfhi        %0,   $ac1\n\t"
+         "mflo        %1,   $ac1\n\t"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+
+    if ((acho != resh) || (aclo != resl)) {
+        printf("1 dpau.h.obr error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpau_h_qbl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpau_h_qbl.c
new file mode 100644
index 0000000..fcfd764
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpau_h_qbl.c
@@ -0,0 +1,29 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rs, rt;
+    long long ach = 5, acl = 3;
+    long long resulth, resultl;
+
+    rs        = 0x800000FF;
+    rt        = 0x80000002;
+    resulth   = 0x05;
+    resultl   = 0x4003;
+    __asm
+        ("mthi       %0, $ac1\n\t"
+         "mtlo       %1, $ac1\n\t"
+         "dpau.h.qbl $ac1, %2, %3\n\t"
+         "mfhi       %0,   $ac1\n\t"
+         "mflo       %1,   $ac1\n\t"
+         : "+r"(ach), "+r"(acl)
+         : "r"(rs), "r"(rt)
+        );
+    if ((ach != resulth) || (acl != resultl)) {
+        printf("dpau.h.qbl wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpau_h_qbr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpau_h_qbr.c
new file mode 100644
index 0000000..3282461
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpau_h_qbr.c
@@ -0,0 +1,29 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rs, rt;
+    long long ach = 5, acl = 3;
+    long long resulth, resultl;
+
+    rs        = 0x800000FF;
+    rt        = 0x80000002;
+    resulth   = 0x05;
+    resultl   = 0x0201;
+    __asm
+        ("mthi       %0, $ac1\n\t"
+         "mtlo       %1, $ac1\n\t"
+         "dpau.h.qbr $ac1, %2, %3\n\t"
+         "mfhi       %0,   $ac1\n\t"
+         "mflo       %1,   $ac1\n\t"
+         : "+r"(ach), "+r"(acl)
+         : "r"(rs), "r"(rt)
+        );
+    if ((ach != resulth) || (acl != resultl)) {
+        printf("dpau.h.qbr wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsq_s_w_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsq_s_w_ph.c
new file mode 100644
index 0000000..7660f03
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsq_s_w_ph.c
@@ -0,0 +1,51 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rs, rt;
+    long long ach = 5, acl = 5;
+    long long resulth, resultl;
+
+    rs      = 0xBC0123AD;
+    rt      = 0x01643721;
+    resulth = 0x04;
+    resultl = 0xFFFFFFFFEE9794A3;
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpsq_s.w.ph $ac1, %2, %3\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         : "+r"(ach), "+r"(acl)
+         : "r"(rs), "r"(rt)
+        );
+    if ((ach != resulth) || (acl != resultl)) {
+        printf("1 dpsq_s.w.ph wrong\n");
+
+        return -1;
+    }
+
+    ach = 0x1424Ef1f;
+    acl = 0x1035219A;
+    rs      = 0x800083AD;
+    rt      = 0x80003721;
+    resulth = 0x1424ef1e;
+    resultl = 0x577ed901;
+
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpsq_s.w.ph $ac1, %2, %3\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         : "+r"(ach), "+r"(acl)
+         : "r"(rs), "r"(rt)
+        );
+    if ((ach != resulth) || (acl != resultl)) {
+        printf("2 dpsq_s.w.ph wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsq_s_w_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsq_s_w_qh.c
new file mode 100644
index 0000000..2cc50c5
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsq_s_w_qh.c
@@ -0,0 +1,56 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rs, rt;
+    long long achi, acli;
+    long long acho, aclo;
+    long long resh, resl;
+
+    rs = 0xffffeeeeddddcccc;
+    rt = 0x9999888877776666;
+    achi = 0x67576;
+    acli = 0x98878;
+
+    resh = 0x67576;
+    resl = 0x5b1682c4;
+    __asm
+        ("mthi  %2, $ac1\n\t"
+         "mtlo  %3, $ac1\n\t"
+         "dpsq_s.w.qh $ac1, %4, %5\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+    if ((acho != resh) || (aclo != resl)) {
+        printf("1 dpsq_s.w.qh wrong\n");
+
+        return -1;
+    }
+
+    rs = 0x8000800080008000;
+    rt = 0x8000800080008000;
+    achi = 0x67576;
+    acli = 0x98878;
+
+    resh = 0x67575;
+    resl = 0x0009887c;
+
+    __asm
+        ("mthi  %2, $ac1\n\t"
+         "mtlo  %3, $ac1\n\t"
+         "dpsq_s.w.qh $ac1, %4, %5\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+    if ((acho != resh) || (aclo != resl)) {
+        printf("2 dpsq_s.w.qh wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsq_sa_l_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsq_sa_l_pw.c
new file mode 100644
index 0000000..7fc2503
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsq_sa_l_pw.c
@@ -0,0 +1,76 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rs, rt, dsp;
+    long long achi, acli;
+    long long resh, resl, resdsp;
+
+    rs = 0x89789BC0123AD;
+    rt = 0x5467591643721;
+
+    achi = 0x98765437;
+    acli = 0x65489709;
+
+    resh = 0xffffffffffffffff;
+    resl = 0x00;
+
+    resdsp = 0x01;
+
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpsq_sa.l.pw $ac1, %3, %4\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "+r"(achi), "+r"(acli), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+
+    dsp = (dsp >> 17) & 0x01;
+    if ((dsp != resdsp) || (achi != resh) || (acli != resl)) {
+        printf("1 dpsq_sa.l.pw wrong\n");
+
+        return -1;
+    }
+
+    /* clear dspcontrol reg for next test use. */
+    dsp = 0;
+    __asm
+        ("wrdsp %0"
+         :
+         : "r"(dsp)
+        );
+
+    rs = 0x8B78980000000;
+    rt = 0x5867580000000;
+
+    achi = 0x98765437;
+    acli = 0x65489709;
+
+    resh = 0xffffffff98765436;
+    resl = 0x11d367d0;
+
+    resdsp = 0x01;
+
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpsq_sa.l.pw $ac1, %3, %4\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "+r"(achi), "+r"(acli), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+
+    dsp = (dsp >> 17) & 0x01;
+    if ((dsp != resdsp) || (achi != resh) || (acli != resl)) {
+        printf("2 dpsq_sa.l.pw wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsq_sa_l_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsq_sa_l_w.c
new file mode 100644
index 0000000..f55afc9
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsq_sa_l_w.c
@@ -0,0 +1,59 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rs, rt, dsp;
+    long long ach = 5, acl = 5;
+    long long resulth, resultl, resultdsp;
+
+    rs = 0xBC0123AD;
+    rt = 0x01643721;
+
+    resulth = 0xfffffffffdf4cbe0;
+    resultl = 0xFFFFFFFFd138776b;
+    resultdsp = 0x00;
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpsq_sa.l.w $ac1, %3, %4\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "+r"(ach), "+r"(acl), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 17) & 0x01;
+    if ((dsp != resultdsp) || (ach != resulth) || (acl != resultl)) {
+        printf("1 dpsq_sa.l.w wrong\n");
+
+        return -1;
+    }
+
+    ach = 0x54321123;
+    acl = 5;
+    rs = 0x80000000;
+    rt = 0x80000000;
+
+    resulth = 0xffffffffd4321123;
+    resultl = 0x06;
+    resultdsp = 0x01;
+
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpsq_sa.l.w $ac1, %3, %4\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "+r"(ach), "+r"(acl), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 17) & 0x01;
+    if ((dsp != resultdsp) || (ach != resulth) || (acl != resultl)) {
+        printf("2 dpsq_sa.l.w wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsu_h_obl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsu_h_obl.c
new file mode 100644
index 0000000..c0a8f4d
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsu_h_obl.c
@@ -0,0 +1,32 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rs, rt;
+    long long ach = 5, acl = 5;
+    long long resulth, resultl;
+
+    rs      = 0x88886666BC0123AD;
+    rt      = 0x9999888801643721;
+
+    resulth = 0x04;
+    resultl = 0xFFFFFFFFFFFEF115;
+
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpsu.h.obl $ac1, %2, %3\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         : "+r"(ach), "+r"(acl)
+         : "r"(rs), "r"(rt)
+        );
+
+    if ((ach != resulth) || (acl != resultl)) {
+        printf("dpsu.h.obl wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsu_h_obr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsu_h_obr.c
new file mode 100644
index 0000000..aa0d47a
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsu_h_obr.c
@@ -0,0 +1,32 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rs, rt;
+    long long ach = 5, acl = 5;
+    long long resulth, resultl;
+
+    rs      = 0x7878878888886666;
+    rt      = 0x9865454399998888;
+
+    resulth = 0x04;
+    resultl = 0xFFFFFFFFFFFeF115;
+
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpsu.h.obr $ac1, %2, %3\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         : "+r"(ach), "+r"(acl)
+         : "r"(rs), "r"(rt)
+        );
+
+    if ((ach != resulth) || (acl != resultl)) {
+        printf("dpsu.h.qbr wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsu_h_qbl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsu_h_qbl.c
new file mode 100644
index 0000000..da6dbb6
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsu_h_qbl.c
@@ -0,0 +1,29 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rs, rt;
+    long long ach = 5, acl = 5;
+    long long resulth, resultl;
+
+    rs      = 0xBC0123AD;
+    rt      = 0x01643721;
+    resulth = 0x04;
+    resultl = 0xFFFFFFFFFFFFFEE5;
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpsu.h.qbl $ac1, %2, %3\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         : "+r"(ach), "+r"(acl)
+         : "r"(rs), "r"(rt)
+        );
+    if ((ach != resulth) || (acl != resultl)) {
+        printf("dpsu.h.qbl wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsu_h_qbr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsu_h_qbr.c
new file mode 100644
index 0000000..bf00b70
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsu_h_qbr.c
@@ -0,0 +1,29 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rs, rt;
+    long long ach = 5, acl = 5;
+    long long resulth, resultl;
+
+    rs      = 0xBC0123AD;
+    rt      = 0x01643721;
+    resulth = 0x04;
+    resultl = 0xFFFFFFFFFFFFE233;
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpsu.h.qbr $ac1, %2, %3\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         : "+r"(ach), "+r"(acl)
+         : "r"(rs), "r"(rt)
+        );
+    if ((ach != resulth) || (acl != resultl)) {
+        printf("dpsu.h.qbr wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dshilo.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dshilo.c
new file mode 100644
index 0000000..f50584b
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dshilo.c
@@ -0,0 +1,52 @@
+#include "io.h"
+
+int main(void)
+{
+    long long achi, acli;
+    long long acho, aclo;
+    long long reshi, reslo;
+
+    achi = 0x87654321;
+    acli = 0x12345678;
+
+    reshi = 0xfffffffff8765432;
+    reslo = 0x1234567;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "dshilo $ac1, 0x4\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli)
+        );
+
+    if ((acho != reshi) || (aclo != reslo)) {
+        printf("1 dshilo error\n");
+        return -1;
+    }
+
+    achi = 0x87654321;
+    acli = 0x12345678;
+
+    reshi = 0x1234567;
+    reslo = 0x00;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "dshilo $ac1, -60\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli)
+        );
+
+    if ((acho != reshi) || (aclo != reslo)) {
+        printf("2 dshilo error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dshilov.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dshilov.c
new file mode 100644
index 0000000..792bd23
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dshilov.c
@@ -0,0 +1,54 @@
+#include "io.h"
+
+int main(void)
+{
+    long long achi, acli, rs;
+    long long acho, aclo;
+    long long reshi, reslo;
+
+    achi = 0x87654321;
+    acli = 0x12345678;
+    rs = 0x4;
+
+    reshi = 0xfffffffff8765432;
+    reslo = 0x1234567;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "dshilov $ac1, %4\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs)
+        );
+
+    if ((acho != reshi) || (aclo != reslo)) {
+        printf("dshilov error\n");
+        return -1;
+    }
+
+    rs = 0x44;
+    achi = 0x87654321;
+    acli = 0x12345678;
+
+    reshi = 0x1234567;
+    reslo = 0x00;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "dshilov $ac1, %4\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs)
+        );
+
+    if ((acho != reshi) || (aclo != reslo)) {
+        printf("dshilov error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extp.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extp.c
new file mode 100644
index 0000000..c72f54b
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extp.c
@@ -0,0 +1,50 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, ach, acl, dsp;
+    long long result;
+
+    ach = 0x05;
+    acl = 0xB4CB;
+    dsp = 0x07;
+    result = 0x000C;
+
+    __asm
+        ("wrdsp %1, 0x01\n\t"
+         "mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extp %0, $ac1, 0x03\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 14) & 0x01;
+    if ((dsp != 0) || (result != rt)) {
+        printf("extp wrong\n");
+
+        return -1;
+    }
+
+    ach = 0x05;
+    acl = 0xB4CB;
+    dsp = 0x01;
+
+    __asm
+        ("wrdsp %1, 0x01\n\t"
+         "mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extp %0, $ac1, 0x03\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 14) & 0x01;
+    if (dsp != 1) {
+        printf("extp wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extpdp.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extpdp.c
new file mode 100644
index 0000000..f430193
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extpdp.c
@@ -0,0 +1,51 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, ach, acl, dsp, pos, efi;
+    long long result;
+
+    ach = 0x05;
+    acl = 0xB4CB;
+    dsp = 0x07;
+    result = 0x000C;
+
+    __asm
+        ("wrdsp %1, 0x01\n\t"
+         "mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extpdp %0, $ac1, 0x03\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(ach), "r"(acl)
+        );
+    pos =  dsp & 0x3F;
+    efi = (dsp >> 14) & 0x01;
+    if ((pos != 3) || (efi != 0) || (result != rt)) {
+        printf("extpdp wrong\n");
+
+        return -1;
+    }
+
+    ach = 0x05;
+    acl = 0xB4CB;
+    dsp = 0x01;
+
+    __asm
+        ("wrdsp %1, 0x01\n\t"
+         "mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extpdp %0, $ac1, 0x03\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(ach), "r"(acl)
+        );
+    efi = (dsp >> 14) & 0x01;
+    if (efi != 1) {
+        printf("extpdp wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extpdpv.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extpdpv.c
new file mode 100644
index 0000000..ba57426
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extpdpv.c
@@ -0,0 +1,52 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, rs, ach, acl, dsp, pos, efi;
+    long long result;
+
+    ach = 0x05;
+    acl = 0xB4CB;
+    dsp = 0x07;
+    rs  = 0x03;
+    result = 0x000C;
+
+    __asm
+        ("wrdsp %1, 0x01\n\t"
+         "mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extpdpv %0, $ac1, %4\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(ach), "r"(acl), "r"(rs)
+        );
+    pos =  dsp & 0x3F;
+    efi = (dsp >> 14) & 0x01;
+    if ((pos != 3) || (efi != 0) || (result != rt)) {
+        printf("extpdpv wrong\n");
+
+        return -1;
+    }
+
+    ach = 0x05;
+    acl = 0xB4CB;
+    dsp = 0x01;
+
+    __asm
+        ("wrdsp %1, 0x01\n\t"
+         "mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extpdpv %0, $ac1, %4\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(ach), "r"(acl), "r"(rs)
+        );
+    efi = (dsp >> 14) & 0x01;
+    if (efi != 1) {
+        printf("extpdpv wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extpv.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extpv.c
new file mode 100644
index 0000000..158472b
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extpv.c
@@ -0,0 +1,51 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, ac, ach, acl, dsp;
+    long long result;
+
+    ach = 0x05;
+    acl = 0xB4CB;
+    dsp = 0x07;
+    ac  = 0x03;
+    result = 0x000C;
+
+    __asm
+        ("wrdsp %1, 0x01\n\t"
+         "mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extpv %0, $ac1, %4\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(ach), "r"(acl), "r"(ac)
+        );
+    dsp = (dsp >> 14) & 0x01;
+    if ((dsp != 0) || (result != rt)) {
+        printf("extpv wrong\n");
+
+        return -1;
+    }
+
+    ach = 0x05;
+    acl = 0xB4CB;
+    dsp = 0x01;
+
+    __asm
+        ("wrdsp %1, 0x01\n\t"
+         "mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extpv %0, $ac1, %4\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(ach), "r"(acl), "r"(ac)
+        );
+    dsp = (dsp >> 14) & 0x01;
+    if (dsp != 1) {
+        printf("extpv wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extr_r_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extr_r_w.c
new file mode 100644
index 0000000..94572ad
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extr_r_w.c
@@ -0,0 +1,53 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, ach, acl, dsp;
+    long long result;
+
+    ach = 0x05;
+    acl = 0xB4CB;
+    result = 0xFFFFFFFFA0001699;
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extr_r.w %0, $ac1, 0x03\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    if ((dsp != 1) || (result != rt)) {
+        printf("1 extr_r.w wrong\n");
+
+        return -1;
+    }
+
+    /* Clear dspcontrol */
+    dsp = 0;
+    __asm
+        ("wrdsp %0\n\t"
+         :
+         : "r"(dsp)
+        );
+
+    ach = 0x01;
+    acl = 0xB4CB;
+    result = 0x10000B4D;
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extr_r.w %0, $ac1, 0x04\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    if ((dsp != 0) || (result != rt)) {
+        printf("2 extr_r.w wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extr_rs_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extr_rs_w.c
new file mode 100644
index 0000000..73551f9
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extr_rs_w.c
@@ -0,0 +1,53 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, ach, acl, dsp;
+    long long result;
+
+    ach = 0x05;
+    acl = 0xB4CB;
+    result = 0x7FFFFFFF;
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extr_rs.w %0, $ac1, 0x03\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    if ((dsp != 1) || (result != rt)) {
+        printf("1 extr_rs.w wrong\n");
+
+        return -1;
+    }
+
+    /* Clear dspcontrol */
+    dsp = 0;
+    __asm
+        ("wrdsp %0\n\t"
+         :
+         : "r"(dsp)
+        );
+
+    ach = 0x01;
+    acl = 0xB4CB;
+    result = 0x10000B4D;
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extr_rs.w %0, $ac1, 0x04\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    if ((dsp != 0) || (result != rt)) {
+        printf("2 extr_rs.w wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extr_s_h.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extr_s_h.c
new file mode 100644
index 0000000..de10cb5
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extr_s_h.c
@@ -0,0 +1,71 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, ach, acl, dsp;
+    long long result;
+
+    ach = 0x05;
+    acl = 0xB4CB;
+    result = 0x00007FFF;
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extr_s.h %0, $ac1, 0x03\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    if ((dsp != 1) || (result != rt)) {
+        printf("extr_s.h wrong\n");
+
+        return -1;
+    }
+
+    ach = 0xffffffff;
+    acl = 0x12344321;
+    result = 0xffffffffFFFF8000;
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extr_s.h %0, $ac1, 0x08\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    if ((dsp != 1) || (result != rt)) {
+        printf("extr_s.h wrong\n");
+
+        return -1;
+    }
+
+    /* Clear dsp */
+    dsp = 0;
+    __asm
+        ("wrdsp %0\n\t"
+         :
+         : "r"(dsp)
+        );
+
+    ach = 0x00;
+    acl = 0x4321;
+    result = 0x432;
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extr_s.h %0, $ac1, 0x04\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    if ((dsp != 0) || (result != rt)) {
+        printf("extr_s.h wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extr_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extr_w.c
new file mode 100644
index 0000000..bd69576
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extr_w.c
@@ -0,0 +1,53 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, ach, acl, dsp;
+    long long result;
+
+    ach = 0x05;
+    acl = 0xB4CB;
+    result = 0xFFFFFFFFA0001699;
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extr.w %0, $ac1, 0x03\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    if ((dsp != 1) || (result != rt)) {
+        printf("extr.w wrong\n");
+
+        return -1;
+    }
+
+    /* Clear dspcontrol */
+    dsp = 0;
+    __asm
+        ("wrdsp %0\n\t"
+         :
+         : "r"(dsp)
+        );
+
+    ach = 0x01;
+    acl = 0xB4CB;
+    result = 0x10000B4C;
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extr.w %0, $ac1, 0x04\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    if ((dsp != 0) || (result != rt)) {
+        printf("extr.w wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extrv_r_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extrv_r_w.c
new file mode 100644
index 0000000..8379729
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extrv_r_w.c
@@ -0,0 +1,59 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, rs, ach, acl, dsp;
+    long long result;
+
+    ach = 0x05;
+    acl = 0xB4CB;
+    dsp = 0x07;
+    rs  = 0x03;
+    result = 0xFFFFFFFFA0001699;
+
+    __asm
+        ("wrdsp %1, 0x01\n\t"
+         "mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "extrv_r.w %0, $ac1, %2\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(rs), "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    if ((dsp != 1) || (result != rt)) {
+        printf("extrv_r.w wrong\n");
+
+        return -1;
+    }
+
+    /* Clear dspcontrol */
+    dsp = 0;
+    __asm
+        ("wrdsp %0\n\t"
+         :
+         : "r"(dsp)
+        );
+
+    rs = 4;
+    ach = 0x01;
+    acl = 0xB4CB;
+    result = 0x10000B4D;
+    __asm
+        ("wrdsp %1, 0x01\n\t"
+         "mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "extrv_r.w %0, $ac1, %2\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(rs), "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    if ((dsp != 0) || (result != rt)) {
+        printf("extrv_r.w wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extrv_rs_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extrv_rs_w.c
new file mode 100644
index 0000000..8707cd11
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extrv_rs_w.c
@@ -0,0 +1,59 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, rs, ach, acl, dsp;
+    long long result;
+
+    ach = 0x05;
+    acl = 0xB4CB;
+    dsp = 0x07;
+    rs  = 0x03;
+    result = 0x7FFFFFFF;
+
+    __asm
+        ("wrdsp %1, 0x01\n\t"
+         "mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "extrv_rs.w %0, $ac1, %2\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(rs), "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    if ((dsp != 1) || (result != rt)) {
+        printf("1 extrv_rs.w wrong\n");
+
+        return -1;
+    }
+
+    /* Clear dspcontrol */
+    dsp = 0;
+    __asm
+        ("wrdsp %0\n\t"
+         :
+         : "r"(dsp)
+        );
+
+    rs = 4;
+    ach = 0x01;
+    acl = 0xB4CB;
+    result = 0x10000B4D;
+    __asm
+        ("wrdsp %1, 0x01\n\t"
+         "mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "extrv_rs.w %0, $ac1, %2\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(rs), "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    if ((dsp != 0) || (result != rt)) {
+        printf("2 extrv_rs.w wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extrv_s_h.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extrv_s_h.c
new file mode 100644
index 0000000..b6dcaeb
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extrv_s_h.c
@@ -0,0 +1,79 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, rs, ach, acl, dsp;
+    long long result;
+
+    ach = 0x05;
+    acl = 0xB4CB;
+    dsp = 0x07;
+    rs  = 0x03;
+    result = 0x00007FFF;
+
+    __asm
+        ("wrdsp %1, 0x01\n\t"
+         "mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "extrv_s.h %0, $ac1, %2\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(rs), "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    if ((dsp != 1) || (result != rt)) {
+        printf("extrv_s.h wrong\n");
+
+        return -1;
+    }
+
+    rs = 0x08;
+    ach = 0xffffffff;
+    acl = 0x12344321;
+    result = 0xffffffffFFFF8000;
+    __asm
+        ("wrdsp %1, 0x01\n\t"
+         "mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "extrv_s.h %0, $ac1, %2\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(rs), "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    if ((dsp != 1) || (result != rt)) {
+        printf("extrv_s.h wrong\n");
+
+        return -1;
+    }
+
+    /* Clear dsp */
+    dsp = 0;
+    __asm
+        ("wrdsp %0\n\t"
+         :
+         : "r"(dsp)
+        );
+
+    rs = 0x04;
+    ach = 0x00;
+    acl = 0x4321;
+    result = 0x432;
+    __asm
+        ("wrdsp %1, 0x01\n\t"
+         "mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "extrv_s.h %0, $ac1, %2\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(rs), "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    if ((dsp != 0) || (result != rt)) {
+        printf("extrv_s.h wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extrv_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extrv_w.c
new file mode 100644
index 0000000..8adffb3
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extrv_w.c
@@ -0,0 +1,59 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, rs, ach, acl, dsp;
+    long long result;
+
+    ach = 0x05;
+    acl = 0xB4CB;
+    dsp = 0x07;
+    rs  = 0x03;
+    result = 0xFFFFFFFFA0001699;
+
+    __asm
+        ("wrdsp %1, 0x01\n\t"
+         "mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "extrv.w %0, $ac1, %2\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(rs), "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    if ((dsp != 1) || (result != rt)) {
+        printf("extrv.w wrong\n");
+
+        return -1;
+    }
+
+    /* Clear dspcontrol */
+    dsp = 0;
+    __asm
+        ("wrdsp %0\n\t"
+         :
+         : "r"(dsp)
+        );
+
+    rs = 4;
+    ach = 0x01;
+    acl = 0xB4CB;
+    result = 0x10000B4C;
+    __asm
+        ("wrdsp %1, 0x01\n\t"
+         "mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "extrv.w %0, $ac1, %2\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(rs), "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    if ((dsp != 0) || (result != rt)) {
+        printf("extrv.w wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_insv.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_insv.c
new file mode 100644
index 0000000..fc5696f
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_insv.c
@@ -0,0 +1,26 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, rs, dsp;
+    long long result;
+
+    /* msb = 10, lsb = 5 */
+    dsp    = 0x305;
+    rt     = 0x12345678;
+    rs     = 0xffffffff87654321;
+    result = 0x12345338;
+    __asm
+        ("wrdsp %2, 0x03\n\t"
+         "insv  %0, %1\n\t"
+         : "+r"(rt)
+         : "r"(rs), "r"(dsp)
+        );
+    if (rt != result) {
+        printf("insv wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_lbux.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_lbux.c
new file mode 100644
index 0000000..dbdc87b
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_lbux.c
@@ -0,0 +1,27 @@
+#include "io.h"
+
+int main(void)
+{
+    long long value, rd;
+    long long *p;
+    unsigned long long addr, index;
+    long long result;
+
+    value  = 0xBCDEF389;
+    p = &value;
+    addr = (unsigned long long)p;
+    index  = 0;
+    result = value & 0xFF;
+    __asm
+        ("lbux %0, %1(%2)\n\t"
+         : "=r"(rd)
+         : "r"(index), "r"(addr)
+        );
+    if (rd != result) {
+        printf("lbux wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_ldx.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_ldx.c
new file mode 100644
index 0000000..787d9f0
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_ldx.c
@@ -0,0 +1,27 @@
+#include "io.h"
+
+int main(void)
+{
+    long long value, rd;
+    long long *p;
+    unsigned long long addr, index;
+    long long result;
+
+    value  = 0xBCDEF389;
+    p = &value;
+    addr = (unsigned long long)p;
+    index  = 0;
+    result = 0xBCDEF389;
+    __asm
+        ("ldx %0, %1(%2)\n\t"
+         : "=r"(rd)
+         : "r"(index), "r"(addr)
+        );
+    if (rd != result) {
+        printf("lwx wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_lhx.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_lhx.c
new file mode 100644
index 0000000..2020e56
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_lhx.c
@@ -0,0 +1,27 @@
+#include "io.h"
+
+int main(void)
+{
+    long long value, rd;
+    long long *p;
+    unsigned long long addr, index;
+    long long result;
+
+    value  = 0xBCDEF389;
+    p = &value;
+    addr = (unsigned long long)p;
+    index  = 0;
+    result = 0xFFFFFFFFFFFFF389;
+    __asm
+        ("lhx %0, %1(%2)\n\t"
+         : "=r"(rd)
+         : "r"(index), "r"(addr)
+        );
+    if (rd != result) {
+        printf("lhx wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_lwx.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_lwx.c
new file mode 100644
index 0000000..6a81414
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_lwx.c
@@ -0,0 +1,27 @@
+#include "io.h"
+
+int main(void)
+{
+    long long value, rd;
+    long long *p;
+    unsigned long long addr, index;
+    long long result;
+
+    value  = 0xBCDEF389;
+    p = &value;
+    addr = (unsigned long long)p;
+    index  = 0;
+    result = 0xFFFFFFFFBCDEF389;
+    __asm
+        ("lwx %0, %1(%2)\n\t"
+         : "=r"(rd)
+         : "r"(index), "r"(addr)
+        );
+    if (rd != result) {
+        printf("lwx wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_madd.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_madd.c
new file mode 100644
index 0000000..de6e44f
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_madd.c
@@ -0,0 +1,33 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, rs;
+    long long achi, acli;
+    long long acho, aclo;
+    long long resulth, resultl;
+
+    achi = 0x05;
+    acli = 0xB4CB;
+    rs  = 0x01;
+    rt  = 0x01;
+    resulth = 0x05;
+    resultl = 0xB4CC;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "madd $ac1, %4, %5\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+    if ((resulth != acho) || (resultl != aclo)) {
+        printf("madd wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maddu.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maddu.c
new file mode 100644
index 0000000..e9f426a
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maddu.c
@@ -0,0 +1,33 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, rs;
+    long long achi, acli;
+    long long acho, aclo;
+    long long resulth, resultl;
+
+    achi = 0x05;
+    acli = 0xB4CB;
+    rs  = 0x01;
+    rt  = 0x01;
+    resulth = 0x05;
+    resultl = 0xB4CC;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "madd $ac1, %4, %5\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+    if ((resulth != acho) || (resultl != aclo)) {
+        printf("maddu wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_l_pwl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_l_pwl.c
new file mode 100644
index 0000000..c196b43
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_l_pwl.c
@@ -0,0 +1,56 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, rs, dsp;
+    long long achi, acli;
+    long long acho, aclo;
+    long long resulth, resultl;
+
+    achi = 0x05;
+    acli = 0xB4CB;
+    rs  = 0x98765432FF060000;
+    rt  = 0xfdeca987CB000000;
+    resulth = 0x05;
+    resultl = 0x18278587;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "maq_s.l.pwl $ac1, %4, %5\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+    if ((resulth != acho) || (resultl != aclo)) {
+        printf("maq_s_l.w.pwl wrong 1\n");
+
+        return -1;
+    }
+
+    achi = 0x05;
+    acli = 0xB4CB;
+    rs  = 0x80000000FF060000;
+    rt  = 0x80000000CB000000;
+    resulth = 0x05;
+    resultl = 0xb4ca;
+
+    __asm
+        ("mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "maq_s.l.pwl $ac1, %5, %6\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "=r"(acho), "=r"(aclo), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 17) & 0x1;
+    if ((dsp != 0x1) || (resulth != acho) || (resultl != aclo)) {
+        printf("maq_s_l.w.pwl wrong 2\n");
+
+        return -1;
+    }
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_l_pwr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_l_pwr.c
new file mode 100644
index 0000000..e2af69f
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_l_pwr.c
@@ -0,0 +1,56 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, rs, dsp;
+    long long achi, acli;
+    long long acho, aclo;
+    long long resulth, resultl;
+
+    achi = 0x05;
+    acli = 0xB4CB;
+    rs  = 0x87898765432;
+    rt  = 0x7878fdeca987;
+    resulth = 0x05;
+    resultl = 0x18278587;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "maq_s.l.pwr $ac1, %4, %5\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+    if ((resulth != acho) || (resultl != aclo)) {
+        printf("maq_s.w.pwr wrong\n");
+
+        return -1;
+    }
+
+    achi = 0x05;
+    acli = 0xB4CB;
+    rs  = 0x89899980000000;
+    rt  = 0x88780000000;
+    resulth = 0x05;
+    resultl = 0xb4ca;
+
+    __asm
+        ("mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "maq_s.l.pwr $ac1, %5, %6\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "=r"(acho), "=r"(aclo), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 17) & 0x1;
+    if ((dsp != 0x1) || (resulth != acho) || (resultl != aclo)) {
+        printf("maq_s.w.pwr wrong\n");
+
+        return -1;
+    }
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_phl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_phl.c
new file mode 100644
index 0000000..7dba874
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_phl.c
@@ -0,0 +1,60 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, rs;
+    long long achi, acli;
+    long long dsp;
+    long long acho, aclo;
+    long long resulth, resultl;
+    long long resdsp;
+
+    achi = 0x05;
+    acli = 0xB4CB;
+    rs  = 0xFF060000;
+    rt  = 0xCB000000;
+    resulth = 0x04;
+    resultl = 0xffffffff947438CB;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "maq_s.w.phl $ac1, %4, %5\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+    if ((resulth != acho) || (resultl != aclo)) {
+        printf("1 maq_s.w.phl error\n");
+
+        return -1;
+    }
+
+    achi = 0x06;
+    acli = 0xB4CB;
+    rs  = 0x80000000;
+    rt  = 0x80000000;
+    resulth = 0x6;
+    resultl = 0xffffffff8000b4ca;
+    resdsp = 1;
+
+    __asm
+        ("mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "maq_s.w.phl $ac1, %5, %6\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "=r"(acho), "=r"(aclo), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+    if ((resulth != acho) || (resultl != aclo) ||
+        (((dsp >> 17) & 0x01) != resdsp)) {
+        printf("2 maq_s.w.phl error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_phr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_phr.c
new file mode 100644
index 0000000..138ee2a
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_phr.c
@@ -0,0 +1,60 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, rs;
+    long long achi, acli;
+    long long dsp;
+    long long acho, aclo;
+    long long resulth, resultl;
+    long long resdsp;
+
+    achi = 0x05;
+    acli = 0xB4CB;
+    rs  = 0xFF06;
+    rt  = 0xCB00;
+    resulth = 0x04;
+    resultl = 0xffffffff947438CB;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "maq_s.w.phr $ac1, %4, %5\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+    if ((resulth != acho) || (resultl != aclo)) {
+        printf("1 maq_s.w.phr error\n");
+
+        return -1;
+    }
+
+    achi = 0x06;
+    acli = 0xB4CB;
+    rs  = 0x8000;
+    rt  = 0x8000;
+    resulth = 0x6;
+    resultl = 0xffffffff8000b4ca;
+    resdsp = 1;
+
+    __asm
+        ("mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "maq_s.w.phr $ac1, %5, %6\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "=r"(acho), "=r"(aclo), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+    if ((resulth != acho) || (resultl != aclo) ||
+        (((dsp >> 17) & 0x01) != resdsp)) {
+        printf("2 maq_s.w.phr error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_qhll.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_qhll.c
new file mode 100644
index 0000000..234a0af
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_qhll.c
@@ -0,0 +1,62 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, rs, dsp;
+    long long achi, acli;
+    long long acho, aclo;
+    long long resulth, resultl;
+
+    achi = 0x05;
+    acli = 0x05;
+
+    rs  = 0x1234888899990000;
+    rt  = 0x9876888899990000;
+
+    resulth = 0x05;
+    resultl = 0x15ae87f5;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "maq_s.w.qhll $ac1, %4, %5\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+
+    if ((resulth != acho) || (resultl != aclo)) {
+        printf("maq_s.w.qhll wrong\n");
+
+        return -1;
+    }
+
+
+    achi = 0x04;
+    acli = 0x06;
+    rs  = 0x8000888899990000;
+    rt  = 0x8000888899990000;
+
+    resulth = 0x04;
+    resultl = 0xffffffff80000005;
+
+    __asm
+        ("mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "maq_s.w.qhll $ac1, %5, %6\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "=r"(acho), "=r"(aclo), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+
+    dsp = (dsp >> 17) & 0x1;
+    if ((dsp != 0x1) || (resulth != acho) || (resultl != aclo)) {
+        printf("maq_s.w.qhll wrong\n");
+
+        return -1;
+    }
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_qhlr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_qhlr.c
new file mode 100644
index 0000000..8768cba
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_qhlr.c
@@ -0,0 +1,62 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, rs, dsp;
+    long long achi, acli;
+    long long acho, aclo;
+    long long resulth, resultl;
+
+    achi = 0x05;
+    acli = 0x05;
+
+    rs  = 0x1234123412340000;
+    rt  = 0x9876987698760000;
+
+    resulth = 0x05;
+    resultl = 0x15ae87f5;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "maq_s.w.qhlr $ac1, %4, %5\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+
+    if ((resulth != acho) || (resultl != aclo)) {
+        printf("1 maq_s.w.qhlr wrong\n");
+
+        return -1;
+    }
+
+
+    achi = 0x04;
+    acli = 0x06;
+    rs  = 0x8000800080000000;
+    rt  = 0x8000800080000000;
+
+    resulth = 0x04;
+    resultl = 0xffffffff80000005;
+
+    __asm
+        ("mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "maq_s.w.qhlr $ac1, %5, %6\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "=r"(acho), "=r"(aclo), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+
+    dsp = (dsp >> 17) & 0x1;
+    if ((dsp != 0x1) || (resulth != acho) || (resultl != aclo)) {
+        printf("2 maq_s.w.qhlr wrong\n");
+
+        return -1;
+    }
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_qhrl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_qhrl.c
new file mode 100644
index 0000000..5006e2b
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_qhrl.c
@@ -0,0 +1,63 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, rs, dsp;
+    long long achi, acli;
+    long long acho, aclo;
+    long long resulth, resultl;
+
+    achi = 0x05;
+    acli = 0x05;
+
+    rs  = 0x1234888812340000;
+    rt  = 0x9876888898760000;
+
+    resulth = 0x05;
+    resultl = 0x15ae87f5;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "maq_s.w.qhrl $ac1, %4, %5\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+
+    if ((resulth != acho) || (resultl != aclo)) {
+        printf("1 maq_s.w.qhrl wrong\n");
+
+        return -1;
+    }
+
+
+    achi = 0x04;
+    acli = 0x06;
+    rs  = 0x8888999980000000;
+    rt  = 0x8888999980000000;
+
+    resulth = 0x04;
+    resultl = 0xffffffff80000005;
+
+    __asm
+        ("mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "maq_s.w.qhrl $ac1, %5, %6\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "=r"(acho), "=r"(aclo), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+
+    dsp = (dsp >> 17) & 0x1;
+    if ((dsp != 0x1) || (resulth != acho) || (resultl != aclo)) {
+        printf("2 maq_s.w.qhrl wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_qhrr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_qhrr.c
new file mode 100644
index 0000000..1d213a5
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_qhrr.c
@@ -0,0 +1,63 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, rs, dsp;
+    long long achi, acli;
+    long long acho, aclo;
+    long long resulth, resultl;
+
+    achi = 0x05;
+    acli = 0x05;
+
+    rs  = 0x1234888812341234;
+    rt  = 0x9876888898769876;
+
+    resulth = 0x05;
+    resultl = 0x15ae87f5;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "maq_s.w.qhrr $ac1, %4, %5\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+
+    if ((resulth != acho) || (resultl != aclo)) {
+        printf("1 maq_s.w.qhrr wrong\n");
+
+        return -1;
+    }
+
+
+    achi = 0x04;
+    acli = 0x06;
+    rs  = 0x8000888899998000;
+    rt  = 0x8000888899998000;
+
+    resulth = 0x04;
+    resultl = 0xffffffff80000005;
+
+    __asm
+        ("mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "maq_s.w.qhrr $ac1, %5, %6\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "=r"(acho), "=r"(aclo), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+
+    dsp = (dsp >> 17) & 0x1;
+    if ((dsp != 0x1) || (resulth != acho) || (resultl != aclo)) {
+        printf("2 maq_s.w.qhrr wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_phl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_phl.c
new file mode 100644
index 0000000..5530ffb
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_phl.c
@@ -0,0 +1,60 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, rs;
+    long long achi, acli;
+    long long dsp;
+    long long acho, aclo;
+    long long resulth, resultl;
+    long long resdsp;
+
+    achi = 0x05;
+    acli = 0xB4CB;
+    rs = 0xFF060000;
+    rt = 0xCB000000;
+    resulth = 0xffffffffffffffff;
+    resultl = 0xffffffff947438cb;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "maq_sa.w.phl $ac1, %4, %5\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+    if ((resulth != acho) || (resultl != aclo)) {
+        printf("1 maq_sa.w.phl error\n");
+
+        return -1;
+    }
+
+    achi = 0x06;
+    acli = 0xB4CB;
+    rs  = 0x80000000;
+    rt  = 0x80000000;
+    resulth = 0x00;
+    resultl = 0x7fffffff;
+    resdsp = 0x01;
+
+    __asm
+        ("mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "maq_sa.w.phl $ac1, %5, %6\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "=r"(acho), "=r"(aclo), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+    if ((resulth != acho) || (resultl != aclo) ||
+        (((dsp >> 17) & 0x01) != 0x01)) {
+        printf("2 maq_sa.w.phl error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_phr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_phr.c
new file mode 100644
index 0000000..b611cfa
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_phr.c
@@ -0,0 +1,60 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, rs;
+    long long achi, acli;
+    long long dsp;
+    long long acho, aclo;
+    long long resulth, resultl;
+    long long resdsp;
+
+    achi = 0x05;
+    acli = 0xB4CB;
+    rs = 0xFF06;
+    rt = 0xCB00;
+    resulth = 0xffffffffffffffff;
+    resultl = 0xffffffff947438cb;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "maq_sa.w.phr $ac1, %4, %5\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+    if ((resulth != acho) || (resultl != aclo)) {
+        printf("1 maq_sa.w.phr error\n");
+
+        return -1;
+    }
+
+    achi = 0x06;
+    acli = 0xB4CB;
+    rs  = 0x8000;
+    rt  = 0x8000;
+    resulth = 0x00;
+    resultl = 0x7fffffff;
+    resdsp = 0x01;
+
+    __asm
+        ("mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "maq_sa.w.phr $ac1, %5, %6\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "=r"(acho), "=r"(aclo), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+    if ((resulth != acho) || (resultl != aclo) ||
+        (((dsp >> 17) & 0x01) != 0x01)) {
+        printf("2 maq_sa.w.phr error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhll.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhll.c
new file mode 100644
index 0000000..136ff2d
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhll.c
@@ -0,0 +1,62 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, rs, dsp;
+    long long achi, acli;
+    long long acho, aclo;
+    long long resulth, resultl;
+
+    achi = 0x05;
+    acli = 0x05;
+
+    rs  = 0x1234888899990000;
+    rt  = 0x9876888899990000;
+
+    resulth = 0x00;
+    resultl = 0x15ae87f5;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "maq_sa.w.qhll $ac1, %4, %5\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+
+    if ((resulth != acho) || (resultl != aclo)) {
+        printf("1 maq_sa.w.qhll wrong\n");
+
+        return -1;
+    }
+
+
+    achi = 0x04;
+    acli = 0x06;
+    rs  = 0x8000888899990000;
+    rt  = 0x8000888899990000;
+
+    resulth = 0x00;
+    resultl = 0x7fffffff;
+
+    __asm
+        ("mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "maq_sa.w.qhll $ac1, %5, %6\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "=r"(acho), "=r"(aclo), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+
+    dsp = (dsp >> 17) & 0x1;
+    if ((dsp != 0x1) || (resulth != acho) || (resultl != aclo)) {
+        printf("2 maq_sa.w.qhll wrong\n");
+
+        return -1;
+    }
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhlr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhlr.c
new file mode 100644
index 0000000..dd0ae1c
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhlr.c
@@ -0,0 +1,64 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, rs, dsp;
+    long long achi, acli;
+    long long acho, aclo;
+    long long resulth, resultl;
+
+    achi = 0x05;
+    acli = 0x05;
+
+    rs  = 0x1234123412340000;
+    rt  = 0x9876987699990000;
+
+    resulth = 0x0;
+    resultl = 0x15ae87f5;
+
+    __asm
+        ("mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "maq_sa.w.qhlr $ac1, %5, %6\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "=r"(acho), "=r"(aclo), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+
+    dsp = (dsp >> 17) & 0x1;
+    if ((dsp != 0x0) || (resulth != acho) || (resultl != aclo)) {
+        printf("maq_sa.w.qhlr wrong\n");
+
+        return -1;
+    }
+
+
+    achi = 0x04;
+    acli = 0x06;
+    rs  = 0x8000800099990000;
+    rt  = 0x8000800099990000;
+
+    resulth = 0x00;
+    resultl = 0x7fffffff;
+
+    __asm
+        ("mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "maq_sa.w.qhlr $ac1, %5, %6\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "=r"(acho), "=r"(aclo), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+
+    dsp = (dsp >> 17) & 0x1;
+    if ((dsp != 0x1) || (resulth != acho) || (resultl != aclo)) {
+        printf("maq_sa.w.qhlr wrong\n");
+
+        return -1;
+    }
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhrl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhrl.c
new file mode 100644
index 0000000..a3de6f8
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhrl.c
@@ -0,0 +1,64 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, rs, dsp;
+    long long achi, acli;
+    long long acho, aclo;
+    long long resulth, resultl;
+
+    achi = 0x05;
+    acli = 0x05;
+
+    rs  = 0x1234123412340000;
+    rt  = 0x9876987698760000;
+
+    resulth = 0x0;
+    resultl = 0x15ae87f5;
+
+    __asm
+        ("mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "maq_sa.w.qhrl $ac1, %5, %6\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "=r"(acho), "=r"(aclo), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+
+    dsp = (dsp >> 17) & 0x1;
+    if ((dsp != 0x0) || (resulth != acho) || (resultl != aclo)) {
+        printf("1 maq_sa.w.qhrl wrong\n");
+
+        return -1;
+    }
+
+
+    achi = 0x04;
+    acli = 0x06;
+    rs  = 0x8000800080000000;
+    rt  = 0x8000800080000000;
+
+    resulth = 0x00;
+    resultl = 0x7fffffff;
+
+    __asm
+        ("mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "maq_sa.w.qhrl $ac1, %5, %6\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "=r"(acho), "=r"(aclo), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+
+    dsp = (dsp >> 17) & 0x1;
+    if ((dsp != 0x1) || (resulth != acho) || (resultl != aclo)) {
+        printf("2 maq_sa.w.qhrl wrong\n");
+
+        return -1;
+    }
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhrr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhrr.c
new file mode 100644
index 0000000..f021737
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhrr.c
@@ -0,0 +1,64 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, rs, dsp;
+    long long achi, acli;
+    long long acho, aclo;
+    long long resulth, resultl;
+
+    achi = 0x05;
+    acli = 0x05;
+
+    rs  = 0x1234123412341234;
+    rt  = 0x9876987698769876;
+
+    resulth = 0x0;
+    resultl = 0x15ae87f5;
+
+    __asm
+        ("mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "maq_sa.w.qhrr $ac1, %5, %6\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "=r"(acho), "=r"(aclo), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+
+    dsp = (dsp >> 17) & 0x1;
+    if ((dsp != 0x0) || (resulth != acho) || (resultl != aclo)) {
+        printf("1 maq_sa.w.qhrr wrong\n");
+
+        return -1;
+    }
+
+
+    achi = 0x04;
+    acli = 0x06;
+    rs  = 0x8000800080008000;
+    rt  = 0x8000800080008000;
+
+    resulth = 0x00;
+    resultl = 0x7fffffff;
+
+    __asm
+        ("mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "maq_sa.w.qhrr $ac1, %5, %6\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "=r"(acho), "=r"(aclo), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+
+    dsp = (dsp >> 17) & 0x1;
+    if ((dsp != 0x1) || (resulth != acho) || (resultl != aclo)) {
+        printf("2 maq_sa.w.qhrr wrong\n");
+
+        return -1;
+    }
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mfhi.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mfhi.c
new file mode 100644
index 0000000..ee915f7
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mfhi.c
@@ -0,0 +1,24 @@
+#include "io.h"
+
+int main(void)
+{
+    long long achi, acho;
+    long long result;
+
+    achi   = 0x004433;
+    result = 0x004433;
+
+    __asm
+        ("mthi %1, $ac1\n\t"
+         "mfhi %0, $ac1\n\t"
+         : "=r"(acho)
+         : "r"(achi)
+        );
+    if (result != acho) {
+        printf("mfhi wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mflo.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mflo.c
new file mode 100644
index 0000000..cdc646b
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mflo.c
@@ -0,0 +1,24 @@
+#include "io.h"
+
+int main(void)
+{
+    long long acli, aclo;
+    long long result;
+
+    acli   = 0x004433;
+    result = 0x004433;
+
+    __asm
+        ("mtlo %1, $ac1\n\t"
+         "mflo %0, $ac1\n\t"
+         : "=r"(aclo)
+         : "r"(acli)
+        );
+    if (result != aclo) {
+        printf("mflo wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_modsub.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_modsub.c
new file mode 100644
index 0000000..2c91cb4
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_modsub.c
@@ -0,0 +1,37 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long result;
+
+    rs     = 0xFFFFFFFF;
+    rt     = 0x000000FF;
+    result = 0xFFFFFF00;
+    __asm
+        ("modsub %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    if (result != rd) {
+        printf("modsub wrong\n");
+
+        return -1;
+    }
+
+    rs     = 0x00000000;
+    rt     = 0x00CD1FFF;
+    result = 0x0000CD1F;
+    __asm
+        ("modsub %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    if (result != rd) {
+        printf("modsub wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_msub.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_msub.c
new file mode 100644
index 0000000..75066b5
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_msub.c
@@ -0,0 +1,32 @@
+#include "io.h"
+
+int main(void)
+{
+    long long achi, acli, rs, rt;
+    long long acho, aclo;
+    long long resulth, resultl;
+
+    rs      = 0x00BBAACC;
+    rt      = 0x0B1C3D2F;
+    achi    = 0x00004433;
+    acli    = 0xFFCC0011;
+    resulth = 0xFFFFFFFFFFF81F29;
+    resultl = 0xFFFFFFFFB355089D;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "msub $ac1, %4, %5\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+    if ((acho != resulth) || (aclo != resultl)) {
+        printf("msub wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_msubu.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_msubu.c
new file mode 100644
index 0000000..55f8ae0
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_msubu.c
@@ -0,0 +1,32 @@
+#include "io.h"
+
+int main(void)
+{
+    long long achi, acli, rs, rt;
+    long long acho, aclo;
+    long long resulth, resultl;
+
+    rs      = 0x00BBAACC;
+    rt      = 0x0B1C3D2F;
+    achi    = 0x00004433;
+    acli    = 0xFFCC0011;
+    resulth = 0xFFFFFFFFFFF81F29;
+    resultl = 0xFFFFFFFFB355089D;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "msubu $ac1, %4, %5\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+    if ((acho != resulth) || (aclo != resultl)) {
+        printf("msubu wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mthi.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mthi.c
new file mode 100644
index 0000000..8570051
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mthi.c
@@ -0,0 +1,24 @@
+#include "io.h"
+
+int main(void)
+{
+    long long achi, acho;
+    long long result;
+
+    achi   = 0x004433;
+    result = 0x004433;
+
+    __asm
+        ("mthi %1, $ac1\n\t"
+         "mfhi %0, $ac1\n\t"
+         : "=r"(acho)
+         : "r"(achi)
+        );
+    if (result != acho) {
+        printf("mthi wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mthlip.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mthlip.c
new file mode 100644
index 0000000..957cd42
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mthlip.c
@@ -0,0 +1,61 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rs, ach, acl, dsp;
+    long long result, resulth, resultl;
+
+    dsp = 0x07;
+    ach = 0x05;
+    acl = 0xB4CB;
+    rs  = 0x00FFBBAA;
+    resulth = 0xB4CB;
+    resultl = 0x00FFBBAA;
+    result  = 0x27;
+
+    __asm
+        ("wrdsp %0, 0x01\n\t"
+         "mthi %1, $ac1\n\t"
+         "mtlo %2, $ac1\n\t"
+         "mthlip %3, $ac1\n\t"
+         "mfhi %1, $ac1\n\t"
+         "mflo %2, $ac1\n\t"
+         "rddsp %0\n\t"
+         : "+r"(dsp), "+r"(ach), "+r"(acl)
+         : "r"(rs)
+        );
+    dsp = dsp & 0x3F;
+    if ((dsp != result) || (ach != resulth) || (acl != resultl)) {
+        printf("mthlip wrong\n");
+
+        return -1;
+    }
+
+    dsp = 0x3f;
+    ach = 0x05;
+    acl = 0xB4CB;
+    rs  = 0x00FFBBAA;
+    resulth = 0xB4CB;
+    resultl = 0x00FFBBAA;
+    result  = 0x3f;
+
+    __asm
+        ("wrdsp %0, 0x01\n\t"
+         "mthi %1, $ac1\n\t"
+         "mtlo %2, $ac1\n\t"
+         "mthlip %3, $ac1\n\t"
+         "mfhi %1, $ac1\n\t"
+         "mflo %2, $ac1\n\t"
+         "rddsp %0\n\t"
+         : "+r"(dsp), "+r"(ach), "+r"(acl)
+         : "r"(rs)
+        );
+    dsp = dsp & 0x3F;
+    if ((dsp != result) || (ach != resulth) || (acl != resultl)) {
+        printf("mthlip wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mtlo.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mtlo.c
new file mode 100644
index 0000000..304fffb
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mtlo.c
@@ -0,0 +1,22 @@
+#include "io.h"
+
+int main(void)
+{
+    long long acli, aclo;
+    long long result;
+
+    acli   = 0x004433;
+    result = 0x004433;
+
+    __asm
+        ("mthi %1, $ac1\n\t"
+         "mfhi %0, $ac1\n\t"
+         : "=r"(aclo)
+         : "r"(acli)
+        );
+    if (result != aclo) {
+        printf("mtlo wrong\n");
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleq_s_pw_qhl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleq_s_pw_qhl.c
new file mode 100644
index 0000000..6c68d45
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleq_s_pw_qhl.c
@@ -0,0 +1,56 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, result;
+
+    rd = 0;
+    rs = 0x45BCFFFF12345678;
+    rt = 0x98529AD287654321;
+    result = 0x52fbec7035a2ca5c;
+
+    __asm
+        ("muleq_s.pw.qhl %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+
+    if (result != rd) {
+        printf("1 muleq_s.pw.qhl error\n");
+
+        return -1;
+    }
+
+    rd = 0;
+    rs = 0x45BC800012345678;
+    rt = 0x9852800087654321;
+    result = 0x52fbec707FFFFFFF;
+
+    __asm
+        ("muleq_s.pw.qhl %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+
+    if (result != rd) {
+        printf("2 muleq_s.pw.qhl error\n");
+
+        return -1;
+    }
+
+    rd = 0;
+    __asm
+        ("rddsp %0\n\t"
+         : "=r"(rd)
+        );
+    rd = rd >> 21;
+    rd = rd & 0x1;
+
+    if (rd != 1) {
+        printf("3 muleq_s.pw.qhl error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleq_s_pw_qhr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleq_s_pw_qhr.c
new file mode 100644
index 0000000..fa8b41f
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleq_s_pw_qhr.c
@@ -0,0 +1,57 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long result;
+
+    rd = 0;
+    rs = 0x1234567845BCFFFF;
+    rt = 0x8765432198529AD2;
+    result = 0x52fbec7035a2ca5c;
+
+    __asm
+        ("muleq_s.pw.qhr %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+
+    if (result != rd) {
+        printf("1 muleq_s.pw.qhr error\n");
+
+        return -1;
+    }
+
+    rd = 0;
+    rs = 0x1234567845BC8000;
+    rt = 0x8765432198528000;
+    result = 0x52fbec707FFFFFFF;
+
+    __asm
+        ("muleq_s.pw.qhr %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+
+    if (result != rd) {
+        printf("2 muleq_s.pw.qhr error\n");
+
+        return -1;
+    }
+
+    rd = 0;
+    __asm
+        ("rddsp %0\n\t"
+         : "=r"(rd)
+        );
+    rd = rd >> 21;
+    rd = rd & 0x1;
+
+    if (rd != 1) {
+        printf("3 muleq_s.pw.qhr error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleq_s_w_phl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleq_s_w_phl.c
new file mode 100644
index 0000000..997a9f6
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleq_s_w_phl.c
@@ -0,0 +1,46 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, dsp;
+    long long result, resultdsp;
+
+    rs = 0x80009988;
+    rt = 0x80009988;
+    result = 0x7FFFFFFF;
+    resultdsp = 1;
+
+    __asm
+        ("muleq_s.w.phl %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 21) & 0x01;
+    if ((rd  != result) || (dsp != resultdsp)) {
+        printf("muleq_s.w.phl wrong\n");
+
+        return -1;
+    }
+
+    rs = 0x12343322;
+    rt = 0x43213322;
+    result = 0x98be968;
+    resultdsp = 1;
+
+    __asm
+        ("muleq_s.w.phl %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 21) & 0x01;
+    if ((rd  != result) || (dsp != resultdsp)) {
+        printf("muleq_s.w.phl wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
+
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleq_s_w_phr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleq_s_w_phr.c
new file mode 100644
index 0000000..0e59479
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleq_s_w_phr.c
@@ -0,0 +1,45 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, dsp;
+    long long result, resultdsp;
+
+    rs = 0x8000;
+    rt = 0x8000;
+    result = 0x7FFFFFFF;
+    resultdsp = 1;
+
+    __asm
+        ("muleq_s.w.phr %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 21) & 0x01;
+    if ((rd  != result) || (dsp != resultdsp)) {
+        printf("muleq_s.w.phr wrong\n");
+
+        return -1;
+    }
+
+    rs = 0x1234;
+    rt = 0x4321;
+    result = 0x98be968;
+    resultdsp = 1;
+
+    __asm
+        ("muleq_s.w.phr %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 21) & 0x01;
+    if ((rd  != result) || (dsp != resultdsp)) {
+        printf("muleq_s.w.phr wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleu_s_ph_qbl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleu_s_ph_qbl.c
new file mode 100644
index 0000000..2f444c9
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleu_s_ph_qbl.c
@@ -0,0 +1,27 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, dsp;
+    long long result, resultdsp;
+
+    rs = 0x80001234;
+    rt = 0x80004321;
+    result = 0xFFFFFFFFFFFF0000;
+    resultdsp = 1;
+
+    __asm
+        ("muleu_s.ph.qbl %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 21) & 0x01;
+    if ((rd  != result) || (dsp != resultdsp)) {
+        printf("muleu_s.ph.qbl wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleu_s_ph_qbr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleu_s_ph_qbr.c
new file mode 100644
index 0000000..8bd0e99
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleu_s_ph_qbr.c
@@ -0,0 +1,27 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, dsp;
+    long long result, resultdsp;
+
+    rs = 0x8000;
+    rt = 0x80004321;
+    result = 0xFFFFFFFFFFFF0000;
+    resultdsp = 1;
+
+    __asm
+        ("muleu_s.ph.qbr %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 21) & 0x01;
+    if ((rd  != result) || (dsp != resultdsp)) {
+        printf("muleu_s.ph.qbr wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleu_s_qh_obl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleu_s_qh_obl.c
new file mode 100644
index 0000000..db0d386
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleu_s_qh_obl.c
@@ -0,0 +1,30 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long dsp;
+    long long resdsp, result;
+
+    rd = 0;
+    rs = 0x1234567802020202;
+    rt = 0x0034432112344321;
+    result = 0x03A8FFFFFFFFFFFF;
+    resdsp = 0x01;
+
+    __asm
+        ("muleu_s.qh.obl %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+
+    dsp = (dsp >> 21) & 0x01;
+    if ((rd != result) || (resdsp != dsp)) {
+        printf("muleu_s.qh.obl error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleu_s_qh_obr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleu_s_qh_obr.c
new file mode 100644
index 0000000..52ed9c0
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleu_s_qh_obr.c
@@ -0,0 +1,31 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long dsp;
+    long long resdsp, result;
+
+    rd = 0;
+    rs = 0x0202020212345678;
+
+    rt = 0x0034432112344321;
+    result = 0x03A8FFFFFFFFFFFF;
+    resdsp = 0x01;
+
+    __asm
+        ("muleu_s.qh.obr %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+
+    dsp = (dsp >> 21) & 0x01;
+    if ((rd != result) || (resdsp != dsp)) {
+        printf("muleu_s.qh.obr error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mulq_rs_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mulq_rs_ph.c
new file mode 100644
index 0000000..fd6233d
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mulq_rs_ph.c
@@ -0,0 +1,27 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, dsp;
+    long long result, resultdsp;
+
+    rs = 0x80001234;
+    rt = 0x80004321;
+    result = 0x7FFF098C;
+    resultdsp = 1;
+
+    __asm
+        ("mulq_rs.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 21) & 0x01;
+    if ((rd  != result) || (dsp != resultdsp)) {
+        printf("mulq_rs.ph wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mulq_rs_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mulq_rs_qh.c
new file mode 100644
index 0000000..7863c05
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mulq_rs_qh.c
@@ -0,0 +1,33 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, result, dsp, dspresult;
+    rt = 0x80003698CE8F9201;
+    rs = 0x800034634BCDE321;
+    result = 0x7fff16587a530313;
+
+    dspresult = 0x01;
+
+    __asm
+        ("mulq_rs.qh %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt), "r"(rs)
+        );
+
+    if (rd != result) {
+        printf("mulq_rs.qh error\n");
+
+        return -1;
+    }
+
+    dsp = (dsp >> 21) & 0x01;
+    if (dsp != dspresult) {
+        printf("mulq_rs.qh DSPControl Reg ouflag error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mulsaq_s_l_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mulsaq_s_l_pw.c
new file mode 100644
index 0000000..02548f8
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mulsaq_s_l_pw.c
@@ -0,0 +1,59 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rs, rt, dsp;
+    long long achi, acli;
+    long long acho, aclo;
+    long long resl, resh;
+
+    achi = 0x4;
+    acli = 0x4;
+
+    rs = 0x1234567887654321;
+    rt = 0x8765432112345678;
+
+    resh = 0x4;
+    resl = 0x4;
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "mulsaq_s.l.pw $ac1, %4, %5\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+
+    if ((acho != resh) || (aclo != resl)) {
+        printf("1 mulsaq_s.l.pw wrong\n");
+
+        return -1;
+    }
+
+    achi = 0x4;
+    acli = 0x4;
+
+    rs = 0x8000000087654321;
+    rt = 0x8000000012345678;
+
+    resh = 0x4;
+    resl = 0x1e8ee513;
+    __asm
+        ("mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "mulsaq_s.l.pw $ac1, %5, %6\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "=r"(acho), "=r"(aclo), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 17) & 0x1;
+    if ((dsp != 0x1) || (acho != resh) || (aclo != resl)) {
+        printf("2 mulsaq_s.l.pw wrong\n");
+
+        return -1;
+    }
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mulsaq_s_w_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mulsaq_s_w_qh.c
new file mode 100644
index 0000000..92d7a0b
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mulsaq_s_w_qh.c
@@ -0,0 +1,57 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rs, rt, dsp;
+    long long achi, acli;
+    long long acho, aclo;
+    long long resl, resh;
+
+    achi = 0x4;
+    acli = 0x4;
+
+    rs = 0x5678123443218765;
+    rt = 0x4321876556781234;
+
+    resh = 0x4;
+    resl = 0x342fcbd4;
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "mulsaq_s.w.qh $ac1, %4, %5\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+
+    if ((acho != resh) || (aclo != resl)) {
+        printf("1 mulsaq_s.w.qh wrong\n");
+        return -1;
+    }
+
+    achi = 0x4;
+    acli = 0x4;
+
+    rs = 0x8000800087654321;
+    rt = 0x8000800012345678;
+
+    resh = 0x3;
+    resl = 0xffffffffe5e81a1c;
+    __asm
+        ("mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "mulsaq_s.w.qh $ac1, %5, %6\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "=r"(acho), "=r"(aclo), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 17) & 0x1;
+    if ((dsp != 0x1) || (acho != resh) || (aclo != resl)) {
+        printf("2 mulsaq_s.w.qh wrong\n");
+        return -1;
+    }
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mult.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mult.c
new file mode 100644
index 0000000..4a294d1
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mult.c
@@ -0,0 +1,26 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rs, rt, ach, acl;
+    long long result, resulth, resultl;
+
+    rs  = 0x00FFBBAA;
+    rt  = 0x4B231000;
+    resulth = 0x4b0f01;
+    resultl = 0x71f8a000;
+    __asm
+        ("mult $ac1, %2, %3\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "=r"(ach), "=r"(acl)
+         : "r"(rs), "r"(rt)
+        );
+    if ((ach != resulth) || (acl != resultl)) {
+        printf("mult wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_multu.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_multu.c
new file mode 100644
index 0000000..21a8a7c
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_multu.c
@@ -0,0 +1,26 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rs, rt, ach, acl;
+    long long result, resulth, resultl;
+
+    rs  = 0x00FFBBAA;
+    rt  = 0x4B231000;
+    resulth = 0x4b0f01;
+    resultl = 0x71f8a000;
+    __asm
+        ("multu $ac1, %2, %3\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "=r"(ach), "=r"(acl)
+         : "r"(rs), "r"(rt)
+        );
+    if ((ach != resulth) || (acl != resultl)) {
+        printf("multu wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_packrl_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_packrl_ph.c
new file mode 100644
index 0000000..3722b0a
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_packrl_ph.c
@@ -0,0 +1,24 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long result;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result = 0x56788765;
+
+    __asm
+        ("packrl.ph %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    if (result != rd) {
+        printf("packrl.ph wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_packrl_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_packrl_pw.c
new file mode 100644
index 0000000..7807418
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_packrl_pw.c
@@ -0,0 +1,24 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long res;
+
+    rs = 0x1234567887654321;
+    rt = 0xabcdef9812345678;
+
+    res = 0x87654321abcdef98;
+
+    __asm
+        ("packrl.pw %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    if (rd != res) {
+        printf("packrl.pw error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_pick_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_pick_ob.c
new file mode 100644
index 0000000..160049f
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_pick_ob.c
@@ -0,0 +1,66 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, dsp;
+    long long res;
+
+    dsp = 0xff000000;
+
+    rs = 0x1234567812345678;
+    rt = 0x8765432187654321;
+
+    res = 0x1234567812345678;
+
+    __asm
+        ("wrdsp %1, 0x10\n\t"
+         "pick.ob %0, %2, %3\n\t"
+         : "=r"(rd)
+         : "r"(dsp), "r"(rs), "r"(rt)
+        );
+
+    if (rd != res) {
+        printf("1 pick.ob error\n");
+        return -1;
+    }
+
+    dsp = 0x00000000;
+
+    rs = 0x1234567812345678;
+    rt = 0x8765432187654321;
+
+    res = 0x8765432187654321;
+
+    __asm
+        ("wrdsp %1, 0x10\n\t"
+         "pick.ob %0, %2, %3\n\t"
+         : "=r"(rd)
+         : "r"(dsp), "r"(rs), "r"(rt)
+        );
+
+    if (rd != res) {
+        printf("2 pick.ob error\n");
+        return -1;
+    }
+
+    dsp = 0x34000000;
+
+    rs = 0x1234567812345678;
+    rt = 0x8765432187654321;
+
+    res = 0x8765567887344321;
+
+    __asm
+        ("wrdsp %1, 0x10\n\t"
+         "pick.ob %0, %2, %3\n\t"
+         : "=r"(rd)
+         : "r"(dsp), "r"(rs), "r"(rt)
+        );
+
+    if (rd != res) {
+        printf("3 pick.ob error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_pick_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_pick_ph.c
new file mode 100644
index 0000000..8800c14
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_pick_ph.c
@@ -0,0 +1,60 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, dsp;
+    long long result;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    dsp = 0x0A000000;
+    result = 0x12344321;
+
+    __asm
+        ("wrdsp %3, 0x10\n\t"
+         "pick.ph %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt), "r"(dsp)
+        );
+    if (rd != result) {
+        printf("1 pick.ph wrong\n");
+
+        return -1;
+    }
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    dsp = 0x03000000;
+    result = 0x12345678;
+
+    __asm
+        ("wrdsp %3, 0x10\n\t"
+         "pick.ph %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt), "r"(dsp)
+        );
+    if (rd != result) {
+        printf("2 pick.ph wrong\n");
+
+        return -1;
+    }
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    dsp = 0x00000000;
+    result = 0xffffffff87654321;
+
+    __asm
+        ("wrdsp %3, 0x10\n\t"
+         "pick.ph %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt), "r"(dsp)
+        );
+    if (rd != result) {
+        printf("3 pick.ph wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_pick_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_pick_pw.c
new file mode 100644
index 0000000..24d80f5
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_pick_pw.c
@@ -0,0 +1,48 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, dsp;
+    long long res;
+    dsp = 0xff000000;
+
+    rs = 0x1234567812345678;
+    rt = 0x8765432187654321;
+
+    res = 0x1234567812345678;
+
+    __asm
+        ("wrdsp %1, 0x10\n\t"
+         "wrdsp %1\n\t"
+         "pick.pw %0, %2, %3\n\t"
+         : "=r"(rd), "+r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+
+    if (rd != res) {
+        printf("pick.pw error\n");
+        return -1;
+    }
+
+    dsp = 0x00000000;
+
+    rs = 0x1234567812345678;
+    rt = 0x8765432187654321;
+
+    res = 0x8765432187654321;
+
+    __asm
+        ("wrdsp %1, 0x10\n\t"
+         "wrdsp %1\n\t"
+         "pick.pw %0, %2, %3\n\t"
+         : "=r"(rd), "+r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+
+    if (rd != res) {
+        printf("pick.pw error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_pick_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_pick_qb.c
new file mode 100644
index 0000000..0d5de9d
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_pick_qb.c
@@ -0,0 +1,43 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, dsp;
+    long long result;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    dsp = 0x0f000000;
+    result = 0x12345678;
+
+    __asm
+        ("wrdsp %3, 0x10\n\t"
+         "pick.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt), "r"(dsp)
+        );
+    if (rd != result) {
+        printf("pick.qb wrong\n");
+
+        return -1;
+    }
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    dsp = 0x00000000;
+    result = 0xffffffff87654321;
+
+    __asm
+        ("wrdsp %3, 0x10\n\t"
+         "pick.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt), "r"(dsp)
+        );
+    if (rd != result) {
+        printf("pick.qb wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_pick_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_pick_qh.c
new file mode 100644
index 0000000..aa2e293
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_pick_qh.c
@@ -0,0 +1,48 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, dsp;
+    long long res;
+    dsp = 0xff000000;
+
+    rs = 0x1234567812345678;
+    rt = 0x8765432187654321;
+
+    res = 0x1234567812345678;
+
+    __asm
+        ("wrdsp %1, 0x10\n\t"
+         "wrdsp %1\n\t"
+         "pick.qh %0, %2, %3\n\t"
+         : "=r"(rd), "+r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+
+    if (rd != res) {
+        printf("pick.qh error\n");
+        return -1;
+    }
+
+    dsp = 0x00000000;
+
+    rs = 0x1234567812345678;
+    rt = 0x8765432187654321;
+
+    res = 0x8765432187654321;
+
+    __asm
+        ("wrdsp %1, 0x10\n\t"
+         "wrdsp %1\n\t"
+         "pick.qh %0, %2, %3\n\t"
+         : "=r"(rd), "+r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+
+    if (rd != res) {
+        printf("pick.qh error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_l_pwl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_l_pwl.c
new file mode 100644
index 0000000..6455100
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_l_pwl.c
@@ -0,0 +1,24 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt;
+    long long result;
+    rt = 0xFFFFFFFF11111111;
+    result = 0xFFFFFFFF00000000;
+
+    __asm
+        ("preceq.l.pwl %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+
+    if (result != rd) {
+        printf("preceq.l.pwl wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
+
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_l_pwr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_l_pwr.c
new file mode 100644
index 0000000..1e05339
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_l_pwr.c
@@ -0,0 +1,24 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt;
+    long long result;
+    rt = 0xFFFFFFFF11111111;
+    result = 0x1111111100000000;
+
+    __asm
+        ("preceq.l.pwl %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+
+    if (result != rd) {
+        printf("preceq.l.pwr wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
+
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_pw_qhl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_pw_qhl.c
new file mode 100644
index 0000000..f44b940
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_pw_qhl.c
@@ -0,0 +1,21 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, result;
+    rt = 0x0123456789ABCDEF;
+    result = 0x0123000045670000;
+
+    __asm
+        ("preceq.pw.qhl %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    if (result != rd) {
+        printf("preceq.pw.qhl error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_pw_qhla.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_pw_qhla.c
new file mode 100644
index 0000000..f0f78f4
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_pw_qhla.c
@@ -0,0 +1,23 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, result;
+
+    rt = 0x123456789ABCDEF0;
+    result = 0x123400009ABC0000;
+
+    __asm
+        ("preceq.pw.qhla %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+
+    if (result != rd) {
+        printf("preceq.pw.qhla error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_pw_qhr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_pw_qhr.c
new file mode 100644
index 0000000..709d4f9
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_pw_qhr.c
@@ -0,0 +1,21 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, result;
+    rt = 0x0123456789ABCDEF;
+    result = 0x89AB0000CDEF0000;
+
+    __asm
+        ("preceq.pw.qhr %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    if (result != rd) {
+        printf("preceq.pw.qhr error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_pw_qhra.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_pw_qhra.c
new file mode 100644
index 0000000..4d071ec
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_pw_qhra.c
@@ -0,0 +1,23 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, result;
+
+    rt = 0x123456789ABCDEF0;
+    result = 0x56780000DEF00000;
+
+    __asm
+        ("preceq.pw.qhra %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+
+    if (result != rd) {
+        printf("preceq.pw.qhra error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_w_phl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_w_phl.c
new file mode 100644
index 0000000..4ed3fc0
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_w_phl.c
@@ -0,0 +1,23 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt;
+    long long result;
+
+    rt = 0x87654321;
+    result = 0xFFFFFFFF87650000;
+
+    __asm
+        ("preceq.w.phl %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    if (result != rd) {
+        printf("preceq.w.phl wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_w_phr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_w_phr.c
new file mode 100644
index 0000000..e2ea093
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_w_phr.c
@@ -0,0 +1,23 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt;
+    long long result;
+
+    rt = 0x87654321;
+    result = 0x43210000;
+
+    __asm
+        ("preceq.w.phr %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    if (result != rd) {
+        printf("preceq.w.phr wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_ph_qbl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_ph_qbl.c
new file mode 100644
index 0000000..17b7331
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_ph_qbl.c
@@ -0,0 +1,23 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt;
+    long long result;
+
+    rt = 0x87654321;
+    result = 0x43803280;
+
+    __asm
+        ("precequ.ph.qbl %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    if (result != rd) {
+        printf("precequ.ph.qbl wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_ph_qbla.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_ph_qbla.c
new file mode 100644
index 0000000..15e9494
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_ph_qbla.c
@@ -0,0 +1,23 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt;
+    long long result;
+
+    rt = 0x87654321;
+    result = 0x43802180;
+
+    __asm
+        ("precequ.ph.qbla %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    if (result != rd) {
+        printf("precequ.ph.qbla wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_ph_qbr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_ph_qbr.c
new file mode 100644
index 0000000..495368c
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_ph_qbr.c
@@ -0,0 +1,23 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt;
+    long long result;
+
+    rt = 0x87654321;
+    result = 0x21801080;
+
+    __asm
+        ("precequ.ph.qbr %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    if (result != rd) {
+        printf("precequ.ph.qbr wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_ph_qbra.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_ph_qbra.c
new file mode 100644
index 0000000..7c66369
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_ph_qbra.c
@@ -0,0 +1,23 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt;
+    long long result;
+
+    rt = 0x87654321;
+    result = 0x32801080;
+
+    __asm
+        ("precequ.ph.qbra %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    if (result != rd) {
+        printf("precequ.ph.qbra wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_qh_obl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_qh_obl.c
new file mode 100644
index 0000000..176d236
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_qh_obl.c
@@ -0,0 +1,22 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, result;
+    rt = 0x123456789ABCDEF0;
+    result = 0x09001A002B003C00;
+
+    __asm
+        ("precequ.qh.obla %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+
+    if (result != rd) {
+        printf("precequ.qh.obla error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_qh_obla.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_qh_obla.c
new file mode 100644
index 0000000..93a36a4
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_qh_obla.c
@@ -0,0 +1,22 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, result;
+    rt = 0x123456789ABCDEF0;
+    result = 0x09002B004D006F00;
+
+    __asm
+        ("precequ.qh.obla %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+
+    if (result != rd) {
+        printf("precequ.qh.obla error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_qh_obr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_qh_obr.c
new file mode 100644
index 0000000..1214730
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_qh_obr.c
@@ -0,0 +1,24 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, result;
+
+    rt = 0x123456789ABCDEF0;
+    result = 0x4D005E006F007000;
+
+    __asm
+        ("precequ.qh.obr %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+
+    if (result != rd) {
+        printf("precequ.qh.obr error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
+
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_qh_obra.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_qh_obra.c
new file mode 100644
index 0000000..3aa0e09
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_qh_obra.c
@@ -0,0 +1,24 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, result;
+
+    rt = 0x123456789ABCDEF0;
+    result = 0x1A003C005D007000;
+
+    __asm
+        ("precequ.qh.obra %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+
+    if (result != rd) {
+        printf("precequ.qh.obra error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
+
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_ph_qbl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_ph_qbl.c
new file mode 100644
index 0000000..81f7917
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_ph_qbl.c
@@ -0,0 +1,23 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt;
+    long long result;
+
+    rt = 0x87654321;
+    result = 0x00870065;
+
+    __asm
+        ("preceu.ph.qbl %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    if (result != rd) {
+        printf("preceu.ph.qbl wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_ph_qbla.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_ph_qbla.c
new file mode 100644
index 0000000..38cf6a6
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_ph_qbla.c
@@ -0,0 +1,23 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt;
+    long long result;
+
+    rt = 0x87654321;
+    result = 0x00870043;
+
+    __asm
+        ("preceu.ph.qbla %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    if (result != rd) {
+        printf("preceu.ph.qbla wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_ph_qbr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_ph_qbr.c
new file mode 100644
index 0000000..70c32b6
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_ph_qbr.c
@@ -0,0 +1,23 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt;
+    long long result;
+
+    rt = 0x87654321;
+    result = 0x00430021;
+
+    __asm
+        ("preceu.ph.qbr %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    if (result != rd) {
+        printf("preceu.ph.qbr wrong");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_ph_qbra.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_ph_qbra.c
new file mode 100644
index 0000000..c6638aa
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_ph_qbra.c
@@ -0,0 +1,23 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt;
+    long long result;
+
+    rt = 0x87654321;
+    result = 0x00650021;
+
+    __asm
+        ("preceu.ph.qbra %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    if (result != rd) {
+        printf("preceu.ph.qbra wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_qh_obl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_qh_obl.c
new file mode 100644
index 0000000..63f9373
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_qh_obl.c
@@ -0,0 +1,22 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, result;
+    rt = 0x123456789ABCDEF0;
+    result = 0x0012003400560078;
+
+    __asm
+        ("preceu.qh.obl %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+
+    if (result != rd) {
+        printf("preceu.qh.obl error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_qh_obla.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_qh_obla.c
new file mode 100644
index 0000000..5fb65e4
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_qh_obla.c
@@ -0,0 +1,22 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, result;
+    rt = 0x123456789ABCDEF0;
+    result = 0x00120056009A00DE;
+
+    __asm
+        ("preceu.qh.obla %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+
+    if (result != rd) {
+        printf("preceu.qh.obla error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_qh_obr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_qh_obr.c
new file mode 100644
index 0000000..9af3b63
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_qh_obr.c
@@ -0,0 +1,23 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, result;
+
+    rt = 0x123456789ABCDEF0;
+    result = 0x009A00BC00DE00F0;
+
+    __asm
+        ("preceu.qh.obr %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+
+    if (result != rd) {
+        printf("preceu.qh.obr error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_qh_obra.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_qh_obra.c
new file mode 100644
index 0000000..fd04083
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_qh_obra.c
@@ -0,0 +1,23 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, result;
+
+    rt = 0x123456789ABCDEF0;
+    result = 0x0034007800BC00F0;
+
+    __asm
+        ("preceu.qh.obra %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+
+    if (result != rd) {
+        printf("preceu.qh.obra error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precr_ob_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precr_ob_qh.c
new file mode 100644
index 0000000..ce2da79
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precr_ob_qh.c
@@ -0,0 +1,25 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long res;
+
+    rs = 0x1234567812345678;
+    rt = 0x8765432187654321;
+
+    res = 0x3478347865216521;
+
+    __asm
+        ("precr.ob.qh %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+
+    if (rd != res) {
+        printf("precr.ob.qh error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precr_sra_qh_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precr_sra_qh_pw.c
new file mode 100644
index 0000000..8bb16de
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precr_sra_qh_pw.c
@@ -0,0 +1,40 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rs, rt;
+    long long res;
+
+    rt = 0x8765432187654321;
+    rs = 0x1234567812345678;
+
+    res = 0x4321432156785678;
+
+    __asm
+        ("precr_sra.qh.pw %0, %1, 0x0\n\t"
+         : "=r"(rt)
+         : "r"(rs)
+        );
+
+    if (rt != res) {
+        printf("precr_sra.qh.pw error\n");
+        return -1;
+    }
+
+    rt = 0x8765432187654321;
+    rs = 0x1234567812345678;
+
+    res = 0x5432543245674567;
+
+    __asm
+        ("precr_sra.qh.pw %0, %1, 0x4\n\t"
+         : "=r"(rt)
+         : "r"(rs)
+        );
+
+    if (rt != res) {
+        printf("precr_sra.qh.pw error\n");
+        return -1;
+    }
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precr_sra_r_qh_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precr_sra_r_qh_pw.c
new file mode 100644
index 0000000..734ac32
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precr_sra_r_qh_pw.c
@@ -0,0 +1,40 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rs, rt;
+    long long res;
+
+    rt = 0x8765432187654321;
+    rs = 0x1234567812345678;
+
+    res = 0x4321432156785678;
+
+    __asm
+        ("precr_sra_r.qh.pw %0, %1, 0x0\n\t"
+         : "=r"(rt)
+         : "r"(rs)
+        );
+
+    if (rt != res) {
+        printf("precr_sra_r.qh.pw error\n");
+        return -1;
+    }
+
+    rt = 0x8765432187654321;
+    rs = 0x1234567812345678;
+
+    res = 0x5432543245684568;
+
+    __asm
+        ("precr_sra_r.qh.pw %0, %1, 0x4\n\t"
+         : "=r"(rt)
+         : "r"(rs)
+        );
+
+    if (rt != res) {
+        printf("precr_sra_r.qh.pw error\n");
+        return -1;
+    }
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_ob_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_ob_qh.c
new file mode 100644
index 0000000..4f61b17
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_ob_qh.c
@@ -0,0 +1,25 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long res;
+
+    rs = 0x1234567812345678;
+    rt = 0x8765432187654321;
+
+    res = 0x1256125687438743;
+
+    __asm
+        ("precrq.ob.qh %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+
+    if (rd != res) {
+        printf("precrq.ob.qh error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_ph_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_ph_w.c
new file mode 100644
index 0000000..f0946ab
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_ph_w.c
@@ -0,0 +1,24 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long result;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result = 0x12348765;
+
+    __asm
+        ("precrq.ph.w %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    if (result != rd) {
+        printf("precrq.ph.w wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_pw_l.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_pw_l.c
new file mode 100644
index 0000000..da957c0
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_pw_l.c
@@ -0,0 +1,25 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long res;
+
+    rs = 0x1234567812345678;
+    rt = 0x8765432187654321;
+
+    res = 0x1234567887654321;
+
+    __asm
+        ("precrq.pw.l %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+
+    if (rd != res) {
+        printf("precrq.pw.l error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_qb_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_qb_ph.c
new file mode 100644
index 0000000..f417c9f
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_qb_ph.c
@@ -0,0 +1,24 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long result;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result = 0x12568743;
+
+    __asm
+        ("precrq.qb.ph %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    if (result != rd) {
+        printf("precrq.qb.ph wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_qh_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_qh_pw.c
new file mode 100644
index 0000000..4a4ffef
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_qh_pw.c
@@ -0,0 +1,25 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long res;
+
+    rs = 0x1234567812345678;
+    rt = 0x8765432187654321;
+
+    res = 0x1234123487658765;
+
+    __asm
+        ("precrq.qh.pw %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+
+    if (rd != res) {
+        printf("precrq.qh.pw error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_rs_ph_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_rs_ph_w.c
new file mode 100644
index 0000000..61da333
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_rs_ph_w.c
@@ -0,0 +1,41 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long dsp;
+    long long result;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result = 0x12348765;
+
+    __asm
+        ("precrq_rs.ph.w %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    if (result != rd) {
+        printf("1 precrq_rs.ph.w wrong\n");
+
+        return -1;
+    }
+
+    rs = 0x7fffC678;
+    rt = 0x865432A0;
+    result = 0x7fff8654;
+
+    __asm
+        ("precrq_rs.ph.w %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    if ((result != rd) || (((dsp >> 22) & 0x01) != 1)) {
+        printf("2 precrq_rs.ph.w wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_rs_qh_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_rs_qh_pw.c
new file mode 100644
index 0000000..ac78728
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_rs_qh_pw.c
@@ -0,0 +1,43 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long dsp;
+    long long res;
+
+    rs = 0x1234567812345678;
+    rt = 0x8765432187654321;
+
+    res = 0x1234123487658765;
+
+    __asm
+        ("precrq_rs.qh.pw %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+
+    if (rd != res) {
+        printf("precrq_rs.qh.pw error\n");
+        return -1;
+    }
+
+    rs = 0x7fffC67812345678;
+    rt = 0x8765432187654321;
+
+    res = 0x7fff123487658765;
+
+    __asm
+        ("precrq_rs.qh.pw %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+
+    if (rd != res) {
+        printf("precrq_rs.qh.pw error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrqu_s_ob_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrqu_s_ob_qh.c
new file mode 100644
index 0000000..e27c36b
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrqu_s_ob_qh.c
@@ -0,0 +1,27 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, dsp;
+    long long res, resdsp;
+
+    rs = 0x7fff567812345678;
+    rt = 0x8765432187654321;
+
+    res = 0xffac24ac00860086;
+    resdsp = 0x1;
+
+    __asm
+        ("precrqu_s.ob.qh %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 22) & 0x1;
+    if ((rd != res) || (dsp != resdsp)) {
+        printf("precrq_s.ob.qh error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrqu_s_qb_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrqu_s_qb_ph.c
new file mode 100644
index 0000000..cb1fee4
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrqu_s_qb_ph.c
@@ -0,0 +1,26 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long dsp;
+    long long result;
+
+    rs = 0x12345678;
+    rt = 0x87657fff;
+    result = 0x24AC00FF;
+
+    __asm
+        ("precrqu_s.qb.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    if ((result != rd) || (((dsp >> 22) & 0x01) != 0x01)) {
+        printf("precrqu_s.qb.ph wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_prependd.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_prependd.c
new file mode 100644
index 0000000..b4208c2
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_prependd.c
@@ -0,0 +1,37 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, rs;
+    long long res;
+    rt = 0x1234567887654321;
+    rs = 0xabcd1234abcd8765;
+
+    res = 0x1234567887654321;
+    __asm
+        ("prependd %0, %1, 0x0\n\t"
+         : "=r"(rt)
+         : "r"(rs)
+        );
+
+    if (rt != res) {
+        printf("prependd error\n");
+        return -1;
+    }
+
+    rt = 0x1234567887654321;
+    rs = 0xabcd1234abcd8765;
+
+    res = 0xd876512345678876;
+    __asm
+        ("prependd %0, %1, 0x4\n\t"
+         : "=r"(rt)
+         : "r"(rs)
+        );
+
+    if (rt != res) {
+        printf("prependd error\n");
+        return -1;
+    }
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_prependw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_prependw.c
new file mode 100644
index 0000000..d91bd20
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_prependw.c
@@ -0,0 +1,37 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, rs;
+    long long res;
+    rt = 0x1234567887654321;
+    rs = 0xabcd1234abcd8765;
+
+    res = 0x1234567887654321;
+    __asm
+        ("prependw %0, %1, 0x0\n\t"
+         : "=r"(rt)
+         : "r"(rs)
+        );
+
+    if (rt != res) {
+        printf("prependw error\n");
+        return -1;
+    }
+
+    rt = 0x1234567887654321;
+    rs = 0xabcd1234abcd8765;
+
+    res = 0x5123456788765432;
+    __asm
+        ("prependw %0, %1, 0x4\n\t"
+         : "=r"(rt)
+         : "r"(rs)
+        );
+
+    if (rt != res) {
+        printf("prependw error\n");
+        return -1;
+    }
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_printf.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_printf.c
new file mode 100644
index 0000000..cf8676d
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_printf.c
@@ -0,0 +1,266 @@
+
+typedef unsigned long va_list;
+
+#define ACC    4
+#define __read(source)                    \
+({ va_list __res;                    \
+    __asm__ __volatile__(                \
+        "move\t%0, " #source "\n\t"        \
+        : "=r" (__res));            \
+    __res;                        \
+})
+
+enum format_type {
+    FORMAT_TYPE_NONE,
+    FORMAT_TYPE_HEX,
+    FORMAT_TYPE_ULONG,
+    FORMAT_TYPE_FLOAT
+};
+
+struct printf_spec {
+    char    type;
+};
+
+static int format_decode(char *fmt, struct printf_spec *spec)
+{
+    char *start = fmt;
+
+    for (; *fmt ; ++fmt) {
+        if (*fmt == '%') {
+            break;
+        }
+    }
+
+    switch (*++fmt) {
+    case 'x':
+        spec->type = FORMAT_TYPE_HEX;
+        break;
+
+    case 'd':
+        spec->type = FORMAT_TYPE_ULONG;
+        break;
+
+    case 'f':
+        spec->type = FORMAT_TYPE_FLOAT;
+        break;
+
+    default:
+        spec->type = FORMAT_TYPE_NONE;
+    }
+
+    return ++fmt - start;
+}
+
+void *memcpy(void *dest, void *src, int n)
+{
+    int i;
+    char *s = src;
+    char *d = dest;
+
+    for (i = 0; i < n; i++) {
+        d[i] = s[i];
+    }
+    return dest;
+}
+
+char *number(char *buf, va_list num)
+{
+    int i;
+    char *str = buf;
+    static char digits[16] = "0123456789abcdef";
+    str = str + sizeof(num) * 2;
+
+    for (i = 0; i < sizeof(num) * 2; i++) {
+        *--str = digits[num & 15];
+        num >>= 4;
+    }
+
+    return buf + sizeof(num) * 2;
+}
+
+char *__number(char *buf, va_list num)
+{
+    int i;
+    va_list mm = num;
+    char *str = buf;
+
+    if (!num) {
+        *str++ = '0';
+        return str;
+    }
+
+    for (i = 0; mm; mm = mm/10, i++) {
+        /* Do nothing. */
+    }
+
+    str = str + i;
+
+    while (num) {
+        *--str = num % 10 + 48;
+        num = num / 10;
+    }
+
+    return str + i;
+}
+
+va_list modf(va_list args, va_list *integer, va_list *num)
+{
+    int i;
+    double dot_v = 0;
+    va_list E, DOT, DOT_V;
+
+    if (!args) {
+        return 0;
+    }
+
+    for (i = 0, args = args << 1 >> 1; i < 52; i++) {
+        if ((args >> i) & 0x1) {
+            break;
+        }
+    }
+
+    *integer = 0;
+
+    if ((args >> 56 != 0x3f) || (args >> 52 == 0x3ff)) {
+        E = (args >> 52) - 1023;
+        DOT = 52 - E - i;
+        DOT_V = args << (12 + E) >> (12 + E) >> i;
+        *integer = ((args << 12 >> 12) >> (i + DOT)) | (1 << E);
+    } else {
+        E = ~((args >> 52) - 1023) + 1;
+        DOT_V = args << 12 >> 12;
+
+        dot_v += 1.0 / (1 << E);
+
+        for (i = 1; i <= 16; i++) {
+            if ((DOT_V >> (52 - i)) & 0x1) {
+                dot_v += 1.0 / (1 << E + i);
+            }
+        }
+
+        for (i = 1, E = 0; i <= ACC; i++) {
+            dot_v *= 10;
+            if (!(va_list)dot_v) {
+                E++;
+            }
+    }
+
+    *num = E;
+
+    return dot_v;
+    }
+
+    if (args & 0xf) {
+        for (i = 1; i <= 16; i++) {
+            if ((DOT_V >> (DOT - i)) & 0x1) {
+                dot_v += 1.0 / (1 << i);
+            }
+        }
+
+        for (i = 1, E = 0; i <= ACC; i++) {
+            dot_v *= 10;
+            if (!(va_list)dot_v) {
+                E++;
+            }
+        }
+
+        *num = E;
+
+        return dot_v;
+    } else if (DOT) {
+        for (i = 1; i <= DOT; i++) {
+            if ((DOT_V >> (DOT - i)) & 0x1) {
+                dot_v += 1.0 / (1 << i);
+            }
+        }
+
+        for (i = 1; i <= ACC; i++) {
+            dot_v = dot_v * 10;
+        }
+
+    return dot_v;
+    }
+
+    return 0;
+}
+
+int vsnprintf(char *buf, int size, char *fmt, va_list args)
+{
+    char *str, *mm;
+    struct printf_spec spec = {0};
+
+    str = mm = buf;
+
+    while (*fmt) {
+        char *old_fmt = fmt;
+        int read = format_decode(fmt, &spec);
+
+        fmt += read;
+
+        switch (spec.type) {
+        case FORMAT_TYPE_NONE: {
+            memcpy(str, old_fmt, read);
+            str += read;
+            break;
+        }
+        case FORMAT_TYPE_HEX: {
+            memcpy(str, old_fmt, read);
+            str = number(str + read, args);
+            for (; *mm ; ++mm) {
+                if (*mm == '%') {
+                    *mm = '0';
+                break;
+                }
+            }
+        break;
+        }
+        case FORMAT_TYPE_ULONG: {
+            memcpy(str, old_fmt, read - 2);
+            str = __number(str + read - 2, args);
+            break;
+        }
+        case FORMAT_TYPE_FLOAT: {
+            va_list integer, dot_v, num;
+            dot_v = modf(args, &integer, &num);
+            memcpy(str, old_fmt, read - 2);
+            str += read - 2;
+            if ((args >> 63 & 0x1)) {
+                *str++ = '-';
+            }
+            str = __number(str, integer);
+            if (dot_v) {
+                *str++ = '.';
+                while (num--) {
+                    *str++ = '0';
+                }
+                str = __number(str, dot_v);
+            }
+            break;
+        }
+        }
+    }
+    *str = '\0';
+
+    return str - buf;
+}
+
+static void serial_out(char *str)
+{
+    while (*str) {
+        *(char *)0xffffffffb80003f8 = *str++;
+    }
+}
+
+int vprintf(char *fmt, va_list args)
+{
+    int printed_len = 0;
+    static char printf_buf[512];
+    printed_len = vsnprintf(printf_buf, sizeof(printf_buf), fmt, args);
+    serial_out(printf_buf);
+    return printed_len;
+}
+
+int printf(char *fmt, ...)
+{
+    return vprintf(fmt, __read($5));
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_raddu_l_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_raddu_l_ob.c
new file mode 100644
index 0000000..76ddf25
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_raddu_l_ob.c
@@ -0,0 +1,22 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, result;
+    rs = 0x12345678ABCDEF0;
+    result = 0x000000000001E258;
+
+    __asm
+        ("raddu.l.ob %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs)
+        );
+
+    if (rd != result) {
+        printf("raddu.l.ob error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_raddu_w_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_raddu_w_qb.c
new file mode 100644
index 0000000..c9d6535
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_raddu_w_qb.c
@@ -0,0 +1,23 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs;
+    long long result;
+
+    rs = 0x12345678;
+    result = 0x114;
+
+    __asm
+        ("raddu.w.qb %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rs)
+        );
+    if (rd != result) {
+        printf("raddu.w.qb wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_rddsp.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_rddsp.c
new file mode 100644
index 0000000..7165572
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_rddsp.c
@@ -0,0 +1,53 @@
+#include "io.h"
+
+int main(void)
+{
+    long long dsp_i, dsp_o;
+    long long ccond_i, outflag_i, efi_i, c_i, scount_i, pos_i;
+    long long ccond_o, outflag_o, efi_o, c_o, scount_o, pos_o;
+    long long ccond_r, outflag_r, efi_r, c_r, scount_r, pos_r;
+
+    ccond_i   = 0x000000BC;/* 4 */
+    outflag_i = 0x0000001B;/* 3 */
+    efi_i     = 0x00000001;/* 5 */
+    c_i       = 0x00000001;/* 2 */
+    scount_i  = 0x0000000F;/* 1 */
+    pos_i     = 0x0000000C;/* 0 */
+
+    dsp_i = (ccond_i   << 24) | \
+            (outflag_i << 16) | \
+            (efi_i     << 14) | \
+            (c_i       << 13) | \
+            (scount_i  <<  7) | \
+            pos_i;
+
+    ccond_r   = ccond_i;
+    outflag_r = outflag_i;
+    efi_r     = efi_i;
+    c_r       = c_i;
+    scount_r  = scount_i;
+    pos_r     = pos_i;
+
+    __asm
+        ("wrdsp %1, 0x3F\n\t"
+         "rddsp %0, 0x3F\n\t"
+         : "=r"(dsp_o)
+         : "r"(dsp_i)
+        );
+
+    ccond_o   = (dsp_o >> 24) & 0xFF;
+    outflag_o = (dsp_o >> 16) & 0xFF;
+    efi_o     = (dsp_o >> 14) & 0x01;
+    c_o       = (dsp_o >> 14) & 0x01;
+    scount_o  = (dsp_o >>  7) & 0x3F;
+    pos_o     =  dsp_o & 0x1F;
+
+    if ((ccond_o != ccond_r) || (outflag_o != outflag_r) || (efi_o != efi_r) \
+            || (c_o != c_r) || (scount_o != scount_r) || (pos_o != pos_r)) {
+        printf("rddsp wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_repl_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_repl_ob.c
new file mode 100644
index 0000000..20cb780
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_repl_ob.c
@@ -0,0 +1,21 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, result;
+    rd = 0;
+    result = 0xFFFFFFFFFFFFFFFF;
+
+    __asm
+        ("repl.ob %0, 0xFF\n\t"
+         : "=r"(rd)
+        );
+
+    if (result != rd) {
+        printf("repl.ob error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_repl_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_repl_ph.c
new file mode 100644
index 0000000..11d29bd
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_repl_ph.c
@@ -0,0 +1,30 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, result;
+
+    result = 0x01BF01BF;
+    __asm
+        ("repl.ph %0, 0x1BF\n\t"
+         : "=r"(rd)
+        );
+    if (rd != result) {
+        printf("repl.ph wrong\n");
+
+        return -1;
+    }
+
+    result = 0x01FF01FF;
+    __asm
+        ("repl.ph %0, 0x01FF\n\t"
+         : "=r"(rd)
+        );
+    if (rd != result) {
+        printf("repl.ph wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_repl_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_repl_pw.c
new file mode 100644
index 0000000..d35376a
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_repl_pw.c
@@ -0,0 +1,34 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, result;
+    rd = 0;
+    result = 0x000001FF000001FF;
+
+    __asm
+        ("repl.pw %0, 0x1FF\n\t"
+         : "=r"(rd)
+        );
+
+    if (result != rd) {
+        printf("repl.pw error1\n");
+
+        return -1;
+    }
+
+    rd = 0;
+    result = 0xFFFFFE00FFFFFE00;
+    __asm
+        ("repl.pw %0, 0xFFFFFFFFFFFFFE00\n\t"
+         : "=r"(rd)
+        );
+
+    if (result != rd) {
+        printf("repl.pw error2\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_repl_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_repl_qb.c
new file mode 100644
index 0000000..592feae
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_repl_qb.c
@@ -0,0 +1,19 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, result;
+
+    result = 0xFFFFFFFFBFBFBFBF;
+    __asm
+        ("repl.qb %0, 0xBF\n\t"
+         : "=r"(rd)
+        );
+    if (rd != result) {
+        printf("repl.qb wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_repl_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_repl_qh.c
new file mode 100644
index 0000000..82afc37
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_repl_qh.c
@@ -0,0 +1,34 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, result;
+    rd = 0;
+    result = 0x01FF01FF01FF01FF;
+
+    __asm
+        ("repl.qh %0, 0x1FF\n\t"
+         : "=r"(rd)
+        );
+
+    if (result != rd) {
+        printf("repl.qh error 1\n");
+
+        return -1;
+    }
+
+    rd = 0;
+    result = 0xFE00FE00FE00FE00;
+    __asm
+        ("repl.qh %0, 0xFFFFFFFFFFFFFE00\n\t"
+         : "=r"(rd)
+        );
+
+    if (result != rd) {
+        printf("repl.qh error 2\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_replv_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_replv_ob.c
new file mode 100644
index 0000000..31ff318
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_replv_ob.c
@@ -0,0 +1,23 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, result;
+
+    rt = 0xFF;
+    result = 0xFFFFFFFFFFFFFFFF;
+
+    __asm
+        ("replv.ob %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+
+    if (result != rd) {
+        printf("replv.ob error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_replv_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_replv_ph.c
new file mode 100644
index 0000000..0af7a36
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_replv_ph.c
@@ -0,0 +1,22 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt;
+    long long result;
+
+    rt = 0x12345678;
+    result = 0x56785678;
+    __asm
+        ("replv.ph %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    if (rd != result) {
+        printf("replv.ph wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_replv_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_replv_pw.c
new file mode 100644
index 0000000..e1789af
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_replv_pw.c
@@ -0,0 +1,23 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, result;
+    rd = 0;
+    rt = 0xFFFFFFFF;
+    result = 0xFFFFFFFFFFFFFFFF;
+
+    __asm
+        ("replv.pw %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+
+    if (result != rd) {
+        printf("replv.pw error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_replv_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_replv_qb.c
new file mode 100644
index 0000000..d99298c
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_replv_qb.c
@@ -0,0 +1,22 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt;
+    long long result;
+
+    rt     = 0x12345678;
+    result = 0x78787878;
+    __asm
+        ("replv.qb %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    if (rd != result) {
+        printf("replv.qb wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shilo.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shilo.c
new file mode 100644
index 0000000..5f454f6
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shilo.c
@@ -0,0 +1,29 @@
+#include "io.h"
+
+int main(void)
+{
+    long long ach, acl;
+    long long resulth, resultl;
+
+    ach = 0xBBAACCFF;
+    acl = 0x1C3B001D;
+
+    resulth = 0x17755;
+    resultl = 0xFFFFFFFF99fe3876;
+
+    __asm
+        ("mthi %0, $ac1\n\t"
+         "mtlo %1, $ac1\n\t"
+         "shilo $ac1, 0x0F\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "+r"(ach), "+r"(acl)
+        );
+    if ((ach != resulth) || (acl != resultl)) {
+        printf("shilo wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shilov.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shilov.c
new file mode 100644
index 0000000..e82615a
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shilov.c
@@ -0,0 +1,31 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rs, ach, acl;
+    long long resulth, resultl;
+
+    rs  = 0x0F;
+    ach = 0xBBAACCFF;
+    acl = 0x1C3B001D;
+
+    resulth = 0x17755;
+    resultl = 0xFFFFFFFF99fe3876;
+
+    __asm
+        ("mthi %0, $ac1\n\t"
+         "mtlo %1, $ac1\n\t"
+         "shilov $ac1, %2\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "+r"(ach), "+r"(acl)
+         : "r"(rs)
+        );
+    if ((ach != resulth) || (acl != resultl)) {
+        printf("shilov wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_ob.c
new file mode 100644
index 0000000..7dcb58f
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_ob.c
@@ -0,0 +1,43 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, dsp;
+    long long res, resdsp;
+
+    rt = 0x9ba8765433456789;
+    res = 0x9ba8765433456789;
+    resdsp = 0x0;
+    __asm
+        ("shll.ob %0, %2, 0x0\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt)
+        );
+
+    dsp = (dsp >> 22) & 0x1;
+
+    if ((dsp != resdsp) || (rd != res)) {
+        printf("shll.ob error\n");
+        return -1;
+    }
+
+    rt = 0x9ba8765433456789;
+    res = 0xd840b0a098283848;
+    resdsp = 0x1;
+    __asm
+        ("shll.ob %0, %2, 0x3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt)
+        );
+
+    dsp = (dsp >> 22) & 0x1;
+
+    if ((dsp != resdsp) || (rd != res)) {
+        printf("shll.ob error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_ph.c
new file mode 100644
index 0000000..42b462d
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_ph.c
@@ -0,0 +1,43 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, dsp;
+    long long result, resultdsp;
+
+    rt        = 0x12345678;
+    result    = 0x12345678;
+    resultdsp = 0;
+
+    __asm
+        ("shll.ph %0, %2, 0x0\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt)
+        );
+    dsp = (dsp >> 22) & 0x01;
+    if ((dsp != resultdsp) || (rd  != result)) {
+        printf("shll.ph wrong\n");
+
+        return -1;
+    }
+
+    rt        = 0x12345678;
+    result    = 0xFFFFFFFFA000C000;
+    resultdsp = 1;
+
+    __asm
+        ("shll.ph %0, %2, 0x0B\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt)
+        );
+    dsp = (dsp >> 22) & 0x01;
+    if ((dsp != resultdsp) || (rd  != result)) {
+        printf("shll.ph wrong1\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_pw.c
new file mode 100644
index 0000000..d7878b2
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_pw.c
@@ -0,0 +1,43 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, dsp;
+    long long result, resultdsp;
+
+    rt        = 0x8765432112345678;
+    result    = 0x8765432112345678;
+    resultdsp = 0;
+
+    __asm
+        ("shll.pw %0, %2, 0x0\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt)
+        );
+
+    dsp = (dsp >> 22) & 0x01;
+    if ((dsp != resultdsp) || (rd  != result)) {
+        printf("shll.pw wrong\n");
+        return -1;
+    }
+
+    rt        = 0x8765432112345678;
+    result    = 0x6543210034567800;
+    resultdsp = 1;
+
+    __asm
+        ("shll.pw %0, %2, 0x8\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt)
+        );
+
+    dsp = (dsp >> 22) & 0x01;
+    if ((dsp != resultdsp) || (rd  != result)) {
+        printf("shll.pw wrong\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_qb.c
new file mode 100644
index 0000000..c21ab66
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_qb.c
@@ -0,0 +1,26 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, dsp;
+    long long result, resultdsp;
+
+    rt     = 0x87654321;
+    result = 0x38281808;
+    resultdsp = 0x01;
+
+    __asm
+        ("shll.qb %0, %2, 0x03\n\t"
+         "rddsp   %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt)
+        );
+    dsp = (dsp >> 22) & 0x01;
+    if (rd != result) {
+        printf("shll.qb wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_qh.c
new file mode 100644
index 0000000..1380825
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_qh.c
@@ -0,0 +1,42 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, dsp;
+    long long res, resdsp;
+
+    rt = 0x9ba8765433456789;
+    res = 0x9ba8765433456789;
+    resdsp = 0x0;
+    __asm
+        ("shll.qh %0, %2, 0x0\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt)
+        );
+    dsp = (dsp >> 22) & 0x1;
+
+    if ((dsp != resdsp) || (rd != res)) {
+        printf("shll.qh error\n");
+        return -1;
+    }
+
+    rt = 0x9ba8765433456789;
+    res = 0xdd40b2a09a283c48;
+    resdsp = 0x1;
+    __asm
+        ("shll.qh %0, %2, 0x3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt)
+        );
+
+    dsp = (dsp >> 22) & 0x1;
+
+    if ((dsp != resdsp) || (rd != res)) {
+        printf("shll.qh error1\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_s_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_s_ph.c
new file mode 100644
index 0000000..1cf5d6d
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_s_ph.c
@@ -0,0 +1,43 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, dsp;
+    long long result, resultdsp;
+
+    rt        = 0x12345678;
+    result    = 0x12345678;
+    resultdsp = 0x0;
+
+    __asm
+        ("shll_s.ph %0, %2, 0x0\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt)
+        );
+    dsp = (dsp >> 22) & 0x01;
+    if ((dsp != resultdsp) || (rd  != result)) {
+        printf("shll_s.ph wrong\n");
+
+        return -1;
+    }
+
+    rt        = 0x12345678;
+    result    = 0x7FFF7FFF;
+    resultdsp = 0x01;
+
+    __asm
+        ("shll_s.ph %0, %2, 0x0B\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt)
+        );
+    dsp = (dsp >> 22) & 0x01;
+    if ((dsp != resultdsp) || (rd  != result)) {
+        printf("shll_s.ph wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_s_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_s_pw.c
new file mode 100644
index 0000000..e38f686
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_s_pw.c
@@ -0,0 +1,43 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, dsp;
+    long long result, resultdsp;
+
+    rt        = 0x8765432112345678;
+    result    = 0x8765432112345678;
+    resultdsp = 0;
+
+    __asm
+        ("shll_s.pw %0, %2, 0x0\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt)
+        );
+
+    dsp = (dsp >> 22) & 0x01;
+    if ((dsp != resultdsp) || (rd  != result)) {
+        printf("shll_s.pw wrong\n");
+        return -1;
+    }
+
+    rt        = 0x8765432112345678;
+    result    = 0x800000007fffffff;
+    resultdsp = 1;
+
+    __asm
+        ("shll_s.pw %0, %2, 0x8\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt)
+        );
+
+    dsp = (dsp >> 22) & 0x01;
+    if ((dsp != resultdsp) || (rd  != result)) {
+        printf("shll_s.pw wrong\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_s_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_s_qh.c
new file mode 100644
index 0000000..f2f57fa
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_s_qh.c
@@ -0,0 +1,43 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, dsp;
+    long long res, resdsp;
+
+    rt = 0x9ba8765433456789;
+    res = 0x9ba8765433456789;
+    resdsp = 0x0;
+    __asm
+        ("shll_s.qh %0, %2, 0x0\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt)
+        );
+
+    dsp = (dsp >> 22) & 0x1;
+
+    if ((dsp != resdsp) || (rd != res)) {
+        printf("shll_s.qh error\n");
+        return -1;
+    }
+
+    rt = 0x9ba8765433456789;
+    res = 0x80007fff7fff7fff;
+    resdsp = 0x1;
+    __asm
+        ("shll_s.qh %0, %2, 0x3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt)
+        );
+
+    dsp = (dsp >> 22) & 0x1;
+
+    if ((dsp != resdsp) || (rd != res)) {
+        printf("shll_s.qh error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_s_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_s_w.c
new file mode 100644
index 0000000..5780061
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_s_w.c
@@ -0,0 +1,26 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, dsp;
+    long long result, resultdsp;
+
+    rt        = 0x12345678;
+    result    = 0x7FFFFFFF;
+    resultdsp = 0x01;
+
+    __asm
+        ("shll_s.w %0, %2, 0x0B\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt)
+        );
+    dsp = (dsp >> 22) & 0x01;
+    if ((dsp != resultdsp) || (rd  != result)) {
+        printf("shll_s.w wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_ob.c
new file mode 100644
index 0000000..96a2e6f
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_ob.c
@@ -0,0 +1,45 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, rs, dsp;
+    long long result, resultdsp;
+
+    rt        = 0x8765432112345678;
+    rs = 0x0;
+    result    = 0x8765432112345678;
+    resultdsp = 0;
+
+    __asm
+        ("shllv.ob %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt), "r"(rs)
+        );
+
+    dsp = (dsp >> 22) & 0x01;
+    if ((dsp != resultdsp) || (rd  != result)) {
+        printf("shllv.ob wrong\n");
+        return -1;
+    }
+
+    rt        = 0x8765432112345678;
+    rs = 0x4;
+    result    = 0x7050301020406080;
+    resultdsp = 1;
+
+    __asm
+        ("shllv.ob %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt), "r"(rs)
+        );
+
+    dsp = (dsp >> 22) & 0x01;
+    if ((dsp != resultdsp) || (rd  != result)) {
+        printf("shllv.ob wrong\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_ph.c
new file mode 100644
index 0000000..532291f
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_ph.c
@@ -0,0 +1,27 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, dsp;
+    long long result, resultdsp;
+
+    rs        = 0x0B;
+    rt        = 0x12345678;
+    result    = 0xFFFFFFFFA000C000;
+    resultdsp = 1;
+
+    __asm
+        ("shllv.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt), "r"(rs)
+        );
+    dsp = (dsp >> 22) & 0x01;
+    if ((dsp != resultdsp) || (rd  != result)) {
+        printf("shllv.ph wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_pw.c
new file mode 100644
index 0000000..8d4ec29
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_pw.c
@@ -0,0 +1,45 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, rs, dsp;
+    long long result, resultdsp;
+    rt        = 0x8765432112345678;
+    rs = 0x0;
+    result    = 0x8765432112345678;
+    resultdsp = 0;
+
+    __asm
+        ("shllv.pw %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt), "r"(rs)
+        );
+
+    dsp = (dsp >> 22) & 0x01;
+    if ((dsp != resultdsp) || (rd  != result)) {
+        printf("shllv.pw wrong\n");
+        return -1;
+    }
+
+
+    rt        = 0x8765432112345678;
+    rs = 0x8;
+    result    = 0x6543210034567800;
+    resultdsp = 1;
+
+    __asm
+        ("shllv.pw %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt), "r"(rs)
+        );
+
+    dsp = (dsp >> 22) & 0x01;
+    if ((dsp != resultdsp) || (rd  != result)) {
+        printf("shllv.pw wrong\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_qb.c
new file mode 100644
index 0000000..e49356b
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_qb.c
@@ -0,0 +1,27 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, dsp;
+    long long result, resultdsp;
+
+    rs     = 0x03;
+    rt     = 0x87654321;
+    result = 0x38281808;
+    resultdsp = 0x01;
+
+    __asm
+        ("shllv.qb %0, %2, %3\n\t"
+         "rddsp   %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt), "r"(rs)
+        );
+    dsp = (dsp >> 22) & 0x01;
+    if (rd != result) {
+        printf("shllv.qb wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_qh.c
new file mode 100644
index 0000000..0de4077
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_qh.c
@@ -0,0 +1,45 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, rs, dsp;
+    long long result, resultdsp;
+
+    rt        = 0x8765432112345678;
+    rs = 0x0;
+    result    = 0x8765432112345678;
+    resultdsp = 0;
+
+    __asm
+        ("shllv.qh %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt), "r"(rs)
+        );
+
+    dsp = (dsp >> 22) & 0x01;
+    if ((dsp != resultdsp) || (rd  != result)) {
+        printf("shllv.qh wrong\n");
+        return -1;
+    }
+
+    rt        = 0x8765432112345678;
+    rs = 0x4;
+    result    = 0x7650321023406780;
+    resultdsp = 1;
+
+    __asm
+        ("shllv.qh %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt), "r"(rs)
+        );
+
+    dsp = (dsp >> 22) & 0x01;
+    if ((dsp != resultdsp) || (rd  != result)) {
+        printf("shllv.qh wrong\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_s_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_s_ph.c
new file mode 100644
index 0000000..7e69f94
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_s_ph.c
@@ -0,0 +1,27 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, dsp;
+    long long result, resultdsp;
+
+    rs        = 0x0B;
+    rt        = 0x12345678;
+    result    = 0x7FFF7FFF;
+    resultdsp = 0x01;
+
+    __asm
+        ("shllv_s.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt), "r"(rs)
+        );
+    dsp = (dsp >> 22) & 0x01;
+    if ((dsp != resultdsp) || (rd  != result)) {
+        printf("shllv_s.ph wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_s_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_s_pw.c
new file mode 100644
index 0000000..f8dc8d2
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_s_pw.c
@@ -0,0 +1,45 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, rs, dsp;
+    long long result, resultdsp;
+
+    rt        = 0x8765432112345678;
+    rs = 0x0;
+    result    = 0x8765432112345678;
+    resultdsp = 0;
+
+    __asm
+        ("shllv_s.pw %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt), "r"(rs)
+        );
+
+    dsp = (dsp >> 22) & 0x01;
+    if ((dsp != resultdsp) || (rd  != result)) {
+        printf("shllv_s.pw wrong\n");
+        return -1;
+    }
+
+    rt        = 0x8765432112345678;
+    rs = 0x8;
+    result    = 0x800000007fffffff;
+    resultdsp = 1;
+
+    __asm
+        ("shllv_s.pw %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt), "r"(rs)
+        );
+
+    dsp = (dsp >> 22) & 0x01;
+    if ((dsp != resultdsp) || (rd  != result)) {
+        printf("shllv_s.pw wrong\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_s_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_s_qh.c
new file mode 100644
index 0000000..db3832d
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_s_qh.c
@@ -0,0 +1,45 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, rs, dsp;
+    long long result, resultdsp;
+
+    rt        = 0x8765432112345678;
+    rs = 0x0;
+    result    = 0x8765432112345678;
+    resultdsp = 0;
+
+    __asm
+        ("shllv_s.qh %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt), "r"(rs)
+        );
+
+    dsp = (dsp >> 22) & 0x01;
+    if ((dsp != resultdsp) || (rd  != result)) {
+        printf("shllv_s.qh wrong\n");
+        return -1;
+    }
+
+    rt        = 0x8765432112345678;
+    rs = 0x4;
+    result    = 0x80007fff7fff7fff;
+    resultdsp = 1;
+
+    __asm
+        ("shllv_s.qh %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt), "r"(rs)
+        );
+
+    dsp = (dsp >> 22) & 0x01;
+    if ((dsp != resultdsp) || (rd  != result)) {
+        printf("shllv_s.qh wrong\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_s_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_s_w.c
new file mode 100644
index 0000000..5f6af8b
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_s_w.c
@@ -0,0 +1,27 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, dsp;
+    long long result, resultdsp;
+
+    rs        = 0x0B;
+    rt        = 0x12345678;
+    result    = 0x7FFFFFFF;
+    resultdsp = 0x01;
+
+    __asm
+        ("shllv_s.w %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt), "r"(rs)
+        );
+    dsp = (dsp >> 22) & 0x01;
+    if ((dsp != resultdsp) || (rd  != result)) {
+        printf("shllv_s.w wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_ob.c
new file mode 100644
index 0000000..d7fcfa8
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_ob.c
@@ -0,0 +1,23 @@
+#include "io.h"
+
+int main()
+{
+    long long rd, rt;
+    long long res;
+
+    rt = 0xbc98756abc654389;
+    res = 0xfbf9f7f6fb0604f8;
+
+    __asm
+        ("shra.ob %0, %1, 0x4\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+
+    if (rd != res) {
+        printf("shra.ob error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_ph.c
new file mode 100644
index 0000000..a2dc014
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_ph.c
@@ -0,0 +1,23 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt;
+    long long result;
+
+    rt     = 0x87654321;
+    result = 0xFFFFFFFFF0EC0864;
+
+    __asm
+        ("shra.ph %0, %1, 0x03\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    if (rd != result) {
+        printf("shra.ph wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_pw.c
new file mode 100644
index 0000000..33b1b8f
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_pw.c
@@ -0,0 +1,36 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt;
+    long long res;
+
+    rt = 0x1234567887654321;
+    res = 0x01234567f8765432;
+
+    __asm
+        ("shra.pw %0, %1, 0x4"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+
+    if (rd != res) {
+        printf("shra.pw error\n");
+        return -1;
+    }
+
+    rt = 0x1234567887654321;
+    res = 0x1234567887654321;
+
+    __asm
+        ("shra.pw %0, %1, 0x0"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+
+    if (rd != res) {
+        printf("shra.pw error\n");
+        return -1;
+    }
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_qh.c
new file mode 100644
index 0000000..85dbfef
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_qh.c
@@ -0,0 +1,37 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt;
+    long long res;
+
+    rt = 0x8512345654323454;
+    res = 0xf851034505430345;
+
+    __asm
+        ("shra.qh %0, %1, 0x4\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+
+    if (rd != res) {
+        printf("shra.qh error\n");
+        return -1;
+    }
+
+    rt = 0x8512345654323454;
+    res = 0x8512345654323454;
+
+    __asm
+        ("shra.qh %0, %1, 0x0\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+
+    if (rd != res) {
+        printf("shra.qh error1\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_r_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_r_ob.c
new file mode 100644
index 0000000..1847094
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_r_ob.c
@@ -0,0 +1,22 @@
+#include "io.h"
+
+int main()
+{
+    long long rd, rt;
+    long long res;
+
+    rt = 0xbc98756abc654389;
+    res = 0xfcfaf8f7fc0705f9;
+
+    __asm
+        ("shra_r.ob %0, %1, 0x4\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+
+    if (rd != res) {
+        printf("shra_r.ob error\n");
+        return -1;
+    }
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_r_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_r_ph.c
new file mode 100644
index 0000000..e0943ad
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_r_ph.c
@@ -0,0 +1,23 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt;
+    long long result;
+
+    rt     = 0x87654321;
+    result = 0xFFFFFFFFF0ED0864;
+
+    __asm
+        ("shra_r.ph %0, %1, 0x03\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    if (rd != result) {
+        printf("shra_r.ph wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_r_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_r_pw.c
new file mode 100644
index 0000000..6a86e68
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_r_pw.c
@@ -0,0 +1,36 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt;
+    long long res;
+
+    rt = 0x1234567887654321;
+    res = 0x01234568f8765432;
+
+    __asm
+        ("shra_r.pw %0, %1, 0x4"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+
+    if (rd != res) {
+        printf("shra_r.pw error\n");
+        return -1;
+    }
+
+    rt = 0x1234567887654321;
+    res = 0x1234567887654321;
+
+    __asm
+        ("shra_r.pw %0, %1, 0x0"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+
+    if (rd != res) {
+        printf("shra_r.pw error\n");
+        return -1;
+    }
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_r_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_r_qh.c
new file mode 100644
index 0000000..d5c2110
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_r_qh.c
@@ -0,0 +1,37 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt;
+    long long res;
+
+    rt = 0x8512345654323454;
+    res = 0xf0a2068b0a86068b;
+
+    __asm
+        ("shra_r.qh %0, %1, 0x3\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+
+    if (rd != res) {
+        printf("shra_r.qh error\n");
+        return -1;
+    }
+
+    rt = 0x8512345654323454;
+    res = 0x8512345654323454;
+
+    __asm
+        ("shra_r.qh %0, %1, 0x0\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+
+    if (rd != res) {
+        printf("shra_r.qh error1\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_r_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_r_w.c
new file mode 100644
index 0000000..36d2c9c
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_r_w.c
@@ -0,0 +1,23 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt;
+    long long result;
+
+    rt     = 0x87654321;
+    result = 0xFFFFFFFFF0ECA864;
+
+    __asm
+        ("shra_r.w %0, %1, 0x03\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    if (rd != result) {
+        printf("shra_r.w wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_ph.c
new file mode 100644
index 0000000..1b4e983
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_ph.c
@@ -0,0 +1,24 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long result;
+
+    rs     = 0x03;
+    rt     = 0x87654321;
+    result = 0xFFFFFFFFF0EC0864;
+
+    __asm
+        ("shrav.ph %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rt), "r"(rs)
+        );
+    if (rd != result) {
+        printf("shrav.ph wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_pw.c
new file mode 100644
index 0000000..e19d515
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_pw.c
@@ -0,0 +1,38 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, rs;
+    long long res;
+
+    rt = 0x1234567887654321;
+    rs = 0x4;
+    res = 0x01234567f8765432;
+
+    __asm
+        ("shrav.pw %0, %1, %2"
+         : "=r"(rd)
+         : "r"(rt), "r"(rs)
+        );
+
+    if (rd != res) {
+        printf("shrav.pw error\n");
+        return -1;
+    }
+
+    rt = 0x1234567887654321;
+    rs = 0x0;
+    res = 0x1234567887654321;
+
+    __asm
+        ("shrav.pw %0, %1, %2"
+         : "=r"(rd)
+         : "r"(rt), "r"(rs)
+        );
+
+    if (rd != res) {
+        printf("shrav.pw error1\n");
+        return -1;
+    }
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_qh.c
new file mode 100644
index 0000000..dc92e09
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_qh.c
@@ -0,0 +1,39 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, rs;
+    long long res;
+
+    rt = 0x8512345654323454;
+    rs = 0x4;
+    res = 0xf851034505430345;
+
+    __asm
+        ("shrav.qh %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rt), "r"(rs)
+        );
+
+    if (rd != res) {
+        printf("shrav.qh error\n");
+        return -1;
+    }
+
+    rt = 0x8512345654323454;
+    rs = 0x0;
+    res = 0x8512345654323454;
+
+    __asm
+        ("shrav.qh %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rt), "r"(rs)
+        );
+
+    if (rd != res) {
+        printf("shrav.qh error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_r_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_r_ph.c
new file mode 100644
index 0000000..350d529
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_r_ph.c
@@ -0,0 +1,24 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long result;
+
+    rs     = 0x03;
+    rt     = 0x87654321;
+    result = 0xFFFFFFFFF0ED0864;
+
+    __asm
+        ("shrav_r.ph %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rt), "r"(rs)
+        );
+    if (rd != result) {
+        printf("shrav_r.ph wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_r_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_r_pw.c
new file mode 100644
index 0000000..25b0545
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_r_pw.c
@@ -0,0 +1,37 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, rs;
+    long long res;
+
+    rt = 0x1234567887654321;
+    rs = 0x4;
+    res = 0x01234568f8765432;
+
+    __asm
+        ("shrav_r.pw %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rt), "r"(rs)
+        );
+
+    if (rd != res) {
+        printf("shrav_r.pw error\n");
+        return -1;
+    }
+
+    rt = 0x1234567887654321;
+    rs = 0x0;
+    res = 0x1234567887654321;
+
+    __asm
+        ("shrav_r.pw %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rt), "r"(rs)
+        );
+    if (rd != res) {
+        printf("shrav_r.pw error\n");
+        return -1;
+    }
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_r_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_r_qh.c
new file mode 100644
index 0000000..fd187a1
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_r_qh.c
@@ -0,0 +1,39 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, rs;
+    long long res;
+
+    rt = 0x8512345654323454;
+    rs = 0x3;
+    res = 0xf0a2068b0a86068b;
+
+    __asm
+        ("shrav_r.qh %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rt), "r"(rs)
+        );
+
+    if (rd != res) {
+        printf("shrav_r.qh error\n");
+        return -1;
+    }
+
+    rt = 0x400000000000000;
+    rs = 0x0;
+    res = 0x400000000000000;
+
+    __asm
+        ("shrav_r.qh %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rt), "r"(rs)
+        );
+
+    if (rd != res) {
+        printf("shrav_r.qh error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_r_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_r_w.c
new file mode 100644
index 0000000..3766c72
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_r_w.c
@@ -0,0 +1,24 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long result;
+
+    rs     = 0x03;
+    rt     = 0x87654321;
+    result = 0xFFFFFFFFF0ECA864;
+
+    __asm
+        ("shrav_r.w %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rt), "r"(rs)
+        );
+    if (rd != result) {
+        printf("shrav_r.w wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrl_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrl_ob.c
new file mode 100644
index 0000000..a114571
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrl_ob.c
@@ -0,0 +1,38 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt;
+    long long res;
+
+    rt = 0xab76543212345678;
+    res = 0x150e0a0602060a0f;
+
+    __asm
+        ("shrl.ob %0, %1, 0x3\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+
+    if (rd != res) {
+        printf("shrl.ob error\n");
+        return -1;
+    }
+
+    rt = 0xab76543212345678;
+    res = 0xab76543212345678;
+
+    __asm
+        ("shrl.ob %0, %1, 0x0\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+
+    if (rd != res) {
+        printf("shrl.ob error\n");
+        return -1;
+    }
+
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrl_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrl_qb.c
new file mode 100644
index 0000000..c0e36db
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrl_qb.c
@@ -0,0 +1,23 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt;
+    long long result;
+
+    rt     = 0x12345678;
+    result = 0x00010203;
+
+    __asm
+        ("shrl.qb %0, %1, 0x05\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    if (rd != result) {
+        printf("shrl.qb wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrl_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrl_qh.c
new file mode 100644
index 0000000..c156246
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrl_qh.c
@@ -0,0 +1,22 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt;
+    long long res;
+
+    rt = 0x8765679abc543786;
+    res = 0x087606790bc50378;
+
+    __asm
+        ("shrl.qh %0, %1, 0x4\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+
+    if (rd != res) {
+        printf("shrl.qh error\n");
+        return -1;
+    }
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrlv_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrlv_ob.c
new file mode 100644
index 0000000..cb39c46
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrlv_ob.c
@@ -0,0 +1,39 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, rs;
+    long long res;
+
+    rt = 0xab76543212345678;
+    rs = 0x3;
+    res = 0x150e0a0602060a0f;
+
+    __asm
+        ("shrlv.ob %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rt), "r"(rs)
+        );
+
+    if (rd != res) {
+        printf("shrlv.ob error\n");
+        return -1;
+    }
+
+    rt = 0xab76543212345678;
+    rs = 0x0;
+    res = 0xab76543212345678;
+
+    __asm
+        ("shrlv.ob %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rt), "r"(rs)
+        );
+
+    if (rd != res) {
+        printf("shrlv.ob error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrlv_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrlv_qb.c
new file mode 100644
index 0000000..5616aa9
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrlv_qb.c
@@ -0,0 +1,24 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long result;
+
+    rs     = 0x05;
+    rt     = 0x12345678;
+    result = 0x00010203;
+
+    __asm
+        ("shrlv.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rt), "r"(rs)
+        );
+    if (rd != result) {
+        printf("shrlv.qb wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrlv_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrlv_qh.c
new file mode 100644
index 0000000..05de2fd
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrlv_qh.c
@@ -0,0 +1,23 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, rs;
+    long long res;
+
+    rt = 0x8765679abc543786;
+    rs = 0x4;
+    res = 0x087606790bc50378;
+
+    __asm
+        ("shrlv.qh %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rt), "r"(rs)
+        );
+
+    if (rd != res) {
+        printf("shrlv.qh error\n");
+        return -1;
+    }
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_ph.c
new file mode 100644
index 0000000..6a1b186
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_ph.c
@@ -0,0 +1,27 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, dsp;
+    long long result, resultdsp;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result    = 0xFFFFFFFF8ACF1357;
+    resultdsp = 0x01;
+
+    __asm
+        ("subq.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 20) & 0x01;
+    if ((dsp != resultdsp) || (rd  != result)) {
+        printf("subq.ph wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_pw.c
new file mode 100644
index 0000000..32f96ba
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_pw.c
@@ -0,0 +1,44 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, result, dspreg, dspresult;
+    rt = 0x123456789ABCDEF0;
+    rs = 0x123456789ABCDEF0;
+    result = 0x0;
+    dspresult = 0x0;
+
+    __asm
+        ("subq.pw %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dspreg)
+         : "r"(rs), "r"(rt)
+         );
+    dspreg = (dspreg >> 20) & 0x1;
+    if ((rd != result) || (dspreg != dspresult)) {
+        printf("subq.pw error1\n\t");
+
+        return -1;
+    }
+
+    rt = 0x123456789ABCDEF1;
+    rs = 0x123456789ABCDEF2;
+    result =  0x0000000000000001;
+    dspresult = 0x0;
+
+    __asm
+        ("subq.pw %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dspreg)
+         : "r"(rs), "r"(rt)
+        );
+    dspreg = (dspreg >> 20) & 0x1;
+    if ((rd != result) || (dspreg != dspresult)) {
+        printf("subq.pw error2\n");
+
+        return -1;
+    }
+
+    return 0;
+}
+
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_qh.c
new file mode 100644
index 0000000..76d5f0a
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_qh.c
@@ -0,0 +1,26 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, result, dspreg, dspresult;
+    rt = 0x123456789ABCDEF0;
+    rs = 0x123456789ABCDEF0;
+    result = 0x0;
+    dspresult = 0x0;
+
+    __asm
+        ("subq.qh %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dspreg)
+         : "r"(rs), "r"(rt)
+        );
+    dspreg = (dspreg >> 20) & 0x1;
+    if ((rd != result) || (dspreg != dspresult)) {
+        printf("subq.qh error\n\t");
+
+        return -1;
+    }
+
+    return 0;
+}
+
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_s_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_s_ph.c
new file mode 100644
index 0000000..0b162f0
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_s_ph.c
@@ -0,0 +1,27 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, dsp;
+    long long result, resultdsp;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result    = 0x7FFF1357;
+    resultdsp = 0x01;
+
+    __asm
+        ("subq_s.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 20) & 0x01;
+    if ((dsp != resultdsp) || (rd  != result)) {
+        printf("subq_s.ph wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_s_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_s_pw.c
new file mode 100644
index 0000000..4c080b7
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_s_pw.c
@@ -0,0 +1,63 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, result, dspreg, dspresult;
+    rt = 0x9FFFFFFD9FFFFFFD;
+    rs = 0x4000000080000000;
+    result = 0x7fffffffe0000003;
+    dspresult = 0x1;
+
+    __asm
+        ("subq_s.pw %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dspreg)
+         : "r"(rs), "r"(rt)
+        );
+    dspreg = (dspreg >> 20) & 0x1;
+    if ((rd != result) || (dspreg != dspresult)) {
+        printf("subq_s.pw error1\n");
+
+        return -1;
+    }
+
+    rt = 0x123456789ABCDEF1;
+    rs = 0x123456789ABCDEF2;
+    result =  0x0000000000000001;
+    /* This time we do not set dspctrl, but set it in pre-action. */
+    dspresult = 0x1;
+
+    __asm
+        ("subq_s.pw %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dspreg)
+         : "r"(rs), "r"(rt)
+        );
+    dspreg = (dspreg >> 20) & 0x1;
+    if ((rd != result) || (dspreg != dspresult)) {
+        printf("subq_s.pw error2\n");
+
+        return -1;
+    }
+
+    rt = 0x8000000080000000;
+    rs = 0x7000000070000000;
+    dspresult = 0x1;
+
+    __asm
+        ("subq_s.pw %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dspreg)
+         : "r"(rs), "r"(rt)
+        );
+
+    dspreg = (dspreg >> 20) & 0x1;
+    if ((dspreg != dspresult)) {
+        printf("subq_s.pw error3\n");
+
+        return -1;
+    }
+
+    return 0;
+}
+
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_s_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_s_qh.c
new file mode 100644
index 0000000..4053b6b
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_s_qh.c
@@ -0,0 +1,61 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, result, dspreg, dspresult;
+    rs = 0x123456789ABCDEF0;
+    rt = 0x123456789ABCDEF0;
+    result = 0x0;
+    dspresult = 0x0;
+
+    __asm
+        ("subq_s.qh %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dspreg)
+         : "r"(rs), "r"(rt)
+        );
+    dspreg = (dspreg >> 20) & 0x1;
+    if ((rd != result) || (dspreg != dspresult)) {
+        printf("subq_s.qh error1\n");
+
+        return -1;
+    }
+
+    rs = 0x4000000080000000;
+    rt = 0x9FFD00009FFC0000;
+    result =  0x7FFF0000E0040000;
+    dspresult = 0x1;
+
+    __asm
+        ("subq_s.qh %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dspreg)
+         : "r"(rs), "r"(rt)
+        );
+    dspreg = (dspreg >> 20) & 0x1;
+    if ((rd != result) || (dspreg != dspresult)) {
+        printf("subq_s.qh error2\n");
+
+        return -1;
+    }
+
+    rs = 0x8000000000000000;
+    rt = 0x7000000000000000;
+    result =  0x8000000000000000;
+    dspresult = 0x1;
+    __asm
+        ("subq_s.qh %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dspreg)
+         : "r"(rs), "r"(rt)
+        );
+
+    dspreg = (dspreg >> 20) & 0x1;
+    if ((rd != result) || (dspreg != dspresult)) {
+        printf("subq_s.qh error3\n");
+        return -1;
+    }
+
+    return 0;
+}
+
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_s_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_s_w.c
new file mode 100644
index 0000000..91d32da
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_s_w.c
@@ -0,0 +1,27 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, dsp;
+    long long result, resultdsp;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result    = 0x7FFFFFFF;
+    resultdsp = 0x01;
+
+    __asm
+        ("subq_s.w %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 20) & 0x01;
+    if ((dsp != resultdsp) || (rd  != result)) {
+        printf("subq_s.w wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subu_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subu_ob.c
new file mode 100644
index 0000000..f670967
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subu_ob.c
@@ -0,0 +1,26 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, result, dspreg, dspresult;
+    rs = 0x6F6F6F6F6F6F6F6F;
+    rt = 0x5E5E5E5E5E5E5E5E;
+    result = 0x1111111111111111;
+    dspresult = 0x0;
+
+    __asm
+        ("subu.ob %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dspreg)
+         : "r"(rs), "r"(rt)
+         );
+
+    if ((rd != result) || (dspreg != dspresult)) {
+        printf("subu.ob error\n");
+
+        return -1;
+    }
+
+    return 0;
+}
+
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subu_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subu_qb.c
new file mode 100644
index 0000000..9eb80df
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subu_qb.c
@@ -0,0 +1,27 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, dsp;
+    long long result, resultdsp;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result    = 0xFFFFFFFF8BCF1357;
+    resultdsp = 0x01;
+
+    __asm
+        ("subu.qb %0, %2, %3\n\t"
+         "rddsp   %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 20) & 0x01;
+    if ((dsp != resultdsp) || (rd  != result)) {
+        printf("subu.qb wrong\n");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subu_s_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subu_s_ob.c
new file mode 100644
index 0000000..5df64e5
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subu_s_ob.c
@@ -0,0 +1,26 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, dspreg, result, dspresult;
+    rs = 0x12345678ABCDEF0;
+    rt = 0x12345678ABCDEF1;
+    result = 0x00000000000;
+    dspresult = 0x01;
+
+    __asm
+        ("subu_s.ob %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dspreg)
+         : "r"(rs), "r"(rt)
+         );
+
+    dspreg = ((dspreg >> 20) & 0x01);
+    if ((rd != result) || (dspreg != dspresult)) {
+        printf("subu_s.ob error\n\t");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subu_s_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subu_s_qb.c
new file mode 100644
index 0000000..9de76f4
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subu_s_qb.c
@@ -0,0 +1,27 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, dsp;
+    long long result, resultdsp;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result    = 0x00001357;
+    resultdsp = 0x01;
+
+    __asm
+        ("subu_s.qb %0, %2, %3\n\t"
+         "rddsp   %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 20) & 0x01;
+    if ((dsp != resultdsp) || (rd  != result)) {
+        printf("subu_s_qb wrong");
+
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_wrdsp.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_wrdsp.c
new file mode 100644
index 0000000..3033fd8
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_wrdsp.c
@@ -0,0 +1,48 @@
+#include "io.h"
+
+int main(void)
+{
+    long long dsp_i, dsp_o;
+    long long ccond_i, outflag_i, efi_i, c_i, scount_i, pos_i;
+    long long ccond_o, outflag_o, efi_o, c_o, scount_o, pos_o;
+    long long ccond_r, outflag_r, efi_r, c_r, scount_r, pos_r;
+
+    ccond_i = 0x000000BC;/* 4 */
+    outflag_i = 0x0000001B;/* 3 */
+    efi_i = 0x00000001;/* 5 */
+    c_i = 0x00000001;/* 2 */
+    scount_i = 0x0000000F;/* 1 */
+    pos_i = 0x0000000C;/* 0 */
+
+    dsp_i = (ccond_i << 24) | (outflag_i << 16) | (efi_i << 14) | (c_i << 13)
+            | (scount_i << 7) | pos_i;
+
+    ccond_r = ccond_i;
+    outflag_r = outflag_i;
+    efi_r = efi_i;
+    c_r = c_i;
+    scount_r = scount_i;
+    pos_r = pos_i;
+
+    __asm
+        ("wrdsp %1, 0x3F\n\t"
+         "rddsp %0, 0x3F\n\t"
+         : "=r"(dsp_o)
+         : "r"(dsp_i)
+        );
+
+    ccond_o = (dsp_o >> 24) & 0xFF;
+    outflag_o = (dsp_o >> 16) & 0xFF;
+    efi_o = (dsp_o >> 14) & 0x01;
+    c_o = (dsp_o >> 14) & 0x01;
+    scount_o = (dsp_o >> 7) & 0x3F;
+    pos_o = dsp_o & 0x1F;
+
+    if ((ccond_o != ccond_r) || (outflag_o != outflag_r) || (efi_o != efi_r) \
+            || (c_o != c_r) || (scount_o != scount_r) || (pos_o != pos_r)) {
+        printf("wrddsp wrong\n");
+
+        return -1;
+    }
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_absq_s_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_absq_s_qb.c
new file mode 100644
index 0000000..f7aec3e
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_absq_s_qb.c
@@ -0,0 +1,42 @@
+#include "io.h"
+int main()
+{
+    long long input, result, dsp;
+    long long hope;
+
+    input = 0x701BA35E;
+    hope  = 0x701B5D5E;
+
+    __asm
+        ("absq_s.qb %0, %1\n\t"
+         : "=r"(result)
+         : "r"(input)
+        );
+    if (result != hope) {
+        printf("absq_s.qb error\n");
+        return -1;
+    }
+
+    input = 0x801BA35E;
+    hope  = 0x7F1B5D5E;
+
+    __asm
+        ("absq_s.qb %0, %2\n\t"
+         "rddsp %1\n\t"
+         : "=r"(result), "=r"(dsp)
+         : "r"(input)
+        );
+    dsp = dsp >> 20;
+    dsp &= 0x01;
+    if (result != hope) {
+        printf("absq_s.qb error\n");
+        return -1;
+    }
+
+    if (dsp != 1) {
+        printf("absq_s.qb error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addqh_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addqh_ph.c
new file mode 100644
index 0000000..6b43cb8
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addqh_ph.c
@@ -0,0 +1,35 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long result;
+
+    rs     = 0x706A13FE;
+    rt     = 0x13065174;
+    result = 0x41B832B9;
+    __asm
+        ("addqh.ph %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    if (result != rd) {
+        printf("addqh.ph error!\n");
+        return -1;
+    }
+
+    rs     = 0x81000100;
+    rt     = 0xc2000100;
+    result = 0xffffffffa1800100;
+    __asm
+        ("addqh.ph %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    if (result != rd) {
+        printf("addqh.ph error!\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addqh_r_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addqh_r_ph.c
new file mode 100644
index 0000000..890ec98
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addqh_r_ph.c
@@ -0,0 +1,35 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long result;
+
+    rs     = 0x706A13FE;
+    rt     = 0x13065174;
+    result = 0x41B832B9;
+    __asm
+        ("addqh_r.ph %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    if (rd != result) {
+        printf("addqh_r.ph error\n");
+        return -1;
+    }
+
+    rs     = 0x81010100;
+    rt     = 0xc2000100;
+    result = 0xffffffffa1810100;
+    __asm
+        ("addqh_r.ph %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    if (rd != result) {
+        printf("addqh_r.ph error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addqh_r_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addqh_r_w.c
new file mode 100644
index 0000000..d324dec
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addqh_r_w.c
@@ -0,0 +1,38 @@
+#include"io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long result;
+
+    rs     = 0x00000010;
+    rt     = 0x00000001;
+    result = 0x00000009;
+
+    __asm
+        ("addqh_r.w  %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+
+    if (rd != result) {
+        printf("addqh_r.w error!\n");
+        return -1;
+    }
+    rs     = 0xFFFFFFFE;
+    rt     = 0x00000001;
+    result = 0x00000000;
+
+    __asm
+        ("addqh_r.w  %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+
+    if (rd != result) {
+        printf("addqh_r.w error!\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addqh_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addqh_w.c
new file mode 100644
index 0000000..78559e6
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addqh_w.c
@@ -0,0 +1,39 @@
+#include"io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long result;
+
+    rs     = 0x00000010;
+    rt     = 0x00000001;
+    result = 0x00000008;
+
+    __asm
+        ("addqh.w  %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+
+    if (rd != result) {
+        printf("addqh.w wrong\n");
+        return -1;
+    }
+
+    rs     = 0xFFFFFFFE;
+    rt     = 0x00000001;
+    result = 0xFFFFFFFFFFFFFFFF;
+
+    __asm
+        ("addqh.w  %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+
+    if (rd != result) {
+        printf("addqh.w wrong\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addu_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addu_ph.c
new file mode 100644
index 0000000..d64c8cd
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addu_ph.c
@@ -0,0 +1,37 @@
+#include"io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long dsp;
+    long long result;
+
+    rs     = 0x00FF00FF;
+    rt     = 0x00010001;
+    result = 0x01000100;
+    __asm
+        ("addu.ph %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    if (rd != result) {
+        printf("1 addu.ph error\n");
+        return -1;
+    }
+
+    rs     = 0xFFFF1111;
+    rt     = 0x00020001;
+    result = 0x00011112;
+    __asm
+        ("addu.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    if ((rd != result) || (((dsp >> 20) & 0x01) != 1)) {
+        printf("2 addu.ph error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addu_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addu_qh.c
new file mode 100644
index 0000000..edcbf34
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addu_qh.c
@@ -0,0 +1,43 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, dspreg;
+    long long result, dspresult;
+
+    rs = 0x123456787FFF0000;
+    rt = 0x1111111180000000;
+    result = 0x23456789FFFF0000;
+    dspresult = 0x0;
+
+    __asm("addu.qh %0, %2, %3\n\t"
+          "rddsp %1\n\t"
+          : "=r"(rd), "=r"(dspreg)
+          : "r"(rs), "r"(rt)
+         );
+
+    dspreg = ((dspreg >> 20) & 0x01);
+    if ((rd != result) || (dspreg != dspresult)) {
+        printf("addu.qh error\n");
+        return -1;
+    }
+
+    rs = 0x123456787FFF0000;
+    rt = 0x1111111180020000;
+    result = 0x23456789FFFF0000;
+    dspresult = 0x01;
+
+    __asm("addu.qh %0, %2, %3\n\t"
+          "rddsp %1\n\t"
+          : "=r"(rd), "=r"(dspreg)
+          : "r"(rs), "r"(rt)
+         );
+
+    dspreg = ((dspreg >> 20) & 0x01);
+    if ((rd != result) || (dspreg != dspresult)) {
+        printf("addu.qh overflow error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addu_s_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addu_s_ph.c
new file mode 100644
index 0000000..9250edb
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addu_s_ph.c
@@ -0,0 +1,37 @@
+#include"io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long dsp;
+    long long result;
+
+    rs     = 0x00FE00FE;
+    rt     = 0x00020001;
+    result = 0x010000FF;
+    __asm
+        ("addu_s.ph %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    if (rd != result) {
+        printf("addu_s.ph error\n");
+        return -1;
+    }
+
+    rs     = 0xFFFF1111;
+    rt     = 0x00020001;
+    result = 0xFFFFFFFFFFFF1112;
+    __asm
+        ("addu_s.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    if ((rd != result) || (((dsp >> 20) & 0x01) != 1)) {
+        printf("addu_s.ph error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addu_s_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addu_s_qh.c
new file mode 100644
index 0000000..b0c1626
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addu_s_qh.c
@@ -0,0 +1,43 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, dspreg;
+    long long result, dspresult;
+
+    rs = 0x123456787FFF0000;
+    rt = 0x1111111180000000;
+    result = 0x23456789FFFF0000;
+    dspresult = 0x0;
+
+    __asm("addu_s.qh %0, %2, %3\n\t"
+          "rddsp %1\n\t"
+          : "=r"(rd), "=r"(dspreg)
+          : "r"(rs), "r"(rt)
+         );
+
+    dspreg = ((dspreg >> 20) & 0x01);
+    if ((rd != result) || (dspreg != dspresult)) {
+        printf("1 addu_s.qh error\n");
+        return -1;
+    }
+
+    rs = 0x12345678FFFF0000;
+    rt = 0x11111111000F0000;
+    result = 0x23456789FFFF0000;
+    dspresult = 0x01;
+
+    __asm("addu_s.qh %0, %2, %3\n\t"
+          "rddsp %1\n\t"
+          : "=r"(rd), "=r"(dspreg)
+          : "r"(rs), "r"(rt)
+         );
+
+    dspreg = ((dspreg >> 20) & 0x01);
+    if ((rd != result) || (dspreg != dspresult)) {
+        printf("2 addu_s.qh error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_adduh_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_adduh_ob.c
new file mode 100644
index 0000000..9b309f6
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_adduh_ob.c
@@ -0,0 +1,35 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, result;
+    rs = 0xFF987CDEBCEF2356;
+    rt = 0xFF987CDEBCEF2354;
+    result = 0xFF987CDEBCEF2355;
+
+    __asm("adduh.ob %0, %1, %2\n\t"
+          : "=r"(rd)
+          : "r"(rs), "r"(rt)
+         );
+
+    if (rd != result) {
+        printf("adduh.ob error\n\t");
+        return -1;
+    }
+
+    rs = 0xac50691729945316;
+    rt = 0xb9234ca3f5573162;
+    result = 0xb2395a5d8f75423c;
+
+    __asm("adduh.ob %0, %1, %2\n\t"
+          : "=r"(rd)
+          : "r"(rs), "r"(rt)
+         );
+
+    if (rd != result) {
+        printf("adduh.ob error\n\t");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_adduh_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_adduh_qb.c
new file mode 100644
index 0000000..796b409
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_adduh_qb.c
@@ -0,0 +1,35 @@
+#include"io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long result;
+
+    rs     = 0xFF0055AA;
+    rt     = 0x0113421B;
+    result = 0xffffffff80094B62;
+    __asm
+        ("adduh.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    if (rd != result) {
+        printf("adduh.qb error\n");
+        return -1;
+    }
+    rs     = 0xFFFF0FFF;
+    rt     = 0x00010111;
+    result = 0x7F800888;
+
+    __asm
+        ("adduh.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    if (rd != result) {
+        printf("adduh.qb error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_adduh_r_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_adduh_r_ob.c
new file mode 100644
index 0000000..832de83
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_adduh_r_ob.c
@@ -0,0 +1,35 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, result;
+    rs = 0xFF987CDEBCEF2356;
+    rt = 0xFF987CDEBCEF2355;
+    result = 0xFF987CDEBCEF2356;
+
+    __asm("adduh_r.ob %0, %1, %2\n\t"
+          : "=r"(rd)
+          : "r"(rs), "r"(rt)
+         );
+
+    if (rd != result) {
+        printf("1 adduh_r.ob error\n\t");
+        return -1;
+    }
+
+    rs = 0xac50691729945316;
+    rt = 0xb9234ca3f5573162;
+    result = 0xb33a5b5d8f76423c;
+
+    __asm("adduh_r.ob %0, %1, %2\n\t"
+          : "=r"(rd)
+          : "r"(rs), "r"(rt)
+         );
+
+    if (rd != result) {
+        printf("2 adduh_r.ob error\n\t");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_adduh_r_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_adduh_r_qb.c
new file mode 100644
index 0000000..ae65fa5
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_adduh_r_qb.c
@@ -0,0 +1,35 @@
+#include"io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long result;
+
+    rs     = 0xFF0055AA;
+    rt     = 0x01112211;
+    result = 0xffffffff80093C5E;
+    __asm
+        ("adduh_r.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    if (rd != result) {
+        printf("adduh_r.qb error\n");
+        return -1;
+    }
+
+    rs     = 0xFFFF0FFF;
+    rt     = 0x00010111;
+    result = 0xffffffff80800888;
+    __asm
+        ("adduh_r.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    if (rd != result) {
+        printf("adduh_r.qb error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_append.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_append.c
new file mode 100644
index 0000000..68a7cec
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_append.c
@@ -0,0 +1,35 @@
+#include"io.h"
+
+int main(void)
+{
+    long long rs, rt;
+    long long result;
+
+    rs     = 0xFF0055AA;
+    rt     = 0x0113421B;
+    result = 0x02268436;
+    __asm
+        ("append %0, %1, 0x01\n\t"
+         : "+r"(rt)
+         : "r"(rs)
+        );
+    if (rt != result) {
+        printf("append error\n");
+        return -1;
+    }
+
+    rs     = 0xFFFF0FFF;
+    rt     = 0x00010111;
+    result = 0x0010111F;
+    __asm
+        ("append %0, %1, 0x04\n\t"
+         : "+r"(rt)
+         : "r"(rs)
+        );
+    if (rt != result) {
+        printf("append error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_balign.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_balign.c
new file mode 100644
index 0000000..7fbe815
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_balign.c
@@ -0,0 +1,35 @@
+#include"io.h"
+
+int main(void)
+{
+    long long rs, rt;
+    long long result;
+
+    rs     = 0xFF0055AA;
+    rt     = 0x0113421B;
+    result = 0x13421BFF;
+    __asm
+        ("balign %0, %1, 0x01\n\t"
+         : "+r"(rt)
+         : "r"(rs)
+        );
+    if (rt != result) {
+        printf("balign error\n");
+        return -1;
+    }
+
+    rs     = 0xFFFF0FFF;
+    rt     = 0x00010111;
+    result = 0x11FFFF0F;
+    __asm
+        ("balign %0, %1, 0x03\n\t"
+         : "+r"(rt)
+         : "r"(rs)
+        );
+    if (rt != result) {
+        printf("balign error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_eq_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_eq_ob.c
new file mode 100644
index 0000000..61217f3
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_eq_ob.c
@@ -0,0 +1,44 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, result, dspreg, dspresult;
+
+    rs = 0x123456789ABCDEF0;
+    rt = 0x123456789ABCDEFF;
+    result = 0xFE;
+    dspresult = 0xFE;
+
+    __asm("cmpgdu.eq.ob %0, %2, %3\n\t"
+          "rddsp %1"
+          : "=r"(rd), "=r"(dspreg)
+          : "r"(rs), "r"(rt)
+         );
+
+    dspreg = ((dspreg >> 24) & 0xFF);
+
+    if ((rd != result) || (dspreg != dspresult)) {
+        printf("1 cmpgdu.eq.ob error\n");
+        return -1;
+    }
+
+    rs = 0x133256789ABCDEF0;
+    rt = 0x123456789ABCDEFF;
+    result = 0x3E;
+    dspresult = 0x3E;
+
+    __asm("cmpgdu.eq.ob %0, %2, %3\n\t"
+          "rddsp %1"
+          : "=r"(rd), "=r"(dspreg)
+          : "r"(rs), "r"(rt)
+         );
+
+    dspreg = ((dspreg >> 24) & 0xFF);
+
+    if ((rd != result) || (dspreg != dspresult)) {
+        printf("2 cmpgdu.eq.ob error\n");
+        return -1;
+    }
+
+   return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_eq_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_eq_qb.c
new file mode 100644
index 0000000..c63f648
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_eq_qb.c
@@ -0,0 +1,41 @@
+#include"io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long dsp;
+    long long result;
+
+    rs         = 0x11777066;
+    rt         = 0x55AA70FF;
+    result     = 0x02;
+    __asm
+        ("cmpgdu.eq.qb %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 24) & 0x0F;
+    if ((rd != result) || (dsp != result)) {
+        printf("cmpgdu.eq.qb error\n");
+        return -1;
+    }
+
+    rs     = 0x11777066;
+    rt     = 0x11777066;
+    result = 0x0F;
+    __asm
+        ("cmpgdu.eq.qb %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 24) & 0x0F;
+
+    if ((rd != result) || (dsp != result)) {
+        printf("cmpgdu.eq.qb error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_le_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_le_ob.c
new file mode 100644
index 0000000..b3da098
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_le_ob.c
@@ -0,0 +1,44 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, result, dspreg, dspresult;
+
+    rs = 0x123456789abcdef0;
+    rt = 0x123456789abcdeff;
+    dspresult = 0xff;
+    result = 0xff;
+
+    __asm("cmpgdu.le.ob %0, %2, %3\n\t"
+          "rddsp %1"
+          : "=r"(rd), "=r"(dspreg)
+          : "r"(rs), "r"(rt)
+         );
+
+    dspreg = ((dspreg >> 24) & 0xff);
+
+    if ((rd != result) || (dspreg != dspresult)) {
+        printf("cmpgdu.le.ob error\n");
+        return -1;
+    }
+
+    rs = 0x113556789ABCDEF0;
+    rt = 0x123456789ABCDEFF;
+    result = 0xBE;
+    dspresult = 0xFE;
+
+    __asm("cmpgdu.eq.ob %0, %2, %3\n\t"
+          "rddsp %1"
+          : "=r"(rd), "=r"(dspreg)
+          : "r"(rs), "r"(rt)
+         );
+
+    dspreg = ((dspreg >> 24) & 0xFF);
+
+    if ((rd != result) || (dspreg != dspresult)) {
+        printf("cmpgdu.eq.ob error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_le_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_le_qb.c
new file mode 100644
index 0000000..f0a60ea
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_le_qb.c
@@ -0,0 +1,48 @@
+#include"io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long dsp;
+    long long result;
+
+    rs         = 0x11777066;
+    rt         = 0x55AA70FF;
+    result     = 0x0F;
+    __asm
+        ("cmpgdu.le.qb %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 24) & 0x0F;
+    if (rd  != result) {
+        printf("cmpgdu.le.qb error\n");
+        return -1;
+    }
+    if (dsp != result) {
+        printf("cmpgdu.le.qb error\n");
+        return -1;
+    }
+
+    rs     = 0x11777066;
+    rt     = 0x11707066;
+    result = 0x0B;
+    __asm
+        ("cmpgdu.le.qb %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 24) & 0x0F;
+    if (rd  != result) {
+        printf("cmpgdu.le.qb error\n");
+        return -1;
+    }
+    if (dsp != result) {
+        printf("cmpgdu.le.qb error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_lt_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_lt_ob.c
new file mode 100644
index 0000000..d80b4e6
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_lt_ob.c
@@ -0,0 +1,44 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, result, dspreg, dspresult;
+
+    rs = 0x123456789ABCDEF0;
+    rt = 0x123456789ABCDEFF;
+    dspresult = 0x01;
+    result = 0x01;
+
+    __asm("cmpgdu.lt.ob %0, %2, %3\n\t"
+          "rddsp %1"
+          : "=r"(rd), "=r"(dspreg)
+          : "r"(rs), "r"(rt)
+         );
+
+    dspreg = ((dspreg >> 24) & 0xFF);
+
+    if ((rd != result) || (dspreg != dspresult)) {
+        printf("cmpgdu.lt.ob error\n");
+        return -1;
+    }
+
+    rs = 0x143356789ABCDEF0;
+    rt = 0x123456789ABCDEFF;
+    dspresult = 0x41;
+    result = 0x41;
+
+    __asm("cmpgdu.lt.ob %0, %2, %3\n\t"
+          "rddsp %1"
+          : "=r"(rd), "=r"(dspreg)
+          : "r"(rs), "r"(rt)
+         );
+
+    dspreg = ((dspreg >> 24) & 0xFF);
+
+    if ((rd != result) || (dspreg != dspresult)) {
+        printf("cmpgdu.lt.ob error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_lt_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_lt_qb.c
new file mode 100644
index 0000000..a71e4e3
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_lt_qb.c
@@ -0,0 +1,48 @@
+#include"io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long dsp;
+    long long result;
+
+    rs         = 0x11777066;
+    rt         = 0x55AA70FF;
+    result     = 0x0D;
+    __asm
+        ("cmpgdu.lt.qb %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 24) & 0x0F;
+    if (rd  != result) {
+        printf("cmpgdu.lt.qb error\n");
+        return -1;
+    }
+    if (dsp != result) {
+        printf("cmpgdu.lt.qb error\n");
+        return -1;
+    }
+
+    rs     = 0x11777066;
+    rt     = 0x11777066;
+    result = 0x00;
+    __asm
+        ("cmpgdu.lt.qb %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 24) & 0x0F;
+    if (rd  != result) {
+        printf("cmpgdu.lt.qb error\n");
+        return -1;
+    }
+    if (dsp != result) {
+        printf("cmpgdu.lt.qb error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dbalign.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dbalign.c
new file mode 100644
index 0000000..c7431b1
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dbalign.c
@@ -0,0 +1,39 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rt, rs;
+    long long res;
+
+    rt = 0x1234567887654321;
+    rs = 0xabcd1234abcd1234;
+
+    res = 0x34567887654321ab;
+
+    asm ("dbalign %0, %1, 0x1\n"
+         : "=r"(rt)
+         : "r"(rs)
+        );
+
+    if (rt != res) {
+        printf("dbalign error\n");
+        return -1;
+    }
+
+    rt = 0x1234567887654321;
+    rs = 0xabcd1234abcd1234;
+
+    res = 0x7887654321abcd12;
+
+    asm ("dbalign %0, %1, 0x3\n"
+         : "=r"(rt)
+         : "r"(rs)
+        );
+
+    if (rt != res) {
+        printf("dbalign error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpa_w_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpa_w_ph.c
new file mode 100644
index 0000000..39dc99a
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpa_w_ph.c
@@ -0,0 +1,47 @@
+#include"io.h"
+
+int main(void)
+{
+    long long rs, rt;
+    long long ach = 5, acl = 5;
+    long long resulth, resultl;
+
+    rs = 0x00FF00FF;
+    rt = 0x00010002;
+    resulth = 0x05;
+    resultl = 0x0302;
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpa.w.ph $ac1, %2, %3\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         : "+r"(ach), "+r"(acl)
+         : "r"(rs), "r"(rt)
+        );
+    if ((ach != resulth) || (acl != resultl)) {
+        printf("1 dpa.w.ph error\n");
+        return -1;
+    }
+
+    ach = 6, acl = 7;
+    rs = 0xFFFF00FF;
+    rt = 0xFFFF0002;
+    resulth = 0x05;
+    resultl = 0xfffffffffffe0206;
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpa.w.ph $ac1, %2, %3\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         : "+r"(ach), "+r"(acl)
+         : "r"(rs), "r"(rt)
+        );
+    if ((ach != resulth) || (acl != resultl)) {
+        printf("2 dpa.w.ph error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpa_w_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpa_w_qh.c
new file mode 100644
index 0000000..1411e44
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpa_w_qh.c
@@ -0,0 +1,56 @@
+#include"io.h"
+int main(void)
+{
+    long long rt, rs;
+    long long achi, acli;
+    long long acho, aclo;
+    long long resh, resl;
+
+    achi = 0x1;
+    acli = 0x1;
+
+    rs = 0x0001000100010001;
+    rt = 0x0002000200020002;
+
+    resh = 0x1;
+    resl = 0x9;
+
+    asm("mthi %2, $ac1\t\n"
+        "mtlo %3, $ac1\t\n"
+        "dpa.w.qh $ac1, %4, %5\t\n"
+        "mfhi %0, $ac1\t\n"
+        "mflo %1, $ac1\t\n"
+        : "=r"(acho), "=r"(aclo)
+        : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+       );
+
+    if ((acho != resh) || (aclo != resl)) {
+        printf("1 dpa.w.qh error\n");
+        return -1;
+    }
+
+
+    achi = 0xffffffff;
+    acli = 0xaaaaaaaa;
+
+    rs = 0xaaaabbbbccccdddd;
+    rt = 0x7777888899996666;
+
+    resh = 0xffffffffffffffff;
+    resl = 0x320cdf02;
+
+    asm("mthi %2, $ac1\t\n"
+        "mtlo %3, $ac1\t\n"
+        "dpa.w.qh $ac1, %4, %5\t\n"
+        "mfhi %0, $ac1\t\n"
+        "mflo %1, $ac1\t\n"
+        : "=r"(acho), "=r"(aclo)
+        : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+       );
+    if ((acho != resh) || (aclo != resl)) {
+        printf("2 dpa.w.qh error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpaqx_s_w_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpaqx_s_w_ph.c
new file mode 100644
index 0000000..51252fb
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpaqx_s_w_ph.c
@@ -0,0 +1,97 @@
+#include"io.h"
+
+int main(void)
+{
+    long long rs, rt, dsp;
+    long long ach = 5, acl = 5;
+    long long resulth, resultl, resultdsp;
+
+    rs     = 0x800000FF;
+    rt     = 0x00018000;
+    resulth = 0x05;
+    resultl = 0xFFFFFFFF80000202;
+    resultdsp = 0x01;
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpaqx_s.w.ph $ac1, %3, %4\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "+r"(ach), "+r"(acl), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 17) & 0x01;
+    if (dsp != resultdsp) {
+        printf("dpaqx_s.w.ph error\n");
+        return -1;
+    }
+    if (ach != resulth) {
+        printf("dpaqx_s.w.ph error\n");
+        return -1;
+    }
+    if (acl != resultl) {
+        printf("dpaqx_s.w.ph error\n");
+        return -1;
+    }
+
+    ach    = 5;
+    acl    = 5;
+    rs     = 0x00FF00FF;
+    rt     = 0x00010002;
+    resulth = 0x05;
+    resultl = 0x05FF;
+    /***********************************************************
+     * Because of we set outflag at last time, although this
+     * time we set nothing, but it is stay the last time value.
+     **********************************************************/
+    resultdsp = 0x01;
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpaqx_s.w.ph $ac1, %3, %4\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "+r"(ach), "+r"(acl), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 17) & 0x01;
+    if (dsp != resultdsp) {
+        printf("dpaqx_s.w.ph error\n");
+        return -1;
+    }
+    if (ach != resulth) {
+        printf("dpaqx_s.w.ph error\n");
+        return -1;
+    }
+    if (acl != resultl) {
+        printf("dpaqx_s.w.ph error\n");
+        return -1;
+    }
+
+    ach    = 5;
+    acl    = 5;
+    rs     = 0x800000FF;
+    rt     = 0x00028000;
+    resulth = 0x05;
+    resultl = 0xffffffff80000400;
+    resultdsp = 0x01;
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpaqx_s.w.ph $ac1, %3, %4\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "+r"(ach), "+r"(acl), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 17) & 0x01;
+    if ((dsp != resultdsp) || (ach != resulth) || (acl != resultl)) {
+        printf("dpaqx_s.w.ph error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpaqx_sa_w_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpaqx_sa_w_ph.c
new file mode 100644
index 0000000..18d6b3a
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpaqx_sa_w_ph.c
@@ -0,0 +1,54 @@
+#include "io.h"
+
+int main()
+{
+    long long rs, rt, dsp;
+    long long ach = 5, acl = 5;
+    long long resulth, resultl, resultdsp;
+
+    rs     = 0x00FF00FF;
+    rt     = 0x00010002;
+    resulth = 0x00;
+    resultl = 0x7FFFFFFF;
+    resultdsp = 0x01;
+    __asm
+        ("wrdsp %2\n\t"
+         "mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpaqx_sa.w.ph $ac1, %3, %4\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "+r"(ach), "+r"(acl), "+r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    if ((dsp >> (16 + 1) != resultdsp) || (ach != resulth) ||
+        (acl != resultl)) {
+        printf("dpaqx_sa.w.ph errror\n");
+    }
+
+    ach = 9;
+    acl = 0xb;
+    rs     = 0x800000FF;
+    rt     = 0x00018000;
+    resulth = 0x00;
+    resultl = 0x7fffffff;
+    resultdsp = 0x01;
+    __asm
+        ("wrdsp %2\n\t"
+         "mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpaqx_sa.w.ph $ac1, %3, %4\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "+r"(ach), "+r"(acl), "+r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    if ((dsp >> (16 + 1) != resultdsp) || (ach != resulth) ||
+        (acl != resultl)) {
+        printf("dpaqx_sa.w.ph errror\n");
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpax_w_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpax_w_ph.c
new file mode 100644
index 0000000..9d595fc
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpax_w_ph.c
@@ -0,0 +1,32 @@
+#include"io.h"
+
+int main(void)
+{
+    long rs, rt;
+    long ach = 5, acl = 5;
+    long resulth, resultl;
+
+    rs     = 0x00FF00FF;
+    rt     = 0x00010002;
+    resulth = 0x05;
+    resultl = 0x0302;
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpax.w.ph $ac1, %2, %3\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         : "+r"(ach), "+r"(acl)
+         : "r"(rs), "r"(rt)
+        );
+    if (ach != resulth) {
+        printf("dpax.w.ph error\n");
+        return -1;
+    }
+    if (acl != resultl) {
+        printf("dpax.w.ph error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dps_w_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dps_w_ph.c
new file mode 100644
index 0000000..99f292e
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dps_w_ph.c
@@ -0,0 +1,28 @@
+#include"io.h"
+
+int main(void)
+{
+    long long rs, rt;
+    long long ach = 5, acl = 5;
+    long long resulth, resultl;
+
+    rs     = 0x00FF00FF;
+    rt     = 0x00010002;
+    resulth = 0x04;
+    resultl = 0xFFFFFFFFFFFFFFD08;
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dps.w.ph $ac1, %2, %3\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         : "+r"(ach), "+r"(acl)
+         : "r"(rs), "r"(rt)
+        );
+    if (ach != resulth || acl != resultl) {
+        printf("dps.w.ph error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dps_w_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dps_w_qh.c
new file mode 100644
index 0000000..61277eb
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dps_w_qh.c
@@ -0,0 +1,55 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rs, rt;
+    long long achi, acli;
+    long long acho, aclo;
+    long long resh, resl;
+
+    rs = 0x0000000100000001;
+    rt = 0x0000000200000002;
+    achi = 0x1;
+    acli = 0x8;
+
+    resh = 0x1;
+    resl = 0x4;
+
+    asm ("mthi %2, $ac1\t\n"
+         "mtlo %3, $ac1\t\n"
+         "dps.w.qh $ac1, %4, %5\t\n"
+         "mfhi %0, $ac1\t\n"
+         "mflo %1, $ac1\t\n"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+
+    if ((acho != resh) || (aclo != resl)) {
+        printf("1 dps.w.qh error\n");
+        return -1;
+    }
+
+    rs = 0xaaaabbbbccccdddd;
+    rt = 0xaaaabbbbccccdddd;
+
+    achi = 0x88888888;
+    achi = 0x55555555;
+
+    resh = 0xfffffffff7777777;
+    resl = 0x0a38b181;
+
+    asm ("mthi %2, $ac1\t\n"
+         "mtlo %3, $ac1\t\n"
+         "dps.w.qh $ac1, %4, %5\t\n"
+         "mfhi %0, $ac1\t\n"
+         "mflo %1, $ac1\t\n"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+
+    if ((acho != resh) || (aclo != resl)) {
+        printf("1 dps.w.qh error\n");
+        return -1;
+    }
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpsqx_s_w_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpsqx_s_w_ph.c
new file mode 100644
index 0000000..ba46a92
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpsqx_s_w_ph.c
@@ -0,0 +1,55 @@
+#include"io.h"
+
+int main(void)
+{
+    long long rs, rt, dsp;
+    long long ach = 5, acl = 5;
+    long long resulth, resultl, resultdsp;
+
+    rs = 0xBC0123AD;
+    rt = 0x01643721;
+    resulth = 0x04;
+    resultl = 0xFFFFFFFFAEA3E09B;
+    resultdsp = 0x00;
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpsqx_s.w.ph $ac1, %3, %4\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "+r"(ach), "+r"(acl), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 17) & 0x01;
+    if (dsp != resultdsp || ach != resulth || acl != resultl) {
+        printf("dpsqx_s.w.ph error\n");
+        return -1;
+    }
+
+    ach = 0x99f13005;
+    acl = 0x51730062;
+    rs = 0x80008000;
+    rt = 0x80008000;
+
+    resulth = 0xffffffff99f13004;
+    resultl = 0x51730064;
+    resultdsp = 0x01;
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpsqx_s.w.ph $ac1, %3, %4\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "+r"(ach), "+r"(acl), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 17) & 0x01;
+    if (dsp != resultdsp || ach != resulth || acl != resultl) {
+        printf("dpsqx_s.w.ph error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpsqx_sa_w_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpsqx_sa_w_ph.c
new file mode 100644
index 0000000..24c8881
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpsqx_sa_w_ph.c
@@ -0,0 +1,53 @@
+#include"io.h"
+int main()
+{
+    long long rs, rt, dsp;
+    long long ach = 5, acl = 5;
+    long long resulth, resultl, resultdsp;
+
+    rs = 0xBC0123AD;
+    rt = 0x01643721;
+    resulth = 0x00;
+    resultl = 0x7FFFFFFF;
+    resultdsp = 0x01;
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpsqx_sa.w.ph $ac1, %3, %4\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "+r"(ach), "+r"(acl), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 17) & 0x01;
+    if (dsp != resultdsp || ach != resulth || acl != resultl) {
+        printf("dpsqx_sa.w.ph error\n");
+        return -1;
+    }
+
+    ach = 0x8c0b354A;
+    acl = 0xbbc02249;
+    rs      = 0x800023AD;
+    rt      = 0x01648000;
+    resulth = 0xffffffffffffffff;
+    resultl = 0xffffffff80000000;
+    resultdsp = 0x01;
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpsqx_sa.w.ph $ac1, %3, %4\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "+r"(ach), "+r"(acl), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 17) & 0x01;
+    if (dsp != resultdsp || ach != resulth || acl != resultl) {
+        printf("dpsqx_sa.w.ph error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpsx_w_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpsx_w_ph.c
new file mode 100644
index 0000000..b6291b5
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpsx_w_ph.c
@@ -0,0 +1,28 @@
+#include"io.h"
+
+int main(void)
+{
+    long long rs, rt;
+    long long ach = 5, acl = 5;
+    long long resulth, resultl;
+
+    rs      = 0xBC0123AD;
+    rt      = 0x01643721;
+    resulth = 0x04;
+    resultl = 0xFFFFFFFFD751F050;
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpsx.w.ph $ac1, %2, %3\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         : "+r"(ach), "+r"(acl)
+         : "r"(rs), "r"(rt)
+        );
+    if (ach != resulth || acl != resultl) {
+        printf("dpsx.w.ph error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mul_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mul_ph.c
new file mode 100644
index 0000000..5a3d05c
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mul_ph.c
@@ -0,0 +1,50 @@
+#include"io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, dsp;
+    long long result, resultdsp;
+
+    rs = 0x03FB1234;
+    rt = 0x0BCC4321;
+    result = 0xFFFFFFFFF504F4B4;
+    resultdsp = 1;
+
+    __asm
+        ("mul.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 21) & 0x01;
+    if (rd  != result || dsp != resultdsp) {
+        printf("mul.ph wrong\n");
+        return -1;
+    }
+
+    dsp = 0;
+    __asm
+        ("wrdsp %0\n\t"
+         :
+         : "r"(dsp)
+        );
+
+    rs = 0x00210010;
+    rt = 0x00110005;
+    result = 0x2310050;
+    resultdsp = 0;
+
+    __asm
+        ("mul.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 21) & 0x01;
+    if (rd  != result || dsp != resultdsp) {
+        printf("mul.ph wrong\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mul_s_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mul_s_ph.c
new file mode 100644
index 0000000..7c8b2c7
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mul_s_ph.c
@@ -0,0 +1,67 @@
+#include"io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, dsp;
+    long long result, resultdsp;
+
+    rs = 0x03FB1234;
+    rt = 0x0BCC4321;
+    result = 0x7fff7FFF;
+    resultdsp = 1;
+
+    __asm
+        ("mul_s.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 21) & 0x01;
+    if (rd != result || dsp != resultdsp) {
+        printf("1 mul_s.ph error\n");
+        return -1;
+    }
+
+    rs = 0x7fffff00;
+    rt = 0xff007fff;
+    result = 0xffffffff80008000;
+    resultdsp = 1;
+
+    __asm
+        ("mul_s.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 21) & 0x01;
+    if (rd != result || dsp != resultdsp) {
+        printf("2 mul_s.ph error\n");
+        return -1;
+    }
+
+    dsp = 0;
+    __asm
+        ("wrdsp %0\n\t"
+         :
+         : "r"(dsp)
+        );
+
+    rs = 0x00320001;
+    rt = 0x00210002;
+    result = 0x06720002;
+    resultdsp = 0;
+
+    __asm
+        ("mul_s.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 21) & 0x01;
+    if (rd != result || dsp != resultdsp) {
+        printf("3 mul_s.ph error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mulq_rs_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mulq_rs_w.c
new file mode 100644
index 0000000..ffdc66d
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mulq_rs_w.c
@@ -0,0 +1,40 @@
+#include"io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, dsp;
+    long long result, resultdsp;
+
+    rs = 0x80001234;
+    rt = 0x80004321;
+    result = 0xFFFFFFFF80005555;
+
+    __asm
+        ("mulq_rs.w %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    if (rd != result) {
+        printf("mulq_rs.w error!\n");
+        return -1;
+    }
+
+    rs = 0x80000000;
+    rt = 0x80000000;
+    result = 0x7FFFFFFF;
+    resultdsp = 1;
+
+    __asm
+        ("mulq_rs.w %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 21) & 0x01;
+    if (rd != result || dsp != resultdsp) {
+        printf("mulq_rs.w error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mulq_s_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mulq_s_ph.c
new file mode 100644
index 0000000..b8c20c6
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mulq_s_ph.c
@@ -0,0 +1,26 @@
+#include"io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, dsp;
+    long long result, resultdsp;
+
+    rs = 0x80001234;
+    rt = 0x80004321;
+    result = 0x7FFF098B;
+    resultdsp = 1;
+
+    __asm
+        ("mulq_s.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 21) & 0x01;
+    if (rd  != result || dsp != resultdsp) {
+        printf("mulq_s.ph error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mulq_s_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mulq_s_w.c
new file mode 100644
index 0000000..db74b71
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mulq_s_w.c
@@ -0,0 +1,40 @@
+#include"io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, dsp;
+    long long result, resultdsp;
+
+    rs = 0x80001234;
+    rt = 0x80004321;
+    result = 0xFFFFFFFF80005555;
+
+    __asm
+        ("mulq_s.w %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    if (rd != result) {
+        printf("mulq_s.w error\n");
+        return -1;
+    }
+
+    rs = 0x80000000;
+    rt = 0x80000000;
+    result = 0x7FFFFFFF;
+    resultdsp = 1;
+
+    __asm
+        ("mulq_s.w %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 21) & 0x01;
+    if (rd != result || dsp != resultdsp) {
+        printf("mulq_s.w error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mulsa_w_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mulsa_w_ph.c
new file mode 100644
index 0000000..5b22a60
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mulsa_w_ph.c
@@ -0,0 +1,30 @@
+#include"io.h"
+
+int main(void)
+{
+    long long rs, rt, ach, acl;
+    long long resulth, resultl;
+
+    ach = 0x05;
+    acl = 0x00BBDDCC;
+    rs = 0x80001234;
+    rt = 0x80004321;
+    resulth = 0x05;
+    resultl = 0x3BF5E918;
+
+    __asm
+        ("mthi %0, $ac1\n\t"
+         "mtlo %1, $ac1\n\t"
+         "mulsa.w.ph $ac1, %2, %3\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "+r"(ach), "+r"(acl)
+         : "r"(rs), "r"(rt)
+        );
+    if (ach != resulth || acl != resultl) {
+        printf("mulsa.w.ph error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mulsaq_s_w_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mulsaq_s_w_ph.c
new file mode 100644
index 0000000..835a73d
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mulsaq_s_w_ph.c
@@ -0,0 +1,30 @@
+#include"io.h"
+
+int main(void)
+{
+    long long rs, rt, ach, acl;
+    long long resulth, resultl;
+
+    ach = 0x05;
+    acl = 0x00BBDDCC;
+    rs = 0x80001234;
+    rt = 0x80004321;
+    resulth = 0x05;
+    resultl = 0x772ff463;
+
+    __asm
+        ("mthi %0, $ac1\n\t"
+         "mtlo %1, $ac1\n\t"
+         "mulsaq_s.w.ph $ac1, %2, %3\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "+r"(ach), "+r"(acl)
+         : "r"(rs), "r"(rt)
+        );
+    if (ach != resulth || acl != resultl) {
+        printf("mulsaq_s.w.ph error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_precr_qb_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_precr_qb_ph.c
new file mode 100644
index 0000000..80d5e8d
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_precr_qb_ph.c
@@ -0,0 +1,23 @@
+#include"io.h"
+
+int main()
+{
+    long long rd, rs, rt;
+    long long result;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result = 0x34786521;
+
+    __asm
+        ("precr.qb.ph %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    if (result != rd) {
+        printf("precr.qb.ph error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_precr_sra_ph_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_precr_sra_ph_w.c
new file mode 100644
index 0000000..b1d7bcd
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_precr_sra_ph_w.c
@@ -0,0 +1,37 @@
+#include"io.h"
+
+int main(void)
+{
+    long long rs, rt;
+    long long result;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result = 0x43215678;
+
+    __asm
+        ("precr_sra.ph.w %0, %1, 0x00\n\t"
+         : "+r"(rt)
+         : "r"(rs)
+        );
+    if (result != rt) {
+        printf("precr_sra.ph.w error\n");
+        return -1;
+    }
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result = 0xFFFFFFFFFFFF0000;
+
+    __asm
+        ("precr_sra.ph.w %0, %1, 0x1F\n\t"
+         : "+r"(rt)
+         : "r"(rs)
+        );
+    if (result != rt) {
+        printf("precr_sra.ph.w error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_precr_sra_r_ph_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_precr_sra_r_ph_w.c
new file mode 100644
index 0000000..62d220d
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_precr_sra_r_ph_w.c
@@ -0,0 +1,37 @@
+#include"io.h"
+
+int main(void)
+{
+    long long rs, rt;
+    long long result;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result = 0x43215678;
+
+    __asm
+        ("precr_sra_r.ph.w %0, %1, 0x00\n\t"
+         : "+r"(rt)
+         : "r"(rs)
+        );
+    if (result != rt) {
+        printf("precr_sra_r.ph.w error\n");
+        return -1;
+    }
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result = 0xFFFFFFFFFFFF0000;
+
+    __asm
+        ("precr_sra_r.ph.w %0, %1, 0x1F\n\t"
+         : "+r"(rt)
+         : "r"(rs)
+        );
+    if (result != rt) {
+        printf("precr_sra_r.ph.w error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_prepend.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_prepend.c
new file mode 100644
index 0000000..4ab083e
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_prepend.c
@@ -0,0 +1,35 @@
+#include"io.h"
+
+int main(void)
+{
+    long long rs, rt;
+    long long result;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result = 0xFFFFFFFF87654321;
+    __asm
+        ("prepend %0, %1, 0x00\n\t"
+         : "+r"(rt)
+         : "r"(rs)
+        );
+    if (rt != result) {
+        printf("prepend error\n");
+        return -1;
+    }
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result = 0xFFFFFFFFACF10ECA;
+    __asm
+        ("prepend %0, %1, 0x0F\n\t"
+         : "+r"(rt)
+         : "r"(rs)
+        );
+    if (rt != result) {
+        printf("prepend error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_printf.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_printf.c
new file mode 100644
index 0000000..cf8676d
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_printf.c
@@ -0,0 +1,266 @@
+
+typedef unsigned long va_list;
+
+#define ACC    4
+#define __read(source)                    \
+({ va_list __res;                    \
+    __asm__ __volatile__(                \
+        "move\t%0, " #source "\n\t"        \
+        : "=r" (__res));            \
+    __res;                        \
+})
+
+enum format_type {
+    FORMAT_TYPE_NONE,
+    FORMAT_TYPE_HEX,
+    FORMAT_TYPE_ULONG,
+    FORMAT_TYPE_FLOAT
+};
+
+struct printf_spec {
+    char    type;
+};
+
+static int format_decode(char *fmt, struct printf_spec *spec)
+{
+    char *start = fmt;
+
+    for (; *fmt ; ++fmt) {
+        if (*fmt == '%') {
+            break;
+        }
+    }
+
+    switch (*++fmt) {
+    case 'x':
+        spec->type = FORMAT_TYPE_HEX;
+        break;
+
+    case 'd':
+        spec->type = FORMAT_TYPE_ULONG;
+        break;
+
+    case 'f':
+        spec->type = FORMAT_TYPE_FLOAT;
+        break;
+
+    default:
+        spec->type = FORMAT_TYPE_NONE;
+    }
+
+    return ++fmt - start;
+}
+
+void *memcpy(void *dest, void *src, int n)
+{
+    int i;
+    char *s = src;
+    char *d = dest;
+
+    for (i = 0; i < n; i++) {
+        d[i] = s[i];
+    }
+    return dest;
+}
+
+char *number(char *buf, va_list num)
+{
+    int i;
+    char *str = buf;
+    static char digits[16] = "0123456789abcdef";
+    str = str + sizeof(num) * 2;
+
+    for (i = 0; i < sizeof(num) * 2; i++) {
+        *--str = digits[num & 15];
+        num >>= 4;
+    }
+
+    return buf + sizeof(num) * 2;
+}
+
+char *__number(char *buf, va_list num)
+{
+    int i;
+    va_list mm = num;
+    char *str = buf;
+
+    if (!num) {
+        *str++ = '0';
+        return str;
+    }
+
+    for (i = 0; mm; mm = mm/10, i++) {
+        /* Do nothing. */
+    }
+
+    str = str + i;
+
+    while (num) {
+        *--str = num % 10 + 48;
+        num = num / 10;
+    }
+
+    return str + i;
+}
+
+va_list modf(va_list args, va_list *integer, va_list *num)
+{
+    int i;
+    double dot_v = 0;
+    va_list E, DOT, DOT_V;
+
+    if (!args) {
+        return 0;
+    }
+
+    for (i = 0, args = args << 1 >> 1; i < 52; i++) {
+        if ((args >> i) & 0x1) {
+            break;
+        }
+    }
+
+    *integer = 0;
+
+    if ((args >> 56 != 0x3f) || (args >> 52 == 0x3ff)) {
+        E = (args >> 52) - 1023;
+        DOT = 52 - E - i;
+        DOT_V = args << (12 + E) >> (12 + E) >> i;
+        *integer = ((args << 12 >> 12) >> (i + DOT)) | (1 << E);
+    } else {
+        E = ~((args >> 52) - 1023) + 1;
+        DOT_V = args << 12 >> 12;
+
+        dot_v += 1.0 / (1 << E);
+
+        for (i = 1; i <= 16; i++) {
+            if ((DOT_V >> (52 - i)) & 0x1) {
+                dot_v += 1.0 / (1 << E + i);
+            }
+        }
+
+        for (i = 1, E = 0; i <= ACC; i++) {
+            dot_v *= 10;
+            if (!(va_list)dot_v) {
+                E++;
+            }
+    }
+
+    *num = E;
+
+    return dot_v;
+    }
+
+    if (args & 0xf) {
+        for (i = 1; i <= 16; i++) {
+            if ((DOT_V >> (DOT - i)) & 0x1) {
+                dot_v += 1.0 / (1 << i);
+            }
+        }
+
+        for (i = 1, E = 0; i <= ACC; i++) {
+            dot_v *= 10;
+            if (!(va_list)dot_v) {
+                E++;
+            }
+        }
+
+        *num = E;
+
+        return dot_v;
+    } else if (DOT) {
+        for (i = 1; i <= DOT; i++) {
+            if ((DOT_V >> (DOT - i)) & 0x1) {
+                dot_v += 1.0 / (1 << i);
+            }
+        }
+
+        for (i = 1; i <= ACC; i++) {
+            dot_v = dot_v * 10;
+        }
+
+    return dot_v;
+    }
+
+    return 0;
+}
+
+int vsnprintf(char *buf, int size, char *fmt, va_list args)
+{
+    char *str, *mm;
+    struct printf_spec spec = {0};
+
+    str = mm = buf;
+
+    while (*fmt) {
+        char *old_fmt = fmt;
+        int read = format_decode(fmt, &spec);
+
+        fmt += read;
+
+        switch (spec.type) {
+        case FORMAT_TYPE_NONE: {
+            memcpy(str, old_fmt, read);
+            str += read;
+            break;
+        }
+        case FORMAT_TYPE_HEX: {
+            memcpy(str, old_fmt, read);
+            str = number(str + read, args);
+            for (; *mm ; ++mm) {
+                if (*mm == '%') {
+                    *mm = '0';
+                break;
+                }
+            }
+        break;
+        }
+        case FORMAT_TYPE_ULONG: {
+            memcpy(str, old_fmt, read - 2);
+            str = __number(str + read - 2, args);
+            break;
+        }
+        case FORMAT_TYPE_FLOAT: {
+            va_list integer, dot_v, num;
+            dot_v = modf(args, &integer, &num);
+            memcpy(str, old_fmt, read - 2);
+            str += read - 2;
+            if ((args >> 63 & 0x1)) {
+                *str++ = '-';
+            }
+            str = __number(str, integer);
+            if (dot_v) {
+                *str++ = '.';
+                while (num--) {
+                    *str++ = '0';
+                }
+                str = __number(str, dot_v);
+            }
+            break;
+        }
+        }
+    }
+    *str = '\0';
+
+    return str - buf;
+}
+
+static void serial_out(char *str)
+{
+    while (*str) {
+        *(char *)0xffffffffb80003f8 = *str++;
+    }
+}
+
+int vprintf(char *fmt, va_list args)
+{
+    int printed_len = 0;
+    static char printf_buf[512];
+    printed_len = vsnprintf(printf_buf, sizeof(printf_buf), fmt, args);
+    serial_out(printf_buf);
+    return printed_len;
+}
+
+int printf(char *fmt, ...)
+{
+    return vprintf(fmt, __read($5));
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shra_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shra_qb.c
new file mode 100644
index 0000000..cac3102
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shra_qb.c
@@ -0,0 +1,35 @@
+#include"io.h"
+
+int main(void)
+{
+    long long rd, rt;
+    long long result;
+
+    rt = 0x12345678;
+    result = 0x02060A0F;
+
+    __asm
+        ("shra.qb %0, %1, 0x03\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    if (rd != result) {
+        printf("shra.qb error\n");
+        return -1;
+    }
+
+    rt = 0x87654321;
+    result = 0xFFFFFFFFF00C0804;
+
+    __asm
+        ("shra.qb %0, %1, 0x03\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    if (rd != result) {
+        printf("shra.qb error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shra_r_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shra_r_qb.c
new file mode 100644
index 0000000..9c64f75
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shra_r_qb.c
@@ -0,0 +1,35 @@
+#include "io.h"
+
+int main()
+{
+    int rd, rt;
+    int result;
+
+    rt = 0x12345678;
+    result = 0x02070B0F;
+
+    __asm
+        ("shra_r.qb %0, %1, 0x03\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    if (rd != result) {
+        printf("shra_r.qb wrong\n");
+        return -1;
+    }
+
+    rt = 0x87654321;
+    result = 0xF10D0804;
+
+    __asm
+        ("shra_r.qb %0, %1, 0x03\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    if (rd != result) {
+        printf("shra_r.qb wrong\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrav_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrav_ob.c
new file mode 100644
index 0000000..fbdfbab
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrav_ob.c
@@ -0,0 +1,22 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, rs;
+    long long res;
+
+    rt = 0x1234567887654321;
+    rs = 0x4;
+    res = 0xf1f3f5f7f8060402;
+
+    asm ("shrav.ob %0, %1, %2"
+        : "=r"(rd)
+        : "r"(rt), "r"(rs)
+        );
+
+    if (rd != res) {
+        printf("shra.ob error\n");
+        return -1;
+    }
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrav_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrav_qb.c
new file mode 100644
index 0000000..a716203
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrav_qb.c
@@ -0,0 +1,37 @@
+#include"io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long result;
+
+    rs = 0x03;
+    rt = 0x12345678;
+    result = 0x02060A0F;
+
+    __asm
+        ("shrav.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rt), "r"(rs)
+        );
+    if (rd != result) {
+        printf("shrav.qb error\n");
+        return -1;
+    }
+
+    rs = 0x03;
+    rt = 0x87654321;
+    result = 0xFFFFFFFFF00C0804;
+
+    __asm
+        ("shrav.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rt), "r"(rs)
+        );
+    if (rd != result) {
+        printf("shrav.qb error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrav_r_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrav_r_ob.c
new file mode 100644
index 0000000..b80100a
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrav_r_ob.c
@@ -0,0 +1,22 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rt, rs;
+    long long res;
+
+    rt = 0x1234567887654321;
+    rs = 0x4;
+    res = 0xe3e7ebf0f1ede9e5;
+
+    asm ("shrav_r.ob %0, %1, %2"
+        : "=r"(rd)
+        : "r"(rt), "r"(rs)
+        );
+
+    if (rd != res) {
+        printf("shra_r.ob error\n");
+        return -1;
+    }
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrav_r_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrav_r_qb.c
new file mode 100644
index 0000000..009080b
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrav_r_qb.c
@@ -0,0 +1,37 @@
+#include"io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long result;
+
+    rs = 0x03;
+    rt = 0x12345678;
+    result = 0x02070B0F;
+
+    __asm
+        ("shrav_r.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rt), "r"(rs)
+        );
+    if (rd != result) {
+        printf("shrav_r.qb error\n");
+        return -1;
+    }
+
+    rs = 0x03;
+    rt = 0x87654321;
+    result = 0xFFFFFFFFF10D0804;
+
+    __asm
+        ("shrav_r.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rt), "r"(rs)
+        );
+    if (rd != result) {
+        printf("shrav_r.qb error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrl_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrl_ph.c
new file mode 100644
index 0000000..e32d976
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrl_ph.c
@@ -0,0 +1,22 @@
+#include"io.h"
+
+int main(void)
+{
+    long long rd, rt;
+    long long result;
+
+    rt     = 0x12345678;
+    result = 0x009102B3;
+
+    __asm
+        ("shrl.ph %0, %1, 0x05\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    if (rd != result) {
+        printf("shrl.ph error!\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrlv_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrlv_ph.c
new file mode 100644
index 0000000..58c5488
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrlv_ph.c
@@ -0,0 +1,23 @@
+#include"io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long result;
+
+    rs     = 0x05;
+    rt     = 0x12345678;
+    result = 0x009102B3;
+
+    __asm
+        ("shrlv.ph %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rt), "r"(rs)
+        );
+    if (rd != result) {
+        printf("shrlv.ph error!\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subqh_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subqh_ph.c
new file mode 100644
index 0000000..9037401
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subqh_ph.c
@@ -0,0 +1,23 @@
+#include"io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long result;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result = 0x456709AB;
+
+    __asm
+        ("subqh.ph %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    if (rd != result) {
+        printf("subqh.ph error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subqh_r_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subqh_r_ph.c
new file mode 100644
index 0000000..b8f9d2f
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subqh_r_ph.c
@@ -0,0 +1,23 @@
+#include"io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long result;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result = 0x456809AC;
+
+    __asm
+        ("subqh_r.ph %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    if (rd != result) {
+        printf("subqh_r.ph error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subqh_r_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subqh_r_w.c
new file mode 100644
index 0000000..b025e40
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subqh_r_w.c
@@ -0,0 +1,23 @@
+#include"io.h"
+
+int main()
+{
+    long long rd, rs, rt;
+    long long result;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result = 0x456789AC;
+
+    __asm
+        ("subqh_r.w %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    if (rd != result) {
+        printf("subqh_r.w error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subqh_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subqh_w.c
new file mode 100644
index 0000000..65f1760
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subqh_w.c
@@ -0,0 +1,23 @@
+#include"io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long result;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result = 0x456789AB;
+
+    __asm
+        ("subqh.w %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    if (rd != result) {
+        printf("subqh.w error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subu_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subu_ph.c
new file mode 100644
index 0000000..60a6b1b
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subu_ph.c
@@ -0,0 +1,26 @@
+#include"io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, dsp;
+    long long result, resultdsp;
+
+    rs = 0x87654321;
+    rt = 0x12345678;
+    result    = 0x7531ECA9;
+    resultdsp = 0x01;
+
+    __asm
+        ("subu.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 20) & 0x01;
+    if (dsp != resultdsp || rd  != result) {
+        printf("subu.ph error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subu_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subu_qh.c
new file mode 100644
index 0000000..911cb34
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subu_qh.c
@@ -0,0 +1,24 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, dspreg, result, dspresult;
+    rs = 0x123456789ABCDEF0;
+    rt = 0x123456789ABCDEF1;
+    result = 0x000000000000000F;
+    dspresult = 0x01;
+
+    __asm("subu.qh %0, %2, %3\n\t"
+          "rddsp %1\n\t"
+          : "=r"(rd), "=r"(dspreg)
+          : "r"(rs), "r"(rt)
+         );
+
+    dspreg = ((dspreg >> 20) & 0x01);
+    if ((rd != result) || (dspreg != dspresult)) {
+        printf("subu.qh error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subu_s_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subu_s_ph.c
new file mode 100644
index 0000000..ae32cc0
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subu_s_ph.c
@@ -0,0 +1,25 @@
+#include"io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, dsp;
+    long long result, resultdsp;
+
+    rs = 0x87654321;
+    rt = 0x12345678;
+    result    = 0x75310000;
+    resultdsp = 0x01;
+
+    __asm
+        ("subu_s.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 20) & 0x01;
+    if (dsp != resultdsp || rd  != result) {
+        printf("subu_s.ph error\n");
+        return -1;
+    }
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subu_s_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subu_s_qh.c
new file mode 100644
index 0000000..de7a29e
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subu_s_qh.c
@@ -0,0 +1,42 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, dspreg, result, dspresult;
+    rs = 0x1111111111111111;
+    rt = 0x2222222222222222;
+    result = 0x1111111111111111;
+    dspresult = 0x00;
+
+    __asm("subu_s.qh %0, %2, %3\n\t"
+          "rddsp %1\n\t"
+          : "=r"(rd), "=r"(dspreg)
+          : "r"(rs), "r"(rt)
+         );
+
+    dspreg = ((dspreg >> 20) & 0x01);
+    if ((rd != result) || (dspreg != dspresult)) {
+        printf("subu_s.qh error\n\t");
+        return -1;
+    }
+
+
+    rs = 0x8888888888888888;
+    rt = 0xa888a888a888a888;
+    result = 0x0000000000000000;
+    dspresult = 0x01;
+
+    __asm("subu_s.qh %0, %2, %3\n\t"
+          "rddsp %1\n\t"
+          : "=r"(rd), "=r"(dspreg)
+          : "r"(rs), "r"(rt)
+         );
+
+    dspreg = ((dspreg >> 20) & 0x01);
+    if ((rd != result) || (dspreg != dspresult)) {
+        printf("subu_s.qh error\n\t");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subuh_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subuh_ob.c
new file mode 100644
index 0000000..3fc452b
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subuh_ob.c
@@ -0,0 +1,36 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, result;
+
+    rd = 0x0;
+    rs = 0x246856789ABCDEF0;
+    rt = 0x123456789ABCDEF0;
+    result = 0x091A000000000000;
+
+    __asm("subuh.ob %0, %1, %2\n\t"
+          : "=r"(rd)
+          : "r"(rs), "r"(rt)
+         );
+
+    if (rd != result) {
+        printf("subuh.ob error\n");
+        return -1;
+    }
+
+    rs = 0x246856789ABCDEF0;
+    rt = 0x1131517191B1D1F1;
+    result = 0x1b4f2d2d51637577;
+
+    __asm("subuh.ob %0, %1, %2\n\t"
+          : "=r"(rd)
+          : "r"(rs), "r"(rt)
+         );
+
+    if (rd != result) {
+        printf("subuh.ob error\n");
+        return -1;
+    }
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subuh_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subuh_qb.c
new file mode 100644
index 0000000..aac7a83
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subuh_qb.c
@@ -0,0 +1,23 @@
+#include"io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long result;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result = 0xC5E7092B;
+
+    __asm
+        ("subuh.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    if (rd != result) {
+        printf("subuh.qb wrong\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subuh_r_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subuh_r_ob.c
new file mode 100644
index 0000000..fc20ffd
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subuh_r_ob.c
@@ -0,0 +1,23 @@
+#include "io.h"
+
+int main(void)
+{
+    long long rd, rs, rt, result;
+
+    rd = 0x0;
+    rs = 0x246956789ABCDEF0;
+    rt = 0x123456789ABCDEF0;
+    result = 0x091B000000000000;
+
+    __asm("subuh.ob %0, %1, %2\n\t"
+          : "=r"(rd)
+          : "r"(rs), "r"(rt)
+         );
+
+    if (rd != result) {
+        printf("subuh.ob error\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subuh_r_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subuh_r_qb.c
new file mode 100644
index 0000000..66d4680
--- /dev/null
+++ b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subuh_r_qb.c
@@ -0,0 +1,37 @@
+#include"io.h"
+
+int main(void)
+{
+    long long rd, rs, rt;
+    long long result;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result = 0xC6E80A2C;
+
+    __asm
+        ("subuh_r.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    if (rd != result) {
+        printf("1 subuh_r.qb wrong\n");
+        return -1;
+    }
+
+    rs = 0xBEFC292A;
+    rt = 0x9205C1B4;
+    result = 0x167cb4bb;
+
+    __asm
+        ("subuh_r.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    if (rd != result) {
+        printf("2 subuh_r.qb wrong\n");
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_absq_s_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_absq_s_ph.c
new file mode 100644
index 0000000..aa84112
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_absq_s_ph.c
@@ -0,0 +1,31 @@
+#include<stdio.h>
+#include<assert.h>
+
+
+int main()
+{
+    int rd, rt;
+    int result;
+
+    rt     = 0x10017EFD;
+    result = 0x10017EFD;
+
+    __asm
+        ("absq_s.ph %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    assert(rd == result);
+
+    rt     = 0x8000A536;
+    result = 0x7FFF5ACA;
+
+    __asm
+        ("absq_s.ph %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_absq_s_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_absq_s_w.c
new file mode 100644
index 0000000..3f52a48
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_absq_s_w.c
@@ -0,0 +1,37 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rt;
+    int result;
+
+    rt     = 0x80000000;
+    result = 0x7FFFFFFF;
+    __asm
+        ("absq_s.w %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    assert(rd == result);
+
+    rt     = 0x80030000;
+    result = 0x7FFD0000;
+    __asm
+        ("absq_s.w %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    assert(rd == result);
+
+    rt     = 0x31036080;
+    result = 0x31036080;
+    __asm
+        ("absq_s.w %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addq_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addq_ph.c
new file mode 100644
index 0000000..96a5496
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addq_ph.c
@@ -0,0 +1,46 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int dsp;
+    int result;
+
+    rs     = 0xFFFFFFFF;
+    rt     = 0x10101010;
+    result = 0x100F100F;
+    __asm
+        ("addq.ph   %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(result == rd);
+
+    rs     = 0x3712847D;
+    rt     = 0x0031AF2D;
+    result = 0x374333AA;
+    __asm
+        ("addq.ph   %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(result == rd);
+
+    rs     = 0x7fff847D;
+    rt     = 0x0031AF2D;
+    result = 0x803033AA;
+    __asm
+        ("addq.ph   %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(result == rd);
+
+    __asm("rddsp %0\n\t"
+          : "=r"(dsp)
+         );
+    assert(((dsp >> 20) & 0x01) == 1);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addq_s_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addq_s_ph.c
new file mode 100644
index 0000000..5f865f6
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addq_s_ph.c
@@ -0,0 +1,69 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int dsp;
+    int result;
+
+    rs     = 0xFFFFFFFF;
+    rt     = 0x10101010;
+    result = 0x100F100F;
+    __asm
+        ("addq_s.ph   %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(result == rd);
+
+    rs     = 0x3712847D;
+    rt     = 0x0031AF2D;
+    result = 0x37438000;
+    __asm
+        ("addq_s.ph   %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(result == rd);
+
+    __asm
+        ("rddsp %0\n\t"
+         : "=r"(dsp)
+        );
+    assert(((dsp >> 20) & 0x01) == 1);
+
+    rs     = 0x7fff847D;
+    rt     = 0x0031AF2D;
+    result = 0x7fff8000;
+    __asm
+        ("addq_s.ph   %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(result == rd);
+
+    __asm
+        ("rddsp %0\n\t"
+         : "=r"(dsp)
+        );
+    assert(((dsp >> 20) & 0x01) == 1);
+
+    rs     = 0x8030847D;
+    rt     = 0x8a00AF2D;
+    result = 0x80008000;
+    __asm
+        ("addq_s.ph   %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(result == rd);
+
+    __asm
+        ("rddsp %0\n\t"
+         : "=r"(dsp)
+        );
+    assert(((dsp >> 20) & 0x01) == 1);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addq_s_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addq_s_w.c
new file mode 100644
index 0000000..1e13acf
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addq_s_w.c
@@ -0,0 +1,44 @@
+#include<stdio.h>
+#include<assert.h>
+
+
+int main()
+{
+    int rd, rs, rt;
+    int result;
+
+    rt     = 0x10017EFD;
+    rs     = 0x11111111;
+    result = 0x2112900e;
+
+    __asm
+        ("addq_s.w %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(rd == result);
+
+    rt     = 0x80017EFD;
+    rs     = 0x81111111;
+    result = 0x80000000;
+
+    __asm
+        ("addq_s.w %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(rd == result);
+
+    rt     = 0x7fffffff;
+    rs     = 0x01111111;
+    result = 0x7fffffff;
+
+    __asm
+        ("addq_s.w %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addsc.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addsc.c
new file mode 100644
index 0000000..ace749f
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addsc.c
@@ -0,0 +1,33 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int dsp;
+    int result;
+
+    rs     = 0x0000000F;
+    rt     = 0x00000001;
+    result = 0x00000010;
+    __asm
+        ("addsc %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(rd == result);
+
+    rs     = 0xFFFF0FFF;
+    rt     = 0x00010111;
+    result = 0x00001110;
+    __asm
+        ("addsc %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    assert(rd == result);
+    assert(((dsp >> 13) & 0x01) == 1);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addu_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addu_qb.c
new file mode 100644
index 0000000..23ba2e9
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addu_qb.c
@@ -0,0 +1,35 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int dsp;
+    int result;
+
+    rs     = 0x00FF00FF;
+    rt     = 0x00010001;
+    result = 0x00000000;
+    __asm
+        ("addu.qb %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    assert(rd == result);
+    assert(((dsp >> 20) & 0x01) == 1);
+
+    rs     = 0xFFFF1111;
+    rt     = 0x00020001;
+    result = 0xFF011112;
+    __asm
+        ("addu.qb %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    assert(rd == result);
+    assert(((dsp >> 20) & 0x01) == 1);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addu_s_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addu_s_qb.c
new file mode 100644
index 0000000..fe7fd3e
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addu_s_qb.c
@@ -0,0 +1,35 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int dsp;
+    int result;
+
+    rs     = 0x10FF01FF;
+    rt     = 0x10010001;
+    result = 0x20FF01FF;
+    __asm
+        ("addu_s.qb %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    assert(rd == result);
+    assert(((dsp >> 20) & 0x1) == 1);
+
+    rs     = 0xFFFF1111;
+    rt     = 0x00020001;
+    result = 0xFFFF1112;
+    __asm
+        ("addu_s.qb %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    assert(rd == result);
+    assert(((dsp >> 20) & 0x1) == 1);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addwc.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addwc.c
new file mode 100644
index 0000000..8a8d81f
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addwc.c
@@ -0,0 +1,49 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int dspi, dspo;
+    int result;
+
+    rs     = 0x10FF01FF;
+    rt     = 0x10010001;
+    dspi   = 0x00002000;
+    result = 0x21000201;
+    __asm
+        ("wrdsp %3\n"
+         "addwc %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt), "r"(dspi)
+        );
+    assert(rd == result);
+
+    rs     = 0xFFFF1111;
+    rt     = 0x00020001;
+    dspi   = 0x00;
+    result = 0x00011112;
+    __asm
+        ("wrdsp %3\n"
+         "addwc %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt), "r"(dspi)
+        );
+    assert(rd == result);
+
+    rs     = 0x8FFF1111;
+    rt     = 0x80020001;
+    dspi   = 0x00;
+    result = 0x10011112;
+    __asm
+        ("wrdsp %4\n"
+         "addwc %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dspo)
+         : "r"(rs), "r"(rt), "r"(dspi)
+        );
+    assert(rd == result);
+    assert(((dspo >> 20) & 0x01) == 1);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_bitrev.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_bitrev.c
new file mode 100644
index 0000000..04d8a38
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_bitrev.c
@@ -0,0 +1,20 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rt;
+    int result;
+
+    rt     = 0x12345678;
+    result = 0x00001E6A;
+
+    __asm
+        ("bitrev %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_bposge32.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_bposge32.c
new file mode 100644
index 0000000..d25417e
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_bposge32.c
@@ -0,0 +1,44 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int dsp, sum;
+    int result;
+
+    dsp =  0x20;
+    sum = 0x01;
+    result = 0x02;
+
+    __asm
+        ("wrdsp %1\n\t"
+         "bposge32 test1\n\t"
+         "nop\n\t"
+         "addi %0, 0xA2\n\t"
+         "nop\n\t"
+         "test1:\n\t"
+         "addi %0, 0x01\n\t"
+         : "+r"(sum)
+         : "r"(dsp)
+        );
+    assert(sum == result);
+
+    dsp =  0x10;
+    sum = 0x01;
+    result = 0xA4;
+
+    __asm
+        ("wrdsp %1\n\t"
+         "bposge32 test2\n\t"
+         "nop\n\t"
+         "addi %0, 0xA2\n\t"
+         "nop\n\t"
+         "test2:\n\t"
+         "addi %0, 0x01\n\t"
+         : "+r"(sum)
+         : "r"(dsp)
+        );
+    assert(sum == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmp_eq_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmp_eq_ph.c
new file mode 100644
index 0000000..957bd88
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmp_eq_ph.c
@@ -0,0 +1,35 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int result;
+
+    rs     = 0x11777066;
+    rt     = 0x55AA33FF;
+    result = 0x00;
+    __asm
+        ("cmp.eq.ph %1, %2\n\t"
+         "rddsp %0\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+
+    rd = (rd >> 24) & 0x03;
+    assert(rd == result);
+
+    rs     = 0x11777066;
+    rt     = 0x11777066;
+    result = 0x03;
+    __asm
+        ("cmp.eq.ph %1, %2\n\t"
+         "rddsp %0\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    rd = (rd >> 24) & 0x03;
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmp_le_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmp_le_ph.c
new file mode 100644
index 0000000..356f156
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmp_le_ph.c
@@ -0,0 +1,35 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int result;
+
+    rs     = 0x11777066;
+    rt     = 0x55AA33FF;
+    result = 0x02;
+    __asm
+        ("cmp.le.ph %1, %2\n\t"
+         "rddsp %0\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+
+    rd = (rd >> 24) & 0x03;
+    assert(rd == result);
+
+    rs     = 0x11777066;
+    rt     = 0x11777066;
+    result = 0x03;
+    __asm
+        ("cmp.le.ph %1, %2\n\t"
+         "rddsp %0\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    rd = (rd >> 24) & 0x03;
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmp_lt_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmp_lt_ph.c
new file mode 100644
index 0000000..3fb4827
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmp_lt_ph.c
@@ -0,0 +1,35 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int result;
+
+    rs     = 0x11777066;
+    rt     = 0x55AA33FF;
+    result = 0x02;
+    __asm
+        ("cmp.lt.ph %1, %2\n\t"
+         "rddsp %0\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+
+    rd = (rd >> 24) & 0x03;
+    assert(rd == result);
+
+    rs     = 0x11777066;
+    rt     = 0x11777066;
+    result = 0x00;
+    __asm
+        ("cmp.lt.ph %1, %2\n\t"
+         "rddsp %0\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    rd = (rd >> 24) & 0x03;
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpgu_eq_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpgu_eq_qb.c
new file mode 100644
index 0000000..2615c84
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpgu_eq_qb.c
@@ -0,0 +1,31 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int result;
+
+    rs     = 0x11777066;
+    rt     = 0x55AA70FF;
+    result = 0x02;
+    __asm
+        ("cmpgu.eq.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+
+    assert(rd == result);
+
+    rs     = 0x11777066;
+    rt     = 0x11777066;
+    result = 0x0F;
+    __asm
+        ("cmpgu.eq.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpgu_le_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpgu_le_qb.c
new file mode 100644
index 0000000..65d0813
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpgu_le_qb.c
@@ -0,0 +1,31 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int result;
+
+    rs     = 0x11777066;
+    rt     = 0x55AA70FF;
+    result = 0x0F;
+    __asm
+        ("cmpgu.le.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+
+    assert(rd == result);
+
+    rs     = 0x11777066;
+    rt     = 0x11766066;
+    result = 0x09;
+    __asm
+        ("cmpgu.le.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpgu_lt_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpgu_lt_qb.c
new file mode 100644
index 0000000..7dddad9
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpgu_lt_qb.c
@@ -0,0 +1,31 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int result;
+
+    rs     = 0x11777066;
+    rt     = 0x55AA70FF;
+    result = 0x0D;
+    __asm
+        ("cmpgu.lt.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+
+    assert(rd == result);
+
+    rs     = 0x11777066;
+    rt     = 0x11766066;
+    result = 0x00;
+    __asm
+        ("cmpgu.lt.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpu_eq_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpu_eq_qb.c
new file mode 100644
index 0000000..680f2a1
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpu_eq_qb.c
@@ -0,0 +1,35 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rs, rt;
+    int dsp;
+    int result;
+
+    rs         = 0x11777066;
+    rt         = 0x55AA70FF;
+    result     = 0x02;
+    __asm
+        ("cmpu.eq.qb %1, %2\n\t"
+         "rddsp %0\n\t"
+         : "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 24) & 0x0F;
+    assert(dsp == result);
+
+    rs     = 0x11777066;
+    rt     = 0x11777066;
+    result = 0x0F;
+    __asm
+        ("cmpu.eq.qb %1, %2\n\t"
+         "rddsp %0\n\t"
+         : "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 24) & 0x0F;
+    assert(dsp == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpu_le_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpu_le_qb.c
new file mode 100644
index 0000000..43cfa50
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpu_le_qb.c
@@ -0,0 +1,35 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rs, rt;
+    int dsp;
+    int result;
+
+    rs         = 0x11777066;
+    rt         = 0x55AA70FF;
+    result     = 0x0F;
+    __asm
+        ("cmpu.le.qb %1, %2\n\t"
+         "rddsp %0\n\t"
+         : "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 24) & 0x0F;
+    assert(dsp == result);
+
+    rs     = 0x11777066;
+    rt     = 0x11777066;
+    result = 0x0F;
+    __asm
+        ("cmpu.le.qb %1, %2\n\t"
+         "rddsp %0\n\t"
+         : "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 24) & 0x0F;
+    assert(dsp == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpu_lt_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpu_lt_qb.c
new file mode 100644
index 0000000..074ca5b
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpu_lt_qb.c
@@ -0,0 +1,35 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rs, rt;
+    int dsp;
+    int result;
+
+    rs         = 0x11777066;
+    rt         = 0x55AA70FF;
+    result     = 0x0D;
+    __asm
+        ("cmpu.lt.qb %1, %2\n\t"
+         "rddsp %0\n\t"
+         : "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 24) & 0x0F;
+    assert(dsp == result);
+
+    rs     = 0x11777066;
+    rt     = 0x11777066;
+    result = 0x00;
+    __asm
+        ("cmpu.lt.qb %1, %2\n\t"
+         "rddsp %0\n\t"
+         : "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 24) & 0x0F;
+    assert(dsp == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpaq_s_w_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpaq_s_w_ph.c
new file mode 100644
index 0000000..a6425b6
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpaq_s_w_ph.c
@@ -0,0 +1,31 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rs, rt, dsp;
+    int ach = 0, acl = 0;
+    int resulth, resultl, resultdsp;
+
+    rs        = 0x800000FF;
+    rt        = 0x80000002;
+    resulth   = 0x00;
+    resultl   = 0x800003FB;
+    resultdsp = 0x01;
+    __asm
+        ("mthi        %0, $ac1\n\t"
+         "mtlo        %1, $ac1\n\t"
+         "dpaq_s.w.ph $ac1, %3, %4\n\t"
+         "mfhi        %0,   $ac1\n\t"
+         "mflo        %1,   $ac1\n\t"
+         "rddsp       %2\n\t"
+         : "+r"(ach), "+r"(acl), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = dsp >> 17 & 0x01;
+    assert(dsp == resultdsp);
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpaq_sa_l_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpaq_sa_l_w.c
new file mode 100644
index 0000000..cbf9007
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpaq_sa_l_w.c
@@ -0,0 +1,125 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rs, rt, dsp;
+    int ach = 0, acl = 0;
+    int resulth, resultl, resultdsp;
+
+    rs        = 0x80000000;
+    rt        = 0x80000000;
+    resulth   = 0x7FFFFFFF;
+    resultl   = 0xFFFFFFFF;
+    resultdsp = 0x01;
+    __asm
+        ("mthi        %0, $ac1\n\t"
+         "mtlo        %1, $ac1\n\t"
+         "dpaq_sa.l.w $ac1, %3, %4\n\t"
+         "mfhi        %0,   $ac1\n\t"
+         "mflo        %1,   $ac1\n\t"
+         "rddsp       %2\n\t"
+         : "+r"(ach), "+r"(acl), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 17) & 0x01;
+    assert(dsp == resultdsp);
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+    ach = 0x00000012;
+    acl = 0x00000048;
+    rs  = 0x80000000;
+    rt  = 0x80000000;
+
+    resulth   = 0x7FFFFFFF;
+    resultl   = 0xFFFFFFFF;
+    resultdsp = 0x01;
+    __asm
+        ("mthi        %0, $ac1\n\t"
+         "mtlo        %1, $ac1\n\t"
+         "dpaq_sa.l.w $ac1, %3, %4\n\t"
+         "mfhi        %0,   $ac1\n\t"
+         "mflo        %1,   $ac1\n\t"
+         "rddsp       %2\n\t"
+         : "+r"(ach), "+r"(acl), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 17) & 0x01;
+    assert(dsp == resultdsp);
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+    ach = 0x741532A0;
+    acl = 0xFCEABB08;
+    rs  = 0x80000000;
+    rt  = 0x80000000;
+
+    resulth   = 0x7FFFFFFF;
+    resultl   = 0xFFFFFFFF;
+    resultdsp = 0x01;
+    __asm
+        ("mthi        %0, $ac1\n\t"
+         "mtlo        %1, $ac1\n\t"
+         "dpaq_sa.l.w $ac1, %3, %4\n\t"
+         "mfhi        %0,   $ac1\n\t"
+         "mflo        %1,   $ac1\n\t"
+         "rddsp       %2\n\t"
+         : "+r"(ach), "+r"(acl), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 17) & 0x01;
+    assert(dsp == resultdsp);
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+    ach = 0;
+    acl = 0;
+    rs  = 0xC0000000;
+    rt  = 0x7FFFFFFF;
+
+    resulth   = 0xC0000000;
+    resultl   = 0x80000000;
+    resultdsp = 0;
+    __asm
+        ("wrdsp       $0\n\t"
+         "mthi        %0, $ac1\n\t"
+         "mtlo        %1, $ac1\n\t"
+         "dpaq_sa.l.w $ac1, %3, %4\n\t"
+         "mfhi        %0,   $ac1\n\t"
+         "mflo        %1,   $ac1\n\t"
+         "rddsp       %2\n\t"
+         : "+r"(ach), "+r"(acl), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 17) & 0x01;
+    assert(dsp == resultdsp);
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+    ach = 0x20000000;
+    acl = 0;
+    rs  = 0xE0000000;
+    rt  = 0x7FFFFFFF;
+
+    resulth   = 0;
+    resultl   = 0x40000000;
+    resultdsp = 0;
+    __asm
+        ("wrdsp       $0\n\t"
+         "mthi        %0, $ac1\n\t"
+         "mtlo        %1, $ac1\n\t"
+         "dpaq_sa.l.w $ac1, %3, %4\n\t"
+         "mfhi        %0,   $ac1\n\t"
+         "mflo        %1,   $ac1\n\t"
+         "rddsp       %2\n\t"
+         : "+r"(ach), "+r"(acl), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 17) & 0x01;
+    assert(dsp == resultdsp);
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpau_h_qbl.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpau_h_qbl.c
new file mode 100644
index 0000000..6017b5e
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpau_h_qbl.c
@@ -0,0 +1,27 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rs, rt;
+    int ach = 5, acl = 3;
+    int resulth, resultl;
+
+    rs        = 0x800000FF;
+    rt        = 0x80000002;
+    resulth   = 0x05;
+    resultl   = 0x4003;
+    __asm
+        ("mthi       %0, $ac1\n\t"
+         "mtlo       %1, $ac1\n\t"
+         "dpau.h.qbl $ac1, %2, %3\n\t"
+         "mfhi       %0,   $ac1\n\t"
+         "mflo       %1,   $ac1\n\t"
+         : "+r"(ach), "+r"(acl)
+         : "r"(rs), "r"(rt)
+        );
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpau_h_qbr.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpau_h_qbr.c
new file mode 100644
index 0000000..e4abb2e
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpau_h_qbr.c
@@ -0,0 +1,27 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rs, rt;
+    int ach = 5, acl = 3;
+    int resulth, resultl;
+
+    rs        = 0x800000FF;
+    rt        = 0x80000002;
+    resulth   = 0x05;
+    resultl   = 0x0201;
+    __asm
+        ("mthi       %0, $ac1\n\t"
+         "mtlo       %1, $ac1\n\t"
+         "dpau.h.qbr $ac1, %2, %3\n\t"
+         "mfhi       %0,   $ac1\n\t"
+         "mflo       %1,   $ac1\n\t"
+         : "+r"(ach), "+r"(acl)
+         : "r"(rs), "r"(rt)
+        );
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpsq_s_w_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpsq_s_w_ph.c
new file mode 100644
index 0000000..74058fe
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpsq_s_w_ph.c
@@ -0,0 +1,45 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rs, rt;
+    int ach = 5, acl = 5;
+    int resulth, resultl;
+
+    rs      = 0xBC0123AD;
+    rt      = 0x01643721;
+    resulth = 0x00000004;
+    resultl = 0xF15F94A3;
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpsq_s.w.ph $ac1, %2, %3\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         : "+r"(ach), "+r"(acl)
+         : "r"(rs), "r"(rt)
+        );
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+    ach = 0x1424EF1F;
+    acl = 0x1035219A;
+    rs      = 0x800083AD;
+    rt      = 0x80003721;
+    resulth = 0x1424EF1E;
+    resultl = 0xC5C0D901;
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpsq_s.w.ph $ac1, %2, %3\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         : "+r"(ach), "+r"(acl)
+         : "r"(rs), "r"(rt)
+        );
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpsq_sa_l_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpsq_sa_l_w.c
new file mode 100644
index 0000000..eda3b14
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpsq_sa_l_w.c
@@ -0,0 +1,55 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rs, rt, dsp;
+    int ach = 5, acl = 5;
+    int resulth, resultl, resultdsp;
+
+    rs      = 0xBC0123AD;
+    rt      = 0x01643721;
+    resulth = 0x00BD3A22;
+    resultl = 0xD138776B;
+    resultdsp = 0x00;
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpsq_sa.l.w $ac1, %3, %4\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "+r"(ach), "+r"(acl), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 17) & 0x01;
+    assert(dsp == resultdsp);
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+    ach = 0x54321123;
+    acl = 5;
+    rs      = 0x80000000;
+    rt      = 0x80000000;
+
+    resulth = 0xd4321123;
+    resultl = 0x06;
+    resultdsp = 0x01;
+
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpsq_sa.l.w $ac1, %3, %4\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "+r"(ach), "+r"(acl), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 17) & 0x01;
+    assert(dsp == resultdsp);
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpsu_h_qbl.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpsu_h_qbl.c
new file mode 100644
index 0000000..94e2bf6
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpsu_h_qbl.c
@@ -0,0 +1,27 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rs, rt;
+    int ach = 5, acl = 5;
+    int resulth, resultl;
+
+    rs      = 0xBC0123AD;
+    rt      = 0x01643721;
+    resulth = 0x04;
+    resultl = 0xFFFFFEE5;
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpsu.h.qbl $ac1, %2, %3\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         : "+r"(ach), "+r"(acl)
+         : "r"(rs), "r"(rt)
+        );
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpsu_h_qbr.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpsu_h_qbr.c
new file mode 100644
index 0000000..a1e6635
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpsu_h_qbr.c
@@ -0,0 +1,27 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rs, rt;
+    int ach = 5, acl = 5;
+    int resulth, resultl;
+
+    rs      = 0xBC0123AD;
+    rt      = 0x01643721;
+    resulth = 0x04;
+    resultl = 0xFFFFE233;
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpsu.h.qbr $ac1, %2, %3\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         : "+r"(ach), "+r"(acl)
+         : "r"(rs), "r"(rt)
+        );
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extp.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extp.c
new file mode 100644
index 0000000..b18bdb3
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extp.c
@@ -0,0 +1,62 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rt, ach, acl, dsp;
+    int result;
+
+    ach = 0x05;
+    acl = 0xB4CB;
+    dsp = 0x07;
+    result = 0x000C;
+
+    __asm
+        ("wrdsp %1, 0x01\n\t"
+         "mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extp %0, $ac1, 0x03\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 14) & 0x01;
+    assert(dsp == 0);
+    assert(result == rt);
+
+    ach = 0x05;
+    acl = 0xB4CB;
+    dsp = 0x01;
+
+    __asm
+        ("wrdsp %1, 0x01\n\t"
+         "mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extp %0, $ac1, 0x03\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 14) & 0x01;
+    assert(dsp == 1);
+
+    ach = 0;
+    acl = 0x80000001;
+    dsp = 0x1F;
+    result = 0x80000001;
+
+    __asm
+        ("wrdsp %1\n\t"
+         "mthi %2, $ac2\n\t"
+         "mtlo %3, $ac2\n\t"
+         "extp %0, $ac2, 0x1F\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 14) & 0x01;
+    assert(dsp == 0);
+    assert(result == rt);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extpdp.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extpdp.c
new file mode 100644
index 0000000..79ee16e
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extpdp.c
@@ -0,0 +1,64 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rt, ach, acl, dsp, pos, efi;
+    int result;
+
+    ach = 0x05;
+    acl = 0xB4CB;
+    dsp = 0x07;
+    result = 0x000C;
+
+    __asm
+        ("wrdsp %1, 0x01\n\t"
+         "mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extpdp %0, $ac1, 0x03\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(ach), "r"(acl)
+        );
+    pos =  dsp & 0x3F;
+    efi = (dsp >> 14) & 0x01;
+    assert(pos == 3);
+    assert(efi == 0);
+    assert(result == rt);
+
+    ach = 0x05;
+    acl = 0xB4CB;
+    dsp = 0x01;
+
+    __asm
+        ("wrdsp %1, 0x01\n\t"
+         "mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extpdp %0, $ac1, 0x03\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(ach), "r"(acl)
+        );
+    efi = (dsp >> 14) & 0x01;
+    assert(efi == 1);
+
+
+    ach = 0;
+    acl = 0;
+    dsp = 0;
+    result = 0;
+
+    __asm
+        ("wrdsp %1\n\t"
+         "mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extpdp %0, $ac1, 0x00\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(ach), "r"(acl)
+        );
+    assert(dsp == 0x3F);
+    assert(result == rt);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extpdpv.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extpdpv.c
new file mode 100644
index 0000000..f5774ee
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extpdpv.c
@@ -0,0 +1,47 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rt, rs, ach, acl, dsp, pos, efi;
+    int result;
+
+    ach = 0x05;
+    acl = 0xB4CB;
+    dsp = 0x07;
+    rs  = 0x03;
+    result = 0x000C;
+
+    __asm
+        ("wrdsp %1, 0x01\n\t"
+         "mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extpdpv %0, $ac1, %4\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(ach), "r"(acl), "r"(rs)
+        );
+    pos =  dsp & 0x3F;
+    efi = (dsp >> 14) & 0x01;
+    assert(pos == 3);
+    assert(efi == 0);
+    assert(result == rt);
+
+    ach = 0x05;
+    acl = 0xB4CB;
+    dsp = 0x01;
+
+    __asm
+        ("wrdsp %1, 0x01\n\t"
+         "mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extpdpv %0, $ac1, %4\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(ach), "r"(acl), "r"(rs)
+        );
+    efi = (dsp >> 14) & 0x01;
+    assert(efi == 1);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extpv.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extpv.c
new file mode 100644
index 0000000..401b94a
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extpv.c
@@ -0,0 +1,45 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rt, ac, ach, acl, dsp;
+    int result;
+
+    ach = 0x05;
+    acl = 0xB4CB;
+    dsp = 0x07;
+    ac  = 0x03;
+    result = 0x000C;
+
+    __asm
+        ("wrdsp %1, 0x01\n\t"
+         "mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extpv %0, $ac1, %4\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(ach), "r"(acl), "r"(ac)
+        );
+    dsp = (dsp >> 14) & 0x01;
+    assert(dsp == 0);
+    assert(result == rt);
+
+    ach = 0x05;
+    acl = 0xB4CB;
+    dsp = 0x01;
+
+    __asm
+        ("wrdsp %1, 0x01\n\t"
+         "mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extpv %0, $ac1, %4\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(ach), "r"(acl), "r"(ac)
+        );
+    dsp = (dsp >> 14) & 0x01;
+    assert(dsp == 1);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extr_r_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extr_r_w.c
new file mode 100644
index 0000000..489c193
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extr_r_w.c
@@ -0,0 +1,94 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rt, ach, acl, dsp;
+    int result;
+
+    ach = 0x05;
+    acl = 0xB4CB;
+    result = 0xA0001699;
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extr_r.w %0, $ac1, 0x03\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    assert(dsp == 1);
+    assert(result == rt);
+
+    /* Clear dspcontrol */
+    dsp = 0;
+    __asm
+        ("wrdsp %0\n\t"
+         :
+         : "r"(dsp)
+        );
+
+    ach = 0x01;
+    acl = 0xB4CB;
+    result = 0x10000B4D;
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extr_r.w %0, $ac1, 0x04\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    assert(dsp == 0);
+    assert(result == rt);
+
+    /* Clear dspcontrol */
+    dsp = 0;
+    __asm
+        ("wrdsp %0\n\t"
+         :
+         : "r"(dsp)
+        );
+
+    ach = 0x3fffffff;
+    acl = 0x2bcdef01;
+    result = 0x7ffffffe;
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extr_r.w %0, $ac1, 0x1F\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    assert(dsp == 0);
+    assert(result == rt);
+
+    /* Clear dspcontrol */
+    dsp = 0;
+    __asm
+        ("wrdsp %0\n\t"
+         :
+         : "r"(dsp)
+        );
+
+    ach = 0xFFFFFFFF;
+    acl = 0xFFFFFFFF;
+    result = 0;
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extr_r.w %0, $ac1, 0x1F\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(ach), "r"(acl)
+         );
+    dsp = (dsp >> 23) & 0x01;
+    assert(dsp == 0);
+    assert(result == rt);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extr_rs_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extr_rs_w.c
new file mode 100644
index 0000000..f9d2ed6
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extr_rs_w.c
@@ -0,0 +1,117 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rt, ach, acl, dsp;
+    int result;
+
+    ach = 0x05;
+    acl = 0xB4CB;
+    result = 0x7FFFFFFF;
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extr_rs.w %0, $ac1, 0x03\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    assert(dsp == 1);
+    assert(result == rt);
+
+    /* Clear dspcontrol */
+    dsp = 0;
+    __asm
+        ("wrdsp %0\n\t"
+         :
+         : "r"(dsp)
+        );
+
+    ach = 0x01;
+    acl = 0xB4CB;
+    result = 0x10000B4D;
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extr_rs.w %0, $ac1, 0x04\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    assert(dsp == 0);
+    assert(result == rt);
+
+    /* Clear dspcontrol */
+    dsp = 0;
+    __asm
+        ("wrdsp %0\n\t"
+         :
+         : "r"(dsp)
+        );
+
+    ach = 0x3fffffff;
+    acl = 0x2bcdef01;
+    result = 0x7ffffffe;
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extr_rs.w %0, $ac1, 0x1F\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    assert(dsp == 0);
+    assert(result == rt);
+
+    /* Clear dspcontrol */
+    dsp = 0;
+    __asm
+        ("wrdsp %0\n\t"
+         :
+         : "r"(dsp)
+        );
+
+    ach = 0x80000000;
+    acl = 0x00000000;
+    result = 0x80000000;
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extr_rs.w %0, $ac1, 0x1F\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    assert(dsp == 1);
+    assert(result == rt);
+
+    /* Clear dspcontrol */
+    dsp = 0;
+    __asm
+        ("wrdsp %0\n\t"
+         :
+         : "r"(dsp)
+        );
+
+    ach = 0xFFFFFFFF;
+    acl = 0xFFFFFFFF;
+    result = 0;
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extr_rs.w %0, $ac1, 0x1F\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(ach), "r"(acl)
+         );
+    dsp = (dsp >> 23) & 0x01;
+    assert(dsp == 0);
+    assert(result == rt);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extr_s_h.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extr_s_h.c
new file mode 100644
index 0000000..9bc2a63
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extr_s_h.c
@@ -0,0 +1,86 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rt, ach, acl, dsp;
+    int result;
+
+    ach = 0x05;
+    acl = 0xB4CB;
+    result = 0x00007FFF;
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extr_s.h %0, $ac1, 0x03\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    assert(dsp == 1);
+    assert(result == rt);
+
+    ach = 0xffffffff;
+    acl = 0x12344321;
+    result = 0xFFFF8000;
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extr_s.h %0, $ac1, 0x08\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    assert(dsp == 1);
+    assert(result == rt);
+
+    /* Clear dsp */
+    dsp = 0;
+    __asm
+        ("wrdsp %0\n\t"
+         :
+         : "r"(dsp)
+        );
+
+    ach = 0x00;
+    acl = 0x4321;
+    result = 0x432;
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extr_s.h %0, $ac1, 0x04\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    assert(dsp == 0);
+    assert(result == rt);
+
+    /* Clear dsp */
+    dsp = 0;
+    __asm
+        ("wrdsp %0\n\t"
+         :
+         : "r"(dsp)
+        );
+
+    ach = 0x123;
+    acl = 0x87654321;
+    result = 0x1238;
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extr_s.h %0, $ac1, 28\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    assert(dsp == 0);
+    assert(result == rt);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extr_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extr_w.c
new file mode 100644
index 0000000..cf92614
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extr_w.c
@@ -0,0 +1,94 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rt, ach, acl, dsp;
+    int result;
+
+    ach = 0x05;
+    acl = 0xB4CB;
+    result = 0xA0001699;
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extr.w %0, $ac1, 0x03\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    assert(dsp == 1);
+    assert(result == rt);
+
+    /* Clear dspcontrol */
+    dsp = 0;
+    __asm
+        ("wrdsp %0\n\t"
+         :
+         : "r"(dsp)
+        );
+
+    ach = 0x01;
+    acl = 0xB4CB;
+    result = 0x10000B4C;
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extr.w %0, $ac1, 0x04\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    assert(dsp == 0);
+    assert(result == rt);
+
+    /* Clear dspcontrol */
+    dsp = 0;
+    __asm
+        ("wrdsp %0\n\t"
+         :
+         : "r"(dsp)
+        );
+
+    ach = 0x3fffffff;
+    acl = 0x2bcdef01;
+    result = 0x7ffffffe;
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extr.w %0, $ac1, 0x1F\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    assert(dsp == 0);
+    assert(result == rt);
+
+    /* Clear dspcontrol */
+    dsp = 0;
+    __asm
+        ("wrdsp %0\n\t"
+         :
+         : "r"(dsp)
+        );
+
+    ach = 0xFFFFFFFF;
+    acl = 0xFFFFFFFF;
+    result = 0xFFFFFFFF;
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "extr.w %0, $ac1, 0x1F\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "=r"(dsp)
+         : "r"(ach), "r"(acl)
+         );
+    dsp = (dsp >> 23) & 0x01;
+    assert(dsp == 0);
+    assert(result == rt);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extrv_r_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extrv_r_w.c
new file mode 100644
index 0000000..2403b3a
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extrv_r_w.c
@@ -0,0 +1,79 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rt, rs, ach, acl, dsp;
+    int result;
+
+    ach = 0x05;
+    acl = 0xB4CB;
+    dsp = 0x07;
+    rs  = 0x03;
+    result = 0xA0001699;
+
+    __asm
+        ("wrdsp %1, 0x01\n\t"
+         "mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "extrv_r.w %0, $ac1, %2\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(rs), "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    assert(dsp == 1);
+    assert(result == rt);
+
+    /* Clear dspcontrol */
+    dsp = 0;
+    __asm
+        ("wrdsp %0\n\t"
+         :
+         : "r"(dsp)
+        );
+
+    rs = 4;
+    ach = 0x01;
+    acl = 0xB4CB;
+    result = 0x10000B4D;
+    __asm
+        ("wrdsp %1, 0x01\n\t"
+         "mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "extrv_r.w %0, $ac1, %2\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(rs), "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    assert(dsp == 0);
+    assert(result == rt);
+
+    /* Clear dspcontrol */
+    dsp = 0;
+    __asm
+        ("wrdsp %0\n\t"
+         :
+         : "r"(dsp)
+        );
+
+    rs = 31;
+    ach = 0x3fffffff;
+    acl = 0x2bcdef01;
+    result = 0x7ffffffe;
+    __asm
+        ("wrdsp %1, 0x01\n\t"
+         "mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "extrv_r.w %0, $ac1, %2\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(rs), "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    assert(dsp == 0);
+    assert(result == rt);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extrv_rs_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extrv_rs_w.c
new file mode 100644
index 0000000..ccceeb9
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extrv_rs_w.c
@@ -0,0 +1,77 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rt, rs, ach, acl, dsp;
+    int result;
+
+    rs = 0x03;
+    ach = 0x05;
+    acl = 0xB4CB;
+    result = 0x7FFFFFFF;
+    __asm
+        ("wrdsp %1, 0x01\n\t"
+         "mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "extrv_rs.w %0, $ac1, %2\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(rs), "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    assert(dsp == 1);
+    assert(result == rt);
+
+    /* Clear dspcontrol */
+    dsp = 0;
+    __asm
+        ("wrdsp %0\n\t"
+         :
+         : "r"(dsp)
+        );
+
+    rs = 0x04;
+    ach = 0x01;
+    acl = 0xB4CB;
+    result = 0x10000B4D;
+    __asm
+        ("wrdsp %1, 0x01\n\t"
+         "mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "extrv_rs.w %0, $ac1, %2\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(rs), "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    assert(dsp == 0);
+    assert(result == rt);
+
+    /* Clear dspcontrol */
+    dsp = 0;
+    __asm
+        ("wrdsp %0\n\t"
+         :
+         : "r"(dsp)
+        );
+
+    rs = 0x1F;
+    ach = 0x3fffffff;
+    acl = 0x2bcdef01;
+    result = 0x7ffffffe;
+    __asm
+        ("wrdsp %1, 0x01\n\t"
+         "mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "extrv_rs.w %0, $ac1, %2\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(rs), "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    assert(dsp == 0);
+    assert(result == rt);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extrv_s_h.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extrv_s_h.c
new file mode 100644
index 0000000..feac3e2
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extrv_s_h.c
@@ -0,0 +1,88 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rt, rs, ach, acl, dsp;
+    int result;
+
+    ach = 0x05;
+    acl = 0xB4CB;
+    dsp = 0x07;
+    rs  = 0x03;
+    result = 0x00007FFF;
+
+    __asm
+        ("wrdsp %1, 0x01\n\t"
+         "mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "extrv_s.h %0, $ac1, %2\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(rs), "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    assert(dsp == 1);
+    assert(result == rt);
+
+    rs = 0x08;
+    ach = 0xffffffff;
+    acl = 0x12344321;
+    result = 0xFFFF8000;
+    __asm
+        ("wrdsp %1, 0x01\n\t"
+         "mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "extrv_s.h %0, $ac1, %2\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(rs), "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    assert(dsp == 1);
+    assert(result == rt);
+
+    /* Clear dsp */
+    dsp = 0;
+    __asm
+        ("wrdsp %0\n\t"
+         :
+         : "r"(dsp)
+        );
+
+    rs = 0x04;
+    ach = 0x00;
+    acl = 0x4321;
+    result = 0x432;
+    __asm
+        ("wrdsp %1, 0x01\n\t"
+         "mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "extrv_s.h %0, $ac1, %2\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(rs), "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    assert(dsp == 0);
+    assert(result == rt);
+
+    rs = 0x1C;
+    ach = 0x123;
+    acl = 0x87654321;
+    result = 0x1238;
+    __asm
+        ("wrdsp %1, 0x01\n\t"
+         "mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "extrv_s.h %0, $ac1, %2\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(rs), "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    assert(dsp == 0);
+    assert(result == rt);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extrv_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extrv_w.c
new file mode 100644
index 0000000..9e8b238
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extrv_w.c
@@ -0,0 +1,80 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rt, rs, ach, acl, dsp;
+    int result;
+
+    ach = 0x05;
+    acl = 0xB4CB;
+    dsp = 0x07;
+    rs  = 0x03;
+    result = 0xA0001699;
+
+    __asm
+        ("wrdsp %1, 0x01\n\t"
+         "mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "extrv.w %0, $ac1, %2\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(rs), "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    assert(dsp == 1);
+    assert(result == rt);
+
+    /* Clear dspcontrol */
+    dsp = 0;
+    __asm
+        ("wrdsp %0\n\t"
+         :
+         : "r"(dsp)
+        );
+
+    rs = 4;
+    ach = 0x01;
+    acl = 0xB4CB;
+    result = 0x10000B4C;
+    __asm
+        ("wrdsp %1, 0x01\n\t"
+         "mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "extrv.w %0, $ac1, %2\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(rs), "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    assert(dsp == 0);
+    assert(result == rt);
+
+    /* Clear dspcontrol */
+    dsp = 0;
+    __asm
+        ("wrdsp %0\n\t"
+         :
+         : "r"(dsp)
+        );
+
+    rs = 31;
+    ach = 0x3fffffff;
+    acl = 0x2bcdef01;
+    result = 0x7ffffffe;
+    __asm
+        ("wrdsp %1, 0x01\n\t"
+         "mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "extrv.w %0, $ac1, %2\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rt), "+r"(dsp)
+         : "r"(rs), "r"(ach), "r"(acl)
+        );
+    dsp = (dsp >> 23) & 0x01;
+    assert(dsp == 0);
+    assert(result == rt);
+
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_insv.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_insv.c
new file mode 100644
index 0000000..9d67469
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_insv.c
@@ -0,0 +1,36 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rt, rs, dsp;
+    int result;
+
+    /* msb = 10, lsb = 5 */
+    dsp    = 0x305;
+    rt     = 0x12345678;
+    rs     = 0x87654321;
+    result = 0x12345438;
+    __asm
+        ("wrdsp %2, 0x03\n\t"
+         "insv  %0, %1\n\t"
+         : "+r"(rt)
+         : "r"(rs), "r"(dsp)
+        );
+    assert(rt == result);
+
+    dsp    = 0x1000;
+    rt     = 0xF0F0F0F0;
+    rs     = 0xA5A5A5A5;
+    result = 0xA5A5A5A5;
+
+    __asm
+        ("wrdsp %2\n\t"
+         "insv  %0, %1\n\t"
+         : "+r"(rt)
+         : "r"(rs), "r"(dsp)
+        );
+    assert(rt == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_lbux.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_lbux.c
new file mode 100644
index 0000000..2337abe
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_lbux.c
@@ -0,0 +1,25 @@
+#include <stdio.h>
+#include <assert.h>
+
+int main(void)
+{
+    int value, rd;
+    int *p;
+    unsigned long addr, index;
+    int result;
+
+    value  = 0xBCDEF389;
+    p = &value;
+    addr = (unsigned long)p;
+    index  = 0;
+    result = value & 0xFF;
+    __asm
+        ("lbux %0, %1(%2)\n\t"
+         : "=r"(rd)
+         : "r"(index), "r"(addr)
+        );
+
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_lhx.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_lhx.c
new file mode 100644
index 0000000..10be3b3
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_lhx.c
@@ -0,0 +1,25 @@
+#include <stdio.h>
+#include <assert.h>
+
+int main(void)
+{
+    int value, rd;
+    int *p;
+    unsigned long addr, index;
+    int result;
+
+    value  = 0xBCDEF389;
+    p = &value;
+    addr = (unsigned long)p;
+    index  = 0;
+    result = 0xFFFFF389;
+    __asm
+        ("lhx %0, %1(%2)\n\t"
+         : "=r"(rd)
+         : "r"(index), "r"(addr)
+        );
+
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_lwx.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_lwx.c
new file mode 100644
index 0000000..e6543c9
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_lwx.c
@@ -0,0 +1,25 @@
+#include <stdio.h>
+#include <assert.h>
+
+int main(void)
+{
+    int value, rd;
+    int *p;
+    unsigned long addr, index;
+    int result;
+
+    value  = 0xBCDEF389;
+    p = &value;
+    addr = (unsigned long)p;
+    index  = 0;
+    result = 0xBCDEF389;
+    __asm
+        ("lwx %0, %1(%2)\n\t"
+         : "=r"(rd)
+         : "r"(index), "r"(addr)
+        );
+
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_madd.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_madd.c
new file mode 100644
index 0000000..af4bfcf
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_madd.c
@@ -0,0 +1,31 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rt, rs;
+    int achi, acli;
+    int acho, aclo;
+    int resulth, resultl;
+
+    achi = 0x05;
+    acli = 0xB4CB;
+    rs  = 0x01;
+    rt  = 0x01;
+    resulth = 0x05;
+    resultl = 0xB4CC;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "madd $ac1, %4, %5\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+    assert(resulth == acho);
+    assert(resultl == aclo);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_maddu.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_maddu.c
new file mode 100644
index 0000000..af4bfcf
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_maddu.c
@@ -0,0 +1,31 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rt, rs;
+    int achi, acli;
+    int acho, aclo;
+    int resulth, resultl;
+
+    achi = 0x05;
+    acli = 0xB4CB;
+    rs  = 0x01;
+    rt  = 0x01;
+    resulth = 0x05;
+    resultl = 0xB4CC;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "madd $ac1, %4, %5\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+    assert(resulth == acho);
+    assert(resultl == aclo);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_main.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_main.c
new file mode 100644
index 0000000..b296b20
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_main.c
@@ -0,0 +1,6 @@
+#include<stdio.h>
+
+int main()
+{
+    printf("hello world\n");
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_maq_s_w_phl.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_maq_s_w_phl.c
new file mode 100644
index 0000000..0f7c070
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_maq_s_w_phl.c
@@ -0,0 +1,55 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rt, rs;
+    int achi, acli;
+    int dsp;
+    int acho, aclo;
+    int resulth, resultl;
+    int resdsp;
+
+    achi = 0x00000005;
+    acli = 0x0000B4CB;
+    rs  = 0xFF060000;
+    rt  = 0xCB000000;
+    resulth = 0x00000005;
+    resultl = 0x006838CB;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "maq_s.w.phl $ac1, %4, %5\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+    assert(resulth == acho);
+    assert(resultl == aclo);
+
+    achi = 0x00000006;
+    acli = 0x0000B4CB;
+    rs  = 0x80000000;
+    rt  = 0x80000000;
+    resulth = 0x00000006;
+    resultl = 0x8000B4CA;
+    resdsp = 1;
+
+    __asm
+        ("mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "maq_s.w.phl $ac1, %5, %6\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "=r"(acho), "=r"(aclo), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+    assert(resulth == acho);
+    assert(resultl == aclo);
+    assert(((dsp >> 17) & 0x01) == resdsp);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_maq_s_w_phr.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_maq_s_w_phr.c
new file mode 100644
index 0000000..942722a
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_maq_s_w_phr.c
@@ -0,0 +1,55 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rt, rs;
+    int achi, acli;
+    int dsp;
+    int acho, aclo;
+    int resulth, resultl;
+    int resdsp;
+
+    achi = 0x00000005;
+    acli = 0x0000B4CB;
+    rs  = 0x0000FF06;
+    rt  = 0x0000CB00;
+    resulth = 0x00000005;
+    resultl = 0x006838CB;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "maq_s.w.phr $ac1, %4, %5\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+    assert(resulth == acho);
+    assert(resultl == aclo);
+
+    achi = 0x00000006;
+    acli = 0x0000B4CB;
+    rs  = 0x00008000;
+    rt  = 0x00008000;
+    resulth = 0x00000006;
+    resultl = 0x8000B4CA;
+    resdsp = 1;
+
+    __asm
+        ("mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "maq_s.w.phr $ac1, %5, %6\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "=r"(acho), "=r"(aclo), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+    assert(resulth == acho);
+    assert(resultl == aclo);
+    assert(((dsp >> 17) & 0x01) == resdsp);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_maq_sa_w_phl.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_maq_sa_w_phl.c
new file mode 100644
index 0000000..d83dce6
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_maq_sa_w_phl.c
@@ -0,0 +1,55 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rt, rs;
+    int achi, acli;
+    int dsp;
+    int acho, aclo;
+    int resulth, resultl;
+    int resdsp;
+
+    achi = 0x00000000;
+    acli = 0x0000B4CB;
+    rs = 0xFF060000;
+    rt = 0xCB000000;
+    resulth = 0x00000000;
+    resultl = 0x006838CB;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "maq_sa.w.phl $ac1, %4, %5\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+    assert(resulth == acho);
+    assert(resultl == aclo);
+
+    achi = 0x00000000;
+    acli = 0x0000B4CB;
+    rs  = 0x80000000;
+    rt  = 0x80000000;
+    resulth = 0x00;
+    resultl = 0x7fffffff;
+    resdsp = 0x01;
+
+    __asm
+        ("mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "maq_sa.w.phl $ac1, %5, %6\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "=r"(acho), "=r"(aclo), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+    assert(resulth == acho);
+    assert(resultl == aclo);
+    assert(((dsp >> 17) & 0x01) == 0x01);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_maq_sa_w_phr.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_maq_sa_w_phr.c
new file mode 100644
index 0000000..d233111
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_maq_sa_w_phr.c
@@ -0,0 +1,55 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rt, rs;
+    int achi, acli;
+    int dsp;
+    int acho, aclo;
+    int resulth, resultl;
+    int resdsp;
+
+    achi = 0x00000000;
+    acli = 0x0000B4CB;
+    rs  = 0x0000FF06;
+    rt  = 0x0000CB00;
+    resulth = 0x00000000;
+    resultl = 0x006838CB;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "maq_sa.w.phr $ac1, %4, %5\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+    assert(resulth == acho);
+    assert(resultl == aclo);
+
+    achi = 0x00000000;
+    acli = 0x0000B4CB;
+    rs  = 0x00008000;
+    rt  = 0x00008000;
+    resulth = 0x00000000;
+    resultl = 0x7FFFFFFF;
+    resdsp = 0x01;
+
+    __asm
+        ("mthi %3, $ac1\n\t"
+         "mtlo %4, $ac1\n\t"
+         "maq_sa.w.phr $ac1, %5, %6\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "=r"(acho), "=r"(aclo), "=r"(dsp)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+    assert(resulth == acho);
+    assert(resultl == aclo);
+    assert(((dsp >> 17) & 0x01) == 0x01);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mfhi.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mfhi.c
new file mode 100644
index 0000000..43a8066
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mfhi.c
@@ -0,0 +1,21 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int achi, acho;
+    int result;
+
+    achi   = 0x004433;
+    result = 0x004433;
+
+    __asm
+        ("mthi %1, $ac1\n\t"
+         "mfhi %0, $ac1\n\t"
+         : "=r"(acho)
+         : "r"(achi)
+        );
+    assert(result == acho);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mflo.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mflo.c
new file mode 100644
index 0000000..caeafdb
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mflo.c
@@ -0,0 +1,21 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int acli, aclo;
+    int result;
+
+    acli   = 0x004433;
+    result = 0x004433;
+
+    __asm
+        ("mthi %1, $ac1\n\t"
+         "mfhi %0, $ac1\n\t"
+         : "=r"(aclo)
+         : "r"(acli)
+        );
+    assert(result == aclo);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_modsub.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_modsub.c
new file mode 100644
index 0000000..c294eeb
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_modsub.c
@@ -0,0 +1,30 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int result;
+
+    rs     = 0xFFFFFFFF;
+    rt     = 0x000000FF;
+    result = 0xFFFFFF00;
+    __asm
+        ("modsub %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(result == rd);
+
+    rs     = 0x00000000;
+    rt     = 0x00CD1FFF;
+    result = 0x0000CD1F;
+    __asm
+        ("modsub %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(result == rd);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_msub.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_msub.c
new file mode 100644
index 0000000..5779e6f
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_msub.c
@@ -0,0 +1,30 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int achi, acli, rs, rt;
+    int acho, aclo;
+    int resulth, resultl;
+
+    rs      = 0x00BBAACC;
+    rt      = 0x0B1C3D2F;
+    achi    = 0x00004433;
+    acli    = 0xFFCC0011;
+    resulth = 0xFFF81F29;
+    resultl = 0xB355089D;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "msub $ac1, %4, %5\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+    assert(acho == resulth);
+    assert(aclo == resultl);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_msubu.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_msubu.c
new file mode 100644
index 0000000..e0f9b5a
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_msubu.c
@@ -0,0 +1,30 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int achi, acli, rs, rt;
+    int acho, aclo;
+    int resulth, resultl;
+
+    rs      = 0x00BBAACC;
+    rt      = 0x0B1C3D2F;
+    achi    = 0x00004433;
+    acli    = 0xFFCC0011;
+    resulth = 0xFFF81F29;
+    resultl = 0xB355089D;
+
+    __asm
+        ("mthi %2, $ac1\n\t"
+         "mtlo %3, $ac1\n\t"
+         "msubu $ac1, %4, %5\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "=r"(acho), "=r"(aclo)
+         : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
+        );
+    assert(acho == resulth);
+    assert(aclo == resultl);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mthi.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mthi.c
new file mode 100644
index 0000000..43a8066
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mthi.c
@@ -0,0 +1,21 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int achi, acho;
+    int result;
+
+    achi   = 0x004433;
+    result = 0x004433;
+
+    __asm
+        ("mthi %1, $ac1\n\t"
+         "mfhi %0, $ac1\n\t"
+         : "=r"(acho)
+         : "r"(achi)
+        );
+    assert(result == acho);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mthlip.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mthlip.c
new file mode 100644
index 0000000..85f94d8
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mthlip.c
@@ -0,0 +1,58 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rs, ach, acl, dsp;
+    int result, resulth, resultl;
+
+    dsp = 0x07;
+    ach = 0x05;
+    acl = 0xB4CB;
+    rs  = 0x00FFBBAA;
+    resulth = 0xB4CB;
+    resultl = 0x00FFBBAA;
+    result  = 0x27;
+
+    __asm
+        ("wrdsp %0, 0x01\n\t"
+         "mthi %1, $ac1\n\t"
+         "mtlo %2, $ac1\n\t"
+         "mthlip %3, $ac1\n\t"
+         "mfhi %1, $ac1\n\t"
+         "mflo %2, $ac1\n\t"
+         "rddsp %0\n\t"
+         : "+r"(dsp), "+r"(ach), "+r"(acl)
+         : "r"(rs)
+        );
+    dsp = dsp & 0x3F;
+    assert(dsp == result);
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+    dsp = 0x1f;
+    ach = 0x05;
+    acl = 0xB4CB;
+    rs  = 0x00FFBBAA;
+    resulth = 0xB4CB;
+    resultl = 0x00FFBBAA;
+    result  = 0x3f;
+
+    __asm
+        ("wrdsp %0, 0x01\n\t"
+         "mthi %1, $ac1\n\t"
+         "mtlo %2, $ac1\n\t"
+         "mthlip %3, $ac1\n\t"
+         "mfhi %1, $ac1\n\t"
+         "mflo %2, $ac1\n\t"
+         "rddsp %0\n\t"
+         : "+r"(dsp), "+r"(ach), "+r"(acl)
+         : "r"(rs)
+        );
+    dsp = dsp & 0x3F;
+    assert(dsp == result);
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mtlo.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mtlo.c
new file mode 100644
index 0000000..caeafdb
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mtlo.c
@@ -0,0 +1,21 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int acli, aclo;
+    int result;
+
+    acli   = 0x004433;
+    result = 0x004433;
+
+    __asm
+        ("mthi %1, $ac1\n\t"
+         "mfhi %0, $ac1\n\t"
+         : "=r"(aclo)
+         : "r"(acli)
+        );
+    assert(result == aclo);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_muleq_s_w_phl.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_muleq_s_w_phl.c
new file mode 100644
index 0000000..b3a5370
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_muleq_s_w_phl.c
@@ -0,0 +1,41 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt, dsp;
+    int result, resultdsp;
+
+    rs = 0x80001234;
+    rt = 0x80001234;
+    result = 0x7FFFFFFF;
+    resultdsp = 1;
+
+    __asm
+        ("muleq_s.w.phl %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 21) & 0x01;
+    assert(rd  == result);
+    assert(dsp == resultdsp);
+
+    rs = 0x12349988;
+    rt = 0x43219988;
+    result = 0x98be968;
+    resultdsp = 1;
+
+    __asm
+        ("muleq_s.w.phl %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 21) & 0x01;
+    assert(rd  == result);
+    assert(dsp == resultdsp);
+
+    return 0;
+}
+
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_muleq_s_w_phr.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_muleq_s_w_phr.c
new file mode 100644
index 0000000..8066d7d
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_muleq_s_w_phr.c
@@ -0,0 +1,40 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt, dsp;
+    int result, resultdsp;
+
+    rs = 0x8000;
+    rt = 0x8000;
+    result = 0x7FFFFFFF;
+    resultdsp = 1;
+
+    __asm
+        ("muleq_s.w.phr %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 21) & 0x01;
+    assert(rd  == result);
+    assert(dsp == resultdsp);
+
+    rs = 0x1234;
+    rt = 0x4321;
+    result = 0x98be968;
+    resultdsp = 1;
+
+    __asm
+        ("muleq_s.w.phr %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 21) & 0x01;
+    assert(rd  == result);
+    assert(dsp == resultdsp);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_muleu_s_ph_qbl.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_muleu_s_ph_qbl.c
new file mode 100644
index 0000000..66a3828
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_muleu_s_ph_qbl.c
@@ -0,0 +1,25 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt, dsp;
+    int result, resultdsp;
+
+    rs = 0x80001234;
+    rt = 0x80004321;
+    result = 0xFFFF0000;
+    resultdsp = 1;
+
+    __asm
+        ("muleu_s.ph.qbl %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 21) & 0x01;
+    assert(rd  == result);
+    assert(dsp == resultdsp);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_muleu_s_ph_qbr.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_muleu_s_ph_qbr.c
new file mode 100644
index 0000000..4cc6c8f
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_muleu_s_ph_qbr.c
@@ -0,0 +1,25 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt, dsp;
+    int result, resultdsp;
+
+    rs = 0x8000;
+    rt = 0x80004321;
+    result = 0xFFFF0000;
+    resultdsp = 1;
+
+    __asm
+        ("muleu_s.ph.qbr %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 21) & 0x01;
+    assert(rd  == result);
+    assert(dsp == resultdsp);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mulq_rs_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mulq_rs_ph.c
new file mode 100644
index 0000000..370c2a8
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mulq_rs_ph.c
@@ -0,0 +1,42 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt, dsp;
+    int result, resultdsp;
+
+    rs = 0x80001234;
+    rt = 0x80004321;
+    result = 0x7FFF098C;
+    resultdsp = 1;
+
+    __asm
+        ("wrdsp $0\n\t"
+         "mulq_rs.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 21) & 0x01;
+    assert(rd  == result);
+    assert(dsp == resultdsp);
+
+    rs = 0x80011234;
+    rt = 0x80024321;
+    result = 0x7FFD098C;
+    resultdsp = 0;
+
+    __asm
+        ("wrdsp $0\n\t"
+         "mulq_rs.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 21) & 0x01;
+    assert(rd  == result);
+    assert(dsp == resultdsp);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mult.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mult.c
new file mode 100644
index 0000000..15e6fde
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mult.c
@@ -0,0 +1,24 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rs, rt, ach, acl;
+    int result, resulth, resultl;
+
+    rs  = 0x00FFBBAA;
+    rt  = 0x4B231000;
+    resulth = 0x4b0f01;
+    resultl = 0x71f8a000;
+    __asm
+        ("mult $ac1, %2, %3\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "=r"(ach), "=r"(acl)
+         : "r"(rs), "r"(rt)
+        );
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_multu.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_multu.c
new file mode 100644
index 0000000..85d36c1
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_multu.c
@@ -0,0 +1,24 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rs, rt, ach, acl;
+    int result, resulth, resultl;
+
+    rs  = 0x00FFBBAA;
+    rt  = 0x4B231000;
+    resulth = 0x4b0f01;
+    resultl = 0x71f8a000;
+    __asm
+        ("multu $ac1, %2, %3\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "=r"(ach), "=r"(acl)
+         : "r"(rs), "r"(rt)
+        );
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_packrl_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_packrl_ph.c
new file mode 100644
index 0000000..1f8e699
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_packrl_ph.c
@@ -0,0 +1,21 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int result;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result = 0x56788765;
+
+    __asm
+        ("packrl.ph %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(result == rd);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_pick_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_pick_ph.c
new file mode 100644
index 0000000..929a002
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_pick_ph.c
@@ -0,0 +1,49 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt, dsp;
+    int result;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    dsp = 0x0A000000;
+    result = 0x12344321;
+
+    __asm
+        ("wrdsp %3, 0x10\n\t"
+         "pick.ph %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt), "r"(dsp)
+        );
+    assert(rd == result);
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    dsp = 0x03000000;
+    result = 0x12345678;
+
+    __asm
+        ("wrdsp %3, 0x10\n\t"
+         "pick.ph %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt), "r"(dsp)
+        );
+    assert(rd == result);
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    dsp = 0x00000000;
+    result = 0x87654321;
+
+    __asm
+        ("wrdsp %3, 0x10\n\t"
+         "pick.ph %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt), "r"(dsp)
+        );
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_pick_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_pick_qb.c
new file mode 100644
index 0000000..a790475
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_pick_qb.c
@@ -0,0 +1,36 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt, dsp;
+    int result;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    dsp = 0x0f000000;
+    result = 0x12345678;
+
+    __asm
+        ("wrdsp %3, 0x10\n\t"
+         "pick.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt), "r"(dsp)
+        );
+    assert(rd == result);
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    dsp = 0x00000000;
+    result = 0x87654321;
+
+    __asm
+        ("wrdsp %3, 0x10\n\t"
+         "pick.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt), "r"(dsp)
+        );
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceq_w_phl.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceq_w_phl.c
new file mode 100644
index 0000000..bf70bf7
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceq_w_phl.c
@@ -0,0 +1,20 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rt;
+    int result;
+
+    rt = 0x87654321;
+    result = 0x87650000;
+
+    __asm
+        ("preceq.w.phl %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    assert(result == rd);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceq_w_phr.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceq_w_phr.c
new file mode 100644
index 0000000..3f885ef
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceq_w_phr.c
@@ -0,0 +1,20 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rt;
+    int result;
+
+    rt = 0x87654321;
+    result = 0x43210000;
+
+    __asm
+        ("preceq.w.phr %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    assert(result == rd);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precequ_ph_qbl.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precequ_ph_qbl.c
new file mode 100644
index 0000000..63b7a95
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precequ_ph_qbl.c
@@ -0,0 +1,20 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rt;
+    int result;
+
+    rt = 0x87654321;
+    result = 0x43803280;
+
+    __asm
+        ("precequ.ph.qbl %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    assert(result == rd);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precequ_ph_qbla.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precequ_ph_qbla.c
new file mode 100644
index 0000000..31627f0
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precequ_ph_qbla.c
@@ -0,0 +1,20 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rt;
+    int result;
+
+    rt = 0x87654321;
+    result = 0x43802180;
+
+    __asm
+        ("precequ.ph.qbla %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    assert(result == rd);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precequ_ph_qbr.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precequ_ph_qbr.c
new file mode 100644
index 0000000..b6f72d3
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precequ_ph_qbr.c
@@ -0,0 +1,20 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rt;
+    int result;
+
+    rt = 0x87654321;
+    result = 0x21801080;
+
+    __asm
+        ("precequ.ph.qbr %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    assert(result == rd);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precequ_ph_qbra.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precequ_ph_qbra.c
new file mode 100644
index 0000000..4764fd0
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precequ_ph_qbra.c
@@ -0,0 +1,20 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rt;
+    int result;
+
+    rt = 0x87654321;
+    result = 0x32801080;
+
+    __asm
+        ("precequ.ph.qbra %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    assert(result == rd);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceu_ph_qbl.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceu_ph_qbl.c
new file mode 100644
index 0000000..fa95c26
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceu_ph_qbl.c
@@ -0,0 +1,20 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rt;
+    int result;
+
+    rt = 0x87654321;
+    result = 0x00870065;
+
+    __asm
+        ("preceu.ph.qbl %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    assert(result == rd);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceu_ph_qbla.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceu_ph_qbla.c
new file mode 100644
index 0000000..021f21a
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceu_ph_qbla.c
@@ -0,0 +1,20 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rt;
+    int result;
+
+    rt = 0x87654321;
+    result = 0x00870043;
+
+    __asm
+        ("preceu.ph.qbla %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    assert(result == rd);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceu_ph_qbr.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceu_ph_qbr.c
new file mode 100644
index 0000000..03df18c
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceu_ph_qbr.c
@@ -0,0 +1,20 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rt;
+    int result;
+
+    rt = 0x87654321;
+    result = 0x00430021;
+
+    __asm
+        ("preceu.ph.qbr %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    assert(result == rd);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceu_ph_qbra.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceu_ph_qbra.c
new file mode 100644
index 0000000..6343276
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceu_ph_qbra.c
@@ -0,0 +1,20 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rt;
+    int result;
+
+    rt = 0x87654321;
+    result = 0x00650021;
+
+    __asm
+        ("preceu.ph.qbra %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    assert(result == rd);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precrq_ph_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precrq_ph_w.c
new file mode 100644
index 0000000..25d45f1
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precrq_ph_w.c
@@ -0,0 +1,21 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int result;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result = 0x12348765;
+
+    __asm
+        ("precrq.ph.w %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(result == rd);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precrq_qb_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precrq_qb_ph.c
new file mode 100644
index 0000000..fe23acc
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precrq_qb_ph.c
@@ -0,0 +1,21 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int result;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result = 0x12568743;
+
+    __asm
+        ("precrq.qb.ph %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(result == rd);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precrq_rs_ph_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precrq_rs_ph_w.c
new file mode 100644
index 0000000..da6845b
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precrq_rs_ph_w.c
@@ -0,0 +1,51 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int dsp;
+    int result;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result = 0x12348765;
+
+    __asm
+        ("wrdsp $0\n\t"
+         "precrq_rs.ph.w %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(result == rd);
+
+    rs = 0x7FFFC678;
+    rt = 0x865432A0;
+    result = 0x7FFF8654;
+
+    __asm
+        ("wrdsp $0\n\t"
+         "precrq_rs.ph.w %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    assert(((dsp >> 22) & 0x01) == 1);
+    assert(result == rd);
+
+    rs = 0xBEEFFEED;
+    rt = 0x7FFF8000;
+    result = 0xBEF07FFF;
+
+    __asm
+        ("wrdsp $0\n\t"
+         "precrq_rs.ph.w %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    assert(((dsp >> 22) & 0x01) == 1);
+    assert(result == rd);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precrqu_s_qb_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precrqu_s_qb_ph.c
new file mode 100644
index 0000000..7481d5a
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precrqu_s_qb_ph.c
@@ -0,0 +1,24 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int dsp;
+    int result;
+
+    rs = 0x12345678;
+    rt = 0x87657FFF;
+    result = 0x24AC00FF;
+
+    __asm
+        ("precrqu_s.qb.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    assert(result == rd);
+    assert(((dsp >> 22) & 0x01) == 0x01);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_raddu_w_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_raddu_w_qb.c
new file mode 100644
index 0000000..77a983c
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_raddu_w_qb.c
@@ -0,0 +1,20 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs;
+    int result;
+
+    rs = 0x12345678;
+    result = 0x114;
+
+    __asm
+        ("raddu.w.qb %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rs)
+        );
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_rddsp.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_rddsp.c
new file mode 100644
index 0000000..2f30285
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_rddsp.c
@@ -0,0 +1,46 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int dsp_i, dsp_o;
+    int ccond_i, outflag_i, efi_i, c_i, scount_i, pos_i;
+    int ccond_o, outflag_o, efi_o, c_o, scount_o, pos_o;
+
+    ccond_i   = 0x0000000C;  /* 4 */
+    outflag_i = 0x0000001B;  /* 3 */
+    efi_i     = 0x00000001;  /* 5 */
+    c_i       = 0x00000001;  /* 2 */
+    scount_i  = 0x0000000F;  /* 1 */
+    pos_i     = 0x0000000C;  /* 0 */
+
+    dsp_i = (ccond_i   << 24) | \
+            (outflag_i << 16) | \
+            (efi_i     << 14) | \
+            (c_i       << 13) | \
+            (scount_i  <<  7) | \
+            pos_i;
+
+    __asm
+        ("wrdsp %1, 0x3F\n\t"
+         "rddsp %0, 0x3F\n\t"
+         : "=r"(dsp_o)
+         : "r"(dsp_i)
+        );
+
+    ccond_o   = (dsp_o >> 24) & 0xFF;
+    outflag_o = (dsp_o >> 16) & 0xFF;
+    efi_o     = (dsp_o >> 14) & 0x01;
+    c_o       = (dsp_o >> 14) & 0x01;
+    scount_o  = (dsp_o >>  7) & 0x3F;
+    pos_o     =  dsp_o & 0x1F;
+
+    assert(ccond_o   == ccond_i);
+    assert(outflag_o == outflag_i);
+    assert(efi_o     == efi_i);
+    assert(c_o       == c_i);
+    assert(scount_o  == scount_i);
+    assert(pos_o     == pos_i);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_repl_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_repl_ph.c
new file mode 100644
index 0000000..2107495
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_repl_ph.c
@@ -0,0 +1,23 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, result;
+
+    result = 0x01BF01BF;
+    __asm
+        ("repl.ph %0, 0x1BF\n\t"
+         : "=r"(rd)
+        );
+    assert(rd == result);
+
+    result = 0x01FF01FF;
+    __asm
+        ("repl.ph %0, 0x01FF\n\t"
+         : "=r"(rd)
+        );
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_repl_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_repl_qb.c
new file mode 100644
index 0000000..6631393
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_repl_qb.c
@@ -0,0 +1,16 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, result;
+
+    result = 0xBFBFBFBF;
+    __asm
+        ("repl.qb %0, 0xBF\n\t"
+         : "=r"(rd)
+        );
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_replv_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_replv_ph.c
new file mode 100644
index 0000000..07fb15f
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_replv_ph.c
@@ -0,0 +1,19 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rt;
+    int result;
+
+    rt = 0x12345678;
+    result = 0x56785678;
+    __asm
+        ("replv.ph %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_replv_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_replv_qb.c
new file mode 100644
index 0000000..dd1271f
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_replv_qb.c
@@ -0,0 +1,19 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rt;
+    int result;
+
+    rt     = 0x12345678;
+    result = 0x78787878;
+    __asm
+        ("replv.qb %0, %1\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shilo.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shilo.c
new file mode 100644
index 0000000..ce8ebc6
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shilo.c
@@ -0,0 +1,45 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int ach, acl;
+    int resulth, resultl;
+
+    ach = 0xBBAACCFF;
+    acl = 0x1C3B001D;
+
+    resulth = 0x17755;
+    resultl = 0x99fe3876;
+
+    __asm
+        ("mthi %0, $ac1\n\t"
+         "mtlo %1, $ac1\n\t"
+         "shilo $ac1, 0x0F\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "+r"(ach), "+r"(acl)
+        );
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+
+    ach = 0x1;
+    acl = 0x80000000;
+
+    resulth = 0x3;
+    resultl = 0x0;
+
+    __asm
+        ("mthi %0, $ac1\n\t"
+         "mtlo %1, $ac1\n\t"
+         "shilo $ac1, -1\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "+r"(ach), "+r"(acl)
+        );
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shilov.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shilov.c
new file mode 100644
index 0000000..e1d6cea
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shilov.c
@@ -0,0 +1,49 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rs, ach, acl;
+    int resulth, resultl;
+
+    rs  = 0x0F;
+    ach = 0xBBAACCFF;
+    acl = 0x1C3B001D;
+
+    resulth = 0x17755;
+    resultl = 0x99fe3876;
+
+    __asm
+        ("mthi %0, $ac1\n\t"
+         "mtlo %1, $ac1\n\t"
+         "shilov $ac1, %2\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "+r"(ach), "+r"(acl)
+         : "r"(rs)
+        );
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+
+    rs  = 0xffffffff;
+    ach = 0x1;
+    acl = 0x80000000;
+
+    resulth = 0x3;
+    resultl = 0x0;
+
+    __asm
+        ("mthi %0, $ac1\n\t"
+         "mtlo %1, $ac1\n\t"
+         "shilov $ac1, %2\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "+r"(ach), "+r"(acl)
+         : "r"(rs)
+        );
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shll_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shll_ph.c
new file mode 100644
index 0000000..5fa58cc
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shll_ph.c
@@ -0,0 +1,55 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rt, dsp;
+    int result, resultdsp;
+
+    rt        = 0x12345678;
+    result    = 0xA000C000;
+    resultdsp = 1;
+
+    __asm
+        ("wrdsp $0\n\t"
+         "shll.ph %0, %2, 0x0B\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt)
+        );
+    dsp = (dsp >> 22) & 0x01;
+    assert(dsp == resultdsp);
+    assert(rd  == result);
+
+    rt        = 0x7fff8000;
+    result    = 0xfffe0000;
+    resultdsp = 1;
+
+    __asm
+        ("wrdsp $0\n\t"
+         "shll.ph %0, %2, 0x01\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt)
+        );
+    dsp = (dsp >> 22) & 0x01;
+    assert(dsp == resultdsp);
+    assert(rd  == result);
+
+    rt        = 0x00000001;
+    result    = 0x00008000;
+    resultdsp = 1;
+
+    __asm
+        ("wrdsp $0\n\t"
+         "shll.ph %0, %2, 0x0F\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt)
+        );
+    dsp = (dsp >> 22) & 0x01;
+    assert(dsp == resultdsp);
+    assert(rd  == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shll_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shll_qb.c
new file mode 100644
index 0000000..729716d
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shll_qb.c
@@ -0,0 +1,55 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rt, dsp;
+    int result, resultdsp;
+
+    rt     = 0x87654321;
+    result  = 0x87654321;
+    resultdsp = 0x00;
+
+    __asm
+        ("wrdsp $0\n\t"
+         "shll.qb %0, %2, 0x00\n\t"
+         "rddsp   %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt)
+        );
+    dsp = (dsp >> 22) & 0x01;
+    assert(dsp == resultdsp);
+    assert(rd == result);
+
+    rt     = 0x87654321;
+    result = 0x38281808;
+    resultdsp = 0x01;
+
+    __asm
+        ("wrdsp $0\n\t"
+         "shll.qb %0, %2, 0x03\n\t"
+         "rddsp   %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt)
+        );
+    dsp = (dsp >> 22) & 0x01;
+    assert(dsp == resultdsp);
+    assert(rd == result);
+
+    rt     = 0x00000001;
+    result = 0x00000080;
+    resultdsp = 0x00;
+
+    __asm
+        ("wrdsp $0\n\t"
+         "shll.qb %0, %2, 0x07\n\t"
+         "rddsp   %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt)
+        );
+    dsp = (dsp >> 22) & 0x01;
+    assert(dsp == resultdsp);
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shll_s_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shll_s_ph.c
new file mode 100644
index 0000000..910fea3
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shll_s_ph.c
@@ -0,0 +1,24 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rt, dsp;
+    int result, resultdsp;
+
+    rt        = 0x12345678;
+    result    = 0x7FFF7FFF;
+    resultdsp = 0x01;
+
+    __asm
+        ("shll_s.ph %0, %2, 0x0B\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt)
+        );
+    dsp = (dsp >> 22) & 0x01;
+    assert(dsp == resultdsp);
+    assert(rd  == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shll_s_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shll_s_w.c
new file mode 100644
index 0000000..628c752
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shll_s_w.c
@@ -0,0 +1,52 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rt, dsp;
+    int result, resultdsp;
+
+    rt        = 0x82345678;
+    result    = 0x82345678;
+    resultdsp = 0x00;
+
+    __asm
+        ("shll_s.w %0, %2, 0x0\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt)
+        );
+    dsp = (dsp >> 22) & 0x01;
+    assert(dsp == resultdsp);
+    assert(rd  == result);
+
+    rt        = 0x82345678;
+    result    = 0x80000000;
+    resultdsp = 0x01;
+
+    __asm
+        ("shll_s.w %0, %2, 0x0B\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt)
+        );
+    dsp = (dsp >> 22) & 0x01;
+    assert(dsp == resultdsp);
+    assert(rd  == result);
+
+    rt        = 0x12345678;
+    result    = 0x7FFFFFFF;
+    resultdsp = 0x01;
+
+    __asm
+        ("shll_s.w %0, %2, 0x0B\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt)
+        );
+    dsp = (dsp >> 22) & 0x01;
+    assert(dsp == resultdsp);
+    assert(rd  == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shllv_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shllv_ph.c
new file mode 100644
index 0000000..f98a632
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shllv_ph.c
@@ -0,0 +1,40 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt, dsp;
+    int result, resultdsp;
+
+    rs        = 0x0;
+    rt        = 0x12345678;
+    result    = 0x12345678;
+    resultdsp = 0;
+
+    __asm
+        ("shllv.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt), "r"(rs)
+        );
+    dsp = (dsp >> 22) & 0x01;
+    assert(dsp == resultdsp);
+    assert(rd  == result);
+
+    rs        = 0x0B;
+    rt        = 0x12345678;
+    result    = 0xA000C000;
+    resultdsp = 1;
+
+    __asm
+        ("shllv.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt), "r"(rs)
+        );
+    dsp = (dsp >> 22) & 0x01;
+    assert(dsp == resultdsp);
+    assert(rd  == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shllv_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shllv_qb.c
new file mode 100644
index 0000000..6d8ff4a
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shllv_qb.c
@@ -0,0 +1,38 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt, dsp;
+    int result, resultdsp;
+
+    rs     = 0x03;
+    rt     = 0x87654321;
+    result = 0x38281808;
+    resultdsp = 0x01;
+
+    __asm
+        ("shllv.qb %0, %2, %3\n\t"
+         "rddsp   %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt), "r"(rs)
+        );
+    dsp = (dsp >> 22) & 0x01;
+    assert(rd == result);
+
+    rs     = 0x00;
+    rt     = 0x87654321;
+    result = 0x87654321;
+    resultdsp = 0x01;
+
+    __asm
+        ("shllv.qb %0, %2, %3\n\t"
+         "rddsp   %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt), "r"(rs)
+        );
+    dsp = (dsp >> 22) & 0x01;
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shllv_s_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shllv_s_ph.c
new file mode 100644
index 0000000..fc9bd32
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shllv_s_ph.c
@@ -0,0 +1,40 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt, dsp;
+    int result, resultdsp;
+
+    rs        = 0x0;
+    rt        = 0x12345678;
+    result    = 0x12345678;
+    resultdsp = 0x0;
+
+    __asm
+        ("shllv_s.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt), "r"(rs)
+        );
+    dsp = (dsp >> 22) & 0x01;
+    assert(dsp == resultdsp);
+    assert(rd  == result);
+
+    rs        = 0x0B;
+    rt        = 0x12345678;
+    result    = 0x7FFF7FFF;
+    resultdsp = 0x01;
+
+    __asm
+        ("shllv_s.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt), "r"(rs)
+        );
+    dsp = (dsp >> 22) & 0x01;
+    assert(dsp == resultdsp);
+    assert(rd  == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shllv_s_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shllv_s_w.c
new file mode 100644
index 0000000..350c256
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shllv_s_w.c
@@ -0,0 +1,40 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt, dsp;
+    int result, resultdsp;
+
+    rs        = 0x0B;
+    rt        = 0x12345678;
+    result    = 0x7FFFFFFF;
+    resultdsp = 0x01;
+
+    __asm
+        ("shllv_s.w %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt), "r"(rs)
+        );
+    dsp = (dsp >> 22) & 0x01;
+    assert(dsp == resultdsp);
+    assert(rd  == result);
+
+    rs        = 0x0;
+    rt        = 0x12345678;
+    result    = 0x12345678;
+    resultdsp = 0x01;
+
+    __asm
+        ("shllv_s.w %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rt), "r"(rs)
+        );
+    dsp = (dsp >> 22) & 0x01;
+    assert(dsp == resultdsp);
+    assert(rd  == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shra_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shra_ph.c
new file mode 100644
index 0000000..5b2d840
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shra_ph.c
@@ -0,0 +1,30 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rt;
+    int result;
+
+    rt     = 0x87654321;
+    result = 0xF0EC0864;
+
+    __asm
+        ("shra.ph %0, %1, 0x03\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    assert(rd == result);
+
+    rt     = 0x87654321;
+    result = 0x87654321;
+
+    __asm
+        ("shra.ph %0, %1, 0x00\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shra_r_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shra_r_ph.c
new file mode 100644
index 0000000..adc4ae6
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shra_r_ph.c
@@ -0,0 +1,30 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rt;
+    int result;
+
+    rt     = 0x87654321;
+    result = 0xF0ED0864;
+
+    __asm
+        ("shra_r.ph %0, %1, 0x03\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    assert(rd == result);
+
+    rt     = 0x87654321;
+    result = 0x87654321;
+
+    __asm
+        ("shra_r.ph %0, %1, 0x00\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shra_r_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shra_r_w.c
new file mode 100644
index 0000000..ec0cf2c
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shra_r_w.c
@@ -0,0 +1,30 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rt;
+    int result;
+
+    rt     = 0x87654321;
+    result = 0xF0ECA864;
+
+    __asm
+        ("shra_r.w %0, %1, 0x03\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    assert(rd == result);
+
+    rt     = 0x87654321;
+    result = 0x87654321;
+
+    __asm
+        ("shra_r.w %0, %1, 0x0\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shrav_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shrav_ph.c
new file mode 100644
index 0000000..6e42aaf
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shrav_ph.c
@@ -0,0 +1,32 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int result;
+
+    rs     = 0x03;
+    rt     = 0x87654321;
+    result = 0xF0EC0864;
+
+    __asm
+        ("shrav.ph %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rt), "r"(rs)
+        );
+    assert(rd == result);
+
+    rs     = 0x00;
+    rt     = 0x87654321;
+    result = 0x87654321;
+
+    __asm
+        ("shrav.ph %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rt), "r"(rs)
+        );
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shrav_r_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shrav_r_ph.c
new file mode 100644
index 0000000..f03b978
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shrav_r_ph.c
@@ -0,0 +1,32 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int result;
+
+    rs     = 0x03;
+    rt     = 0x87654321;
+    result = 0xF0ED0864;
+
+    __asm
+        ("shrav_r.ph %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rt), "r"(rs)
+        );
+    assert(rd == result);
+
+    rs     = 0x00;
+    rt     = 0x87654321;
+    result = 0x87654321;
+
+    __asm
+        ("shrav_r.ph %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rt), "r"(rs)
+        );
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shrav_r_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shrav_r_w.c
new file mode 100644
index 0000000..2ab03bb
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shrav_r_w.c
@@ -0,0 +1,32 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int result;
+
+    rs     = 0x03;
+    rt     = 0x87654321;
+    result = 0xF0ECA864;
+
+    __asm
+        ("shrav_r.w %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rt), "r"(rs)
+        );
+    assert(rd == result);
+
+    rs     = 0x00;
+    rt     = 0x40000000;
+    result = 0x40000000;
+
+    __asm
+        ("shrav_r.w %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rt), "r"(rs)
+        );
+
+    assert(rd == result);
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shrl_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shrl_qb.c
new file mode 100644
index 0000000..a7e4e6a
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shrl_qb.c
@@ -0,0 +1,31 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rt;
+    int result;
+
+    rt     = 0x12345678;
+    result = 0x00010203;
+
+    __asm
+        ("shrl.qb %0, %1, 0x05\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    assert(rd == result);
+
+    rt     = 0x12345678;
+    result = 0x12345678;
+
+    __asm
+        ("shrl.qb %0, %1, 0x0\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shrlv_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shrlv_qb.c
new file mode 100644
index 0000000..db77f6d
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shrlv_qb.c
@@ -0,0 +1,32 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int result;
+
+    rs     = 0x05;
+    rt     = 0x12345678;
+    result = 0x00010203;
+
+    __asm
+        ("shrlv.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rt), "r"(rs)
+        );
+    assert(rd == result);
+
+    rs     = 0x00;
+    rt     = 0x12345678;
+    result = 0x12345678;
+
+    __asm
+        ("shrlv.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rt), "r"(rs)
+        );
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_subq_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_subq_ph.c
new file mode 100644
index 0000000..fdd7b38
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_subq_ph.c
@@ -0,0 +1,40 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt, dsp;
+    int result, resultdsp;
+
+    rs = 0x77777777;
+    rt = 0x67654321;
+    result    = 0x10123456;
+    resultdsp = 0x0;
+
+    __asm
+        ("subq.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 20) & 0x01;
+    assert(dsp == resultdsp);
+    assert(rd  == result);
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result    = 0x8ACF1357;
+    resultdsp = 0x01;
+
+    __asm
+        ("subq.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 20) & 0x01;
+    assert(dsp == resultdsp);
+    assert(rd  == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_subq_s_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_subq_s_ph.c
new file mode 100644
index 0000000..64c89eb
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_subq_s_ph.c
@@ -0,0 +1,58 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt, dsp;
+    int result, resultdsp;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result    = 0x7FFF1357;
+    resultdsp = 0x01;
+
+    __asm
+        ("wrdsp $0\n\t"
+         "subq_s.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 20) & 0x01;
+    assert(dsp == resultdsp);
+    assert(rd  == result);
+
+    rs = 0x12348000;
+    rt = 0x87657000;
+    result    = 0x7FFF8000;
+    resultdsp = 0x01;
+
+    __asm
+        ("wrdsp $0\n\t"
+         "subq_s.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 20) & 0x01;
+    assert(dsp == resultdsp);
+    assert(rd  == result);
+
+    rs = 0x12340000;
+    rt = 0x87658000;
+    result    = 0x7FFF7FFF;
+    resultdsp = 0x01;
+
+    __asm
+        ("wrdsp $0\n\t"
+         "subq_s.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 20) & 0x01;
+    assert(dsp == resultdsp);
+    assert(rd  == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_subq_s_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_subq_s_w.c
new file mode 100644
index 0000000..9d456a9
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_subq_s_w.c
@@ -0,0 +1,74 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt, dsp;
+    int result, resultdsp;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result    = 0x7FFFFFFF;
+    resultdsp = 0x01;
+
+    __asm
+        ("wrdsp $0\n\t"
+         "subq_s.w %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 20) & 0x01;
+    assert(dsp == resultdsp);
+    assert(rd  == result);
+
+    rs = 0x66666;
+    rt = 0x55555;
+    result    = 0x11111;
+    resultdsp = 0x0;
+
+    __asm
+        ("wrdsp $0\n\t"
+         "subq_s.w %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 20) & 0x01;
+    assert(dsp == resultdsp);
+    assert(rd  == result);
+
+    rs = 0x0;
+    rt = 0x80000000;
+    result    = 0x7FFFFFFF;
+    resultdsp = 0x01;
+
+    __asm
+        ("wrdsp $0\n\t"
+         "subq_s.w %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 20) & 0x01;
+    assert(dsp == resultdsp);
+    assert(rd  == result);
+
+    rs = 0x80000000;
+    rt = 0x80000000;
+    result    = 0;
+    resultdsp = 0x00;
+
+    __asm
+        ("wrdsp $0\n\t"
+         "subq_s.w %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 20) & 0x01;
+    assert(dsp == resultdsp);
+    assert(rd  == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_subu_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_subu_qb.c
new file mode 100644
index 0000000..4209096
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_subu_qb.c
@@ -0,0 +1,25 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt, dsp;
+    int result, resultdsp;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result    = 0x8BCF1357;
+    resultdsp = 0x01;
+
+    __asm
+        ("subu.qb %0, %2, %3\n\t"
+         "rddsp   %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 20) & 0x01;
+    assert(dsp == resultdsp);
+    assert(rd  == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_subu_s_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_subu_s_qb.c
new file mode 100644
index 0000000..3d65053
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_subu_s_qb.c
@@ -0,0 +1,25 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt, dsp;
+    int result, resultdsp;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result    = 0x00001357;
+    resultdsp = 0x01;
+
+    __asm
+        ("subu_s.qb %0, %2, %3\n\t"
+         "rddsp   %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 20) & 0x01;
+    assert(dsp == resultdsp);
+    assert(rd  == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_wrdsp.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_wrdsp.c
new file mode 100644
index 0000000..dc54943
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_wrdsp.c
@@ -0,0 +1,46 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int dsp_i, dsp_o;
+    int ccond_i, outflag_i, efi_i, c_i, scount_i, pos_i;
+    int ccond_o, outflag_o, efi_o, c_o, scount_o, pos_o;
+
+    ccond_i   = 0x000000BC;  /* 4 */
+    outflag_i = 0x0000001B;  /* 3 */
+    efi_i     = 0x00000001;  /* 5 */
+    c_i       = 0x00000001;  /* 2 */
+    scount_i  = 0x0000000F;  /* 1 */
+    pos_i     = 0x0000000C;  /* 0 */
+
+    dsp_i = (ccond_i   << 24) | \
+            (outflag_i << 16) | \
+            (efi_i     << 14) | \
+            (c_i       << 13) | \
+            (scount_i  <<  7) | \
+            pos_i;
+
+    __asm
+        ("wrdsp %1, 0x3F\n\t"
+         "rddsp %0, 0x3F\n\t"
+         : "=r"(dsp_o)
+         : "r"(dsp_i)
+        );
+
+    ccond_o   = (dsp_o >> 24) & 0xFF;
+    outflag_o = (dsp_o >> 16) & 0xFF;
+    efi_o     = (dsp_o >> 14) & 0x01;
+    c_o       = (dsp_o >> 14) & 0x01;
+    scount_o  = (dsp_o >>  7) & 0x3F;
+    pos_o     =  dsp_o & 0x1F;
+
+    assert(ccond_o   == (ccond_i & 0x0F));
+    assert(outflag_o == outflag_i);
+    assert(efi_o     == efi_i);
+    assert(c_o       == c_i);
+    assert(scount_o  == scount_i);
+    assert(pos_o     == pos_i);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_absq_s_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_absq_s_qb.c
new file mode 100644
index 0000000..af4683f
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_absq_s_qb.c
@@ -0,0 +1,35 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int input, result, dsp;
+    int hope;
+
+    input = 0x701BA35E;
+    hope  = 0x701B5D5E;
+
+    __asm
+        ("absq_s.qb %0, %1\n\t"
+         : "=r"(result)
+         : "r"(input)
+        );
+    assert(result == hope);
+
+
+    input = 0x801BA35E;
+    hope  = 0x7F1B5D5E;
+
+    __asm
+        ("absq_s.qb %0, %2\n\t"
+         "rddsp %1\n\t"
+         : "=r"(result), "=r"(dsp)
+         : "r"(input)
+        );
+    dsp = dsp >> 20;
+    dsp &= 0x01;
+    assert(dsp == 1);
+    assert(result == hope);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addqh_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addqh_ph.c
new file mode 100644
index 0000000..921f0ea
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addqh_ph.c
@@ -0,0 +1,30 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int result;
+
+    rs     = 0x706A13FE;
+    rt     = 0x13065174;
+    result = 0x41B832B9;
+    __asm
+        ("addqh.ph %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(rd == result);
+
+    rs     = 0x81000100;
+    rt     = 0xc2000100;
+    result = 0xa1800100;
+    __asm
+        ("addqh.ph %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addqh_r_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addqh_r_ph.c
new file mode 100644
index 0000000..213ba37
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addqh_r_ph.c
@@ -0,0 +1,30 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int result;
+
+    rs     = 0x706A13FE;
+    rt     = 0x13065174;
+    result = 0x41B832B9;
+    __asm
+        ("addqh_r.ph %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(rd == result);
+
+    rs     = 0x81010100;
+    rt     = 0xc2000100;
+    result = 0xa1810100;
+    __asm
+        ("addqh_r.ph %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addqh_r_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addqh_r_w.c
new file mode 100644
index 0000000..75a75c5
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addqh_r_w.c
@@ -0,0 +1,34 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int result;
+
+    rs     = 0x00000010;
+    rt     = 0x00000001;
+    result = 0x00000009;
+
+    __asm
+        ("addqh_r.w  %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+
+    assert(rd == result);
+
+    rs     = 0xFFFFFFFE;
+    rt     = 0x00000001;
+    result = 0x00000000;
+
+    __asm
+        ("addqh_r.w  %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addqh_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addqh_w.c
new file mode 100644
index 0000000..de6926e
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addqh_w.c
@@ -0,0 +1,34 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int result;
+
+    rs     = 0x00000010;
+    rt     = 0x00000001;
+    result = 0x00000008;
+
+    __asm
+        ("addqh.w  %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+
+    assert(rd == result);
+
+    rs     = 0xFFFFFFFE;
+    rt     = 0x00000001;
+    result = 0xFFFFFFFF;
+
+    __asm
+        ("addqh.w  %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addu_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addu_ph.c
new file mode 100644
index 0000000..1d7a25a
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addu_ph.c
@@ -0,0 +1,33 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int dsp;
+    int result;
+
+    rs     = 0x00FF00FF;
+    rt     = 0x00010001;
+    result = 0x01000100;
+    __asm
+        ("addu.ph %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(rd == result);
+
+    rs     = 0xFFFF1111;
+    rt     = 0x00020001;
+    result = 0x00011112;
+    __asm
+        ("addu.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    assert(rd == result);
+    assert(((dsp >> 20) & 0x01) == 1);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addu_s_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addu_s_ph.c
new file mode 100644
index 0000000..979651b
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addu_s_ph.c
@@ -0,0 +1,33 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int dsp;
+    int result;
+
+    rs     = 0x00FE00FE;
+    rt     = 0x00020001;
+    result = 0x010000FF;
+    __asm
+        ("addu_s.ph %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(rd == result);
+
+    rs     = 0xFFFF1111;
+    rt     = 0x00020001;
+    result = 0xFFFF1112;
+    __asm
+        ("addu_s.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    assert(rd == result);
+    assert(((dsp >> 20) & 0x01) == 1);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_adduh_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_adduh_qb.c
new file mode 100644
index 0000000..a1f5d63
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_adduh_qb.c
@@ -0,0 +1,30 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int result;
+
+    rs     = 0xFF0055AA;
+    rt     = 0x0113421B;
+    result = 0x80094B62;
+    __asm
+        ("adduh.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(rd == result);
+
+    rs     = 0xFFFF0FFF;
+    rt     = 0x00010111;
+    result = 0x7F800888;
+    __asm
+        ("adduh.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_adduh_r_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_adduh_r_qb.c
new file mode 100644
index 0000000..81e98c1
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_adduh_r_qb.c
@@ -0,0 +1,30 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int result;
+
+    rs     = 0xFF0055AA;
+    rt     = 0x01112211;
+    result = 0x80093C5E;
+    __asm
+        ("adduh_r.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(rd == result);
+
+    rs     = 0xFFFF0FFF;
+    rt     = 0x00010111;
+    result = 0x80800888;
+    __asm
+        ("adduh_r.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_append.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_append.c
new file mode 100644
index 0000000..9a91e16
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_append.c
@@ -0,0 +1,30 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rs, rt;
+    int result;
+
+    rs     = 0xFF0055AA;
+    rt     = 0x0113421B;
+    result = 0x02268436;
+    __asm
+        ("append %0, %1, 0x01\n\t"
+         : "+r"(rt)
+         : "r"(rs)
+        );
+    assert(rt == result);
+
+    rs     = 0xFFFF0FFF;
+    rt     = 0x00010111;
+    result = 0x0010111F;
+    __asm
+        ("append %0, %1, 0x04\n\t"
+         : "+r"(rt)
+         : "r"(rs)
+        );
+    assert(rt == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_balign.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_balign.c
new file mode 100644
index 0000000..537cf04
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_balign.c
@@ -0,0 +1,30 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rs, rt;
+    int result;
+
+    rs     = 0xFF0055AA;
+    rt     = 0x0113421B;
+    result = 0x13421BFF;
+    __asm
+        ("balign %0, %1, 0x01\n\t"
+         : "+r"(rt)
+         : "r"(rs)
+        );
+    assert(rt == result);
+
+    rs     = 0xFFFF0FFF;
+    rt     = 0x00010111;
+    result = 0x11FFFF0F;
+    __asm
+        ("balign %0, %1, 0x03\n\t"
+         : "+r"(rt)
+         : "r"(rs)
+        );
+    assert(rt == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_cmpgdu_eq_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_cmpgdu_eq_qb.c
new file mode 100644
index 0000000..2d6340d
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_cmpgdu_eq_qb.c
@@ -0,0 +1,37 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int dsp;
+    int result;
+
+    rs = 0x11777066;
+    rt = 0x55AA70FF;
+    result = 0x02;
+    __asm
+        ("cmpgdu.eq.qb %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 24) & 0x0F;
+    assert(rd  == result);
+    assert(dsp == result);
+
+    rs     = 0x11777066;
+    rt     = 0x11777066;
+    result = 0x0F;
+    __asm
+        ("cmpgdu.eq.qb %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 24) & 0x0F;
+    assert(rd  == result);
+    assert(dsp == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_cmpgdu_le_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_cmpgdu_le_qb.c
new file mode 100644
index 0000000..a0ecdca
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_cmpgdu_le_qb.c
@@ -0,0 +1,37 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int dsp;
+    int result;
+
+    rs         = 0x11777066;
+    rt         = 0x55AA70FF;
+    result     = 0x0F;
+    __asm
+        ("cmpgdu.le.qb %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 24) & 0x0F;
+    assert(rd  == result);
+    assert(dsp == result);
+
+    rs     = 0x11777066;
+    rt     = 0x11707066;
+    result = 0x0B;
+    __asm
+        ("cmpgdu.le.qb %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 24) & 0x0F;
+    assert(rd  == result);
+    assert(dsp == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_cmpgdu_lt_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_cmpgdu_lt_qb.c
new file mode 100644
index 0000000..dba99e3
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_cmpgdu_lt_qb.c
@@ -0,0 +1,37 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int dsp;
+    int result;
+
+    rs         = 0x11777066;
+    rt         = 0x55AA70FF;
+    result     = 0x0D;
+    __asm
+        ("cmpgdu.lt.qb %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 24) & 0x0F;
+    assert(rd  == result);
+    assert(dsp == result);
+
+    rs     = 0x11777066;
+    rt     = 0x11777066;
+    result = 0x00;
+    __asm
+        ("cmpgdu.lt.qb %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 24) & 0x0F;
+    assert(rd  == result);
+    assert(dsp == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpa_w_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpa_w_ph.c
new file mode 100644
index 0000000..fae49f1
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpa_w_ph.c
@@ -0,0 +1,44 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rs, rt;
+    int ach = 5, acl = 5;
+    int resulth, resultl;
+
+    rs     = 0x00FF00FF;
+    rt     = 0x00010002;
+    resulth = 0x05;
+    resultl = 0x0302;
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpa.w.ph $ac1, %2, %3\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         : "+r"(ach), "+r"(acl)
+         : "r"(rs), "r"(rt)
+        );
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+    ach = 6, acl = 7;
+    rs     = 0xFFFF00FF;
+    rt     = 0xFFFF0002;
+    resulth = 0x06;
+    resultl = 0x206;
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpa.w.ph $ac1, %2, %3\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         : "+r"(ach), "+r"(acl)
+         : "r"(rs), "r"(rt)
+        );
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpaqx_s_w_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpaqx_s_w_ph.c
new file mode 100644
index 0000000..ce87830
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpaqx_s_w_ph.c
@@ -0,0 +1,79 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rs, rt, dsp;
+    int ach = 5, acl = 5;
+    int resulth, resultl, resultdsp;
+
+    rs     = 0x800000FF;
+    rt     = 0x00018000;
+    resulth = 0x05;
+    resultl = 0x80000202;
+    resultdsp = 0x01;
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpaqx_s.w.ph $ac1, %3, %4\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "+r"(ach), "+r"(acl), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 17) & 0x01;
+    assert(dsp == resultdsp);
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+    ach    = 5;
+    acl    = 5;
+    rs     = 0x00FF00FF;
+    rt     = 0x00010002;
+    resulth = 0x05;
+    resultl = 0x05FF;
+    /***********************************************************
+     * Because of we set outflag at last time, although this
+     * time we set nothing, but it is stay the last time value.
+     **********************************************************/
+    resultdsp = 0x01;
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpaqx_s.w.ph $ac1, %3, %4\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "+r"(ach), "+r"(acl), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 17) & 0x01;
+    assert(dsp == resultdsp);
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+    ach    = 5;
+    acl    = 5;
+    rs     = 0x800000FF;
+    rt     = 0x00028000;
+    resulth = 0x05;
+    resultl = 0x80000400;
+    resultdsp = 0x01;
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpaqx_s.w.ph $ac1, %3, %4\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "+r"(ach), "+r"(acl), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 17) & 0x01;
+    assert(dsp == resultdsp);
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpaqx_sa_w_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpaqx_sa_w_ph.c
new file mode 100644
index 0000000..d551d64
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpaqx_sa_w_ph.c
@@ -0,0 +1,57 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rs, rt, dsp;
+    int ach, acl;
+    int resulth, resultl, resultdsp;
+
+    ach = 0x00000005;
+    acl = 0x00000005;
+    rs     = 0x00FF00FF;
+    rt     = 0x00010002;
+    resulth = 0x00;
+    resultl = 0x7FFFFFFF;
+    resultdsp = 0x01;
+    dsp = 0;
+    __asm
+        ("wrdsp %2\n\t"
+         "mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpaqx_sa.w.ph $ac1, %3, %4\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "+r"(ach), "+r"(acl), "+r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    assert(dsp >> (16 + 1) == resultdsp);
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+    ach = 0x00000009;
+    acl = 0x0000000B;
+    rs     = 0x800000FF;
+    rt     = 0x00018000;
+    resulth = 0x00;
+    resultl = 0x7FFFFFFF;
+    resultdsp = 0x01;
+    dsp = 0;
+    __asm
+        ("wrdsp %2\n\t"
+         "mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpaqx_sa.w.ph $ac1, %3, %4\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "+r"(ach), "+r"(acl), "+r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    assert(dsp >> (16 + 1) == resultdsp);
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpax_w_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpax_w_ph.c
new file mode 100644
index 0000000..514797c
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpax_w_ph.c
@@ -0,0 +1,44 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rs, rt;
+    int ach = 5, acl = 5;
+    int resulth, resultl;
+
+    rs     = 0x00FF00FF;
+    rt     = 0x00010002;
+    resulth = 0x05;
+    resultl = 0x0302;
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpax.w.ph $ac1, %2, %3\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         : "+r"(ach), "+r"(acl)
+         : "r"(rs), "r"(rt)
+        );
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+    ach = 6, acl = 7;
+    rs     = 0xFFFF00FF;
+    rt     = 0xFFFF0002;
+    resulth = 0x05;
+    resultl = 0xFFFFFF06;
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpax.w.ph $ac1, %2, %3\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         : "+r"(ach), "+r"(acl)
+         : "r"(rs), "r"(rt)
+        );
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dps_w_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dps_w_ph.c
new file mode 100644
index 0000000..f51f9b9
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dps_w_ph.c
@@ -0,0 +1,44 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rs, rt;
+    int ach = 5, acl = 5;
+    int resulth, resultl;
+
+    rs     = 0x00FF00FF;
+    rt     = 0x00010002;
+    resulth = 0x04;
+    resultl = 0xFFFFFD08;
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dps.w.ph $ac1, %2, %3\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         : "+r"(ach), "+r"(acl)
+         : "r"(rs), "r"(rt)
+        );
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+    ach = 6, acl = 7;
+    rs     = 0xFFFF00FF;
+    rt     = 0xFFFF0002;
+    resulth = 0x05;
+    resultl = 0xFFFFFE08;
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dps.w.ph $ac1, %2, %3\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         : "+r"(ach), "+r"(acl)
+         : "r"(rs), "r"(rt)
+        );
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpsqx_s_w_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpsqx_s_w_ph.c
new file mode 100644
index 0000000..e40543f
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpsqx_s_w_ph.c
@@ -0,0 +1,54 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rs, rt, dsp;
+    int ach = 5, acl = 5;
+    int resulth, resultl, resultdsp;
+
+    rs      = 0xBC0123AD;
+    rt      = 0x01643721;
+    resulth = 0x00000005;
+    resultl = 0x1CE5E09B;
+    resultdsp = 0x00;
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpsqx_s.w.ph $ac1, %3, %4\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "+r"(ach), "+r"(acl), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 17) & 0x01;
+    assert(dsp == resultdsp);
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+    ach = 0x99F13005;
+    acl = 0x51730062;
+    rs      = 0x80008000;
+    rt      = 0x80008000;
+
+    resulth = 0x99F13004;
+    resultl = 0x51730064;
+    resultdsp = 0x01;
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpsqx_s.w.ph $ac1, %3, %4\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "+r"(ach), "+r"(acl), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 17) & 0x01;
+    assert(dsp == resultdsp);
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpsqx_sa_w_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpsqx_sa_w_ph.c
new file mode 100644
index 0000000..7da278e
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpsqx_sa_w_ph.c
@@ -0,0 +1,53 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rs, rt, dsp;
+    int ach = 5, acl = 5;
+    int resulth, resultl, resultdsp;
+
+    rs = 0xBC0123AD;
+    rt = 0x01643721;
+    resulth = 0x00;
+    resultl = 0x7FFFFFFF;
+    resultdsp = 0x01;
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpsqx_sa.w.ph $ac1, %3, %4\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "+r"(ach), "+r"(acl), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 17) & 0x01;
+    assert(dsp == resultdsp);
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+    ach = 0x8c0b354A;
+    acl = 0xbbc02249;
+    rs = 0x800023AD;
+    rt = 0x01648000;
+    resulth = 0xffffffff;
+    resultl = 0x80000000;
+    resultdsp = 0x01;
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpsqx_sa.w.ph $ac1, %3, %4\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         "rddsp %2\n\t"
+         : "+r"(ach), "+r"(acl), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 17) & 0x01;
+    assert(dsp == resultdsp);
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpsx_w_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpsx_w_ph.c
new file mode 100644
index 0000000..bb49a40
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpsx_w_ph.c
@@ -0,0 +1,27 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rs, rt;
+    int ach = 5, acl = 5;
+    int resulth, resultl;
+
+    rs      = 0xBC0123AD;
+    rt      = 0x01643721;
+    resulth = 0x05;
+    resultl = 0xE72F050;
+    __asm
+        ("mthi  %0, $ac1\n\t"
+         "mtlo  %1, $ac1\n\t"
+         "dpsx.w.ph $ac1, %2, %3\n\t"
+         "mfhi  %0, $ac1\n\t"
+         "mflo  %1, $ac1\n\t"
+         : "+r"(ach), "+r"(acl)
+         : "r"(rs), "r"(rt)
+        );
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mul_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mul_ph.c
new file mode 100644
index 0000000..c7e9d60
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mul_ph.c
@@ -0,0 +1,47 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt, dsp;
+    int result, resultdsp;
+
+    rs = 0x03FB1234;
+    rt = 0x0BCC4321;
+    result = 0xF504F4B4;
+    resultdsp = 1;
+
+    __asm
+        ("mul.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 21) & 0x01;
+    assert(rd  == result);
+    assert(dsp == resultdsp);
+
+    dsp = 0;
+    __asm
+        ("wrdsp %0\n\t"
+         :
+         : "r"(dsp)
+        );
+
+    rs = 0x00210010;
+    rt = 0x00110005;
+    result = 0x2310050;
+    resultdsp = 0;
+
+    __asm
+        ("mul.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 21) & 0x01;
+    assert(rd  == result);
+    assert(dsp == resultdsp);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mul_s_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mul_s_ph.c
new file mode 100644
index 0000000..33da110
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mul_s_ph.c
@@ -0,0 +1,62 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt, dsp;
+    int result, resultdsp;
+
+    rs = 0x03FB1234;
+    rt = 0x0BCC4321;
+    result = 0x7fff7FFF;
+    resultdsp = 1;
+
+    __asm
+        ("mul_s.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 21) & 0x01;
+    assert(rd  == result);
+    assert(dsp == resultdsp);
+
+    rs = 0x7fffff00;
+    rt = 0xff007fff;
+    result = 0x80008000;
+    resultdsp = 1;
+
+    __asm
+        ("mul_s.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 21) & 0x01;
+    assert(rd  == result);
+    assert(dsp == resultdsp);
+
+    dsp = 0;
+    __asm
+        ("wrdsp %0\n\t"
+         :
+         : "r"(dsp)
+        );
+
+    rs = 0x00320001;
+    rt = 0x00210002;
+    result = 0x06720002;
+    resultdsp = 0;
+
+    __asm
+        ("mul_s.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 21) & 0x01;
+    assert(rd  == result);
+    assert(dsp == resultdsp);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mulq_rs_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mulq_rs_w.c
new file mode 100644
index 0000000..7ba633b
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mulq_rs_w.c
@@ -0,0 +1,36 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt, dsp;
+    int result, resultdsp;
+
+    rs = 0x80001234;
+    rt = 0x80004321;
+    result = 0x7FFFAAAB;
+
+    __asm
+        ("mulq_rs.w %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(rd  == result);
+
+    rs = 0x80000000;
+    rt = 0x80000000;
+    result = 0x7FFFFFFF;
+    resultdsp = 1;
+
+    __asm
+        ("mulq_rs.w %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 21) & 0x01;
+    assert(rd  == result);
+    assert(dsp == resultdsp);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mulq_s_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mulq_s_ph.c
new file mode 100644
index 0000000..00e0155
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mulq_s_ph.c
@@ -0,0 +1,40 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt, dsp;
+    int result, resultdsp;
+
+    rs = 0x80000000;
+    rt = 0x0ffc0000;
+    result = 0xF0040000;
+    resultdsp = 0;
+
+    __asm
+        ("mulq_s.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 21) & 0x01;
+    assert(rd  == result);
+    assert(dsp == resultdsp);
+
+    rs = 0x80001234;
+    rt = 0x80004321;
+    result = 0x7FFF098B;
+    resultdsp = 1;
+
+    __asm
+        ("mulq_s.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 21) & 0x01;
+    assert(rd  == result);
+    assert(dsp == resultdsp);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mulq_s_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mulq_s_w.c
new file mode 100644
index 0000000..9c2be06
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mulq_s_w.c
@@ -0,0 +1,36 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt, dsp;
+    int result, resultdsp;
+
+    rs = 0x80001234;
+    rt = 0x80004321;
+    result = 0x7FFFAAAB;
+
+    __asm
+        ("mulq_s.w %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(rd  == result);
+
+    rs = 0x80000000;
+    rt = 0x80000000;
+    result = 0x7FFFFFFF;
+    resultdsp = 1;
+
+    __asm
+        ("mulq_s.w %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 21) & 0x01;
+    assert(rd  == result);
+    assert(dsp == resultdsp);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mulsa_w_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mulsa_w_ph.c
new file mode 100644
index 0000000..a694093
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mulsa_w_ph.c
@@ -0,0 +1,29 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rs, rt, ach, acl;
+    int resulth, resultl;
+
+    ach = 0x05;
+    acl = 0x00BBDDCC;
+    rs = 0x80001234;
+    rt = 0x80004321;
+    resulth = 0x05;
+    resultl = 0x3BF5E918;
+
+    __asm
+        ("mthi %0, $ac1\n\t"
+         "mtlo %1, $ac1\n\t"
+         "mulsa.w.ph $ac1, %2, %3\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "+r"(ach), "+r"(acl)
+         : "r"(rs), "r"(rt)
+        );
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mulsaq_s_w_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mulsaq_s_w_ph.c
new file mode 100644
index 0000000..06c91a4
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mulsaq_s_w_ph.c
@@ -0,0 +1,29 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rs, rt, ach, acl;
+    int resulth, resultl;
+
+    ach = 0x05;
+    acl = 0x00BBDDCC;
+    rs = 0x80001234;
+    rt = 0x80004321;
+    resulth = 0x05;
+    resultl = 0x772ff463;
+
+    __asm
+        ("mthi %0, $ac1\n\t"
+         "mtlo %1, $ac1\n\t"
+         "mulsaq_s.w.ph $ac1, %2, %3\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "+r"(ach), "+r"(acl)
+         : "r"(rs), "r"(rt)
+        );
+    assert(ach == resulth);
+    assert(acl == resultl);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_precr_qb_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_precr_qb_ph.c
new file mode 100644
index 0000000..3a2b3fd
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_precr_qb_ph.c
@@ -0,0 +1,21 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int result;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result = 0x34786521;
+
+    __asm
+        ("precr.qb.ph %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(result == rd);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_precr_sra_ph_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_precr_sra_ph_w.c
new file mode 100644
index 0000000..5c9baab
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_precr_sra_ph_w.c
@@ -0,0 +1,32 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rs, rt;
+    int result;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result = 0x43215678;
+
+    __asm
+        ("precr_sra.ph.w %0, %1, 0x00\n\t"
+         : "+r"(rt)
+         : "r"(rs)
+        );
+    assert(result == rt);
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result = 0xFFFF0000;
+
+    __asm
+        ("precr_sra.ph.w %0, %1, 0x1F\n\t"
+         : "+r"(rt)
+         : "r"(rs)
+        );
+    assert(result == rt);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_precr_sra_r_ph_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_precr_sra_r_ph_w.c
new file mode 100644
index 0000000..6474a10
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_precr_sra_r_ph_w.c
@@ -0,0 +1,32 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rs, rt;
+    int result;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result = 0x43215678;
+
+    __asm
+        ("precr_sra_r.ph.w %0, %1, 0x00\n\t"
+         : "+r"(rt)
+         : "r"(rs)
+        );
+    assert(result == rt);
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result = 0xFFFF0000;
+
+    __asm
+        ("precr_sra_r.ph.w %0, %1, 0x1F\n\t"
+         : "+r"(rt)
+         : "r"(rs)
+        );
+    assert(result == rt);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_prepend.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_prepend.c
new file mode 100644
index 0000000..f6bcd47
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_prepend.c
@@ -0,0 +1,30 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rs, rt;
+    int result;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result = 0x87654321;
+    __asm
+        ("prepend %0, %1, 0x00\n\t"
+         : "+r"(rt)
+         : "r"(rs)
+        );
+    assert(rt == result);
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result = 0xACF10ECA;
+    __asm
+        ("prepend %0, %1, 0x0F\n\t"
+         : "+r"(rt)
+         : "r"(rs)
+        );
+    assert(rt == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shra_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shra_qb.c
new file mode 100644
index 0000000..48193de
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shra_qb.c
@@ -0,0 +1,30 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rt;
+    int result;
+
+    rt = 0x12345678;
+    result = 0x02060A0F;
+
+    __asm
+        ("shra.qb %0, %1, 0x03\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    assert(rd == result);
+
+    rt = 0x87654321;
+    result = 0xF00C0804;
+
+    __asm
+        ("shra.qb %0, %1, 0x03\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shra_r_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shra_r_qb.c
new file mode 100644
index 0000000..29afa0e
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shra_r_qb.c
@@ -0,0 +1,30 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rt;
+    int result;
+
+    rt = 0x12345678;
+    result = 0x02070B0F;
+
+    __asm
+        ("shra_r.qb %0, %1, 0x03\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    assert(rd == result);
+
+    rt = 0x87654321;
+    result = 0xF10D0804;
+
+    __asm
+        ("shra_r.qb %0, %1, 0x03\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shrav_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shrav_qb.c
new file mode 100644
index 0000000..b21e1b7
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shrav_qb.c
@@ -0,0 +1,32 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int result;
+
+    rs = 0x03;
+    rt = 0x12345678;
+    result = 0x02060A0F;
+
+    __asm
+        ("shrav.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rt), "r"(rs)
+        );
+    assert(rd == result);
+
+    rs = 0x03;
+    rt = 0x87654321;
+    result = 0xF00C0804;
+
+    __asm
+        ("shrav.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rt), "r"(rs)
+        );
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shrav_r_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shrav_r_qb.c
new file mode 100644
index 0000000..9ea8aa0
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shrav_r_qb.c
@@ -0,0 +1,32 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int result;
+
+    rs = 0x03;
+    rt = 0x12345678;
+    result = 0x02070B0F;
+
+    __asm
+        ("shrav_r.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rt), "r"(rs)
+        );
+    assert(rd == result);
+
+    rs = 0x03;
+    rt = 0x87654321;
+    result = 0xF10D0804;
+
+    __asm
+        ("shrav_r.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rt), "r"(rs)
+        );
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shrl_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shrl_ph.c
new file mode 100644
index 0000000..724b9a7
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shrl_ph.c
@@ -0,0 +1,20 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rt;
+    int result;
+
+    rt     = 0x12345678;
+    result = 0x009102B3;
+
+    __asm
+        ("shrl.ph %0, %1, 0x05\n\t"
+         : "=r"(rd)
+         : "r"(rt)
+        );
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shrlv_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shrlv_ph.c
new file mode 100644
index 0000000..ac79aa6
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shrlv_ph.c
@@ -0,0 +1,21 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int result;
+
+    rs     = 0x05;
+    rt     = 0x12345678;
+    result = 0x009102B3;
+
+    __asm
+        ("shrlv.ph %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rt), "r"(rs)
+        );
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subqh_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subqh_ph.c
new file mode 100644
index 0000000..dbc0967
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subqh_ph.c
@@ -0,0 +1,21 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int result;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result = 0x456709AB;
+
+    __asm
+        ("subqh.ph %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subqh_r_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subqh_r_ph.c
new file mode 100644
index 0000000..24ef0f1
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subqh_r_ph.c
@@ -0,0 +1,21 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int result;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result = 0x456809AC;
+
+    __asm
+        ("subqh_r.ph %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subqh_r_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subqh_r_w.c
new file mode 100644
index 0000000..d460f86
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subqh_r_w.c
@@ -0,0 +1,21 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int result;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result = 0x456789AC;
+
+    __asm
+        ("subqh_r.w %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subqh_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subqh_w.c
new file mode 100644
index 0000000..42be3de
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subqh_w.c
@@ -0,0 +1,21 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int result;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result = 0x456789AB;
+
+    __asm
+        ("subqh.w %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subu_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subu_ph.c
new file mode 100644
index 0000000..0d39a01
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subu_ph.c
@@ -0,0 +1,40 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt, dsp;
+    int result, resultdsp;
+
+    rs = 0x87654321;
+    rt = 0x11111111;
+    result    = 0x76543210;
+    resultdsp = 0x00;
+
+    __asm
+        ("subu.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 20) & 0x01;
+    assert(dsp == resultdsp);
+    assert(rd  == result);
+
+    rs = 0x87654321;
+    rt = 0x12345678;
+    result    = 0x7531ECA9;
+    resultdsp = 0x01;
+
+    __asm
+        ("subu.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 20) & 0x01;
+    assert(dsp == resultdsp);
+    assert(rd  == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subu_s_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subu_s_ph.c
new file mode 100644
index 0000000..8e4da4f
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subu_s_ph.c
@@ -0,0 +1,25 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt, dsp;
+    int result, resultdsp;
+
+    rs = 0x87654321;
+    rt = 0x12345678;
+    result    = 0x75310000;
+    resultdsp = 0x01;
+
+    __asm
+        ("subu_s.ph %0, %2, %3\n\t"
+         "rddsp %1\n\t"
+         : "=r"(rd), "=r"(dsp)
+         : "r"(rs), "r"(rt)
+        );
+    dsp = (dsp >> 20) & 0x01;
+    assert(dsp == resultdsp);
+    assert(rd  == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subuh_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subuh_qb.c
new file mode 100644
index 0000000..92cfc76
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subuh_qb.c
@@ -0,0 +1,21 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int result;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result = 0xC5E7092B;
+
+    __asm
+        ("subuh.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subuh_r_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subuh_r_qb.c
new file mode 100644
index 0000000..dac81d4
--- /dev/null
+++ b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subuh_r_qb.c
@@ -0,0 +1,32 @@
+#include<stdio.h>
+#include<assert.h>
+
+int main()
+{
+    int rd, rs, rt;
+    int result;
+
+    rs = 0x12345678;
+    rt = 0x87654321;
+    result = 0xC6E80A2C;
+
+    __asm
+        ("subuh_r.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(rd == result);
+
+    rs = 0xBEFC292A;
+    rt = 0x9205C1B4;
+    result = 0x167cb4bb;
+
+    __asm
+        ("subuh_r.qb %0, %1, %2\n\t"
+         : "=r"(rd)
+         : "r"(rs), "r"(rt)
+        );
+    assert(rd == result);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/isa/r5900/test_r5900_div1.c b/tests/tcg/mips/user/isa/r5900/test_r5900_div1.c
new file mode 100644
index 0000000..83dafa0
--- /dev/null
+++ b/tests/tcg/mips/user/isa/r5900/test_r5900_div1.c
@@ -0,0 +1,73 @@
+/*
+ * Test R5900-specific DIV1.
+ */
+
+#include <stdio.h>
+#include <inttypes.h>
+#include <assert.h>
+
+struct quotient_remainder { int32_t quotient, remainder; };
+
+static struct quotient_remainder div1(int32_t rs, int32_t rt)
+{
+    int32_t lo, hi;
+
+    __asm__ __volatile__ (
+            "    div1 $0, %2, %3\n"
+            "    mflo1 %0\n"
+            "    mfhi1 %1\n"
+            : "=r" (lo), "=r" (hi)
+            : "r" (rs), "r" (rt));
+
+    assert(rs / rt == lo);
+    assert(rs % rt == hi);
+
+    return (struct quotient_remainder) { .quotient = lo, .remainder = hi };
+}
+
+static void verify_div1(int32_t rs, int32_t rt,
+                        int32_t expected_quotient,
+                        int32_t expected_remainder)
+{
+    struct quotient_remainder qr = div1(rs, rt);
+
+    assert(qr.quotient == expected_quotient);
+    assert(qr.remainder == expected_remainder);
+}
+
+static void verify_div1_negations(int32_t rs, int32_t rt,
+                                  int32_t expected_quotient,
+                                  int32_t expected_remainder)
+{
+    verify_div1(rs, rt, expected_quotient, expected_remainder);
+    verify_div1(rs, -rt, -expected_quotient, expected_remainder);
+    verify_div1(-rs, rt, -expected_quotient, -expected_remainder);
+    verify_div1(-rs, -rt, expected_quotient, -expected_remainder);
+}
+
+int main()
+{
+    verify_div1_negations(0, 1, 0, 0);
+    verify_div1_negations(1, 1, 1, 0);
+    verify_div1_negations(1, 2, 0, 1);
+    verify_div1_negations(17, 19, 0, 17);
+    verify_div1_negations(19, 17, 1, 2);
+    verify_div1_negations(77773, 101, 770, 3);
+
+    verify_div1(-0x80000000,  1, -0x80000000, 0);
+
+    /*
+     * Supplementary explanation from the Toshiba TX System RISC TX79 Core
+     * Architecture manual, A-38 and B-7, https://wiki.qemu.org/File:C790.pdf
+     *
+     * Normally, when 0x80000000 (-2147483648) the signed minimum value is
+     * divided by 0xFFFFFFFF (-1), the operation will result in an overflow.
+     * However, in this instruction an overflow exception doesn't occur and
+     * the result will be as follows:
+     *
+     * Quotient is 0x80000000 (-2147483648), and remainder is 0x00000000 (0).
+     */
+    verify_div1(-0x80000000, -1, -0x80000000, 0);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/isa/r5900/test_r5900_divu1.c b/tests/tcg/mips/user/isa/r5900/test_r5900_divu1.c
new file mode 100644
index 0000000..72aeed3
--- /dev/null
+++ b/tests/tcg/mips/user/isa/r5900/test_r5900_divu1.c
@@ -0,0 +1,48 @@
+/*
+ * Test R5900-specific DIVU1.
+ */
+
+#include <stdio.h>
+#include <inttypes.h>
+#include <assert.h>
+
+struct quotient_remainder { uint32_t quotient, remainder; };
+
+static struct quotient_remainder divu1(uint32_t rs, uint32_t rt)
+{
+    uint32_t lo, hi;
+
+    __asm__ __volatile__ (
+            "    divu1 $0, %2, %3\n"
+            "    mflo1 %0\n"
+            "    mfhi1 %1\n"
+            : "=r" (lo), "=r" (hi)
+            : "r" (rs), "r" (rt));
+
+    assert(rs / rt == lo);
+    assert(rs % rt == hi);
+
+    return (struct quotient_remainder) { .quotient = lo, .remainder = hi };
+}
+
+static void verify_divu1(uint32_t rs, uint32_t rt,
+                         uint32_t expected_quotient,
+                         uint32_t expected_remainder)
+{
+    struct quotient_remainder qr = divu1(rs, rt);
+
+    assert(qr.quotient == expected_quotient);
+    assert(qr.remainder == expected_remainder);
+}
+
+int main()
+{
+    verify_divu1(0, 1, 0, 0);
+    verify_divu1(1, 1, 1, 0);
+    verify_divu1(1, 2, 0, 1);
+    verify_divu1(17, 19, 0, 17);
+    verify_divu1(19, 17, 1, 2);
+    verify_divu1(77773, 101, 770, 3);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/isa/r5900/test_r5900_mflohi1.c b/tests/tcg/mips/user/isa/r5900/test_r5900_mflohi1.c
new file mode 100644
index 0000000..eed3683
--- /dev/null
+++ b/tests/tcg/mips/user/isa/r5900/test_r5900_mflohi1.c
@@ -0,0 +1,35 @@
+/*
+ * Test R5900-specific MFLO1 and MFHI1.
+ */
+
+#include <stdio.h>
+#include <inttypes.h>
+#include <assert.h>
+
+int main()
+{
+    int32_t rs  = 12207031, rt  = 305175781;
+    int32_t rs1 = 32452867, rt1 = 49979687;
+    int64_t lo, hi, lo1, hi1;
+    int64_t r, r1;
+
+    /* Test both LO/HI and LO1/HI1 to verify separation. */
+    __asm__ __volatile__ (
+            "    mult $0, %4, %5\n"
+            "    mult1 $0, %6, %7\n"
+            "    mflo %0\n"
+            "    mfhi %1\n"
+            "    mflo1 %2\n"
+            "    mfhi1 %3\n"
+            : "=r" (lo),  "=r" (hi),
+              "=r" (lo1), "=r" (hi1)
+            : "r" (rs),  "r" (rt),
+              "r" (rs1), "r" (rt1));
+    r  = ((int64_t)hi  << 32) | (uint32_t)lo;
+    r1 = ((int64_t)hi1 << 32) | (uint32_t)lo1;
+
+    assert(r  == 3725290219116211);
+    assert(r1 == 1621984134912629);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/isa/r5900/test_r5900_mtlohi1.c b/tests/tcg/mips/user/isa/r5900/test_r5900_mtlohi1.c
new file mode 100644
index 0000000..7f3e728
--- /dev/null
+++ b/tests/tcg/mips/user/isa/r5900/test_r5900_mtlohi1.c
@@ -0,0 +1,40 @@
+/*
+ * Test R5900-specific MTLO1 and MTHI1.
+ */
+
+#include <stdio.h>
+#include <inttypes.h>
+#include <assert.h>
+
+int main()
+{
+    int32_t tlo  = 12207031, thi  = 305175781;
+    int32_t tlo1 = 32452867, thi1 = 49979687;
+    int32_t flo, fhi, flo1, fhi1;
+
+    /* Test both LO/HI and LO1/HI1 to verify separation. */
+    __asm__ __volatile__ (
+            "    mtlo  %4\n"
+            "    mthi  %5\n"
+            "    mtlo1 %6\n"
+            "    mthi1 %7\n"
+            "    move  %0, $0\n"
+            "    move  %1, $0\n"
+            "    move  %2, $0\n"
+            "    move  %3, $0\n"
+            "    mflo  %0\n"
+            "    mfhi  %1\n"
+            "    mflo1 %2\n"
+            "    mfhi1 %3\n"
+            : "=r" (flo),  "=r" (fhi),
+              "=r" (flo1), "=r" (fhi1)
+            : "r" (tlo),  "r" (thi),
+              "r" (tlo1), "r" (thi1));
+
+    assert(flo  == 12207031);
+    assert(fhi  == 305175781);
+    assert(flo1 == 32452867);
+    assert(fhi1 == 49979687);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/isa/r5900/test_r5900_mult.c b/tests/tcg/mips/user/isa/r5900/test_r5900_mult.c
new file mode 100644
index 0000000..5710b39
--- /dev/null
+++ b/tests/tcg/mips/user/isa/r5900/test_r5900_mult.c
@@ -0,0 +1,76 @@
+/*
+ * Test R5900-specific three-operand MULT and MULT1.
+ */
+
+#include <stdio.h>
+#include <inttypes.h>
+#include <assert.h>
+
+static int64_t mult(int32_t rs, int32_t rt)
+{
+    int32_t rd, lo, hi;
+    int64_t r;
+
+    __asm__ __volatile__ (
+            "    mult %0, %3, %4\n"
+            "    mflo %1\n"
+            "    mfhi %2\n"
+            : "=r" (rd), "=r" (lo), "=r" (hi)
+            : "r" (rs), "r" (rt));
+    r = ((int64_t)hi << 32) | (uint32_t)lo;
+
+    assert((int64_t)rs * rt == r);
+    assert(rd == lo);
+
+    return r;
+}
+
+static int64_t mult1(int32_t rs, int32_t rt)
+{
+    int32_t rd, lo, hi;
+    int64_t r;
+
+    __asm__ __volatile__ (
+            "    mult1 %0, %3, %4\n"
+            "    mflo1 %1\n"
+            "    mfhi1 %2\n"
+            : "=r" (rd), "=r" (lo), "=r" (hi)
+            : "r" (rs), "r" (rt));
+    r = ((int64_t)hi << 32) | (uint32_t)lo;
+
+    assert((int64_t)rs * rt == r);
+    assert(rd == lo);
+
+    return r;
+}
+
+static int64_t mult_variants(int32_t rs, int32_t rt)
+{
+    int64_t rd  = mult(rs, rt);
+    int64_t rd1 = mult1(rs, rt);
+
+    assert(rd == rd1);
+
+    return rd;
+}
+
+static void verify_mult_negations(int32_t rs, int32_t rt, int64_t expected)
+{
+    assert(mult_variants(rs, rt) == expected);
+    assert(mult_variants(-rs, rt) == -expected);
+    assert(mult_variants(rs, -rt) == -expected);
+    assert(mult_variants(-rs, -rt) == expected);
+}
+
+int main()
+{
+    verify_mult_negations(17, 19, 323);
+    verify_mult_negations(77773, 99991, 7776600043);
+    verify_mult_negations(12207031, 305175781, 3725290219116211);
+
+    assert(mult_variants(-0x80000000,  0x7FFFFFFF) == -0x3FFFFFFF80000000);
+    assert(mult_variants(-0x80000000, -0x7FFFFFFF) ==  0x3FFFFFFF80000000);
+    assert(mult_variants(-0x80000000, -0x80000000) ==  0x4000000000000000);
+
+    return 0;
+}
diff --git a/tests/tcg/mips/user/isa/r5900/test_r5900_multu.c b/tests/tcg/mips/user/isa/r5900/test_r5900_multu.c
new file mode 100644
index 0000000..f043904
--- /dev/null
+++ b/tests/tcg/mips/user/isa/r5900/test_r5900_multu.c
@@ -0,0 +1,68 @@
+/*
+ * Test R5900-specific three-operand MULTU and MULTU1.
+ */
+
+#include <stdio.h>
+#include <inttypes.h>
+#include <assert.h>
+
+static uint64_t multu(uint32_t rs, uint32_t rt)
+{
+    uint32_t rd, lo, hi;
+    uint64_t r;
+
+    __asm__ __volatile__ (
+            "    multu %0, %3, %4\n"
+            "    mflo %1\n"
+            "    mfhi %2\n"
+            : "=r" (rd), "=r" (lo), "=r" (hi)
+            : "r" (rs), "r" (rt));
+    r = ((uint64_t)hi << 32) | (uint32_t)lo;
+
+    assert((uint64_t)rs * rt == r);
+    assert(rd == lo);
+
+    return r;
+}
+
+static uint64_t multu1(uint32_t rs, uint32_t rt)
+{
+    uint32_t rd, lo, hi;
+    uint64_t r;
+
+    __asm__ __volatile__ (
+            "    multu1 %0, %3, %4\n"
+            "    mflo1 %1\n"
+            "    mfhi1 %2\n"
+            : "=r" (rd), "=r" (lo), "=r" (hi)
+            : "r" (rs), "r" (rt));
+    r = ((uint64_t)hi << 32) | (uint32_t)lo;
+
+    assert((uint64_t)rs * rt == r);
+    assert(rd == lo);
+
+    return r;
+}
+
+static uint64_t multu_variants(uint32_t rs, uint32_t rt)
+{
+    uint64_t rd  = multu(rs, rt);
+    uint64_t rd1 = multu1(rs, rt);
+
+    assert(rd == rd1);
+
+    return rd;
+}
+
+int main()
+{
+    assert(multu_variants(17, 19) == 323);
+    assert(multu_variants(77773, 99991) == 7776600043);
+    assert(multu_variants(12207031, 305175781) == 3725290219116211);
+
+    assert(multu_variants(0x80000000U, 0x7FFFFFFF) == 0x3FFFFFFF80000000);
+    assert(multu_variants(0x80000000U, 0x80000000U) ==  0x4000000000000000);
+    assert(multu_variants(0xFFFFFFFFU, 0xFFFFFFFFU) ==  0xFFFFFFFE00000001U);
+
+    return 0;
+}
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [Qemu-devel] [PATCH 2/2] tests: tcg: mips: Remove old directories after reorganization
  2018-12-27 13:12 [Qemu-devel] [PATCH 0/2] tests: Reorganize MIPS TCG directories and files Aleksandar Markovic
  2018-12-27 13:12 ` [Qemu-devel] [PATCH 1/2] tests: tcg: mips: Move source files to new location Aleksandar Markovic
@ 2018-12-27 13:13 ` Aleksandar Markovic
  2018-12-27 22:02 ` [Qemu-devel] [PATCH 0/2] tests: Reorganize MIPS TCG directories and files Philippe Mathieu-Daudé
  2019-01-03 20:06 ` Eric Blake
  3 siblings, 0 replies; 10+ messages in thread
From: Aleksandar Markovic @ 2018-12-27 13:13 UTC (permalink / raw)
  To: qemu-devel; +Cc: alex.bennee, noring, aurelien, amarkovic, smarkovic, arikalo

From: Aleksandar Markovic <amarkovic@wavecomp.com>

Remove old directories after reorganization of MIPS TCG tests.

Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
---
 tests/tcg/mips/mips32-dsp/Makefile        | 136 -------------
 tests/tcg/mips/mips32-dspr2/Makefile      |  71 -------
 tests/tcg/mips/mips64-dsp/Makefile        | 306 ------------------------------
 tests/tcg/mips/mips64-dsp/head.S          |  16 --
 tests/tcg/mips/mips64-dsp/io.h            |  22 ---
 tests/tcg/mips/mips64-dsp/mips_boot.lds   |  31 ---
 tests/tcg/mips/mips64-dspr2/.directory    |   2 -
 tests/tcg/mips/mips64-dspr2/Makefile      | 116 -----------
 tests/tcg/mips/mips64-dspr2/head.S        |  16 --
 tests/tcg/mips/mips64-dspr2/io.h          |  22 ---
 tests/tcg/mips/mips64-dspr2/mips_boot.lds |  31 ---
 tests/tcg/mips/mipsr5900/Makefile         |  30 ---
 12 files changed, 799 deletions(-)
 delete mode 100644 tests/tcg/mips/mips32-dsp/Makefile
 delete mode 100644 tests/tcg/mips/mips32-dspr2/Makefile
 delete mode 100644 tests/tcg/mips/mips64-dsp/Makefile
 delete mode 100644 tests/tcg/mips/mips64-dsp/head.S
 delete mode 100644 tests/tcg/mips/mips64-dsp/io.h
 delete mode 100644 tests/tcg/mips/mips64-dsp/mips_boot.lds
 delete mode 100644 tests/tcg/mips/mips64-dspr2/.directory
 delete mode 100644 tests/tcg/mips/mips64-dspr2/Makefile
 delete mode 100644 tests/tcg/mips/mips64-dspr2/head.S
 delete mode 100644 tests/tcg/mips/mips64-dspr2/io.h
 delete mode 100644 tests/tcg/mips/mips64-dspr2/mips_boot.lds
 delete mode 100644 tests/tcg/mips/mipsr5900/Makefile

diff --git a/tests/tcg/mips/mips32-dsp/Makefile b/tests/tcg/mips/mips32-dsp/Makefile
deleted file mode 100644
index c3a0a00..0000000
--- a/tests/tcg/mips/mips32-dsp/Makefile
+++ /dev/null
@@ -1,136 +0,0 @@
--include ../../config-host.mak
-
-CROSS=mips64el-unknown-linux-gnu-
-
-SIM=qemu-mipsel
-SIM_FLAGS=-cpu 74Kf
-
-CC      = $(CROSS)gcc
-CFLAGS  = -mabi=32 -march=mips32r2 -mgp32 -mdsp -static
-
-TESTCASES = absq_s_ph.tst
-TESTCASES += absq_s_w.tst
-TESTCASES += addq_ph.tst
-TESTCASES += addq_s_ph.tst
-TESTCASES += addq_s_w.tst
-TESTCASES += addsc.tst
-TESTCASES += addu_qb.tst
-TESTCASES += addu_s_qb.tst
-TESTCASES += addwc.tst
-TESTCASES += bitrev.tst
-TESTCASES += bposge32.tst
-TESTCASES += cmp_eq_ph.tst
-TESTCASES += cmpgu_eq_qb.tst
-TESTCASES += cmpgu_le_qb.tst
-TESTCASES += cmpgu_lt_qb.tst
-TESTCASES += cmp_le_ph.tst
-TESTCASES += cmp_lt_ph.tst
-TESTCASES += cmpu_eq_qb.tst
-TESTCASES += cmpu_le_qb.tst
-TESTCASES += cmpu_lt_qb.tst
-TESTCASES += dpaq_sa_l_w.tst
-TESTCASES += dpaq_s_w_ph.tst
-TESTCASES += dpau_h_qbl.tst
-TESTCASES += dpau_h_qbr.tst
-TESTCASES += dpsq_sa_l_w.tst
-TESTCASES += dpsq_s_w_ph.tst
-TESTCASES += dpsu_h_qbl.tst
-TESTCASES += dpsu_h_qbr.tst
-TESTCASES += extp.tst
-TESTCASES += extpdp.tst
-TESTCASES += extpdpv.tst
-TESTCASES += extpv.tst
-TESTCASES += extr_rs_w.tst
-TESTCASES += extr_r_w.tst
-TESTCASES += extr_s_h.tst
-TESTCASES += extrv_rs_w.tst
-TESTCASES += extrv_r_w.tst
-TESTCASES += extrv_s_h.tst
-TESTCASES += extrv_w.tst
-TESTCASES += extr_w.tst
-TESTCASES += insv.tst
-TESTCASES += lbux.tst
-TESTCASES += lhx.tst
-TESTCASES += lwx.tst
-TESTCASES += madd.tst
-TESTCASES += maddu.tst
-TESTCASES += maq_sa_w_phl.tst
-TESTCASES += maq_sa_w_phr.tst
-TESTCASES += maq_s_w_phl.tst
-TESTCASES += maq_s_w_phr.tst
-TESTCASES += mfhi.tst
-TESTCASES += mflo.tst
-TESTCASES += modsub.tst
-TESTCASES += msub.tst
-TESTCASES += msubu.tst
-TESTCASES += mthi.tst
-TESTCASES += mthlip.tst
-TESTCASES += mtlo.tst
-TESTCASES += muleq_s_w_phl.tst
-TESTCASES += muleq_s_w_phr.tst
-TESTCASES += muleu_s_ph_qbl.tst
-TESTCASES += muleu_s_ph_qbr.tst
-TESTCASES += mulq_rs_ph.tst
-TESTCASES += mult.tst
-TESTCASES += multu.tst
-TESTCASES += packrl_ph.tst
-TESTCASES += pick_ph.tst
-TESTCASES += pick_qb.tst
-TESTCASES += precequ_ph_qbla.tst
-TESTCASES += precequ_ph_qbl.tst
-TESTCASES += precequ_ph_qbra.tst
-TESTCASES += precequ_ph_qbr.tst
-TESTCASES += preceq_w_phl.tst
-TESTCASES += preceq_w_phr.tst
-TESTCASES += preceu_ph_qbla.tst
-TESTCASES += preceu_ph_qbl.tst
-TESTCASES += preceu_ph_qbra.tst
-TESTCASES += preceu_ph_qbr.tst
-TESTCASES += precrq_ph_w.tst
-TESTCASES += precrq_qb_ph.tst
-TESTCASES += precrq_rs_ph_w.tst
-TESTCASES += precrqu_s_qb_ph.tst
-TESTCASES += raddu_w_qb.tst
-TESTCASES += rddsp.tst
-TESTCASES += repl_ph.tst
-TESTCASES += repl_qb.tst
-TESTCASES += replv_ph.tst
-TESTCASES += replv_qb.tst
-TESTCASES += shilo.tst
-TESTCASES += shilov.tst
-TESTCASES += shll_ph.tst
-TESTCASES += shll_qb.tst
-TESTCASES += shll_s_ph.tst
-TESTCASES += shll_s_w.tst
-TESTCASES += shllv_ph.tst
-TESTCASES += shllv_qb.tst
-TESTCASES += shllv_s_ph.tst
-TESTCASES += shllv_s_w.tst
-TESTCASES += shra_ph.tst
-TESTCASES += shra_r_ph.tst
-TESTCASES += shra_r_w.tst
-TESTCASES += shrav_ph.tst
-TESTCASES += shrav_r_ph.tst
-TESTCASES += shrav_r_w.tst
-TESTCASES += shrl_qb.tst
-TESTCASES += shrlv_qb.tst
-TESTCASES += subq_ph.tst
-TESTCASES += subq_s_ph.tst
-TESTCASES += subq_s_w.tst
-TESTCASES += subu_qb.tst
-TESTCASES += subu_s_qb.tst
-TESTCASES += wrdsp.tst
-
-all: $(TESTCASES)
-
-%.tst: %.c
-	$(CC) $(CFLAGS) $< -o $@
-
-check: $(TESTCASES)
-	@for case in $(TESTCASES); do \
-        echo $(SIM) $(SIM_FLAGS) ./$$case;\
-        $(SIM) $(SIM_FLAGS) ./$$case; \
-	done
-
-clean:
-	$(RM) -rf $(TESTCASES)
diff --git a/tests/tcg/mips/mips32-dspr2/Makefile b/tests/tcg/mips/mips32-dspr2/Makefile
deleted file mode 100644
index ed19581..0000000
--- a/tests/tcg/mips/mips32-dspr2/Makefile
+++ /dev/null
@@ -1,71 +0,0 @@
--include ../../config-host.mak
-
-CROSS=mips64el-unknown-linux-gnu-
-
-SIM=qemu-mipsel
-SIM_FLAGS=-cpu 74Kf
-
-CC      = $(CROSS)gcc
-CFLAGS  = -mabi=32 -march=mips32r2 -mgp32 -mdspr2 -static
-
-TESTCASES = absq_s_qb.tst
-TESTCASES += addqh_ph.tst
-TESTCASES += addqh_r_ph.tst
-TESTCASES += addqh_r_w.tst
-TESTCASES += addqh_w.tst
-TESTCASES += adduh_qb.tst
-TESTCASES += adduh_r_qb.tst
-TESTCASES += addu_ph.tst
-TESTCASES += addu_s_ph.tst
-TESTCASES += append.tst
-TESTCASES += balign.tst
-TESTCASES += cmpgdu_eq_qb.tst
-TESTCASES += cmpgdu_le_qb.tst
-TESTCASES += cmpgdu_lt_qb.tst
-TESTCASES += dpaqx_sa_w_ph.tst
-TESTCASES += dpa_w_ph.tst
-TESTCASES += dpax_w_ph.tst
-TESTCASES += dpaqx_s_w_ph.tst
-TESTCASES += dpsqx_sa_w_ph.tst
-TESTCASES += dpsqx_s_w_ph.tst
-TESTCASES += dps_w_ph.tst
-TESTCASES += dpsx_w_ph.tst
-TESTCASES += mul_ph.tst
-TESTCASES += mulq_rs_w.tst
-TESTCASES += mulq_s_ph.tst
-TESTCASES += mulq_s_w.tst
-TESTCASES += mulsaq_s_w_ph.tst
-TESTCASES += mulsa_w_ph.tst
-TESTCASES += mul_s_ph.tst
-TESTCASES += precr_qb_ph.tst
-TESTCASES += precr_sra_ph_w.tst
-TESTCASES += precr_sra_r_ph_w.tst
-TESTCASES += prepend.tst
-TESTCASES += shra_qb.tst
-TESTCASES += shra_r_qb.tst
-TESTCASES += shrav_qb.tst
-TESTCASES += shrav_r_qb.tst
-TESTCASES += shrl_ph.tst
-TESTCASES += shrlv_ph.tst
-TESTCASES += subqh_ph.tst
-TESTCASES += subqh_r_ph.tst
-TESTCASES += subqh_r_w.tst
-TESTCASES += subqh_w.tst
-TESTCASES += subuh_qb.tst
-TESTCASES += subuh_r_qb.tst
-TESTCASES += subu_ph.tst
-TESTCASES += subu_s_ph.tst
-
-all: $(TESTCASES)
-
-%.tst: %.c
-	$(CC) $(CFLAGS) $< -o $@
-
-check: $(TESTCASES)
-	@for case in $(TESTCASES); do \
-        echo $(SIM) $(SIM_FLAGS) ./$$case;\
-		$(SIM) $(SIM_FLAGS) ./$$case; \
-	done
-
-clean:
-	$(RM) -rf $(TESTCASES)
diff --git a/tests/tcg/mips/mips64-dsp/Makefile b/tests/tcg/mips/mips64-dsp/Makefile
deleted file mode 100644
index b2ac6b3..0000000
--- a/tests/tcg/mips/mips64-dsp/Makefile
+++ /dev/null
@@ -1,306 +0,0 @@
-
-CROSS_COMPILE	?= mips64el-unknown-linux-gnu-
-
-SIM = qemu-system-mips64el
-SIMFLAGS = -nographic -cpu mips64dspr2 -kernel
-
-AS      = $(CROSS_COMPILE)as
-LD      = $(CROSS_COMPILE)ld
-CC      = $(CROSS_COMPILE)gcc
-AR      = $(CROSS_COMPILE)ar
-NM      = $(CROSS_COMPILE)nm
-STRIP       = $(CROSS_COMPILE)strip
-RANLIB      = $(CROSS_COMPILE)ranlib
-OBJCOPY     = $(CROSS_COMPILE)objcopy
-OBJDUMP     = $(CROSS_COMPILE)objdump
-
-VECTORS_OBJ ?= ./head.o ./printf.o
-
-HEAD_FLAGS ?= -nostdinc -mabi=64 -G 0 -mno-abicalls -fno-pic -pipe \
-              -msoft-float -march=mips64 -Wa,-mips64 -Wa,--trap \
-              -msym32 -DKBUILD_64BIT_SYM32 -I./
-
-CFLAGS ?= -nostdinc -mabi=64 -G 0 -mno-abicalls -fno-pic -fno-builtin  \
-          -pipe -march=mips64r2 -mgp64 -mdsp -static -Wa,--trap -msym32 \
-          -DKBUILD_64BIT_SYM32 -I./
-
-LDFLAGS = -T./mips_boot.lds -L./
-FLAGS = -nostdlib -mabi=64 -march=mips64r2 -mgp64 -mdsp
-
-
-#TESTCASES = absq_s_ob.tst
-TESTCASES = absq_s_ph.tst
-TESTCASES += absq_s_pw.tst
-TESTCASES += absq_s_qh.tst
-TESTCASES += absq_s_w.tst
-TESTCASES += addq_ph.tst
-TESTCASES += addq_pw.tst
-TESTCASES += addq_qh.tst
-TESTCASES += addq_s_ph.tst
-TESTCASES += addq_s_pw.tst
-TESTCASES += addq_s_qh.tst
-TESTCASES += addq_s_w.tst
-TESTCASES += addsc.tst
-TESTCASES += addu_ob.tst
-TESTCASES += addu_qb.tst
-TESTCASES += addu_s_ob.tst
-TESTCASES += addu_s_qb.tst
-TESTCASES += addwc.tst
-TESTCASES += bitrev.tst
-TESTCASES += bposge32.tst
-TESTCASES += bposge64.tst
-TESTCASES += cmp_eq_ph.tst
-TESTCASES += cmp_eq_pw.tst
-TESTCASES += cmp_eq_qh.tst
-TESTCASES += cmpgu_eq_ob.tst
-TESTCASES += cmpgu_eq_qb.tst
-TESTCASES += cmpgu_le_ob.tst
-TESTCASES += cmpgu_le_qb.tst
-TESTCASES += cmpgu_lt_ob.tst
-TESTCASES += cmpgu_lt_qb.tst
-TESTCASES += cmp_le_ph.tst
-TESTCASES += cmp_le_pw.tst
-TESTCASES += cmp_le_qh.tst
-TESTCASES += cmp_lt_ph.tst
-TESTCASES += cmp_lt_pw.tst
-TESTCASES += cmp_lt_qh.tst
-TESTCASES += cmpu_eq_ob.tst
-TESTCASES += cmpu_eq_qb.tst
-TESTCASES += cmpu_le_ob.tst
-TESTCASES += cmpu_le_qb.tst
-TESTCASES += cmpu_lt_ob.tst
-TESTCASES += cmpu_lt_qb.tst
-#TESTCASES += dappend.tst
-TESTCASES += dextp.tst
-TESTCASES += dextpdp.tst
-TESTCASES += dextpdpv.tst
-TESTCASES += dextpv.tst
-TESTCASES += dextr_l.tst
-TESTCASES += dextr_r_l.tst
-TESTCASES += dextr_rs_l.tst
-TESTCASES += dextr_rs_w.tst
-TESTCASES += dextr_r_w.tst
-TESTCASES += dextr_s_h.tst
-TESTCASES += dextrv_l.tst
-TESTCASES += dextrv_r_l.tst
-TESTCASES += dextrv_rs_l.tst
-TESTCASES += dextrv_rs_w.tst
-TESTCASES += dextrv_r_w.tst
-TESTCASES += dextrv_s_h.tst
-TESTCASES += dextrv_w.tst
-TESTCASES += dextr_w.tst
-TESTCASES += dinsv.tst
-TESTCASES += dmadd.tst
-TESTCASES += dmaddu.tst
-TESTCASES += dmsub.tst
-TESTCASES += dmsubu.tst
-TESTCASES += dmthlip.tst
-TESTCASES += dpaq_sa_l_pw.tst
-TESTCASES += dpaq_sa_l_w.tst
-TESTCASES += dpaq_s_w_ph.tst
-TESTCASES += dpaq_s_w_qh.tst
-TESTCASES += dpau_h_obl.tst
-TESTCASES += dpau_h_obr.tst
-TESTCASES += dpau_h_qbl.tst
-TESTCASES += dpau_h_qbr.tst
-TESTCASES += dpsq_sa_l_pw.tst
-TESTCASES += dpsq_sa_l_w.tst
-TESTCASES += dpsq_s_w_ph.tst
-TESTCASES += dpsq_s_w_qh.tst
-TESTCASES += dpsu_h_obl.tst
-TESTCASES += dpsu_h_obr.tst
-TESTCASES += dpsu_h_qbl.tst
-TESTCASES += dpsu_h_qbr.tst
-TESTCASES += dshilo.tst
-TESTCASES += dshilov.tst
-TESTCASES += extp.tst
-TESTCASES += extpdp.tst
-TESTCASES += extpdpv.tst
-TESTCASES += extpv.tst
-TESTCASES += extr_rs_w.tst
-TESTCASES += extr_r_w.tst
-TESTCASES += extr_s_h.tst
-TESTCASES += extrv_rs_w.tst
-TESTCASES += extrv_r_w.tst
-TESTCASES += extrv_s_h.tst
-TESTCASES += extrv_w.tst
-TESTCASES += extr_w.tst
-TESTCASES += insv.tst
-TESTCASES += lbux.tst
-TESTCASES += lhx.tst
-TESTCASES += lwx.tst
-TESTCASES += ldx.tst
-TESTCASES += madd.tst
-TESTCASES += maddu.tst
-TESTCASES += maq_sa_w_phl.tst
-TESTCASES += maq_sa_w_phr.tst
-TESTCASES += maq_sa_w_qhll.tst
-TESTCASES += maq_sa_w_qhlr.tst
-TESTCASES += maq_sa_w_qhrl.tst
-TESTCASES += maq_sa_w_qhrr.tst
-TESTCASES += maq_s_l_pwl.tst
-TESTCASES += maq_s_l_pwr.tst
-TESTCASES += maq_s_w_phl.tst
-TESTCASES += maq_s_w_phr.tst
-TESTCASES += maq_s_w_qhll.tst
-TESTCASES += maq_s_w_qhlr.tst
-TESTCASES += maq_s_w_qhrl.tst
-TESTCASES += maq_s_w_qhrr.tst
-TESTCASES += mfhi.tst
-TESTCASES += mflo.tst
-TESTCASES += modsub.tst
-TESTCASES += msub.tst
-TESTCASES += msubu.tst
-TESTCASES += mthi.tst
-TESTCASES += mthlip.tst
-TESTCASES += mtlo.tst
-TESTCASES += muleq_s_pw_qhl.tst
-TESTCASES += muleq_s_pw_qhr.tst
-TESTCASES += muleq_s_w_phl.tst
-TESTCASES += muleq_s_w_phr.tst
-TESTCASES += muleu_s_ph_qbl.tst
-TESTCASES += muleu_s_ph_qbr.tst
-TESTCASES += muleu_s_qh_obl.tst
-TESTCASES += muleu_s_qh_obr.tst
-TESTCASES += mulq_rs_ph.tst
-TESTCASES += mulq_rs_qh.tst
-TESTCASES += mulsaq_s_l_pw.tst
-TESTCASES += mulsaq_s_w_qh.tst
-TESTCASES += mult.tst
-TESTCASES += multu.tst
-TESTCASES += packrl_ph.tst
-TESTCASES += packrl_pw.tst
-TESTCASES += pick_ob.tst
-TESTCASES += pick_ph.tst
-TESTCASES += pick_pw.tst
-TESTCASES += pick_qb.tst
-TESTCASES += pick_qh.tst
-#TESTCASES += preceq_l_pwl.tst
-#TESTCASES += preceq_l_pwr.tst
-TESTCASES += preceq_pw_qhla.tst
-TESTCASES += preceq_pw_qhl.tst
-TESTCASES += preceq_pw_qhra.tst
-TESTCASES += preceq_pw_qhr.tst
-TESTCASES += precequ_ph_qbla.tst
-TESTCASES += precequ_ph_qbl.tst
-TESTCASES += precequ_ph_qbra.tst
-TESTCASES += precequ_ph_qbr.tst
-#TESTCASES += precequ_qh_obla.tst
-#TESTCASES += precequ_qh_obl.tst
-#TESTCASES += precequ_qh_obra.tst
-#TESTCASES += precequ_qh_obr.tst
-TESTCASES += preceq_w_phl.tst
-TESTCASES += preceq_w_phr.tst
-TESTCASES += preceu_ph_qbla.tst
-TESTCASES += preceu_ph_qbl.tst
-TESTCASES += preceu_ph_qbra.tst
-TESTCASES += preceu_ph_qbr.tst
-TESTCASES += preceu_qh_obla.tst
-TESTCASES += preceu_qh_obl.tst
-TESTCASES += preceu_qh_obra.tst
-TESTCASES += preceu_qh_obr.tst
-#TESTCASES += precr_ob_qh.tst
-TESTCASES += precrq_ob_qh.tst
-TESTCASES += precrq_ph_w.tst
-TESTCASES += precrq_pw_l.tst
-TESTCASES += precrq_qb_ph.tst
-TESTCASES += precrq_qh_pw.tst
-TESTCASES += precrq_rs_ph_w.tst
-TESTCASES += precrq_rs_qh_pw.tst
-TESTCASES += precrqu_s_ob_qh.tst
-TESTCASES += precrqu_s_qb_ph.tst
-#TESTCASES += precr_sra_qh_pw.tst
-#TESTCASES += precr_sra_r_qh_pw.tst
-#TESTCASES += prependd.tst
-#TESTCASES += prependw.tst
-#TESTCASES += raddu_l_ob.tst
-TESTCASES += raddu_w_qb.tst
-TESTCASES += rddsp.tst
-TESTCASES += repl_ob.tst
-TESTCASES += repl_ph.tst
-TESTCASES += repl_pw.tst
-TESTCASES += repl_qb.tst
-TESTCASES += repl_qh.tst
-TESTCASES += replv_ob.tst
-TESTCASES += replv_ph.tst
-TESTCASES += replv_pw.tst
-TESTCASES += replv_qb.tst
-TESTCASES += shilo.tst
-TESTCASES += shilov.tst
-TESTCASES += shll_ob.tst
-TESTCASES += shll_ph.tst
-TESTCASES += shll_pw.tst
-TESTCASES += shll_qb.tst
-TESTCASES += shll_qh.tst
-TESTCASES += shll_s_ph.tst
-TESTCASES += shll_s_pw.tst
-TESTCASES += shll_s_qh.tst
-TESTCASES += shll_s_w.tst
-TESTCASES += shllv_ob.tst
-TESTCASES += shllv_ph.tst
-TESTCASES += shllv_pw.tst
-TESTCASES += shllv_qb.tst
-TESTCASES += shllv_qh.tst
-TESTCASES += shllv_s_ph.tst
-TESTCASES += shllv_s_pw.tst
-TESTCASES += shllv_s_qh.tst
-TESTCASES += shllv_s_w.tst
-#TESTCASES += shra_ob.tst
-TESTCASES += shra_ph.tst
-TESTCASES += shra_pw.tst
-TESTCASES += shra_qh.tst
-#TESTCASES += shra_r_ob.tst
-TESTCASES += shra_r_ph.tst
-TESTCASES += shra_r_pw.tst
-TESTCASES += shra_r_qh.tst
-TESTCASES += shra_r_w.tst
-TESTCASES += shrav_ph.tst
-TESTCASES += shrav_pw.tst
-TESTCASES += shrav_qh.tst
-TESTCASES += shrav_r_ph.tst
-TESTCASES += shrav_r_pw.tst
-TESTCASES += shrav_r_qh.tst
-TESTCASES += shrav_r_w.tst
-TESTCASES += shrl_ob.tst
-TESTCASES += shrl_qb.tst
-#TESTCASES += shrl_qh.tst
-TESTCASES += shrlv_ob.tst
-TESTCASES += shrlv_qb.tst
-#TESTCASES += shrlv_qh.tst
-TESTCASES += subq_ph.tst
-TESTCASES += subq_pw.tst
-TESTCASES += subq_qh.tst
-TESTCASES += subq_s_ph.tst
-TESTCASES += subq_s_pw.tst
-TESTCASES += subq_s_qh.tst
-TESTCASES += subq_s_w.tst
-TESTCASES += subu_ob.tst
-TESTCASES += subu_qb.tst
-TESTCASES += subu_s_ob.tst
-TESTCASES += subu_s_qb.tst
-TESTCASES += wrdsp.tst
-
-all: build
-
-head.o : head.S
-	$(Q)$(CC) $(HEAD_FLAGS) -D"STACK_TOP=0xffffffff80200000" -c $< -o $@
-
-%.o  : %.S
-	$(CC) $(CFLAGS) -c $< -o $@
-
-%.o  : %.c
-	$(CC) $(CFLAGS) -c $< -o $@
-
-%.tst: %.o $(VECTORS_OBJ)
-	$(CC) $(VECTORS_OBJ) $(FLAGS) $(LDFLAGS) $< -o $@
-
-build: $(VECTORS_OBJ) $(MIPSSOC_LIB) $(TESTCASES)
-
-check:  $(VECTORS_OBJ) $(MIPSSOC_LIB) $(TESTCASES)
-	@for case in $(TESTCASES); do \
-		echo $(SIM) $(SIMFLAGS) ./$$case; \
-		$(SIM) $(SIMFLAGS) ./$$case & (sleep 1; killall $(SIM)); \
-	done
-
-clean:
-	$(Q)rm -f *.o *.tst *.a
diff --git a/tests/tcg/mips/mips64-dsp/head.S b/tests/tcg/mips/mips64-dsp/head.S
deleted file mode 100644
index 9a099ae..0000000
--- a/tests/tcg/mips/mips64-dsp/head.S
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- *  Startup Code for MIPS64 CPU-core
- *
- */
-.text
-.globl _start
-.align 4
-_start:
-    ori    $2, $2, 0xffff
-    sll    $2, $2, 16
-    ori    $2, $2, 0xffff
-    mtc0   $2, $12, 0
-    jal    main
-
-end:
-    b end
diff --git a/tests/tcg/mips/mips64-dsp/io.h b/tests/tcg/mips/mips64-dsp/io.h
deleted file mode 100644
index b7db61d..0000000
--- a/tests/tcg/mips/mips64-dsp/io.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef _ASM_IO_H
-#define _ASM_IO_H
-extern int printf(const char *fmt, ...);
-extern unsigned long get_ticks(void);
-
-#define _read(source)                \
-({ unsigned long __res;                \
-    __asm__ __volatile__(            \
-        "mfc0\t%0, " #source "\n\t"    \
-        : "=r" (__res));        \
-    __res;                    \
-})
-
-#define __read(source)                \
-({ unsigned long __res;                \
-    __asm__ __volatile__(            \
-        "move\t%0, " #source "\n\t"    \
-        : "=r" (__res));        \
-    __res;                    \
-})
-
-#endif
diff --git a/tests/tcg/mips/mips64-dsp/mips_boot.lds b/tests/tcg/mips/mips64-dsp/mips_boot.lds
deleted file mode 100644
index bd7c0c0..0000000
--- a/tests/tcg/mips/mips64-dsp/mips_boot.lds
+++ /dev/null
@@ -1,31 +0,0 @@
-OUTPUT_ARCH(mips)
-SECTIONS
-{
-    . = 0xffffffff80100000;
-    . = ALIGN((1 << 13));
-    .text :
-    {
-        *(.text)
-        *(.rodata)
-        *(.rodata.*)
-    }
-
-    __init_begin = .;
-    . = ALIGN((1 << 12));
-    .init.text : AT(ADDR(.init.text) - 0)
-    {
-        *(.init.text)
-    }
-    .init.data : AT(ADDR(.init.data) - 0)
-    {
-        *(.init.data)
-    }
-    . = ALIGN((1 << 12));
-    __init_end = .;
-
-    . = ALIGN((1 << 13));
-    .data :
-    {
-        *(.data)
-    }
-}
diff --git a/tests/tcg/mips/mips64-dspr2/.directory b/tests/tcg/mips/mips64-dspr2/.directory
deleted file mode 100644
index c75a914..0000000
--- a/tests/tcg/mips/mips64-dspr2/.directory
+++ /dev/null
@@ -1,2 +0,0 @@
-[Dolphin]
-Timestamp=2012,8,3,16,41,52
diff --git a/tests/tcg/mips/mips64-dspr2/Makefile b/tests/tcg/mips/mips64-dspr2/Makefile
deleted file mode 100644
index ba44bb9..0000000
--- a/tests/tcg/mips/mips64-dspr2/Makefile
+++ /dev/null
@@ -1,116 +0,0 @@
-CROSS_COMPILE	?= mips64el-unknown-linux-gnu-
-
-SIM = qemu-system-mips64el
-SIMFLAGS = -nographic -cpu mips64dspr2 -kernel
-
-AS      = $(CROSS_COMPILE)as
-LD      = $(CROSS_COMPILE)ld
-CC      = $(CROSS_COMPILE)gcc
-AR      = $(CROSS_COMPILE)ar
-NM      = $(CROSS_COMPILE)nm
-STRIP       = $(CROSS_COMPILE)strip
-RANLIB      = $(CROSS_COMPILE)ranlib
-OBJCOPY     = $(CROSS_COMPILE)objcopy
-OBJDUMP     = $(CROSS_COMPILE)objdump
-
-VECTORS_OBJ ?= ./head.o ./printf.o
-
-HEAD_FLAGS ?= -nostdinc -mabi=64 -G 0 -mno-abicalls -fno-pic -pipe \
-              -msoft-float -march=mips64 -Wa,-mips64 -Wa,--trap \
-              -msym32 -DKBUILD_64BIT_SYM32 -I./
-
-CFLAGS ?= -nostdinc -mabi=64 -G 0 -mno-abicalls -fno-pic -fno-builtin  \
-          -pipe -march=mips64r2 -mgp64 -mdspr2 -static -Wa,--trap -msym32 \
-          -DKBUILD_64BIT_SYM32 -I./
-
-LDFLAGS = -T./mips_boot.lds -L./
-FLAGS = -nostdlib -mabi=64 -march=mips64r2 -mgp64 -mdspr2
-
-TESTCASES = absq_s_qb.tst
-TESTCASES += addqh_ph.tst
-TESTCASES += addqh_r_ph.tst
-TESTCASES += addqh_r_w.tst
-TESTCASES += addqh_w.tst
-#TESTCASES += adduh_ob.tst
-TESTCASES += adduh_qb.tst
-#TESTCASES += adduh_r_ob.tst
-TESTCASES += adduh_r_qb.tst
-TESTCASES += addu_ph.tst
-#TESTCASES += addu_qh.tst
-TESTCASES += addu_s_ph.tst
-#TESTCASES += addu_s_qh.tst
-TESTCASES += append.tst
-TESTCASES += balign.tst
-#TESTCASES += cmpgdu_eq_ob.tst
-TESTCASES += cmpgdu_eq_qb.tst
-#TESTCASES += cmpgdu_le_ob.tst
-TESTCASES += cmpgdu_le_qb.tst
-#TESTCASES += cmpgdu_lt_ob.tst
-TESTCASES += cmpgdu_lt_qb.tst
-#TESTCASES += dbalign.tst
-TESTCASES += dpaqx_sa_w_ph.tst
-TESTCASES += dpaqx_s_w_ph.tst
-TESTCASES += dpa_w_ph.tst
-#TESTCASES += dpa_w_qh.tst
-TESTCASES += dpax_w_ph.tst
-TESTCASES += dpsqx_sa_w_ph.tst
-TESTCASES += dpsqx_s_w_ph.tst
-TESTCASES += dps_w_ph.tst
-#TESTCASES += dps_w_qh.tst
-TESTCASES += dpsx_w_ph.tst
-TESTCASES += mul_ph.tst
-TESTCASES += mulq_rs_w.tst
-TESTCASES += mulq_s_ph.tst
-TESTCASES += mulq_s_w.tst
-TESTCASES += mulsaq_s_w_ph.tst
-TESTCASES += mulsa_w_ph.tst
-TESTCASES += mul_s_ph.tst
-TESTCASES += precr_qb_ph.tst
-TESTCASES += precr_sra_ph_w.tst
-TESTCASES += precr_sra_r_ph_w.tst
-TESTCASES += prepend.tst
-TESTCASES += shra_qb.tst
-TESTCASES += shra_r_qb.tst
-#TESTCASES += shrav_ob.tst
-TESTCASES += shrav_qb.tst
-#TESTCASES += shrav_r_ob.tst
-TESTCASES += shrav_r_qb.tst
-TESTCASES += shrl_ph.tst
-TESTCASES += shrlv_ph.tst
-TESTCASES += subqh_ph.tst
-TESTCASES += subqh_r_ph.tst
-TESTCASES += subqh_r_w.tst
-TESTCASES += subqh_w.tst
-#TESTCASES += subuh_ob.tst
-TESTCASES += subuh_qb.tst
-#TESTCASES += subuh_r_ob.tst
-TESTCASES += subuh_r_qb.tst
-TESTCASES += subu_ph.tst
-#TESTCASES += subu_qh.tst
-TESTCASES += subu_s_ph.tst
-#TESTCASES += subu_s_qh.tst
-
-all: build
-
-head.o : head.S
-	$(Q)$(CC) $(HEAD_FLAGS) -D"STACK_TOP=0xffffffff80200000" -c $< -o $@
-
-%.o  : %.S
-	$(CC) $(CFLAGS) -c $< -o $@
-
-%.o  : %.c
-	$(CC) $(CFLAGS) -c $< -o $@
-
-%.tst: %.o $(VECTORS_OBJ)
-	$(CC) $(VECTORS_OBJ) $(FLAGS) $(LDFLAGS) $< -o $@
-
-build: $(VECTORS_OBJ) $(MIPSSOC_LIB) $(TESTCASES)
-
-check:  $(VECTORS_OBJ) $(MIPSSOC_LIB) $(TESTCASES)
-	@for case in $(TESTCASES); do \
-		echo $(SIM) $(SIMFLAGS) ./$$case; \
-		$(SIM) $(SIMFLAGS) ./$$case & (sleep 1; killall $(SIM)); \
-	done
-
-clean:
-	$(Q)rm -f *.o *.tst *.a
diff --git a/tests/tcg/mips/mips64-dspr2/head.S b/tests/tcg/mips/mips64-dspr2/head.S
deleted file mode 100644
index 9a099ae..0000000
--- a/tests/tcg/mips/mips64-dspr2/head.S
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- *  Startup Code for MIPS64 CPU-core
- *
- */
-.text
-.globl _start
-.align 4
-_start:
-    ori    $2, $2, 0xffff
-    sll    $2, $2, 16
-    ori    $2, $2, 0xffff
-    mtc0   $2, $12, 0
-    jal    main
-
-end:
-    b end
diff --git a/tests/tcg/mips/mips64-dspr2/io.h b/tests/tcg/mips/mips64-dspr2/io.h
deleted file mode 100644
index b7db61d..0000000
--- a/tests/tcg/mips/mips64-dspr2/io.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef _ASM_IO_H
-#define _ASM_IO_H
-extern int printf(const char *fmt, ...);
-extern unsigned long get_ticks(void);
-
-#define _read(source)                \
-({ unsigned long __res;                \
-    __asm__ __volatile__(            \
-        "mfc0\t%0, " #source "\n\t"    \
-        : "=r" (__res));        \
-    __res;                    \
-})
-
-#define __read(source)                \
-({ unsigned long __res;                \
-    __asm__ __volatile__(            \
-        "move\t%0, " #source "\n\t"    \
-        : "=r" (__res));        \
-    __res;                    \
-})
-
-#endif
diff --git a/tests/tcg/mips/mips64-dspr2/mips_boot.lds b/tests/tcg/mips/mips64-dspr2/mips_boot.lds
deleted file mode 100644
index bd7c0c0..0000000
--- a/tests/tcg/mips/mips64-dspr2/mips_boot.lds
+++ /dev/null
@@ -1,31 +0,0 @@
-OUTPUT_ARCH(mips)
-SECTIONS
-{
-    . = 0xffffffff80100000;
-    . = ALIGN((1 << 13));
-    .text :
-    {
-        *(.text)
-        *(.rodata)
-        *(.rodata.*)
-    }
-
-    __init_begin = .;
-    . = ALIGN((1 << 12));
-    .init.text : AT(ADDR(.init.text) - 0)
-    {
-        *(.init.text)
-    }
-    .init.data : AT(ADDR(.init.data) - 0)
-    {
-        *(.init.data)
-    }
-    . = ALIGN((1 << 12));
-    __init_end = .;
-
-    . = ALIGN((1 << 13));
-    .data :
-    {
-        *(.data)
-    }
-}
diff --git a/tests/tcg/mips/mipsr5900/Makefile b/tests/tcg/mips/mipsr5900/Makefile
deleted file mode 100644
index a1c388b..0000000
--- a/tests/tcg/mips/mipsr5900/Makefile
+++ /dev/null
@@ -1,30 +0,0 @@
--include ../../config-host.mak
-
-CROSS=mipsr5900el-unknown-linux-gnu-
-
-SIM=qemu-mipsel
-SIM_FLAGS=-cpu R5900
-
-CC      = $(CROSS)gcc
-CFLAGS  = -Wall -mabi=32 -march=r5900 -static
-
-TESTCASES = div1.tst
-TESTCASES += divu1.tst
-TESTCASES += mflohi1.tst
-TESTCASES += mtlohi1.tst
-TESTCASES += mult.tst
-TESTCASES += multu.tst
-
-all: $(TESTCASES)
-
-%.tst: %.c
-	$(CC) $(CFLAGS) $< -o $@
-
-check: $(TESTCASES)
-	@for case in $(TESTCASES); do \
-        echo $(SIM) $(SIM_FLAGS) ./$$case;\
-        $(SIM) $(SIM_FLAGS) ./$$case; \
-	done
-
-clean:
-	$(RM) -rf $(TESTCASES)
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [Qemu-devel] [PATCH 0/2] tests: Reorganize MIPS TCG directories and files
  2018-12-27 13:12 [Qemu-devel] [PATCH 0/2] tests: Reorganize MIPS TCG directories and files Aleksandar Markovic
  2018-12-27 13:12 ` [Qemu-devel] [PATCH 1/2] tests: tcg: mips: Move source files to new location Aleksandar Markovic
  2018-12-27 13:13 ` [Qemu-devel] [PATCH 2/2] tests: tcg: mips: Remove old directories after reorganization Aleksandar Markovic
@ 2018-12-27 22:02 ` Philippe Mathieu-Daudé
  2018-12-28  9:29   ` Aleksandar Markovic
  2019-01-03 20:06 ` Eric Blake
  3 siblings, 1 reply; 10+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-12-27 22:02 UTC (permalink / raw)
  To: Aleksandar Markovic, qemu-devel
  Cc: noring, smarkovic, arikalo, amarkovic, alex.bennee, aurelien

Hi Aleksandar,

On 12/27/18 2:12 PM, Aleksandar Markovic wrote:
> From: Aleksandar Markovic <amarkovic@wavecomp.com>
> 
> Reorganize MIPS TCG directories and files. The file movement is done
> using "git mv" command, so "git blame" will still display the original
> information, regardles of the new names and locations of involved
> files.
> 
> Aleksandar Markovic (2):
>   tests: tcg: mips: Move source files to new location
>   tests: tcg: mips: Remove old directories after reorganization

It seems the list ate your patch 1/2...

See https://lists.gnu.org/archive/html/qemu-devel/2018-12/msg06009.html

Regards,

Phil.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Qemu-devel] [PATCH 0/2] tests: Reorganize MIPS TCG directories and files
  2018-12-27 22:02 ` [Qemu-devel] [PATCH 0/2] tests: Reorganize MIPS TCG directories and files Philippe Mathieu-Daudé
@ 2018-12-28  9:29   ` Aleksandar Markovic
  0 siblings, 0 replies; 10+ messages in thread
From: Aleksandar Markovic @ 2018-12-28  9:29 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, Aleksandar Markovic, qemu-devel
  Cc: noring, Stefan Markovic, Aleksandar Rikalo, alex.bennee, aurelien

> From: Philippe Mathieu-Daudé <philippe.mathieu.daude@gmail.com> on behalf of Philippe Mathieu-Daudé <f4bug@amsat.org>
> Subject: Re: [Qemu-devel] [PATCH 0/2] tests: Reorganize MIPS TCG directories and files
> 
> Hi Aleksandar,
>
> It seems the list ate your patch 1/2...

Thanks for bringing this to my attention, but not a big deal, I will anyway send better v2 after New Year.

Aleksandar

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Qemu-devel] [PATCH 1/2] tests: tcg: mips: Move source files to new location
  2018-12-27 13:12 ` [Qemu-devel] [PATCH 1/2] tests: tcg: mips: Move source files to new location Aleksandar Markovic
@ 2018-12-31 19:43   ` Philippe Mathieu-Daudé
  2019-01-01 22:19   ` Philippe Mathieu-Daudé
  1 sibling, 0 replies; 10+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-12-31 19:43 UTC (permalink / raw)
  To: Aleksandar Markovic, qemu-devel
  Cc: noring, smarkovic, arikalo, amarkovic, alex.bennee, aurelien

On 12/27/18 2:12 PM, Aleksandar Markovic wrote:
> From: Aleksandar Markovic <amarkovic@wavecomp.com>
> 
> New directory organization is as follows:
> 
> tests
>   tcg
>     mips
>       user
>         isa
>           r5900
>         ase
>           dsp
>       system
>         ase
>           dsp
> 
> New file names are unique within tests/tcg/mips directory, to
> avoid potential name colision problems.
> 
> There will be new subdirectories in near future, for example:
> 
> tests/tcg/mips/user/isa/nanomips
> tests/tcg/mips/user/ase/msa
> tests/tcg/mips/user/ase/mxu
> 
> etc.
> 
> Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>

Finally this patch arrived!

X-Mailman-Approved-At: Sun, 30 Dec 2018 01:01:12 -0500

Received: from eggs.gnu.org by lists.gnu.org; Sat, 29 Dec 2018 23:43:06
-0500

Received: from mx2.rt-rk.com by eggs.gnu.org; Thu, 27 Dec 2018 14:13:25
+0100 (CET)

Received: from rtrkw774-lin.domain.local by mail.rt-rk.com; Thu, 27 Dec
2018 14:13:22 +0100 (CET)

Culprit to hold it seems eggs.gnu.org ...

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Qemu-devel] [PATCH 1/2] tests: tcg: mips: Move source files to new location
  2018-12-27 13:12 ` [Qemu-devel] [PATCH 1/2] tests: tcg: mips: Move source files to new location Aleksandar Markovic
  2018-12-31 19:43   ` Philippe Mathieu-Daudé
@ 2019-01-01 22:19   ` Philippe Mathieu-Daudé
  1 sibling, 0 replies; 10+ messages in thread
From: Philippe Mathieu-Daudé @ 2019-01-01 22:19 UTC (permalink / raw)
  To: Aleksandar Markovic, qemu-devel
  Cc: noring, smarkovic, arikalo, amarkovic, alex.bennee, aurelien

Hi Aleksandar,

On 12/27/18 2:12 PM, Aleksandar Markovic wrote:
> From: Aleksandar Markovic <amarkovic@wavecomp.com>
>
> New directory organization is as follows:
>
> tests
>   tcg
>     mips
>       user
>         isa
>           r5900
>         ase
>           dsp
>       system
>         ase
>           dsp
>
> New file names are unique within tests/tcg/mips directory, to
> avoid potential name colision problems.
[...]

Since you said you are preparing a v2, could you split this huge patch
in smallers? One directory per patch seems an easy way to do it.
This way you can also delete the respective files from your patch 2 at
each step, and let your commits bisectables (else you let Makefile with
rules but no target to use them).

Thanks!

Phil.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Qemu-devel] [PATCH 0/2] tests: Reorganize MIPS TCG directories and files
  2018-12-27 13:12 [Qemu-devel] [PATCH 0/2] tests: Reorganize MIPS TCG directories and files Aleksandar Markovic
                   ` (2 preceding siblings ...)
  2018-12-27 22:02 ` [Qemu-devel] [PATCH 0/2] tests: Reorganize MIPS TCG directories and files Philippe Mathieu-Daudé
@ 2019-01-03 20:06 ` Eric Blake
  2019-01-03 20:36   ` Aleksandar Markovic
  3 siblings, 1 reply; 10+ messages in thread
From: Eric Blake @ 2019-01-03 20:06 UTC (permalink / raw)
  To: Aleksandar Markovic, qemu-devel
  Cc: noring, smarkovic, arikalo, amarkovic, alex.bennee, aurelien

[-- Attachment #1: Type: text/plain, Size: 1363 bytes --]

On 12/27/18 7:12 AM, Aleksandar Markovic wrote:
> From: Aleksandar Markovic <amarkovic@wavecomp.com>
> 
> Reorganize MIPS TCG directories and files. The file movement is done
> using "git mv" command, so "git blame" will still display the original
> information, regardles of the new names and locations of involved
> files.
> 
> Aleksandar Markovic (2):
>   tests: tcg: mips: Move source files to new location
>   tests: tcg: mips: Remove old directories after reorganization
> 
>  tests/tcg/mips/mips32-dsp/Makefile                 | 136 ---------

>  tests/tcg/mips/mipsr5900/multu.c                   |  68 -----
>  .../mips/system/ase/dsp/test_64_dsp_r1_absq_s_ob.c |  63 +++++

>  tests/tcg/mips/user/isa/r5900/test_r5900_multu.c   |  68 +++++
>  976 files changed, 19288 insertions(+), 20087 deletions(-)

You also need to turn on git rename detection before sending your v2, so
that your mail will be MUCH smaller (showing only lines that changed
between file renames, rather than a much larger patch of deleting the
old file and creating a new file).  More patch submission hints,
including the git config setup for rename detection, can be found at
https://wiki.qemu.org/Contribute/SubmitAPatch

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3226
Virtualization:  qemu.org | libvirt.org


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Qemu-devel] [PATCH 0/2] tests: Reorganize MIPS TCG directories and files
  2019-01-03 20:06 ` Eric Blake
@ 2019-01-03 20:36   ` Aleksandar Markovic
  0 siblings, 0 replies; 10+ messages in thread
From: Aleksandar Markovic @ 2019-01-03 20:36 UTC (permalink / raw)
  To: Eric Blake, Aleksandar Markovic, qemu-devel
  Cc: noring, Stefan Markovic, Aleksandar Rikalo, alex.bennee, aurelien

> From: Eric Blake <eblake@redhat.com>
> Sent: Thursday, January 3, 2019 9:06 PM
> To: Aleksandar Markovic; qemu-devel@nongnu.org
> Cc: noring@nocrew.org; Stefan Markovic; Aleksandar Rikalo; Aleksandar Markovic;
> alex.bennee@linaro.org; aurelien@aurel32.net
> Subject: Re: [Qemu-devel] [PATCH 0/2] tests: Reorganize MIPS TCG directories and files
> 
> On 12/27/18 7:12 AM, Aleksandar Markovic wrote:
> > From: Aleksandar Markovic <amarkovic@wavecomp.com>
> >
> > Reorganize MIPS TCG directories and files. The file movement is done
> > using "git mv" command, so "git blame" will still display the original
> > information, regardles of the new names and locations of involved
> > files.
> >
> > Aleksandar Markovic (2):
> >   tests: tcg: mips: Move source files to new location
> >   tests: tcg: mips: Remove old directories after reorganization
> >
> >  tests/tcg/mips/mips32-dsp/Makefile                 | 136 ---------
> 
> >  tests/tcg/mips/mipsr5900/multu.c                   |  68 -----
> >  .../mips/system/ase/dsp/test_64_dsp_r1_absq_s_ob.c |  63 +++++
> 
> >  tests/tcg/mips/user/isa/r5900/test_r5900_multu.c   |  68 +++++
> >  976 files changed, 19288 insertions(+), 20087 deletions(-)
> 
> You also need to turn on git rename detection before sending your v2, so
> that your mail will be MUCH smaller (showing only lines that changed
> between file renames, rather than a much larger patch of deleting the
> old file and creating a new file).  More patch submission hints,
> including the git config setup for rename detection, can be found at
> https://wiki.qemu.org/Contribute/SubmitAPatch
>

Great hint! OK, I'll try "git config diff.renames true" before creating v2.

Thanks,
Aleksandar

> --
> Eric Blake, Principal Software Engineer
> Red Hat, Inc.           +1-919-301-3226
> Virtualization:  qemu.org | libvirt.org

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Qemu-devel] [PATCH 1/2] tests: tcg: mips: Move source files to new location
  2019-01-04 16:46 Aleksandar Markovic
@ 2019-01-04 16:46 ` Aleksandar Markovic
  0 siblings, 0 replies; 10+ messages in thread
From: Aleksandar Markovic @ 2019-01-04 16:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: amarkovic, arikalo, smarkovic, alex.bennee, noring, aurelien

From: Aleksandar Markovic <amarkovic@wavecomp.com>

New directory organization is as follows:

tests
  tcg
    mips
      user
        isa
          r5900
        ase
          dsp
      system
        ase
          dsp

New file names are unique within tests/tcg/mips directory, to
avoid potential name colision problems.

There will be new subdirectories in near future, for example:

tests/tcg/mips/user/isa/nanomips
tests/tcg/mips/user/ase/msa
tests/tcg/mips/user/ase/mxu

etc.

Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
---
 .../{mips64-dsp/absq_s_ob.c => system/ase/dsp/test_64_dsp_r1_absq_s_ob.c} | 0
 .../{mips64-dsp/absq_s_ph.c => system/ase/dsp/test_64_dsp_r1_absq_s_ph.c} | 0
 .../{mips64-dsp/absq_s_pw.c => system/ase/dsp/test_64_dsp_r1_absq_s_pw.c} | 0
 .../{mips64-dsp/absq_s_qh.c => system/ase/dsp/test_64_dsp_r1_absq_s_qh.c} | 0
 .../{mips64-dsp/absq_s_w.c => system/ase/dsp/test_64_dsp_r1_absq_s_w.c}   | 0
 .../{mips64-dsp/addq_ph.c => system/ase/dsp/test_64_dsp_r1_addq_ph.c}     | 0
 .../{mips64-dsp/addq_pw.c => system/ase/dsp/test_64_dsp_r1_addq_pw.c}     | 0
 .../{mips64-dsp/addq_qh.c => system/ase/dsp/test_64_dsp_r1_addq_qh.c}     | 0
 .../{mips64-dsp/addq_s_ph.c => system/ase/dsp/test_64_dsp_r1_addq_s_ph.c} | 0
 .../{mips64-dsp/addq_s_pw.c => system/ase/dsp/test_64_dsp_r1_addq_s_pw.c} | 0
 .../{mips64-dsp/addq_s_qh.c => system/ase/dsp/test_64_dsp_r1_addq_s_qh.c} | 0
 .../{mips64-dsp/addq_s_w.c => system/ase/dsp/test_64_dsp_r1_addq_s_w.c}   | 0
 .../mips/{mips64-dsp/addsc.c => system/ase/dsp/test_64_dsp_r1_addsc.c}    | 0
 .../{mips64-dsp/addu_ob.c => system/ase/dsp/test_64_dsp_r1_addu_ob.c}     | 0
 .../{mips64-dsp/addu_qb.c => system/ase/dsp/test_64_dsp_r1_addu_qb.c}     | 0
 .../{mips64-dsp/addu_s_ob.c => system/ase/dsp/test_64_dsp_r1_addu_s_ob.c} | 0
 .../{mips64-dsp/addu_s_qb.c => system/ase/dsp/test_64_dsp_r1_addu_s_qb.c} | 0
 .../mips/{mips64-dsp/addwc.c => system/ase/dsp/test_64_dsp_r1_addwc.c}    | 0
 .../mips/{mips64-dsp/bitrev.c => system/ase/dsp/test_64_dsp_r1_bitrev.c}  | 0
 .../{mips64-dsp/bposge32.c => system/ase/dsp/test_64_dsp_r1_bposge32.c}   | 0
 .../{mips64-dsp/bposge64.c => system/ase/dsp/test_64_dsp_r1_bposge64.c}   | 0
 .../{mips64-dsp/cmp_eq_ph.c => system/ase/dsp/test_64_dsp_r1_cmp_eq_ph.c} | 0
 .../{mips64-dsp/cmp_eq_pw.c => system/ase/dsp/test_64_dsp_r1_cmp_eq_pw.c} | 0
 .../{mips64-dsp/cmp_eq_qh.c => system/ase/dsp/test_64_dsp_r1_cmp_eq_qh.c} | 0
 .../{mips64-dsp/cmp_le_ph.c => system/ase/dsp/test_64_dsp_r1_cmp_le_ph.c} | 0
 .../{mips64-dsp/cmp_le_pw.c => system/ase/dsp/test_64_dsp_r1_cmp_le_pw.c} | 0
 .../{mips64-dsp/cmp_le_qh.c => system/ase/dsp/test_64_dsp_r1_cmp_le_qh.c} | 0
 .../{mips64-dsp/cmp_lt_ph.c => system/ase/dsp/test_64_dsp_r1_cmp_lt_ph.c} | 0
 .../{mips64-dsp/cmp_lt_pw.c => system/ase/dsp/test_64_dsp_r1_cmp_lt_pw.c} | 0
 .../{mips64-dsp/cmp_lt_qh.c => system/ase/dsp/test_64_dsp_r1_cmp_lt_qh.c} | 0
 .../cmpgu_eq_ob.c => system/ase/dsp/test_64_dsp_r1_cmpgu_eq_ob.c}         | 0
 .../cmpgu_eq_qb.c => system/ase/dsp/test_64_dsp_r1_cmpgu_eq_qb.c}         | 0
 .../cmpgu_le_ob.c => system/ase/dsp/test_64_dsp_r1_cmpgu_le_ob.c}         | 0
 .../cmpgu_le_qb.c => system/ase/dsp/test_64_dsp_r1_cmpgu_le_qb.c}         | 0
 .../cmpgu_lt_ob.c => system/ase/dsp/test_64_dsp_r1_cmpgu_lt_ob.c}         | 0
 .../cmpgu_lt_qb.c => system/ase/dsp/test_64_dsp_r1_cmpgu_lt_qb.c}         | 0
 .../cmpu_eq_ob.c => system/ase/dsp/test_64_dsp_r1_cmpu_eq_ob.c}           | 0
 .../cmpu_eq_qb.c => system/ase/dsp/test_64_dsp_r1_cmpu_eq_qb.c}           | 0
 .../cmpu_le_ob.c => system/ase/dsp/test_64_dsp_r1_cmpu_le_ob.c}           | 0
 .../cmpu_le_qb.c => system/ase/dsp/test_64_dsp_r1_cmpu_le_qb.c}           | 0
 .../cmpu_lt_ob.c => system/ase/dsp/test_64_dsp_r1_cmpu_lt_ob.c}           | 0
 .../cmpu_lt_qb.c => system/ase/dsp/test_64_dsp_r1_cmpu_lt_qb.c}           | 0
 .../{mips64-dsp/dappend.c => system/ase/dsp/test_64_dsp_r1_dappend.c}     | 0
 .../mips/{mips64-dsp/dextp.c => system/ase/dsp/test_64_dsp_r1_dextp.c}    | 0
 .../{mips64-dsp/dextpdp.c => system/ase/dsp/test_64_dsp_r1_dextpdp.c}     | 0
 .../{mips64-dsp/dextpdpv.c => system/ase/dsp/test_64_dsp_r1_dextpdpv.c}   | 0
 .../mips/{mips64-dsp/dextpv.c => system/ase/dsp/test_64_dsp_r1_dextpv.c}  | 0
 .../{mips64-dsp/dextr_l.c => system/ase/dsp/test_64_dsp_r1_dextr_l.c}     | 0
 .../{mips64-dsp/dextr_r_l.c => system/ase/dsp/test_64_dsp_r1_dextr_r_l.c} | 0
 .../{mips64-dsp/dextr_r_w.c => system/ase/dsp/test_64_dsp_r1_dextr_r_w.c} | 0
 .../dextr_rs_l.c => system/ase/dsp/test_64_dsp_r1_dextr_rs_l.c}           | 0
 .../dextr_rs_w.c => system/ase/dsp/test_64_dsp_r1_dextr_rs_w.c}           | 0
 .../{mips64-dsp/dextr_s_h.c => system/ase/dsp/test_64_dsp_r1_dextr_s_h.c} | 0
 .../{mips64-dsp/dextr_w.c => system/ase/dsp/test_64_dsp_r1_dextr_w.c}     | 0
 .../{mips64-dsp/dextrv_l.c => system/ase/dsp/test_64_dsp_r1_dextrv_l.c}   | 0
 .../dextrv_r_l.c => system/ase/dsp/test_64_dsp_r1_dextrv_r_l.c}           | 0
 .../dextrv_r_w.c => system/ase/dsp/test_64_dsp_r1_dextrv_r_w.c}           | 0
 .../dextrv_rs_l.c => system/ase/dsp/test_64_dsp_r1_dextrv_rs_l.c}         | 0
 .../dextrv_rs_w.c => system/ase/dsp/test_64_dsp_r1_dextrv_rs_w.c}         | 0
 .../dextrv_s_h.c => system/ase/dsp/test_64_dsp_r1_dextrv_s_h.c}           | 0
 .../{mips64-dsp/dextrv_w.c => system/ase/dsp/test_64_dsp_r1_dextrv_w.c}   | 0
 .../mips/{mips64-dsp/dinsv.c => system/ase/dsp/test_64_dsp_r1_dinsv.c}    | 0
 .../mips/{mips64-dsp/dmadd.c => system/ase/dsp/test_64_dsp_r1_dmadd.c}    | 0
 .../mips/{mips64-dsp/dmaddu.c => system/ase/dsp/test_64_dsp_r1_dmaddu.c}  | 0
 .../mips/{mips64-dsp/dmsub.c => system/ase/dsp/test_64_dsp_r1_dmsub.c}    | 0
 .../mips/{mips64-dsp/dmsubu.c => system/ase/dsp/test_64_dsp_r1_dmsubu.c}  | 0
 .../{mips64-dsp/dmthlip.c => system/ase/dsp/test_64_dsp_r1_dmthlip.c}     | 0
 .../dpaq_s_w_ph.c => system/ase/dsp/test_64_dsp_r1_dpaq_s_w_ph.c}         | 0
 .../dpaq_s_w_qh.c => system/ase/dsp/test_64_dsp_r1_dpaq_s_w_qh.c}         | 0
 .../dpaq_sa_l_pw.c => system/ase/dsp/test_64_dsp_r1_dpaq_sa_l_pw.c}       | 0
 .../dpaq_sa_l_w.c => system/ase/dsp/test_64_dsp_r1_dpaq_sa_l_w.c}         | 0
 .../dpau_h_obl.c => system/ase/dsp/test_64_dsp_r1_dpau_h_obl.c}           | 0
 .../dpau_h_obr.c => system/ase/dsp/test_64_dsp_r1_dpau_h_obr.c}           | 0
 .../dpau_h_qbl.c => system/ase/dsp/test_64_dsp_r1_dpau_h_qbl.c}           | 0
 .../dpau_h_qbr.c => system/ase/dsp/test_64_dsp_r1_dpau_h_qbr.c}           | 0
 .../dpsq_s_w_ph.c => system/ase/dsp/test_64_dsp_r1_dpsq_s_w_ph.c}         | 0
 .../dpsq_s_w_qh.c => system/ase/dsp/test_64_dsp_r1_dpsq_s_w_qh.c}         | 0
 .../dpsq_sa_l_pw.c => system/ase/dsp/test_64_dsp_r1_dpsq_sa_l_pw.c}       | 0
 .../dpsq_sa_l_w.c => system/ase/dsp/test_64_dsp_r1_dpsq_sa_l_w.c}         | 0
 .../dpsu_h_obl.c => system/ase/dsp/test_64_dsp_r1_dpsu_h_obl.c}           | 0
 .../dpsu_h_obr.c => system/ase/dsp/test_64_dsp_r1_dpsu_h_obr.c}           | 0
 .../dpsu_h_qbl.c => system/ase/dsp/test_64_dsp_r1_dpsu_h_qbl.c}           | 0
 .../dpsu_h_qbr.c => system/ase/dsp/test_64_dsp_r1_dpsu_h_qbr.c}           | 0
 .../mips/{mips64-dsp/dshilo.c => system/ase/dsp/test_64_dsp_r1_dshilo.c}  | 0
 .../{mips64-dsp/dshilov.c => system/ase/dsp/test_64_dsp_r1_dshilov.c}     | 0
 .../tcg/mips/{mips64-dsp/extp.c => system/ase/dsp/test_64_dsp_r1_extp.c}  | 0
 .../mips/{mips64-dsp/extpdp.c => system/ase/dsp/test_64_dsp_r1_extpdp.c}  | 0
 .../{mips64-dsp/extpdpv.c => system/ase/dsp/test_64_dsp_r1_extpdpv.c}     | 0
 .../mips/{mips64-dsp/extpv.c => system/ase/dsp/test_64_dsp_r1_extpv.c}    | 0
 .../{mips64-dsp/extr_r_w.c => system/ase/dsp/test_64_dsp_r1_extr_r_w.c}   | 0
 .../{mips64-dsp/extr_rs_w.c => system/ase/dsp/test_64_dsp_r1_extr_rs_w.c} | 0
 .../{mips64-dsp/extr_s_h.c => system/ase/dsp/test_64_dsp_r1_extr_s_h.c}   | 0
 .../mips/{mips64-dsp/extr_w.c => system/ase/dsp/test_64_dsp_r1_extr_w.c}  | 0
 .../{mips64-dsp/extrv_r_w.c => system/ase/dsp/test_64_dsp_r1_extrv_r_w.c} | 0
 .../extrv_rs_w.c => system/ase/dsp/test_64_dsp_r1_extrv_rs_w.c}           | 0
 .../{mips64-dsp/extrv_s_h.c => system/ase/dsp/test_64_dsp_r1_extrv_s_h.c} | 0
 .../{mips64-dsp/extrv_w.c => system/ase/dsp/test_64_dsp_r1_extrv_w.c}     | 0
 .../tcg/mips/{mips64-dsp/insv.c => system/ase/dsp/test_64_dsp_r1_insv.c}  | 0
 .../tcg/mips/{mips64-dsp/lbux.c => system/ase/dsp/test_64_dsp_r1_lbux.c}  | 0
 tests/tcg/mips/{mips64-dsp/ldx.c => system/ase/dsp/test_64_dsp_r1_ldx.c}  | 0
 tests/tcg/mips/{mips64-dsp/lhx.c => system/ase/dsp/test_64_dsp_r1_lhx.c}  | 0
 tests/tcg/mips/{mips64-dsp/lwx.c => system/ase/dsp/test_64_dsp_r1_lwx.c}  | 0
 .../tcg/mips/{mips64-dsp/madd.c => system/ase/dsp/test_64_dsp_r1_madd.c}  | 0
 .../mips/{mips64-dsp/maddu.c => system/ase/dsp/test_64_dsp_r1_maddu.c}    | 0
 .../maq_s_l_pwl.c => system/ase/dsp/test_64_dsp_r1_maq_s_l_pwl.c}         | 0
 .../maq_s_l_pwr.c => system/ase/dsp/test_64_dsp_r1_maq_s_l_pwr.c}         | 0
 .../maq_s_w_phl.c => system/ase/dsp/test_64_dsp_r1_maq_s_w_phl.c}         | 0
 .../maq_s_w_phr.c => system/ase/dsp/test_64_dsp_r1_maq_s_w_phr.c}         | 0
 .../maq_s_w_qhll.c => system/ase/dsp/test_64_dsp_r1_maq_s_w_qhll.c}       | 0
 .../maq_s_w_qhlr.c => system/ase/dsp/test_64_dsp_r1_maq_s_w_qhlr.c}       | 0
 .../maq_s_w_qhrl.c => system/ase/dsp/test_64_dsp_r1_maq_s_w_qhrl.c}       | 0
 .../maq_s_w_qhrr.c => system/ase/dsp/test_64_dsp_r1_maq_s_w_qhrr.c}       | 0
 .../maq_sa_w_phl.c => system/ase/dsp/test_64_dsp_r1_maq_sa_w_phl.c}       | 0
 .../maq_sa_w_phr.c => system/ase/dsp/test_64_dsp_r1_maq_sa_w_phr.c}       | 0
 .../maq_sa_w_qhll.c => system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhll.c}     | 0
 .../maq_sa_w_qhlr.c => system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhlr.c}     | 0
 .../maq_sa_w_qhrl.c => system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhrl.c}     | 0
 .../maq_sa_w_qhrr.c => system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhrr.c}     | 0
 .../tcg/mips/{mips64-dsp/mfhi.c => system/ase/dsp/test_64_dsp_r1_mfhi.c}  | 0
 .../tcg/mips/{mips64-dsp/mflo.c => system/ase/dsp/test_64_dsp_r1_mflo.c}  | 0
 .../mips/{mips64-dsp/modsub.c => system/ase/dsp/test_64_dsp_r1_modsub.c}  | 0
 .../tcg/mips/{mips64-dsp/msub.c => system/ase/dsp/test_64_dsp_r1_msub.c}  | 0
 .../mips/{mips64-dsp/msubu.c => system/ase/dsp/test_64_dsp_r1_msubu.c}    | 0
 .../tcg/mips/{mips64-dsp/mthi.c => system/ase/dsp/test_64_dsp_r1_mthi.c}  | 0
 .../mips/{mips64-dsp/mthlip.c => system/ase/dsp/test_64_dsp_r1_mthlip.c}  | 0
 .../tcg/mips/{mips64-dsp/mtlo.c => system/ase/dsp/test_64_dsp_r1_mtlo.c}  | 0
 .../muleq_s_pw_qhl.c => system/ase/dsp/test_64_dsp_r1_muleq_s_pw_qhl.c}   | 0
 .../muleq_s_pw_qhr.c => system/ase/dsp/test_64_dsp_r1_muleq_s_pw_qhr.c}   | 0
 .../muleq_s_w_phl.c => system/ase/dsp/test_64_dsp_r1_muleq_s_w_phl.c}     | 0
 .../muleq_s_w_phr.c => system/ase/dsp/test_64_dsp_r1_muleq_s_w_phr.c}     | 0
 .../muleu_s_ph_qbl.c => system/ase/dsp/test_64_dsp_r1_muleu_s_ph_qbl.c}   | 0
 .../muleu_s_ph_qbr.c => system/ase/dsp/test_64_dsp_r1_muleu_s_ph_qbr.c}   | 0
 .../muleu_s_qh_obl.c => system/ase/dsp/test_64_dsp_r1_muleu_s_qh_obl.c}   | 0
 .../muleu_s_qh_obr.c => system/ase/dsp/test_64_dsp_r1_muleu_s_qh_obr.c}   | 0
 .../mulq_rs_ph.c => system/ase/dsp/test_64_dsp_r1_mulq_rs_ph.c}           | 0
 .../mulq_rs_qh.c => system/ase/dsp/test_64_dsp_r1_mulq_rs_qh.c}           | 0
 .../mulsaq_s_l_pw.c => system/ase/dsp/test_64_dsp_r1_mulsaq_s_l_pw.c}     | 0
 .../mulsaq_s_w_qh.c => system/ase/dsp/test_64_dsp_r1_mulsaq_s_w_qh.c}     | 0
 .../tcg/mips/{mips64-dsp/mult.c => system/ase/dsp/test_64_dsp_r1_mult.c}  | 0
 .../mips/{mips64-dsp/multu.c => system/ase/dsp/test_64_dsp_r1_multu.c}    | 0
 .../{mips64-dsp/packrl_ph.c => system/ase/dsp/test_64_dsp_r1_packrl_ph.c} | 0
 .../{mips64-dsp/packrl_pw.c => system/ase/dsp/test_64_dsp_r1_packrl_pw.c} | 0
 .../{mips64-dsp/pick_ob.c => system/ase/dsp/test_64_dsp_r1_pick_ob.c}     | 0
 .../{mips64-dsp/pick_ph.c => system/ase/dsp/test_64_dsp_r1_pick_ph.c}     | 0
 .../{mips64-dsp/pick_pw.c => system/ase/dsp/test_64_dsp_r1_pick_pw.c}     | 0
 .../{mips64-dsp/pick_qb.c => system/ase/dsp/test_64_dsp_r1_pick_qb.c}     | 0
 .../{mips64-dsp/pick_qh.c => system/ase/dsp/test_64_dsp_r1_pick_qh.c}     | 0
 .../preceq_l_pwl.c => system/ase/dsp/test_64_dsp_r1_preceq_l_pwl.c}       | 0
 .../preceq_l_pwr.c => system/ase/dsp/test_64_dsp_r1_preceq_l_pwr.c}       | 0
 .../preceq_pw_qhl.c => system/ase/dsp/test_64_dsp_r1_preceq_pw_qhl.c}     | 0
 .../preceq_pw_qhla.c => system/ase/dsp/test_64_dsp_r1_preceq_pw_qhla.c}   | 0
 .../preceq_pw_qhr.c => system/ase/dsp/test_64_dsp_r1_preceq_pw_qhr.c}     | 0
 .../preceq_pw_qhra.c => system/ase/dsp/test_64_dsp_r1_preceq_pw_qhra.c}   | 0
 .../preceq_w_phl.c => system/ase/dsp/test_64_dsp_r1_preceq_w_phl.c}       | 0
 .../preceq_w_phr.c => system/ase/dsp/test_64_dsp_r1_preceq_w_phr.c}       | 0
 .../precequ_ph_qbl.c => system/ase/dsp/test_64_dsp_r1_precequ_ph_qbl.c}   | 0
 .../precequ_ph_qbla.c => system/ase/dsp/test_64_dsp_r1_precequ_ph_qbla.c} | 0
 .../precequ_ph_qbr.c => system/ase/dsp/test_64_dsp_r1_precequ_ph_qbr.c}   | 0
 .../precequ_ph_qbra.c => system/ase/dsp/test_64_dsp_r1_precequ_ph_qbra.c} | 0
 .../precequ_qh_obl.c => system/ase/dsp/test_64_dsp_r1_precequ_qh_obl.c}   | 0
 .../precequ_qh_obla.c => system/ase/dsp/test_64_dsp_r1_precequ_qh_obla.c} | 0
 .../precequ_qh_obr.c => system/ase/dsp/test_64_dsp_r1_precequ_qh_obr.c}   | 0
 .../precequ_qh_obra.c => system/ase/dsp/test_64_dsp_r1_precequ_qh_obra.c} | 0
 .../preceu_ph_qbl.c => system/ase/dsp/test_64_dsp_r1_preceu_ph_qbl.c}     | 0
 .../preceu_ph_qbla.c => system/ase/dsp/test_64_dsp_r1_preceu_ph_qbla.c}   | 0
 .../preceu_ph_qbr.c => system/ase/dsp/test_64_dsp_r1_preceu_ph_qbr.c}     | 0
 .../preceu_ph_qbra.c => system/ase/dsp/test_64_dsp_r1_preceu_ph_qbra.c}   | 0
 .../preceu_qh_obl.c => system/ase/dsp/test_64_dsp_r1_preceu_qh_obl.c}     | 0
 .../preceu_qh_obla.c => system/ase/dsp/test_64_dsp_r1_preceu_qh_obla.c}   | 0
 .../preceu_qh_obr.c => system/ase/dsp/test_64_dsp_r1_preceu_qh_obr.c}     | 0
 .../preceu_qh_obra.c => system/ase/dsp/test_64_dsp_r1_preceu_qh_obra.c}   | 0
 .../precr_ob_qh.c => system/ase/dsp/test_64_dsp_r1_precr_ob_qh.c}         | 0
 .../precr_sra_qh_pw.c => system/ase/dsp/test_64_dsp_r1_precr_sra_qh_pw.c} | 0
 .../ase/dsp/test_64_dsp_r1_precr_sra_r_qh_pw.c}                           | 0
 .../precrq_ob_qh.c => system/ase/dsp/test_64_dsp_r1_precrq_ob_qh.c}       | 0
 .../precrq_ph_w.c => system/ase/dsp/test_64_dsp_r1_precrq_ph_w.c}         | 0
 .../precrq_pw_l.c => system/ase/dsp/test_64_dsp_r1_precrq_pw_l.c}         | 0
 .../precrq_qb_ph.c => system/ase/dsp/test_64_dsp_r1_precrq_qb_ph.c}       | 0
 .../precrq_qh_pw.c => system/ase/dsp/test_64_dsp_r1_precrq_qh_pw.c}       | 0
 .../precrq_rs_ph_w.c => system/ase/dsp/test_64_dsp_r1_precrq_rs_ph_w.c}   | 0
 .../precrq_rs_qh_pw.c => system/ase/dsp/test_64_dsp_r1_precrq_rs_qh_pw.c} | 0
 .../precrqu_s_ob_qh.c => system/ase/dsp/test_64_dsp_r1_precrqu_s_ob_qh.c} | 0
 .../precrqu_s_qb_ph.c => system/ase/dsp/test_64_dsp_r1_precrqu_s_qb_ph.c} | 0
 .../{mips64-dsp/prependd.c => system/ase/dsp/test_64_dsp_r1_prependd.c}   | 0
 .../{mips64-dsp/prependw.c => system/ase/dsp/test_64_dsp_r1_prependw.c}   | 0
 .../{mips64-dspr2/printf.c => system/ase/dsp/test_64_dsp_r1_printf.c}     | 0
 .../raddu_l_ob.c => system/ase/dsp/test_64_dsp_r1_raddu_l_ob.c}           | 0
 .../raddu_w_qb.c => system/ase/dsp/test_64_dsp_r1_raddu_w_qb.c}           | 0
 .../mips/{mips64-dsp/rddsp.c => system/ase/dsp/test_64_dsp_r1_rddsp.c}    | 0
 .../{mips64-dsp/repl_ob.c => system/ase/dsp/test_64_dsp_r1_repl_ob.c}     | 0
 .../{mips64-dsp/repl_ph.c => system/ase/dsp/test_64_dsp_r1_repl_ph.c}     | 0
 .../{mips64-dsp/repl_pw.c => system/ase/dsp/test_64_dsp_r1_repl_pw.c}     | 0
 .../{mips64-dsp/repl_qb.c => system/ase/dsp/test_64_dsp_r1_repl_qb.c}     | 0
 .../{mips64-dsp/repl_qh.c => system/ase/dsp/test_64_dsp_r1_repl_qh.c}     | 0
 .../{mips64-dsp/replv_ob.c => system/ase/dsp/test_64_dsp_r1_replv_ob.c}   | 0
 .../{mips64-dsp/replv_ph.c => system/ase/dsp/test_64_dsp_r1_replv_ph.c}   | 0
 .../{mips64-dsp/replv_pw.c => system/ase/dsp/test_64_dsp_r1_replv_pw.c}   | 0
 .../{mips64-dsp/replv_qb.c => system/ase/dsp/test_64_dsp_r1_replv_qb.c}   | 0
 .../mips/{mips64-dsp/shilo.c => system/ase/dsp/test_64_dsp_r1_shilo.c}    | 0
 .../mips/{mips64-dsp/shilov.c => system/ase/dsp/test_64_dsp_r1_shilov.c}  | 0
 .../{mips64-dsp/shll_ob.c => system/ase/dsp/test_64_dsp_r1_shll_ob.c}     | 0
 .../{mips64-dsp/shll_ph.c => system/ase/dsp/test_64_dsp_r1_shll_ph.c}     | 0
 .../{mips64-dsp/shll_pw.c => system/ase/dsp/test_64_dsp_r1_shll_pw.c}     | 0
 .../{mips64-dsp/shll_qb.c => system/ase/dsp/test_64_dsp_r1_shll_qb.c}     | 0
 .../{mips64-dsp/shll_qh.c => system/ase/dsp/test_64_dsp_r1_shll_qh.c}     | 0
 .../{mips64-dsp/shll_s_ph.c => system/ase/dsp/test_64_dsp_r1_shll_s_ph.c} | 0
 .../{mips64-dsp/shll_s_pw.c => system/ase/dsp/test_64_dsp_r1_shll_s_pw.c} | 0
 .../{mips64-dsp/shll_s_qh.c => system/ase/dsp/test_64_dsp_r1_shll_s_qh.c} | 0
 .../{mips64-dsp/shll_s_w.c => system/ase/dsp/test_64_dsp_r1_shll_s_w.c}   | 0
 .../{mips64-dsp/shllv_ob.c => system/ase/dsp/test_64_dsp_r1_shllv_ob.c}   | 0
 .../{mips64-dsp/shllv_ph.c => system/ase/dsp/test_64_dsp_r1_shllv_ph.c}   | 0
 .../{mips64-dsp/shllv_pw.c => system/ase/dsp/test_64_dsp_r1_shllv_pw.c}   | 0
 .../{mips64-dsp/shllv_qb.c => system/ase/dsp/test_64_dsp_r1_shllv_qb.c}   | 0
 .../{mips64-dsp/shllv_qh.c => system/ase/dsp/test_64_dsp_r1_shllv_qh.c}   | 0
 .../shllv_s_ph.c => system/ase/dsp/test_64_dsp_r1_shllv_s_ph.c}           | 0
 .../shllv_s_pw.c => system/ase/dsp/test_64_dsp_r1_shllv_s_pw.c}           | 0
 .../shllv_s_qh.c => system/ase/dsp/test_64_dsp_r1_shllv_s_qh.c}           | 0
 .../{mips64-dsp/shllv_s_w.c => system/ase/dsp/test_64_dsp_r1_shllv_s_w.c} | 0
 .../{mips64-dsp/shra_ob.c => system/ase/dsp/test_64_dsp_r1_shra_ob.c}     | 0
 .../{mips64-dsp/shra_ph.c => system/ase/dsp/test_64_dsp_r1_shra_ph.c}     | 0
 .../{mips64-dsp/shra_pw.c => system/ase/dsp/test_64_dsp_r1_shra_pw.c}     | 0
 .../{mips64-dsp/shra_qh.c => system/ase/dsp/test_64_dsp_r1_shra_qh.c}     | 0
 .../{mips64-dsp/shra_r_ob.c => system/ase/dsp/test_64_dsp_r1_shra_r_ob.c} | 0
 .../{mips64-dsp/shra_r_ph.c => system/ase/dsp/test_64_dsp_r1_shra_r_ph.c} | 0
 .../{mips64-dsp/shra_r_pw.c => system/ase/dsp/test_64_dsp_r1_shra_r_pw.c} | 0
 .../{mips64-dsp/shra_r_qh.c => system/ase/dsp/test_64_dsp_r1_shra_r_qh.c} | 0
 .../{mips64-dsp/shra_r_w.c => system/ase/dsp/test_64_dsp_r1_shra_r_w.c}   | 0
 .../{mips64-dsp/shrav_ph.c => system/ase/dsp/test_64_dsp_r1_shrav_ph.c}   | 0
 .../{mips64-dsp/shrav_pw.c => system/ase/dsp/test_64_dsp_r1_shrav_pw.c}   | 0
 .../{mips64-dsp/shrav_qh.c => system/ase/dsp/test_64_dsp_r1_shrav_qh.c}   | 0
 .../shrav_r_ph.c => system/ase/dsp/test_64_dsp_r1_shrav_r_ph.c}           | 0
 .../shrav_r_pw.c => system/ase/dsp/test_64_dsp_r1_shrav_r_pw.c}           | 0
 .../shrav_r_qh.c => system/ase/dsp/test_64_dsp_r1_shrav_r_qh.c}           | 0
 .../{mips64-dsp/shrav_r_w.c => system/ase/dsp/test_64_dsp_r1_shrav_r_w.c} | 0
 .../{mips64-dsp/shrl_ob.c => system/ase/dsp/test_64_dsp_r1_shrl_ob.c}     | 0
 .../{mips64-dsp/shrl_qb.c => system/ase/dsp/test_64_dsp_r1_shrl_qb.c}     | 0
 .../{mips64-dsp/shrl_qh.c => system/ase/dsp/test_64_dsp_r1_shrl_qh.c}     | 0
 .../{mips64-dsp/shrlv_ob.c => system/ase/dsp/test_64_dsp_r1_shrlv_ob.c}   | 0
 .../{mips64-dsp/shrlv_qb.c => system/ase/dsp/test_64_dsp_r1_shrlv_qb.c}   | 0
 .../{mips64-dsp/shrlv_qh.c => system/ase/dsp/test_64_dsp_r1_shrlv_qh.c}   | 0
 .../{mips64-dsp/subq_ph.c => system/ase/dsp/test_64_dsp_r1_subq_ph.c}     | 0
 .../{mips64-dsp/subq_pw.c => system/ase/dsp/test_64_dsp_r1_subq_pw.c}     | 0
 .../{mips64-dsp/subq_qh.c => system/ase/dsp/test_64_dsp_r1_subq_qh.c}     | 0
 .../{mips64-dsp/subq_s_ph.c => system/ase/dsp/test_64_dsp_r1_subq_s_ph.c} | 0
 .../{mips64-dsp/subq_s_pw.c => system/ase/dsp/test_64_dsp_r1_subq_s_pw.c} | 0
 .../{mips64-dsp/subq_s_qh.c => system/ase/dsp/test_64_dsp_r1_subq_s_qh.c} | 0
 .../{mips64-dsp/subq_s_w.c => system/ase/dsp/test_64_dsp_r1_subq_s_w.c}   | 0
 .../{mips64-dsp/subu_ob.c => system/ase/dsp/test_64_dsp_r1_subu_ob.c}     | 0
 .../{mips64-dsp/subu_qb.c => system/ase/dsp/test_64_dsp_r1_subu_qb.c}     | 0
 .../{mips64-dsp/subu_s_ob.c => system/ase/dsp/test_64_dsp_r1_subu_s_ob.c} | 0
 .../{mips64-dsp/subu_s_qb.c => system/ase/dsp/test_64_dsp_r1_subu_s_qb.c} | 0
 .../mips/{mips64-dsp/wrdsp.c => system/ase/dsp/test_64_dsp_r1_wrdsp.c}    | 0
 .../absq_s_qb.c => system/ase/dsp/test_64_dsp_r2_absq_s_qb.c}             | 0
 .../{mips64-dspr2/addqh_ph.c => system/ase/dsp/test_64_dsp_r2_addqh_ph.c} | 0
 .../addqh_r_ph.c => system/ase/dsp/test_64_dsp_r2_addqh_r_ph.c}           | 0
 .../addqh_r_w.c => system/ase/dsp/test_64_dsp_r2_addqh_r_w.c}             | 0
 .../{mips64-dspr2/addqh_w.c => system/ase/dsp/test_64_dsp_r2_addqh_w.c}   | 0
 .../{mips64-dspr2/addu_ph.c => system/ase/dsp/test_64_dsp_r2_addu_ph.c}   | 0
 .../{mips64-dspr2/addu_qh.c => system/ase/dsp/test_64_dsp_r2_addu_qh.c}   | 0
 .../addu_s_ph.c => system/ase/dsp/test_64_dsp_r2_addu_s_ph.c}             | 0
 .../addu_s_qh.c => system/ase/dsp/test_64_dsp_r2_addu_s_qh.c}             | 0
 .../{mips64-dspr2/adduh_ob.c => system/ase/dsp/test_64_dsp_r2_adduh_ob.c} | 0
 .../{mips64-dspr2/adduh_qb.c => system/ase/dsp/test_64_dsp_r2_adduh_qb.c} | 0
 .../adduh_r_ob.c => system/ase/dsp/test_64_dsp_r2_adduh_r_ob.c}           | 0
 .../adduh_r_qb.c => system/ase/dsp/test_64_dsp_r2_adduh_r_qb.c}           | 0
 .../{mips64-dspr2/append.c => system/ase/dsp/test_64_dsp_r2_append.c}     | 0
 .../{mips64-dspr2/balign.c => system/ase/dsp/test_64_dsp_r2_balign.c}     | 0
 .../cmpgdu_eq_ob.c => system/ase/dsp/test_64_dsp_r2_cmpgdu_eq_ob.c}       | 0
 .../cmpgdu_eq_qb.c => system/ase/dsp/test_64_dsp_r2_cmpgdu_eq_qb.c}       | 0
 .../cmpgdu_le_ob.c => system/ase/dsp/test_64_dsp_r2_cmpgdu_le_ob.c}       | 0
 .../cmpgdu_le_qb.c => system/ase/dsp/test_64_dsp_r2_cmpgdu_le_qb.c}       | 0
 .../cmpgdu_lt_ob.c => system/ase/dsp/test_64_dsp_r2_cmpgdu_lt_ob.c}       | 0
 .../cmpgdu_lt_qb.c => system/ase/dsp/test_64_dsp_r2_cmpgdu_lt_qb.c}       | 0
 .../{mips64-dspr2/dbalign.c => system/ase/dsp/test_64_dsp_r2_dbalign.c}   | 0
 .../{mips64-dspr2/dpa_w_ph.c => system/ase/dsp/test_64_dsp_r2_dpa_w_ph.c} | 0
 .../{mips64-dspr2/dpa_w_qh.c => system/ase/dsp/test_64_dsp_r2_dpa_w_qh.c} | 0
 .../dpaqx_s_w_ph.c => system/ase/dsp/test_64_dsp_r2_dpaqx_s_w_ph.c}       | 0
 .../dpaqx_sa_w_ph.c => system/ase/dsp/test_64_dsp_r2_dpaqx_sa_w_ph.c}     | 0
 .../dpax_w_ph.c => system/ase/dsp/test_64_dsp_r2_dpax_w_ph.c}             | 0
 .../{mips64-dspr2/dps_w_ph.c => system/ase/dsp/test_64_dsp_r2_dps_w_ph.c} | 0
 .../{mips64-dspr2/dps_w_qh.c => system/ase/dsp/test_64_dsp_r2_dps_w_qh.c} | 0
 .../dpsqx_s_w_ph.c => system/ase/dsp/test_64_dsp_r2_dpsqx_s_w_ph.c}       | 0
 .../dpsqx_sa_w_ph.c => system/ase/dsp/test_64_dsp_r2_dpsqx_sa_w_ph.c}     | 0
 .../dpsx_w_ph.c => system/ase/dsp/test_64_dsp_r2_dpsx_w_ph.c}             | 0
 .../{mips64-dspr2/mul_ph.c => system/ase/dsp/test_64_dsp_r2_mul_ph.c}     | 0
 .../{mips64-dspr2/mul_s_ph.c => system/ase/dsp/test_64_dsp_r2_mul_s_ph.c} | 0
 .../mulq_rs_w.c => system/ase/dsp/test_64_dsp_r2_mulq_rs_w.c}             | 0
 .../mulq_s_ph.c => system/ase/dsp/test_64_dsp_r2_mulq_s_ph.c}             | 0
 .../{mips64-dspr2/mulq_s_w.c => system/ase/dsp/test_64_dsp_r2_mulq_s_w.c} | 0
 .../mulsa_w_ph.c => system/ase/dsp/test_64_dsp_r2_mulsa_w_ph.c}           | 0
 .../mulsaq_s_w_ph.c => system/ase/dsp/test_64_dsp_r2_mulsaq_s_w_ph.c}     | 0
 .../precr_qb_ph.c => system/ase/dsp/test_64_dsp_r2_precr_qb_ph.c}         | 0
 .../precr_sra_ph_w.c => system/ase/dsp/test_64_dsp_r2_precr_sra_ph_w.c}   | 0
 .../ase/dsp/test_64_dsp_r2_precr_sra_r_ph_w.c}                            | 0
 .../{mips64-dspr2/prepend.c => system/ase/dsp/test_64_dsp_r2_prepend.c}   | 0
 .../mips/{mips64-dsp/printf.c => system/ase/dsp/test_64_dsp_r2_printf.c}  | 0
 .../{mips64-dspr2/shra_qb.c => system/ase/dsp/test_64_dsp_r2_shra_qb.c}   | 0
 .../shra_r_qb.c => system/ase/dsp/test_64_dsp_r2_shra_r_qb.c}             | 0
 .../{mips64-dspr2/shrav_ob.c => system/ase/dsp/test_64_dsp_r2_shrav_ob.c} | 0
 .../{mips64-dspr2/shrav_qb.c => system/ase/dsp/test_64_dsp_r2_shrav_qb.c} | 0
 .../shrav_r_ob.c => system/ase/dsp/test_64_dsp_r2_shrav_r_ob.c}           | 0
 .../shrav_r_qb.c => system/ase/dsp/test_64_dsp_r2_shrav_r_qb.c}           | 0
 .../{mips64-dspr2/shrl_ph.c => system/ase/dsp/test_64_dsp_r2_shrl_ph.c}   | 0
 .../{mips64-dspr2/shrlv_ph.c => system/ase/dsp/test_64_dsp_r2_shrlv_ph.c} | 0
 .../{mips64-dspr2/subqh_ph.c => system/ase/dsp/test_64_dsp_r2_subqh_ph.c} | 0
 .../subqh_r_ph.c => system/ase/dsp/test_64_dsp_r2_subqh_r_ph.c}           | 0
 .../subqh_r_w.c => system/ase/dsp/test_64_dsp_r2_subqh_r_w.c}             | 0
 .../{mips64-dspr2/subqh_w.c => system/ase/dsp/test_64_dsp_r2_subqh_w.c}   | 0
 .../{mips64-dspr2/subu_ph.c => system/ase/dsp/test_64_dsp_r2_subu_ph.c}   | 0
 .../{mips64-dspr2/subu_qh.c => system/ase/dsp/test_64_dsp_r2_subu_qh.c}   | 0
 .../subu_s_ph.c => system/ase/dsp/test_64_dsp_r2_subu_s_ph.c}             | 0
 .../subu_s_qh.c => system/ase/dsp/test_64_dsp_r2_subu_s_qh.c}             | 0
 .../{mips64-dspr2/subuh_ob.c => system/ase/dsp/test_64_dsp_r2_subuh_ob.c} | 0
 .../{mips64-dspr2/subuh_qb.c => system/ase/dsp/test_64_dsp_r2_subuh_qb.c} | 0
 .../subuh_r_ob.c => system/ase/dsp/test_64_dsp_r2_subuh_r_ob.c}           | 0
 .../subuh_r_qb.c => system/ase/dsp/test_64_dsp_r2_subuh_r_qb.c}           | 0
 .../{mips32-dsp/absq_s_ph.c => user/ase/dsp/test_32_dsp_r1_absq_s_ph.c}   | 0
 .../{mips32-dsp/absq_s_w.c => user/ase/dsp/test_32_dsp_r1_absq_s_w.c}     | 0
 .../mips/{mips32-dsp/addq_ph.c => user/ase/dsp/test_32_dsp_r1_addq_ph.c}  | 0
 .../{mips32-dsp/addq_s_ph.c => user/ase/dsp/test_32_dsp_r1_addq_s_ph.c}   | 0
 .../{mips32-dsp/addq_s_w.c => user/ase/dsp/test_32_dsp_r1_addq_s_w.c}     | 0
 .../tcg/mips/{mips32-dsp/addsc.c => user/ase/dsp/test_32_dsp_r1_addsc.c}  | 0
 .../mips/{mips32-dsp/addu_qb.c => user/ase/dsp/test_32_dsp_r1_addu_qb.c}  | 0
 .../{mips32-dsp/addu_s_qb.c => user/ase/dsp/test_32_dsp_r1_addu_s_qb.c}   | 0
 .../tcg/mips/{mips32-dsp/addwc.c => user/ase/dsp/test_32_dsp_r1_addwc.c}  | 0
 .../mips/{mips32-dsp/bitrev.c => user/ase/dsp/test_32_dsp_r1_bitrev.c}    | 0
 .../{mips32-dsp/bposge32.c => user/ase/dsp/test_32_dsp_r1_bposge32.c}     | 0
 .../{mips32-dsp/cmp_eq_ph.c => user/ase/dsp/test_32_dsp_r1_cmp_eq_ph.c}   | 0
 .../{mips32-dsp/cmp_le_ph.c => user/ase/dsp/test_32_dsp_r1_cmp_le_ph.c}   | 0
 .../{mips32-dsp/cmp_lt_ph.c => user/ase/dsp/test_32_dsp_r1_cmp_lt_ph.c}   | 0
 .../cmpgu_eq_qb.c => user/ase/dsp/test_32_dsp_r1_cmpgu_eq_qb.c}           | 0
 .../cmpgu_le_qb.c => user/ase/dsp/test_32_dsp_r1_cmpgu_le_qb.c}           | 0
 .../cmpgu_lt_qb.c => user/ase/dsp/test_32_dsp_r1_cmpgu_lt_qb.c}           | 0
 .../{mips32-dsp/cmpu_eq_qb.c => user/ase/dsp/test_32_dsp_r1_cmpu_eq_qb.c} | 0
 .../{mips32-dsp/cmpu_le_qb.c => user/ase/dsp/test_32_dsp_r1_cmpu_le_qb.c} | 0
 .../{mips32-dsp/cmpu_lt_qb.c => user/ase/dsp/test_32_dsp_r1_cmpu_lt_qb.c} | 0
 .../dpaq_s_w_ph.c => user/ase/dsp/test_32_dsp_r1_dpaq_s_w_ph.c}           | 0
 .../dpaq_sa_l_w.c => user/ase/dsp/test_32_dsp_r1_dpaq_sa_l_w.c}           | 0
 .../{mips32-dsp/dpau_h_qbl.c => user/ase/dsp/test_32_dsp_r1_dpau_h_qbl.c} | 0
 .../{mips32-dsp/dpau_h_qbr.c => user/ase/dsp/test_32_dsp_r1_dpau_h_qbr.c} | 0
 .../dpsq_s_w_ph.c => user/ase/dsp/test_32_dsp_r1_dpsq_s_w_ph.c}           | 0
 .../dpsq_sa_l_w.c => user/ase/dsp/test_32_dsp_r1_dpsq_sa_l_w.c}           | 0
 .../{mips32-dsp/dpsu_h_qbl.c => user/ase/dsp/test_32_dsp_r1_dpsu_h_qbl.c} | 0
 .../{mips32-dsp/dpsu_h_qbr.c => user/ase/dsp/test_32_dsp_r1_dpsu_h_qbr.c} | 0
 tests/tcg/mips/{mips32-dsp/extp.c => user/ase/dsp/test_32_dsp_r1_extp.c}  | 0
 .../mips/{mips32-dsp/extpdp.c => user/ase/dsp/test_32_dsp_r1_extpdp.c}    | 0
 .../mips/{mips32-dsp/extpdpv.c => user/ase/dsp/test_32_dsp_r1_extpdpv.c}  | 0
 .../tcg/mips/{mips32-dsp/extpv.c => user/ase/dsp/test_32_dsp_r1_extpv.c}  | 0
 .../{mips32-dsp/extr_r_w.c => user/ase/dsp/test_32_dsp_r1_extr_r_w.c}     | 0
 .../{mips32-dsp/extr_rs_w.c => user/ase/dsp/test_32_dsp_r1_extr_rs_w.c}   | 0
 .../{mips32-dsp/extr_s_h.c => user/ase/dsp/test_32_dsp_r1_extr_s_h.c}     | 0
 .../mips/{mips32-dsp/extr_w.c => user/ase/dsp/test_32_dsp_r1_extr_w.c}    | 0
 .../{mips32-dsp/extrv_r_w.c => user/ase/dsp/test_32_dsp_r1_extrv_r_w.c}   | 0
 .../{mips32-dsp/extrv_rs_w.c => user/ase/dsp/test_32_dsp_r1_extrv_rs_w.c} | 0
 .../{mips32-dsp/extrv_s_h.c => user/ase/dsp/test_32_dsp_r1_extrv_s_h.c}   | 0
 .../mips/{mips32-dsp/extrv_w.c => user/ase/dsp/test_32_dsp_r1_extrv_w.c}  | 0
 tests/tcg/mips/{mips32-dsp/insv.c => user/ase/dsp/test_32_dsp_r1_insv.c}  | 0
 tests/tcg/mips/{mips32-dsp/lbux.c => user/ase/dsp/test_32_dsp_r1_lbux.c}  | 0
 tests/tcg/mips/{mips32-dsp/lhx.c => user/ase/dsp/test_32_dsp_r1_lhx.c}    | 0
 tests/tcg/mips/{mips32-dsp/lwx.c => user/ase/dsp/test_32_dsp_r1_lwx.c}    | 0
 tests/tcg/mips/{mips32-dsp/maddu.c => user/ase/dsp/test_32_dsp_r1_madd.c} | 0
 tests/tcg/mips/{mips32-dsp/madd.c => user/ase/dsp/test_32_dsp_r1_maddu.c} | 0
 tests/tcg/mips/{mips32-dsp/main.c => user/ase/dsp/test_32_dsp_r1_main.c}  | 0
 .../maq_s_w_phl.c => user/ase/dsp/test_32_dsp_r1_maq_s_w_phl.c}           | 0
 .../maq_s_w_phr.c => user/ase/dsp/test_32_dsp_r1_maq_s_w_phr.c}           | 0
 .../maq_sa_w_phl.c => user/ase/dsp/test_32_dsp_r1_maq_sa_w_phl.c}         | 0
 .../maq_sa_w_phr.c => user/ase/dsp/test_32_dsp_r1_maq_sa_w_phr.c}         | 0
 tests/tcg/mips/{mips32-dsp/mthi.c => user/ase/dsp/test_32_dsp_r1_mfhi.c}  | 0
 tests/tcg/mips/{mips32-dsp/mtlo.c => user/ase/dsp/test_32_dsp_r1_mflo.c}  | 0
 .../mips/{mips32-dsp/modsub.c => user/ase/dsp/test_32_dsp_r1_modsub.c}    | 0
 tests/tcg/mips/{mips32-dsp/msub.c => user/ase/dsp/test_32_dsp_r1_msub.c}  | 0
 .../tcg/mips/{mips32-dsp/msubu.c => user/ase/dsp/test_32_dsp_r1_msubu.c}  | 0
 tests/tcg/mips/{mips32-dsp/mfhi.c => user/ase/dsp/test_32_dsp_r1_mthi.c}  | 0
 .../mips/{mips32-dsp/mthlip.c => user/ase/dsp/test_32_dsp_r1_mthlip.c}    | 0
 tests/tcg/mips/{mips32-dsp/mflo.c => user/ase/dsp/test_32_dsp_r1_mtlo.c}  | 0
 .../muleq_s_w_phl.c => user/ase/dsp/test_32_dsp_r1_muleq_s_w_phl.c}       | 0
 .../muleq_s_w_phr.c => user/ase/dsp/test_32_dsp_r1_muleq_s_w_phr.c}       | 0
 .../muleu_s_ph_qbl.c => user/ase/dsp/test_32_dsp_r1_muleu_s_ph_qbl.c}     | 0
 .../muleu_s_ph_qbr.c => user/ase/dsp/test_32_dsp_r1_muleu_s_ph_qbr.c}     | 0
 .../{mips32-dsp/mulq_rs_ph.c => user/ase/dsp/test_32_dsp_r1_mulq_rs_ph.c} | 0
 tests/tcg/mips/{mips32-dsp/mult.c => user/ase/dsp/test_32_dsp_r1_mult.c}  | 0
 .../tcg/mips/{mips32-dsp/multu.c => user/ase/dsp/test_32_dsp_r1_multu.c}  | 0
 .../{mips32-dsp/packrl_ph.c => user/ase/dsp/test_32_dsp_r1_packrl_ph.c}   | 0
 .../mips/{mips32-dsp/pick_ph.c => user/ase/dsp/test_32_dsp_r1_pick_ph.c}  | 0
 .../mips/{mips32-dsp/pick_qb.c => user/ase/dsp/test_32_dsp_r1_pick_qb.c}  | 0
 .../preceq_w_phl.c => user/ase/dsp/test_32_dsp_r1_preceq_w_phl.c}         | 0
 .../preceq_w_phr.c => user/ase/dsp/test_32_dsp_r1_preceq_w_phr.c}         | 0
 .../precequ_ph_qbl.c => user/ase/dsp/test_32_dsp_r1_precequ_ph_qbl.c}     | 0
 .../precequ_ph_qbla.c => user/ase/dsp/test_32_dsp_r1_precequ_ph_qbla.c}   | 0
 .../precequ_ph_qbr.c => user/ase/dsp/test_32_dsp_r1_precequ_ph_qbr.c}     | 0
 .../precequ_ph_qbra.c => user/ase/dsp/test_32_dsp_r1_precequ_ph_qbra.c}   | 0
 .../preceu_ph_qbl.c => user/ase/dsp/test_32_dsp_r1_preceu_ph_qbl.c}       | 0
 .../preceu_ph_qbla.c => user/ase/dsp/test_32_dsp_r1_preceu_ph_qbla.c}     | 0
 .../preceu_ph_qbr.c => user/ase/dsp/test_32_dsp_r1_preceu_ph_qbr.c}       | 0
 .../preceu_ph_qbra.c => user/ase/dsp/test_32_dsp_r1_preceu_ph_qbra.c}     | 0
 .../precrq_ph_w.c => user/ase/dsp/test_32_dsp_r1_precrq_ph_w.c}           | 0
 .../precrq_qb_ph.c => user/ase/dsp/test_32_dsp_r1_precrq_qb_ph.c}         | 0
 .../precrq_rs_ph_w.c => user/ase/dsp/test_32_dsp_r1_precrq_rs_ph_w.c}     | 0
 .../precrqu_s_qb_ph.c => user/ase/dsp/test_32_dsp_r1_precrqu_s_qb_ph.c}   | 0
 .../{mips32-dsp/raddu_w_qb.c => user/ase/dsp/test_32_dsp_r1_raddu_w_qb.c} | 0
 .../tcg/mips/{mips32-dsp/rddsp.c => user/ase/dsp/test_32_dsp_r1_rddsp.c}  | 0
 .../mips/{mips32-dsp/repl_ph.c => user/ase/dsp/test_32_dsp_r1_repl_ph.c}  | 0
 .../mips/{mips32-dsp/repl_qb.c => user/ase/dsp/test_32_dsp_r1_repl_qb.c}  | 0
 .../{mips32-dsp/replv_ph.c => user/ase/dsp/test_32_dsp_r1_replv_ph.c}     | 0
 .../{mips32-dsp/replv_qb.c => user/ase/dsp/test_32_dsp_r1_replv_qb.c}     | 0
 .../tcg/mips/{mips32-dsp/shilo.c => user/ase/dsp/test_32_dsp_r1_shilo.c}  | 0
 .../mips/{mips32-dsp/shilov.c => user/ase/dsp/test_32_dsp_r1_shilov.c}    | 0
 .../mips/{mips32-dsp/shll_ph.c => user/ase/dsp/test_32_dsp_r1_shll_ph.c}  | 0
 .../mips/{mips32-dsp/shll_qb.c => user/ase/dsp/test_32_dsp_r1_shll_qb.c}  | 0
 .../{mips32-dsp/shll_s_ph.c => user/ase/dsp/test_32_dsp_r1_shll_s_ph.c}   | 0
 .../{mips32-dsp/shll_s_w.c => user/ase/dsp/test_32_dsp_r1_shll_s_w.c}     | 0
 .../{mips32-dsp/shllv_ph.c => user/ase/dsp/test_32_dsp_r1_shllv_ph.c}     | 0
 .../{mips32-dsp/shllv_qb.c => user/ase/dsp/test_32_dsp_r1_shllv_qb.c}     | 0
 .../{mips32-dsp/shllv_s_ph.c => user/ase/dsp/test_32_dsp_r1_shllv_s_ph.c} | 0
 .../{mips32-dsp/shllv_s_w.c => user/ase/dsp/test_32_dsp_r1_shllv_s_w.c}   | 0
 .../mips/{mips32-dsp/shra_ph.c => user/ase/dsp/test_32_dsp_r1_shra_ph.c}  | 0
 .../{mips32-dsp/shra_r_ph.c => user/ase/dsp/test_32_dsp_r1_shra_r_ph.c}   | 0
 .../{mips32-dsp/shra_r_w.c => user/ase/dsp/test_32_dsp_r1_shra_r_w.c}     | 0
 .../{mips32-dsp/shrav_ph.c => user/ase/dsp/test_32_dsp_r1_shrav_ph.c}     | 0
 .../{mips32-dsp/shrav_r_ph.c => user/ase/dsp/test_32_dsp_r1_shrav_r_ph.c} | 0
 .../{mips32-dsp/shrav_r_w.c => user/ase/dsp/test_32_dsp_r1_shrav_r_w.c}   | 0
 .../mips/{mips32-dsp/shrl_qb.c => user/ase/dsp/test_32_dsp_r1_shrl_qb.c}  | 0
 .../{mips32-dsp/shrlv_qb.c => user/ase/dsp/test_32_dsp_r1_shrlv_qb.c}     | 0
 .../mips/{mips32-dsp/subq_ph.c => user/ase/dsp/test_32_dsp_r1_subq_ph.c}  | 0
 .../{mips32-dsp/subq_s_ph.c => user/ase/dsp/test_32_dsp_r1_subq_s_ph.c}   | 0
 .../{mips32-dsp/subq_s_w.c => user/ase/dsp/test_32_dsp_r1_subq_s_w.c}     | 0
 .../mips/{mips32-dsp/subu_qb.c => user/ase/dsp/test_32_dsp_r1_subu_qb.c}  | 0
 .../{mips32-dsp/subu_s_qb.c => user/ase/dsp/test_32_dsp_r1_subu_s_qb.c}   | 0
 .../tcg/mips/{mips32-dsp/wrdsp.c => user/ase/dsp/test_32_dsp_r1_wrdsp.c}  | 0
 .../{mips32-dspr2/absq_s_qb.c => user/ase/dsp/test_32_dsp_r2_absq_s_qb.c} | 0
 .../{mips32-dspr2/addqh_ph.c => user/ase/dsp/test_32_dsp_r2_addqh_ph.c}   | 0
 .../addqh_r_ph.c => user/ase/dsp/test_32_dsp_r2_addqh_r_ph.c}             | 0
 .../{mips32-dspr2/addqh_r_w.c => user/ase/dsp/test_32_dsp_r2_addqh_r_w.c} | 0
 .../{mips32-dspr2/addqh_w.c => user/ase/dsp/test_32_dsp_r2_addqh_w.c}     | 0
 .../{mips32-dspr2/addu_ph.c => user/ase/dsp/test_32_dsp_r2_addu_ph.c}     | 0
 .../{mips32-dspr2/addu_s_ph.c => user/ase/dsp/test_32_dsp_r2_addu_s_ph.c} | 0
 .../{mips32-dspr2/adduh_qb.c => user/ase/dsp/test_32_dsp_r2_adduh_qb.c}   | 0
 .../adduh_r_qb.c => user/ase/dsp/test_32_dsp_r2_adduh_r_qb.c}             | 0
 .../mips/{mips32-dspr2/append.c => user/ase/dsp/test_32_dsp_r2_append.c}  | 0
 .../mips/{mips32-dspr2/balign.c => user/ase/dsp/test_32_dsp_r2_balign.c}  | 0
 .../cmpgdu_eq_qb.c => user/ase/dsp/test_32_dsp_r2_cmpgdu_eq_qb.c}         | 0
 .../cmpgdu_le_qb.c => user/ase/dsp/test_32_dsp_r2_cmpgdu_le_qb.c}         | 0
 .../cmpgdu_lt_qb.c => user/ase/dsp/test_32_dsp_r2_cmpgdu_lt_qb.c}         | 0
 .../{mips32-dspr2/dpa_w_ph.c => user/ase/dsp/test_32_dsp_r2_dpa_w_ph.c}   | 0
 .../dpaqx_s_w_ph.c => user/ase/dsp/test_32_dsp_r2_dpaqx_s_w_ph.c}         | 0
 .../dpaqx_sa_w_ph.c => user/ase/dsp/test_32_dsp_r2_dpaqx_sa_w_ph.c}       | 0
 .../{mips32-dspr2/dpax_w_ph.c => user/ase/dsp/test_32_dsp_r2_dpax_w_ph.c} | 0
 .../{mips32-dspr2/dps_w_ph.c => user/ase/dsp/test_32_dsp_r2_dps_w_ph.c}   | 0
 .../dpsqx_s_w_ph.c => user/ase/dsp/test_32_dsp_r2_dpsqx_s_w_ph.c}         | 0
 .../dpsqx_sa_w_ph.c => user/ase/dsp/test_32_dsp_r2_dpsqx_sa_w_ph.c}       | 0
 .../{mips32-dspr2/dpsx_w_ph.c => user/ase/dsp/test_32_dsp_r2_dpsx_w_ph.c} | 0
 .../mips/{mips32-dspr2/mul_ph.c => user/ase/dsp/test_32_dsp_r2_mul_ph.c}  | 0
 .../{mips32-dspr2/mul_s_ph.c => user/ase/dsp/test_32_dsp_r2_mul_s_ph.c}   | 0
 .../{mips32-dspr2/mulq_rs_w.c => user/ase/dsp/test_32_dsp_r2_mulq_rs_w.c} | 0
 .../{mips32-dspr2/mulq_s_ph.c => user/ase/dsp/test_32_dsp_r2_mulq_s_ph.c} | 0
 .../{mips32-dspr2/mulq_s_w.c => user/ase/dsp/test_32_dsp_r2_mulq_s_w.c}   | 0
 .../mulsa_w_ph.c => user/ase/dsp/test_32_dsp_r2_mulsa_w_ph.c}             | 0
 .../mulsaq_s_w_ph.c => user/ase/dsp/test_32_dsp_r2_mulsaq_s_w_ph.c}       | 0
 .../precr_qb_ph.c => user/ase/dsp/test_32_dsp_r2_precr_qb_ph.c}           | 0
 .../precr_sra_ph_w.c => user/ase/dsp/test_32_dsp_r2_precr_sra_ph_w.c}     | 0
 .../precr_sra_r_ph_w.c => user/ase/dsp/test_32_dsp_r2_precr_sra_r_ph_w.c} | 0
 .../{mips32-dspr2/prepend.c => user/ase/dsp/test_32_dsp_r2_prepend.c}     | 0
 .../{mips32-dspr2/shra_qb.c => user/ase/dsp/test_32_dsp_r2_shra_qb.c}     | 0
 .../{mips32-dspr2/shra_r_qb.c => user/ase/dsp/test_32_dsp_r2_shra_r_qb.c} | 0
 .../{mips32-dspr2/shrav_qb.c => user/ase/dsp/test_32_dsp_r2_shrav_qb.c}   | 0
 .../shrav_r_qb.c => user/ase/dsp/test_32_dsp_r2_shrav_r_qb.c}             | 0
 .../{mips32-dspr2/shrl_ph.c => user/ase/dsp/test_32_dsp_r2_shrl_ph.c}     | 0
 .../{mips32-dspr2/shrlv_ph.c => user/ase/dsp/test_32_dsp_r2_shrlv_ph.c}   | 0
 .../{mips32-dspr2/subqh_ph.c => user/ase/dsp/test_32_dsp_r2_subqh_ph.c}   | 0
 .../subqh_r_ph.c => user/ase/dsp/test_32_dsp_r2_subqh_r_ph.c}             | 0
 .../{mips32-dspr2/subqh_r_w.c => user/ase/dsp/test_32_dsp_r2_subqh_r_w.c} | 0
 .../{mips32-dspr2/subqh_w.c => user/ase/dsp/test_32_dsp_r2_subqh_w.c}     | 0
 .../{mips32-dspr2/subu_ph.c => user/ase/dsp/test_32_dsp_r2_subu_ph.c}     | 0
 .../{mips32-dspr2/subu_s_ph.c => user/ase/dsp/test_32_dsp_r2_subu_s_ph.c} | 0
 .../{mips32-dspr2/subuh_qb.c => user/ase/dsp/test_32_dsp_r2_subuh_qb.c}   | 0
 .../subuh_r_qb.c => user/ase/dsp/test_32_dsp_r2_subuh_r_qb.c}             | 0
 tests/tcg/mips/{mipsr5900/div1.c => user/isa/r5900/test_r5900_div1.c}     | 0
 tests/tcg/mips/{mipsr5900/divu1.c => user/isa/r5900/test_r5900_divu1.c}   | 0
 tests/tcg/mips/{mipsr5900/madd.c => user/isa/r5900/test_r5900_madd.c}     | 0
 tests/tcg/mips/{mipsr5900/maddu.c => user/isa/r5900/test_r5900_maddu.c}   | 0
 .../tcg/mips/{mipsr5900/mflohi1.c => user/isa/r5900/test_r5900_mflohi1.c} | 0
 .../tcg/mips/{mipsr5900/mtlohi1.c => user/isa/r5900/test_r5900_mtlohi1.c} | 0
 tests/tcg/mips/{mipsr5900/mult.c => user/isa/r5900/test_r5900_mult.c}     | 0
 tests/tcg/mips/{mipsr5900/multu.c => user/isa/r5900/test_r5900_multu.c}   | 0
 484 files changed, 0 insertions(+), 0 deletions(-)
 rename tests/tcg/mips/{mips64-dsp/absq_s_ob.c => system/ase/dsp/test_64_dsp_r1_absq_s_ob.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/absq_s_ph.c => system/ase/dsp/test_64_dsp_r1_absq_s_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/absq_s_pw.c => system/ase/dsp/test_64_dsp_r1_absq_s_pw.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/absq_s_qh.c => system/ase/dsp/test_64_dsp_r1_absq_s_qh.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/absq_s_w.c => system/ase/dsp/test_64_dsp_r1_absq_s_w.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/addq_ph.c => system/ase/dsp/test_64_dsp_r1_addq_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/addq_pw.c => system/ase/dsp/test_64_dsp_r1_addq_pw.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/addq_qh.c => system/ase/dsp/test_64_dsp_r1_addq_qh.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/addq_s_ph.c => system/ase/dsp/test_64_dsp_r1_addq_s_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/addq_s_pw.c => system/ase/dsp/test_64_dsp_r1_addq_s_pw.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/addq_s_qh.c => system/ase/dsp/test_64_dsp_r1_addq_s_qh.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/addq_s_w.c => system/ase/dsp/test_64_dsp_r1_addq_s_w.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/addsc.c => system/ase/dsp/test_64_dsp_r1_addsc.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/addu_ob.c => system/ase/dsp/test_64_dsp_r1_addu_ob.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/addu_qb.c => system/ase/dsp/test_64_dsp_r1_addu_qb.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/addu_s_ob.c => system/ase/dsp/test_64_dsp_r1_addu_s_ob.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/addu_s_qb.c => system/ase/dsp/test_64_dsp_r1_addu_s_qb.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/addwc.c => system/ase/dsp/test_64_dsp_r1_addwc.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/bitrev.c => system/ase/dsp/test_64_dsp_r1_bitrev.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/bposge32.c => system/ase/dsp/test_64_dsp_r1_bposge32.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/bposge64.c => system/ase/dsp/test_64_dsp_r1_bposge64.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/cmp_eq_ph.c => system/ase/dsp/test_64_dsp_r1_cmp_eq_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/cmp_eq_pw.c => system/ase/dsp/test_64_dsp_r1_cmp_eq_pw.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/cmp_eq_qh.c => system/ase/dsp/test_64_dsp_r1_cmp_eq_qh.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/cmp_le_ph.c => system/ase/dsp/test_64_dsp_r1_cmp_le_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/cmp_le_pw.c => system/ase/dsp/test_64_dsp_r1_cmp_le_pw.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/cmp_le_qh.c => system/ase/dsp/test_64_dsp_r1_cmp_le_qh.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/cmp_lt_ph.c => system/ase/dsp/test_64_dsp_r1_cmp_lt_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/cmp_lt_pw.c => system/ase/dsp/test_64_dsp_r1_cmp_lt_pw.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/cmp_lt_qh.c => system/ase/dsp/test_64_dsp_r1_cmp_lt_qh.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/cmpgu_eq_ob.c => system/ase/dsp/test_64_dsp_r1_cmpgu_eq_ob.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/cmpgu_eq_qb.c => system/ase/dsp/test_64_dsp_r1_cmpgu_eq_qb.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/cmpgu_le_ob.c => system/ase/dsp/test_64_dsp_r1_cmpgu_le_ob.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/cmpgu_le_qb.c => system/ase/dsp/test_64_dsp_r1_cmpgu_le_qb.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/cmpgu_lt_ob.c => system/ase/dsp/test_64_dsp_r1_cmpgu_lt_ob.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/cmpgu_lt_qb.c => system/ase/dsp/test_64_dsp_r1_cmpgu_lt_qb.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/cmpu_eq_ob.c => system/ase/dsp/test_64_dsp_r1_cmpu_eq_ob.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/cmpu_eq_qb.c => system/ase/dsp/test_64_dsp_r1_cmpu_eq_qb.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/cmpu_le_ob.c => system/ase/dsp/test_64_dsp_r1_cmpu_le_ob.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/cmpu_le_qb.c => system/ase/dsp/test_64_dsp_r1_cmpu_le_qb.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/cmpu_lt_ob.c => system/ase/dsp/test_64_dsp_r1_cmpu_lt_ob.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/cmpu_lt_qb.c => system/ase/dsp/test_64_dsp_r1_cmpu_lt_qb.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dappend.c => system/ase/dsp/test_64_dsp_r1_dappend.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dextp.c => system/ase/dsp/test_64_dsp_r1_dextp.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dextpdp.c => system/ase/dsp/test_64_dsp_r1_dextpdp.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dextpdpv.c => system/ase/dsp/test_64_dsp_r1_dextpdpv.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dextpv.c => system/ase/dsp/test_64_dsp_r1_dextpv.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dextr_l.c => system/ase/dsp/test_64_dsp_r1_dextr_l.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dextr_r_l.c => system/ase/dsp/test_64_dsp_r1_dextr_r_l.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dextr_r_w.c => system/ase/dsp/test_64_dsp_r1_dextr_r_w.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dextr_rs_l.c => system/ase/dsp/test_64_dsp_r1_dextr_rs_l.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dextr_rs_w.c => system/ase/dsp/test_64_dsp_r1_dextr_rs_w.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dextr_s_h.c => system/ase/dsp/test_64_dsp_r1_dextr_s_h.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dextr_w.c => system/ase/dsp/test_64_dsp_r1_dextr_w.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dextrv_l.c => system/ase/dsp/test_64_dsp_r1_dextrv_l.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dextrv_r_l.c => system/ase/dsp/test_64_dsp_r1_dextrv_r_l.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dextrv_r_w.c => system/ase/dsp/test_64_dsp_r1_dextrv_r_w.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dextrv_rs_l.c => system/ase/dsp/test_64_dsp_r1_dextrv_rs_l.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dextrv_rs_w.c => system/ase/dsp/test_64_dsp_r1_dextrv_rs_w.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dextrv_s_h.c => system/ase/dsp/test_64_dsp_r1_dextrv_s_h.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dextrv_w.c => system/ase/dsp/test_64_dsp_r1_dextrv_w.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dinsv.c => system/ase/dsp/test_64_dsp_r1_dinsv.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dmadd.c => system/ase/dsp/test_64_dsp_r1_dmadd.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dmaddu.c => system/ase/dsp/test_64_dsp_r1_dmaddu.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dmsub.c => system/ase/dsp/test_64_dsp_r1_dmsub.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dmsubu.c => system/ase/dsp/test_64_dsp_r1_dmsubu.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dmthlip.c => system/ase/dsp/test_64_dsp_r1_dmthlip.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dpaq_s_w_ph.c => system/ase/dsp/test_64_dsp_r1_dpaq_s_w_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dpaq_s_w_qh.c => system/ase/dsp/test_64_dsp_r1_dpaq_s_w_qh.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dpaq_sa_l_pw.c => system/ase/dsp/test_64_dsp_r1_dpaq_sa_l_pw.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dpaq_sa_l_w.c => system/ase/dsp/test_64_dsp_r1_dpaq_sa_l_w.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dpau_h_obl.c => system/ase/dsp/test_64_dsp_r1_dpau_h_obl.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dpau_h_obr.c => system/ase/dsp/test_64_dsp_r1_dpau_h_obr.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dpau_h_qbl.c => system/ase/dsp/test_64_dsp_r1_dpau_h_qbl.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dpau_h_qbr.c => system/ase/dsp/test_64_dsp_r1_dpau_h_qbr.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dpsq_s_w_ph.c => system/ase/dsp/test_64_dsp_r1_dpsq_s_w_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dpsq_s_w_qh.c => system/ase/dsp/test_64_dsp_r1_dpsq_s_w_qh.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dpsq_sa_l_pw.c => system/ase/dsp/test_64_dsp_r1_dpsq_sa_l_pw.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dpsq_sa_l_w.c => system/ase/dsp/test_64_dsp_r1_dpsq_sa_l_w.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dpsu_h_obl.c => system/ase/dsp/test_64_dsp_r1_dpsu_h_obl.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dpsu_h_obr.c => system/ase/dsp/test_64_dsp_r1_dpsu_h_obr.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dpsu_h_qbl.c => system/ase/dsp/test_64_dsp_r1_dpsu_h_qbl.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dpsu_h_qbr.c => system/ase/dsp/test_64_dsp_r1_dpsu_h_qbr.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dshilo.c => system/ase/dsp/test_64_dsp_r1_dshilo.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/dshilov.c => system/ase/dsp/test_64_dsp_r1_dshilov.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/extp.c => system/ase/dsp/test_64_dsp_r1_extp.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/extpdp.c => system/ase/dsp/test_64_dsp_r1_extpdp.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/extpdpv.c => system/ase/dsp/test_64_dsp_r1_extpdpv.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/extpv.c => system/ase/dsp/test_64_dsp_r1_extpv.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/extr_r_w.c => system/ase/dsp/test_64_dsp_r1_extr_r_w.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/extr_rs_w.c => system/ase/dsp/test_64_dsp_r1_extr_rs_w.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/extr_s_h.c => system/ase/dsp/test_64_dsp_r1_extr_s_h.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/extr_w.c => system/ase/dsp/test_64_dsp_r1_extr_w.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/extrv_r_w.c => system/ase/dsp/test_64_dsp_r1_extrv_r_w.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/extrv_rs_w.c => system/ase/dsp/test_64_dsp_r1_extrv_rs_w.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/extrv_s_h.c => system/ase/dsp/test_64_dsp_r1_extrv_s_h.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/extrv_w.c => system/ase/dsp/test_64_dsp_r1_extrv_w.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/insv.c => system/ase/dsp/test_64_dsp_r1_insv.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/lbux.c => system/ase/dsp/test_64_dsp_r1_lbux.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/ldx.c => system/ase/dsp/test_64_dsp_r1_ldx.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/lhx.c => system/ase/dsp/test_64_dsp_r1_lhx.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/lwx.c => system/ase/dsp/test_64_dsp_r1_lwx.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/madd.c => system/ase/dsp/test_64_dsp_r1_madd.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/maddu.c => system/ase/dsp/test_64_dsp_r1_maddu.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/maq_s_l_pwl.c => system/ase/dsp/test_64_dsp_r1_maq_s_l_pwl.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/maq_s_l_pwr.c => system/ase/dsp/test_64_dsp_r1_maq_s_l_pwr.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/maq_s_w_phl.c => system/ase/dsp/test_64_dsp_r1_maq_s_w_phl.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/maq_s_w_phr.c => system/ase/dsp/test_64_dsp_r1_maq_s_w_phr.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/maq_s_w_qhll.c => system/ase/dsp/test_64_dsp_r1_maq_s_w_qhll.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/maq_s_w_qhlr.c => system/ase/dsp/test_64_dsp_r1_maq_s_w_qhlr.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/maq_s_w_qhrl.c => system/ase/dsp/test_64_dsp_r1_maq_s_w_qhrl.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/maq_s_w_qhrr.c => system/ase/dsp/test_64_dsp_r1_maq_s_w_qhrr.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/maq_sa_w_phl.c => system/ase/dsp/test_64_dsp_r1_maq_sa_w_phl.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/maq_sa_w_phr.c => system/ase/dsp/test_64_dsp_r1_maq_sa_w_phr.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/maq_sa_w_qhll.c => system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhll.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/maq_sa_w_qhlr.c => system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhlr.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/maq_sa_w_qhrl.c => system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhrl.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/maq_sa_w_qhrr.c => system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhrr.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/mfhi.c => system/ase/dsp/test_64_dsp_r1_mfhi.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/mflo.c => system/ase/dsp/test_64_dsp_r1_mflo.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/modsub.c => system/ase/dsp/test_64_dsp_r1_modsub.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/msub.c => system/ase/dsp/test_64_dsp_r1_msub.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/msubu.c => system/ase/dsp/test_64_dsp_r1_msubu.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/mthi.c => system/ase/dsp/test_64_dsp_r1_mthi.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/mthlip.c => system/ase/dsp/test_64_dsp_r1_mthlip.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/mtlo.c => system/ase/dsp/test_64_dsp_r1_mtlo.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/muleq_s_pw_qhl.c => system/ase/dsp/test_64_dsp_r1_muleq_s_pw_qhl.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/muleq_s_pw_qhr.c => system/ase/dsp/test_64_dsp_r1_muleq_s_pw_qhr.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/muleq_s_w_phl.c => system/ase/dsp/test_64_dsp_r1_muleq_s_w_phl.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/muleq_s_w_phr.c => system/ase/dsp/test_64_dsp_r1_muleq_s_w_phr.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/muleu_s_ph_qbl.c => system/ase/dsp/test_64_dsp_r1_muleu_s_ph_qbl.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/muleu_s_ph_qbr.c => system/ase/dsp/test_64_dsp_r1_muleu_s_ph_qbr.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/muleu_s_qh_obl.c => system/ase/dsp/test_64_dsp_r1_muleu_s_qh_obl.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/muleu_s_qh_obr.c => system/ase/dsp/test_64_dsp_r1_muleu_s_qh_obr.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/mulq_rs_ph.c => system/ase/dsp/test_64_dsp_r1_mulq_rs_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/mulq_rs_qh.c => system/ase/dsp/test_64_dsp_r1_mulq_rs_qh.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/mulsaq_s_l_pw.c => system/ase/dsp/test_64_dsp_r1_mulsaq_s_l_pw.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/mulsaq_s_w_qh.c => system/ase/dsp/test_64_dsp_r1_mulsaq_s_w_qh.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/mult.c => system/ase/dsp/test_64_dsp_r1_mult.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/multu.c => system/ase/dsp/test_64_dsp_r1_multu.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/packrl_ph.c => system/ase/dsp/test_64_dsp_r1_packrl_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/packrl_pw.c => system/ase/dsp/test_64_dsp_r1_packrl_pw.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/pick_ob.c => system/ase/dsp/test_64_dsp_r1_pick_ob.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/pick_ph.c => system/ase/dsp/test_64_dsp_r1_pick_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/pick_pw.c => system/ase/dsp/test_64_dsp_r1_pick_pw.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/pick_qb.c => system/ase/dsp/test_64_dsp_r1_pick_qb.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/pick_qh.c => system/ase/dsp/test_64_dsp_r1_pick_qh.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/preceq_l_pwl.c => system/ase/dsp/test_64_dsp_r1_preceq_l_pwl.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/preceq_l_pwr.c => system/ase/dsp/test_64_dsp_r1_preceq_l_pwr.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/preceq_pw_qhl.c => system/ase/dsp/test_64_dsp_r1_preceq_pw_qhl.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/preceq_pw_qhla.c => system/ase/dsp/test_64_dsp_r1_preceq_pw_qhla.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/preceq_pw_qhr.c => system/ase/dsp/test_64_dsp_r1_preceq_pw_qhr.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/preceq_pw_qhra.c => system/ase/dsp/test_64_dsp_r1_preceq_pw_qhra.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/preceq_w_phl.c => system/ase/dsp/test_64_dsp_r1_preceq_w_phl.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/preceq_w_phr.c => system/ase/dsp/test_64_dsp_r1_preceq_w_phr.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/precequ_ph_qbl.c => system/ase/dsp/test_64_dsp_r1_precequ_ph_qbl.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/precequ_ph_qbla.c => system/ase/dsp/test_64_dsp_r1_precequ_ph_qbla.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/precequ_ph_qbr.c => system/ase/dsp/test_64_dsp_r1_precequ_ph_qbr.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/precequ_ph_qbra.c => system/ase/dsp/test_64_dsp_r1_precequ_ph_qbra.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/precequ_qh_obl.c => system/ase/dsp/test_64_dsp_r1_precequ_qh_obl.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/precequ_qh_obla.c => system/ase/dsp/test_64_dsp_r1_precequ_qh_obla.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/precequ_qh_obr.c => system/ase/dsp/test_64_dsp_r1_precequ_qh_obr.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/precequ_qh_obra.c => system/ase/dsp/test_64_dsp_r1_precequ_qh_obra.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/preceu_ph_qbl.c => system/ase/dsp/test_64_dsp_r1_preceu_ph_qbl.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/preceu_ph_qbla.c => system/ase/dsp/test_64_dsp_r1_preceu_ph_qbla.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/preceu_ph_qbr.c => system/ase/dsp/test_64_dsp_r1_preceu_ph_qbr.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/preceu_ph_qbra.c => system/ase/dsp/test_64_dsp_r1_preceu_ph_qbra.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/preceu_qh_obl.c => system/ase/dsp/test_64_dsp_r1_preceu_qh_obl.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/preceu_qh_obla.c => system/ase/dsp/test_64_dsp_r1_preceu_qh_obla.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/preceu_qh_obr.c => system/ase/dsp/test_64_dsp_r1_preceu_qh_obr.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/preceu_qh_obra.c => system/ase/dsp/test_64_dsp_r1_preceu_qh_obra.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/precr_ob_qh.c => system/ase/dsp/test_64_dsp_r1_precr_ob_qh.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/precr_sra_qh_pw.c => system/ase/dsp/test_64_dsp_r1_precr_sra_qh_pw.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/precr_sra_r_qh_pw.c => system/ase/dsp/test_64_dsp_r1_precr_sra_r_qh_pw.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/precrq_ob_qh.c => system/ase/dsp/test_64_dsp_r1_precrq_ob_qh.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/precrq_ph_w.c => system/ase/dsp/test_64_dsp_r1_precrq_ph_w.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/precrq_pw_l.c => system/ase/dsp/test_64_dsp_r1_precrq_pw_l.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/precrq_qb_ph.c => system/ase/dsp/test_64_dsp_r1_precrq_qb_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/precrq_qh_pw.c => system/ase/dsp/test_64_dsp_r1_precrq_qh_pw.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/precrq_rs_ph_w.c => system/ase/dsp/test_64_dsp_r1_precrq_rs_ph_w.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/precrq_rs_qh_pw.c => system/ase/dsp/test_64_dsp_r1_precrq_rs_qh_pw.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/precrqu_s_ob_qh.c => system/ase/dsp/test_64_dsp_r1_precrqu_s_ob_qh.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/precrqu_s_qb_ph.c => system/ase/dsp/test_64_dsp_r1_precrqu_s_qb_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/prependd.c => system/ase/dsp/test_64_dsp_r1_prependd.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/prependw.c => system/ase/dsp/test_64_dsp_r1_prependw.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/printf.c => system/ase/dsp/test_64_dsp_r1_printf.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/raddu_l_ob.c => system/ase/dsp/test_64_dsp_r1_raddu_l_ob.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/raddu_w_qb.c => system/ase/dsp/test_64_dsp_r1_raddu_w_qb.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/rddsp.c => system/ase/dsp/test_64_dsp_r1_rddsp.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/repl_ob.c => system/ase/dsp/test_64_dsp_r1_repl_ob.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/repl_ph.c => system/ase/dsp/test_64_dsp_r1_repl_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/repl_pw.c => system/ase/dsp/test_64_dsp_r1_repl_pw.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/repl_qb.c => system/ase/dsp/test_64_dsp_r1_repl_qb.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/repl_qh.c => system/ase/dsp/test_64_dsp_r1_repl_qh.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/replv_ob.c => system/ase/dsp/test_64_dsp_r1_replv_ob.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/replv_ph.c => system/ase/dsp/test_64_dsp_r1_replv_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/replv_pw.c => system/ase/dsp/test_64_dsp_r1_replv_pw.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/replv_qb.c => system/ase/dsp/test_64_dsp_r1_replv_qb.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shilo.c => system/ase/dsp/test_64_dsp_r1_shilo.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shilov.c => system/ase/dsp/test_64_dsp_r1_shilov.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shll_ob.c => system/ase/dsp/test_64_dsp_r1_shll_ob.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shll_ph.c => system/ase/dsp/test_64_dsp_r1_shll_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shll_pw.c => system/ase/dsp/test_64_dsp_r1_shll_pw.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shll_qb.c => system/ase/dsp/test_64_dsp_r1_shll_qb.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shll_qh.c => system/ase/dsp/test_64_dsp_r1_shll_qh.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shll_s_ph.c => system/ase/dsp/test_64_dsp_r1_shll_s_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shll_s_pw.c => system/ase/dsp/test_64_dsp_r1_shll_s_pw.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shll_s_qh.c => system/ase/dsp/test_64_dsp_r1_shll_s_qh.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shll_s_w.c => system/ase/dsp/test_64_dsp_r1_shll_s_w.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shllv_ob.c => system/ase/dsp/test_64_dsp_r1_shllv_ob.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shllv_ph.c => system/ase/dsp/test_64_dsp_r1_shllv_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shllv_pw.c => system/ase/dsp/test_64_dsp_r1_shllv_pw.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shllv_qb.c => system/ase/dsp/test_64_dsp_r1_shllv_qb.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shllv_qh.c => system/ase/dsp/test_64_dsp_r1_shllv_qh.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shllv_s_ph.c => system/ase/dsp/test_64_dsp_r1_shllv_s_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shllv_s_pw.c => system/ase/dsp/test_64_dsp_r1_shllv_s_pw.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shllv_s_qh.c => system/ase/dsp/test_64_dsp_r1_shllv_s_qh.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shllv_s_w.c => system/ase/dsp/test_64_dsp_r1_shllv_s_w.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shra_ob.c => system/ase/dsp/test_64_dsp_r1_shra_ob.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shra_ph.c => system/ase/dsp/test_64_dsp_r1_shra_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shra_pw.c => system/ase/dsp/test_64_dsp_r1_shra_pw.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shra_qh.c => system/ase/dsp/test_64_dsp_r1_shra_qh.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shra_r_ob.c => system/ase/dsp/test_64_dsp_r1_shra_r_ob.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shra_r_ph.c => system/ase/dsp/test_64_dsp_r1_shra_r_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shra_r_pw.c => system/ase/dsp/test_64_dsp_r1_shra_r_pw.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shra_r_qh.c => system/ase/dsp/test_64_dsp_r1_shra_r_qh.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shra_r_w.c => system/ase/dsp/test_64_dsp_r1_shra_r_w.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shrav_ph.c => system/ase/dsp/test_64_dsp_r1_shrav_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shrav_pw.c => system/ase/dsp/test_64_dsp_r1_shrav_pw.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shrav_qh.c => system/ase/dsp/test_64_dsp_r1_shrav_qh.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shrav_r_ph.c => system/ase/dsp/test_64_dsp_r1_shrav_r_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shrav_r_pw.c => system/ase/dsp/test_64_dsp_r1_shrav_r_pw.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shrav_r_qh.c => system/ase/dsp/test_64_dsp_r1_shrav_r_qh.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shrav_r_w.c => system/ase/dsp/test_64_dsp_r1_shrav_r_w.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shrl_ob.c => system/ase/dsp/test_64_dsp_r1_shrl_ob.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shrl_qb.c => system/ase/dsp/test_64_dsp_r1_shrl_qb.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shrl_qh.c => system/ase/dsp/test_64_dsp_r1_shrl_qh.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shrlv_ob.c => system/ase/dsp/test_64_dsp_r1_shrlv_ob.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shrlv_qb.c => system/ase/dsp/test_64_dsp_r1_shrlv_qb.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/shrlv_qh.c => system/ase/dsp/test_64_dsp_r1_shrlv_qh.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/subq_ph.c => system/ase/dsp/test_64_dsp_r1_subq_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/subq_pw.c => system/ase/dsp/test_64_dsp_r1_subq_pw.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/subq_qh.c => system/ase/dsp/test_64_dsp_r1_subq_qh.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/subq_s_ph.c => system/ase/dsp/test_64_dsp_r1_subq_s_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/subq_s_pw.c => system/ase/dsp/test_64_dsp_r1_subq_s_pw.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/subq_s_qh.c => system/ase/dsp/test_64_dsp_r1_subq_s_qh.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/subq_s_w.c => system/ase/dsp/test_64_dsp_r1_subq_s_w.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/subu_ob.c => system/ase/dsp/test_64_dsp_r1_subu_ob.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/subu_qb.c => system/ase/dsp/test_64_dsp_r1_subu_qb.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/subu_s_ob.c => system/ase/dsp/test_64_dsp_r1_subu_s_ob.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/subu_s_qb.c => system/ase/dsp/test_64_dsp_r1_subu_s_qb.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/wrdsp.c => system/ase/dsp/test_64_dsp_r1_wrdsp.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/absq_s_qb.c => system/ase/dsp/test_64_dsp_r2_absq_s_qb.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/addqh_ph.c => system/ase/dsp/test_64_dsp_r2_addqh_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/addqh_r_ph.c => system/ase/dsp/test_64_dsp_r2_addqh_r_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/addqh_r_w.c => system/ase/dsp/test_64_dsp_r2_addqh_r_w.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/addqh_w.c => system/ase/dsp/test_64_dsp_r2_addqh_w.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/addu_ph.c => system/ase/dsp/test_64_dsp_r2_addu_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/addu_qh.c => system/ase/dsp/test_64_dsp_r2_addu_qh.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/addu_s_ph.c => system/ase/dsp/test_64_dsp_r2_addu_s_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/addu_s_qh.c => system/ase/dsp/test_64_dsp_r2_addu_s_qh.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/adduh_ob.c => system/ase/dsp/test_64_dsp_r2_adduh_ob.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/adduh_qb.c => system/ase/dsp/test_64_dsp_r2_adduh_qb.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/adduh_r_ob.c => system/ase/dsp/test_64_dsp_r2_adduh_r_ob.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/adduh_r_qb.c => system/ase/dsp/test_64_dsp_r2_adduh_r_qb.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/append.c => system/ase/dsp/test_64_dsp_r2_append.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/balign.c => system/ase/dsp/test_64_dsp_r2_balign.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/cmpgdu_eq_ob.c => system/ase/dsp/test_64_dsp_r2_cmpgdu_eq_ob.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/cmpgdu_eq_qb.c => system/ase/dsp/test_64_dsp_r2_cmpgdu_eq_qb.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/cmpgdu_le_ob.c => system/ase/dsp/test_64_dsp_r2_cmpgdu_le_ob.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/cmpgdu_le_qb.c => system/ase/dsp/test_64_dsp_r2_cmpgdu_le_qb.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/cmpgdu_lt_ob.c => system/ase/dsp/test_64_dsp_r2_cmpgdu_lt_ob.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/cmpgdu_lt_qb.c => system/ase/dsp/test_64_dsp_r2_cmpgdu_lt_qb.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/dbalign.c => system/ase/dsp/test_64_dsp_r2_dbalign.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/dpa_w_ph.c => system/ase/dsp/test_64_dsp_r2_dpa_w_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/dpa_w_qh.c => system/ase/dsp/test_64_dsp_r2_dpa_w_qh.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/dpaqx_s_w_ph.c => system/ase/dsp/test_64_dsp_r2_dpaqx_s_w_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/dpaqx_sa_w_ph.c => system/ase/dsp/test_64_dsp_r2_dpaqx_sa_w_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/dpax_w_ph.c => system/ase/dsp/test_64_dsp_r2_dpax_w_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/dps_w_ph.c => system/ase/dsp/test_64_dsp_r2_dps_w_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/dps_w_qh.c => system/ase/dsp/test_64_dsp_r2_dps_w_qh.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/dpsqx_s_w_ph.c => system/ase/dsp/test_64_dsp_r2_dpsqx_s_w_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/dpsqx_sa_w_ph.c => system/ase/dsp/test_64_dsp_r2_dpsqx_sa_w_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/dpsx_w_ph.c => system/ase/dsp/test_64_dsp_r2_dpsx_w_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/mul_ph.c => system/ase/dsp/test_64_dsp_r2_mul_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/mul_s_ph.c => system/ase/dsp/test_64_dsp_r2_mul_s_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/mulq_rs_w.c => system/ase/dsp/test_64_dsp_r2_mulq_rs_w.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/mulq_s_ph.c => system/ase/dsp/test_64_dsp_r2_mulq_s_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/mulq_s_w.c => system/ase/dsp/test_64_dsp_r2_mulq_s_w.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/mulsa_w_ph.c => system/ase/dsp/test_64_dsp_r2_mulsa_w_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/mulsaq_s_w_ph.c => system/ase/dsp/test_64_dsp_r2_mulsaq_s_w_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/precr_qb_ph.c => system/ase/dsp/test_64_dsp_r2_precr_qb_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/precr_sra_ph_w.c => system/ase/dsp/test_64_dsp_r2_precr_sra_ph_w.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/precr_sra_r_ph_w.c => system/ase/dsp/test_64_dsp_r2_precr_sra_r_ph_w.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/prepend.c => system/ase/dsp/test_64_dsp_r2_prepend.c} (100%)
 rename tests/tcg/mips/{mips64-dsp/printf.c => system/ase/dsp/test_64_dsp_r2_printf.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/shra_qb.c => system/ase/dsp/test_64_dsp_r2_shra_qb.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/shra_r_qb.c => system/ase/dsp/test_64_dsp_r2_shra_r_qb.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/shrav_ob.c => system/ase/dsp/test_64_dsp_r2_shrav_ob.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/shrav_qb.c => system/ase/dsp/test_64_dsp_r2_shrav_qb.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/shrav_r_ob.c => system/ase/dsp/test_64_dsp_r2_shrav_r_ob.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/shrav_r_qb.c => system/ase/dsp/test_64_dsp_r2_shrav_r_qb.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/shrl_ph.c => system/ase/dsp/test_64_dsp_r2_shrl_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/shrlv_ph.c => system/ase/dsp/test_64_dsp_r2_shrlv_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/subqh_ph.c => system/ase/dsp/test_64_dsp_r2_subqh_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/subqh_r_ph.c => system/ase/dsp/test_64_dsp_r2_subqh_r_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/subqh_r_w.c => system/ase/dsp/test_64_dsp_r2_subqh_r_w.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/subqh_w.c => system/ase/dsp/test_64_dsp_r2_subqh_w.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/subu_ph.c => system/ase/dsp/test_64_dsp_r2_subu_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/subu_qh.c => system/ase/dsp/test_64_dsp_r2_subu_qh.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/subu_s_ph.c => system/ase/dsp/test_64_dsp_r2_subu_s_ph.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/subu_s_qh.c => system/ase/dsp/test_64_dsp_r2_subu_s_qh.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/subuh_ob.c => system/ase/dsp/test_64_dsp_r2_subuh_ob.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/subuh_qb.c => system/ase/dsp/test_64_dsp_r2_subuh_qb.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/subuh_r_ob.c => system/ase/dsp/test_64_dsp_r2_subuh_r_ob.c} (100%)
 rename tests/tcg/mips/{mips64-dspr2/subuh_r_qb.c => system/ase/dsp/test_64_dsp_r2_subuh_r_qb.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/absq_s_ph.c => user/ase/dsp/test_32_dsp_r1_absq_s_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/absq_s_w.c => user/ase/dsp/test_32_dsp_r1_absq_s_w.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/addq_ph.c => user/ase/dsp/test_32_dsp_r1_addq_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/addq_s_ph.c => user/ase/dsp/test_32_dsp_r1_addq_s_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/addq_s_w.c => user/ase/dsp/test_32_dsp_r1_addq_s_w.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/addsc.c => user/ase/dsp/test_32_dsp_r1_addsc.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/addu_qb.c => user/ase/dsp/test_32_dsp_r1_addu_qb.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/addu_s_qb.c => user/ase/dsp/test_32_dsp_r1_addu_s_qb.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/addwc.c => user/ase/dsp/test_32_dsp_r1_addwc.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/bitrev.c => user/ase/dsp/test_32_dsp_r1_bitrev.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/bposge32.c => user/ase/dsp/test_32_dsp_r1_bposge32.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/cmp_eq_ph.c => user/ase/dsp/test_32_dsp_r1_cmp_eq_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/cmp_le_ph.c => user/ase/dsp/test_32_dsp_r1_cmp_le_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/cmp_lt_ph.c => user/ase/dsp/test_32_dsp_r1_cmp_lt_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/cmpgu_eq_qb.c => user/ase/dsp/test_32_dsp_r1_cmpgu_eq_qb.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/cmpgu_le_qb.c => user/ase/dsp/test_32_dsp_r1_cmpgu_le_qb.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/cmpgu_lt_qb.c => user/ase/dsp/test_32_dsp_r1_cmpgu_lt_qb.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/cmpu_eq_qb.c => user/ase/dsp/test_32_dsp_r1_cmpu_eq_qb.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/cmpu_le_qb.c => user/ase/dsp/test_32_dsp_r1_cmpu_le_qb.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/cmpu_lt_qb.c => user/ase/dsp/test_32_dsp_r1_cmpu_lt_qb.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/dpaq_s_w_ph.c => user/ase/dsp/test_32_dsp_r1_dpaq_s_w_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/dpaq_sa_l_w.c => user/ase/dsp/test_32_dsp_r1_dpaq_sa_l_w.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/dpau_h_qbl.c => user/ase/dsp/test_32_dsp_r1_dpau_h_qbl.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/dpau_h_qbr.c => user/ase/dsp/test_32_dsp_r1_dpau_h_qbr.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/dpsq_s_w_ph.c => user/ase/dsp/test_32_dsp_r1_dpsq_s_w_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/dpsq_sa_l_w.c => user/ase/dsp/test_32_dsp_r1_dpsq_sa_l_w.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/dpsu_h_qbl.c => user/ase/dsp/test_32_dsp_r1_dpsu_h_qbl.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/dpsu_h_qbr.c => user/ase/dsp/test_32_dsp_r1_dpsu_h_qbr.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/extp.c => user/ase/dsp/test_32_dsp_r1_extp.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/extpdp.c => user/ase/dsp/test_32_dsp_r1_extpdp.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/extpdpv.c => user/ase/dsp/test_32_dsp_r1_extpdpv.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/extpv.c => user/ase/dsp/test_32_dsp_r1_extpv.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/extr_r_w.c => user/ase/dsp/test_32_dsp_r1_extr_r_w.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/extr_rs_w.c => user/ase/dsp/test_32_dsp_r1_extr_rs_w.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/extr_s_h.c => user/ase/dsp/test_32_dsp_r1_extr_s_h.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/extr_w.c => user/ase/dsp/test_32_dsp_r1_extr_w.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/extrv_r_w.c => user/ase/dsp/test_32_dsp_r1_extrv_r_w.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/extrv_rs_w.c => user/ase/dsp/test_32_dsp_r1_extrv_rs_w.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/extrv_s_h.c => user/ase/dsp/test_32_dsp_r1_extrv_s_h.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/extrv_w.c => user/ase/dsp/test_32_dsp_r1_extrv_w.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/insv.c => user/ase/dsp/test_32_dsp_r1_insv.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/lbux.c => user/ase/dsp/test_32_dsp_r1_lbux.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/lhx.c => user/ase/dsp/test_32_dsp_r1_lhx.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/lwx.c => user/ase/dsp/test_32_dsp_r1_lwx.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/maddu.c => user/ase/dsp/test_32_dsp_r1_madd.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/madd.c => user/ase/dsp/test_32_dsp_r1_maddu.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/main.c => user/ase/dsp/test_32_dsp_r1_main.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/maq_s_w_phl.c => user/ase/dsp/test_32_dsp_r1_maq_s_w_phl.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/maq_s_w_phr.c => user/ase/dsp/test_32_dsp_r1_maq_s_w_phr.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/maq_sa_w_phl.c => user/ase/dsp/test_32_dsp_r1_maq_sa_w_phl.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/maq_sa_w_phr.c => user/ase/dsp/test_32_dsp_r1_maq_sa_w_phr.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/mthi.c => user/ase/dsp/test_32_dsp_r1_mfhi.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/mtlo.c => user/ase/dsp/test_32_dsp_r1_mflo.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/modsub.c => user/ase/dsp/test_32_dsp_r1_modsub.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/msub.c => user/ase/dsp/test_32_dsp_r1_msub.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/msubu.c => user/ase/dsp/test_32_dsp_r1_msubu.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/mfhi.c => user/ase/dsp/test_32_dsp_r1_mthi.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/mthlip.c => user/ase/dsp/test_32_dsp_r1_mthlip.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/mflo.c => user/ase/dsp/test_32_dsp_r1_mtlo.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/muleq_s_w_phl.c => user/ase/dsp/test_32_dsp_r1_muleq_s_w_phl.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/muleq_s_w_phr.c => user/ase/dsp/test_32_dsp_r1_muleq_s_w_phr.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/muleu_s_ph_qbl.c => user/ase/dsp/test_32_dsp_r1_muleu_s_ph_qbl.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/muleu_s_ph_qbr.c => user/ase/dsp/test_32_dsp_r1_muleu_s_ph_qbr.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/mulq_rs_ph.c => user/ase/dsp/test_32_dsp_r1_mulq_rs_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/mult.c => user/ase/dsp/test_32_dsp_r1_mult.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/multu.c => user/ase/dsp/test_32_dsp_r1_multu.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/packrl_ph.c => user/ase/dsp/test_32_dsp_r1_packrl_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/pick_ph.c => user/ase/dsp/test_32_dsp_r1_pick_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/pick_qb.c => user/ase/dsp/test_32_dsp_r1_pick_qb.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/preceq_w_phl.c => user/ase/dsp/test_32_dsp_r1_preceq_w_phl.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/preceq_w_phr.c => user/ase/dsp/test_32_dsp_r1_preceq_w_phr.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/precequ_ph_qbl.c => user/ase/dsp/test_32_dsp_r1_precequ_ph_qbl.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/precequ_ph_qbla.c => user/ase/dsp/test_32_dsp_r1_precequ_ph_qbla.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/precequ_ph_qbr.c => user/ase/dsp/test_32_dsp_r1_precequ_ph_qbr.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/precequ_ph_qbra.c => user/ase/dsp/test_32_dsp_r1_precequ_ph_qbra.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/preceu_ph_qbl.c => user/ase/dsp/test_32_dsp_r1_preceu_ph_qbl.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/preceu_ph_qbla.c => user/ase/dsp/test_32_dsp_r1_preceu_ph_qbla.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/preceu_ph_qbr.c => user/ase/dsp/test_32_dsp_r1_preceu_ph_qbr.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/preceu_ph_qbra.c => user/ase/dsp/test_32_dsp_r1_preceu_ph_qbra.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/precrq_ph_w.c => user/ase/dsp/test_32_dsp_r1_precrq_ph_w.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/precrq_qb_ph.c => user/ase/dsp/test_32_dsp_r1_precrq_qb_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/precrq_rs_ph_w.c => user/ase/dsp/test_32_dsp_r1_precrq_rs_ph_w.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/precrqu_s_qb_ph.c => user/ase/dsp/test_32_dsp_r1_precrqu_s_qb_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/raddu_w_qb.c => user/ase/dsp/test_32_dsp_r1_raddu_w_qb.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/rddsp.c => user/ase/dsp/test_32_dsp_r1_rddsp.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/repl_ph.c => user/ase/dsp/test_32_dsp_r1_repl_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/repl_qb.c => user/ase/dsp/test_32_dsp_r1_repl_qb.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/replv_ph.c => user/ase/dsp/test_32_dsp_r1_replv_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/replv_qb.c => user/ase/dsp/test_32_dsp_r1_replv_qb.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/shilo.c => user/ase/dsp/test_32_dsp_r1_shilo.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/shilov.c => user/ase/dsp/test_32_dsp_r1_shilov.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/shll_ph.c => user/ase/dsp/test_32_dsp_r1_shll_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/shll_qb.c => user/ase/dsp/test_32_dsp_r1_shll_qb.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/shll_s_ph.c => user/ase/dsp/test_32_dsp_r1_shll_s_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/shll_s_w.c => user/ase/dsp/test_32_dsp_r1_shll_s_w.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/shllv_ph.c => user/ase/dsp/test_32_dsp_r1_shllv_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/shllv_qb.c => user/ase/dsp/test_32_dsp_r1_shllv_qb.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/shllv_s_ph.c => user/ase/dsp/test_32_dsp_r1_shllv_s_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/shllv_s_w.c => user/ase/dsp/test_32_dsp_r1_shllv_s_w.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/shra_ph.c => user/ase/dsp/test_32_dsp_r1_shra_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/shra_r_ph.c => user/ase/dsp/test_32_dsp_r1_shra_r_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/shra_r_w.c => user/ase/dsp/test_32_dsp_r1_shra_r_w.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/shrav_ph.c => user/ase/dsp/test_32_dsp_r1_shrav_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/shrav_r_ph.c => user/ase/dsp/test_32_dsp_r1_shrav_r_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/shrav_r_w.c => user/ase/dsp/test_32_dsp_r1_shrav_r_w.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/shrl_qb.c => user/ase/dsp/test_32_dsp_r1_shrl_qb.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/shrlv_qb.c => user/ase/dsp/test_32_dsp_r1_shrlv_qb.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/subq_ph.c => user/ase/dsp/test_32_dsp_r1_subq_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/subq_s_ph.c => user/ase/dsp/test_32_dsp_r1_subq_s_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/subq_s_w.c => user/ase/dsp/test_32_dsp_r1_subq_s_w.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/subu_qb.c => user/ase/dsp/test_32_dsp_r1_subu_qb.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/subu_s_qb.c => user/ase/dsp/test_32_dsp_r1_subu_s_qb.c} (100%)
 rename tests/tcg/mips/{mips32-dsp/wrdsp.c => user/ase/dsp/test_32_dsp_r1_wrdsp.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/absq_s_qb.c => user/ase/dsp/test_32_dsp_r2_absq_s_qb.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/addqh_ph.c => user/ase/dsp/test_32_dsp_r2_addqh_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/addqh_r_ph.c => user/ase/dsp/test_32_dsp_r2_addqh_r_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/addqh_r_w.c => user/ase/dsp/test_32_dsp_r2_addqh_r_w.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/addqh_w.c => user/ase/dsp/test_32_dsp_r2_addqh_w.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/addu_ph.c => user/ase/dsp/test_32_dsp_r2_addu_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/addu_s_ph.c => user/ase/dsp/test_32_dsp_r2_addu_s_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/adduh_qb.c => user/ase/dsp/test_32_dsp_r2_adduh_qb.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/adduh_r_qb.c => user/ase/dsp/test_32_dsp_r2_adduh_r_qb.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/append.c => user/ase/dsp/test_32_dsp_r2_append.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/balign.c => user/ase/dsp/test_32_dsp_r2_balign.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/cmpgdu_eq_qb.c => user/ase/dsp/test_32_dsp_r2_cmpgdu_eq_qb.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/cmpgdu_le_qb.c => user/ase/dsp/test_32_dsp_r2_cmpgdu_le_qb.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/cmpgdu_lt_qb.c => user/ase/dsp/test_32_dsp_r2_cmpgdu_lt_qb.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/dpa_w_ph.c => user/ase/dsp/test_32_dsp_r2_dpa_w_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/dpaqx_s_w_ph.c => user/ase/dsp/test_32_dsp_r2_dpaqx_s_w_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/dpaqx_sa_w_ph.c => user/ase/dsp/test_32_dsp_r2_dpaqx_sa_w_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/dpax_w_ph.c => user/ase/dsp/test_32_dsp_r2_dpax_w_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/dps_w_ph.c => user/ase/dsp/test_32_dsp_r2_dps_w_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/dpsqx_s_w_ph.c => user/ase/dsp/test_32_dsp_r2_dpsqx_s_w_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/dpsqx_sa_w_ph.c => user/ase/dsp/test_32_dsp_r2_dpsqx_sa_w_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/dpsx_w_ph.c => user/ase/dsp/test_32_dsp_r2_dpsx_w_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/mul_ph.c => user/ase/dsp/test_32_dsp_r2_mul_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/mul_s_ph.c => user/ase/dsp/test_32_dsp_r2_mul_s_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/mulq_rs_w.c => user/ase/dsp/test_32_dsp_r2_mulq_rs_w.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/mulq_s_ph.c => user/ase/dsp/test_32_dsp_r2_mulq_s_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/mulq_s_w.c => user/ase/dsp/test_32_dsp_r2_mulq_s_w.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/mulsa_w_ph.c => user/ase/dsp/test_32_dsp_r2_mulsa_w_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/mulsaq_s_w_ph.c => user/ase/dsp/test_32_dsp_r2_mulsaq_s_w_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/precr_qb_ph.c => user/ase/dsp/test_32_dsp_r2_precr_qb_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/precr_sra_ph_w.c => user/ase/dsp/test_32_dsp_r2_precr_sra_ph_w.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/precr_sra_r_ph_w.c => user/ase/dsp/test_32_dsp_r2_precr_sra_r_ph_w.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/prepend.c => user/ase/dsp/test_32_dsp_r2_prepend.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/shra_qb.c => user/ase/dsp/test_32_dsp_r2_shra_qb.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/shra_r_qb.c => user/ase/dsp/test_32_dsp_r2_shra_r_qb.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/shrav_qb.c => user/ase/dsp/test_32_dsp_r2_shrav_qb.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/shrav_r_qb.c => user/ase/dsp/test_32_dsp_r2_shrav_r_qb.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/shrl_ph.c => user/ase/dsp/test_32_dsp_r2_shrl_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/shrlv_ph.c => user/ase/dsp/test_32_dsp_r2_shrlv_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/subqh_ph.c => user/ase/dsp/test_32_dsp_r2_subqh_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/subqh_r_ph.c => user/ase/dsp/test_32_dsp_r2_subqh_r_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/subqh_r_w.c => user/ase/dsp/test_32_dsp_r2_subqh_r_w.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/subqh_w.c => user/ase/dsp/test_32_dsp_r2_subqh_w.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/subu_ph.c => user/ase/dsp/test_32_dsp_r2_subu_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/subu_s_ph.c => user/ase/dsp/test_32_dsp_r2_subu_s_ph.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/subuh_qb.c => user/ase/dsp/test_32_dsp_r2_subuh_qb.c} (100%)
 rename tests/tcg/mips/{mips32-dspr2/subuh_r_qb.c => user/ase/dsp/test_32_dsp_r2_subuh_r_qb.c} (100%)
 rename tests/tcg/mips/{mipsr5900/div1.c => user/isa/r5900/test_r5900_div1.c} (100%)
 rename tests/tcg/mips/{mipsr5900/divu1.c => user/isa/r5900/test_r5900_divu1.c} (100%)
 rename tests/tcg/mips/{mipsr5900/madd.c => user/isa/r5900/test_r5900_madd.c} (100%)
 rename tests/tcg/mips/{mipsr5900/maddu.c => user/isa/r5900/test_r5900_maddu.c} (100%)
 rename tests/tcg/mips/{mipsr5900/mflohi1.c => user/isa/r5900/test_r5900_mflohi1.c} (100%)
 rename tests/tcg/mips/{mipsr5900/mtlohi1.c => user/isa/r5900/test_r5900_mtlohi1.c} (100%)
 rename tests/tcg/mips/{mipsr5900/mult.c => user/isa/r5900/test_r5900_mult.c} (100%)
 rename tests/tcg/mips/{mipsr5900/multu.c => user/isa/r5900/test_r5900_multu.c} (100%)

diff --git a/tests/tcg/mips/mips64-dsp/absq_s_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_absq_s_ob.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/absq_s_ob.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_absq_s_ob.c
diff --git a/tests/tcg/mips/mips64-dsp/absq_s_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_absq_s_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/absq_s_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_absq_s_ph.c
diff --git a/tests/tcg/mips/mips64-dsp/absq_s_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_absq_s_pw.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/absq_s_pw.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_absq_s_pw.c
diff --git a/tests/tcg/mips/mips64-dsp/absq_s_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_absq_s_qh.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/absq_s_qh.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_absq_s_qh.c
diff --git a/tests/tcg/mips/mips64-dsp/absq_s_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_absq_s_w.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/absq_s_w.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_absq_s_w.c
diff --git a/tests/tcg/mips/mips64-dsp/addq_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/addq_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_ph.c
diff --git a/tests/tcg/mips/mips64-dsp/addq_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_pw.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/addq_pw.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_pw.c
diff --git a/tests/tcg/mips/mips64-dsp/addq_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_qh.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/addq_qh.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_qh.c
diff --git a/tests/tcg/mips/mips64-dsp/addq_s_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_s_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/addq_s_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_s_ph.c
diff --git a/tests/tcg/mips/mips64-dsp/addq_s_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_s_pw.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/addq_s_pw.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_s_pw.c
diff --git a/tests/tcg/mips/mips64-dsp/addq_s_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_s_qh.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/addq_s_qh.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_s_qh.c
diff --git a/tests/tcg/mips/mips64-dsp/addq_s_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_s_w.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/addq_s_w.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addq_s_w.c
diff --git a/tests/tcg/mips/mips64-dsp/addsc.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addsc.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/addsc.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addsc.c
diff --git a/tests/tcg/mips/mips64-dsp/addu_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addu_ob.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/addu_ob.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addu_ob.c
diff --git a/tests/tcg/mips/mips64-dsp/addu_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addu_qb.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/addu_qb.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addu_qb.c
diff --git a/tests/tcg/mips/mips64-dsp/addu_s_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addu_s_ob.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/addu_s_ob.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addu_s_ob.c
diff --git a/tests/tcg/mips/mips64-dsp/addu_s_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addu_s_qb.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/addu_s_qb.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addu_s_qb.c
diff --git a/tests/tcg/mips/mips64-dsp/addwc.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addwc.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/addwc.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_addwc.c
diff --git a/tests/tcg/mips/mips64-dsp/bitrev.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_bitrev.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/bitrev.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_bitrev.c
diff --git a/tests/tcg/mips/mips64-dsp/bposge32.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_bposge32.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/bposge32.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_bposge32.c
diff --git a/tests/tcg/mips/mips64-dsp/bposge64.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_bposge64.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/bposge64.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_bposge64.c
diff --git a/tests/tcg/mips/mips64-dsp/cmp_eq_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_eq_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/cmp_eq_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_eq_ph.c
diff --git a/tests/tcg/mips/mips64-dsp/cmp_eq_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_eq_pw.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/cmp_eq_pw.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_eq_pw.c
diff --git a/tests/tcg/mips/mips64-dsp/cmp_eq_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_eq_qh.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/cmp_eq_qh.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_eq_qh.c
diff --git a/tests/tcg/mips/mips64-dsp/cmp_le_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_le_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/cmp_le_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_le_ph.c
diff --git a/tests/tcg/mips/mips64-dsp/cmp_le_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_le_pw.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/cmp_le_pw.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_le_pw.c
diff --git a/tests/tcg/mips/mips64-dsp/cmp_le_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_le_qh.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/cmp_le_qh.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_le_qh.c
diff --git a/tests/tcg/mips/mips64-dsp/cmp_lt_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_lt_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/cmp_lt_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_lt_ph.c
diff --git a/tests/tcg/mips/mips64-dsp/cmp_lt_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_lt_pw.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/cmp_lt_pw.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_lt_pw.c
diff --git a/tests/tcg/mips/mips64-dsp/cmp_lt_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_lt_qh.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/cmp_lt_qh.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmp_lt_qh.c
diff --git a/tests/tcg/mips/mips64-dsp/cmpgu_eq_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_eq_ob.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/cmpgu_eq_ob.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_eq_ob.c
diff --git a/tests/tcg/mips/mips64-dsp/cmpgu_eq_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_eq_qb.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/cmpgu_eq_qb.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_eq_qb.c
diff --git a/tests/tcg/mips/mips64-dsp/cmpgu_le_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_le_ob.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/cmpgu_le_ob.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_le_ob.c
diff --git a/tests/tcg/mips/mips64-dsp/cmpgu_le_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_le_qb.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/cmpgu_le_qb.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_le_qb.c
diff --git a/tests/tcg/mips/mips64-dsp/cmpgu_lt_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_lt_ob.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/cmpgu_lt_ob.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_lt_ob.c
diff --git a/tests/tcg/mips/mips64-dsp/cmpgu_lt_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_lt_qb.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/cmpgu_lt_qb.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpgu_lt_qb.c
diff --git a/tests/tcg/mips/mips64-dsp/cmpu_eq_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_eq_ob.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/cmpu_eq_ob.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_eq_ob.c
diff --git a/tests/tcg/mips/mips64-dsp/cmpu_eq_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_eq_qb.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/cmpu_eq_qb.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_eq_qb.c
diff --git a/tests/tcg/mips/mips64-dsp/cmpu_le_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_le_ob.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/cmpu_le_ob.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_le_ob.c
diff --git a/tests/tcg/mips/mips64-dsp/cmpu_le_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_le_qb.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/cmpu_le_qb.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_le_qb.c
diff --git a/tests/tcg/mips/mips64-dsp/cmpu_lt_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_lt_ob.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/cmpu_lt_ob.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_lt_ob.c
diff --git a/tests/tcg/mips/mips64-dsp/cmpu_lt_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_lt_qb.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/cmpu_lt_qb.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_cmpu_lt_qb.c
diff --git a/tests/tcg/mips/mips64-dsp/dappend.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dappend.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dappend.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dappend.c
diff --git a/tests/tcg/mips/mips64-dsp/dextp.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextp.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dextp.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextp.c
diff --git a/tests/tcg/mips/mips64-dsp/dextpdp.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextpdp.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dextpdp.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextpdp.c
diff --git a/tests/tcg/mips/mips64-dsp/dextpdpv.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextpdpv.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dextpdpv.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextpdpv.c
diff --git a/tests/tcg/mips/mips64-dsp/dextpv.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextpv.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dextpv.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextpv.c
diff --git a/tests/tcg/mips/mips64-dsp/dextr_l.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_l.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dextr_l.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_l.c
diff --git a/tests/tcg/mips/mips64-dsp/dextr_r_l.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_r_l.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dextr_r_l.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_r_l.c
diff --git a/tests/tcg/mips/mips64-dsp/dextr_r_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_r_w.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dextr_r_w.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_r_w.c
diff --git a/tests/tcg/mips/mips64-dsp/dextr_rs_l.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_rs_l.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dextr_rs_l.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_rs_l.c
diff --git a/tests/tcg/mips/mips64-dsp/dextr_rs_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_rs_w.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dextr_rs_w.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_rs_w.c
diff --git a/tests/tcg/mips/mips64-dsp/dextr_s_h.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_s_h.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dextr_s_h.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_s_h.c
diff --git a/tests/tcg/mips/mips64-dsp/dextr_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_w.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dextr_w.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextr_w.c
diff --git a/tests/tcg/mips/mips64-dsp/dextrv_l.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_l.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dextrv_l.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_l.c
diff --git a/tests/tcg/mips/mips64-dsp/dextrv_r_l.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_r_l.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dextrv_r_l.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_r_l.c
diff --git a/tests/tcg/mips/mips64-dsp/dextrv_r_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_r_w.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dextrv_r_w.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_r_w.c
diff --git a/tests/tcg/mips/mips64-dsp/dextrv_rs_l.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_rs_l.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dextrv_rs_l.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_rs_l.c
diff --git a/tests/tcg/mips/mips64-dsp/dextrv_rs_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_rs_w.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dextrv_rs_w.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_rs_w.c
diff --git a/tests/tcg/mips/mips64-dsp/dextrv_s_h.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_s_h.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dextrv_s_h.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_s_h.c
diff --git a/tests/tcg/mips/mips64-dsp/dextrv_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_w.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dextrv_w.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dextrv_w.c
diff --git a/tests/tcg/mips/mips64-dsp/dinsv.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dinsv.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dinsv.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dinsv.c
diff --git a/tests/tcg/mips/mips64-dsp/dmadd.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dmadd.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dmadd.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dmadd.c
diff --git a/tests/tcg/mips/mips64-dsp/dmaddu.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dmaddu.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dmaddu.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dmaddu.c
diff --git a/tests/tcg/mips/mips64-dsp/dmsub.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dmsub.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dmsub.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dmsub.c
diff --git a/tests/tcg/mips/mips64-dsp/dmsubu.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dmsubu.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dmsubu.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dmsubu.c
diff --git a/tests/tcg/mips/mips64-dsp/dmthlip.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dmthlip.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dmthlip.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dmthlip.c
diff --git a/tests/tcg/mips/mips64-dsp/dpaq_s_w_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpaq_s_w_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dpaq_s_w_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpaq_s_w_ph.c
diff --git a/tests/tcg/mips/mips64-dsp/dpaq_s_w_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpaq_s_w_qh.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dpaq_s_w_qh.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpaq_s_w_qh.c
diff --git a/tests/tcg/mips/mips64-dsp/dpaq_sa_l_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpaq_sa_l_pw.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dpaq_sa_l_pw.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpaq_sa_l_pw.c
diff --git a/tests/tcg/mips/mips64-dsp/dpaq_sa_l_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpaq_sa_l_w.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dpaq_sa_l_w.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpaq_sa_l_w.c
diff --git a/tests/tcg/mips/mips64-dsp/dpau_h_obl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpau_h_obl.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dpau_h_obl.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpau_h_obl.c
diff --git a/tests/tcg/mips/mips64-dsp/dpau_h_obr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpau_h_obr.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dpau_h_obr.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpau_h_obr.c
diff --git a/tests/tcg/mips/mips64-dsp/dpau_h_qbl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpau_h_qbl.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dpau_h_qbl.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpau_h_qbl.c
diff --git a/tests/tcg/mips/mips64-dsp/dpau_h_qbr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpau_h_qbr.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dpau_h_qbr.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpau_h_qbr.c
diff --git a/tests/tcg/mips/mips64-dsp/dpsq_s_w_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsq_s_w_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dpsq_s_w_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsq_s_w_ph.c
diff --git a/tests/tcg/mips/mips64-dsp/dpsq_s_w_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsq_s_w_qh.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dpsq_s_w_qh.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsq_s_w_qh.c
diff --git a/tests/tcg/mips/mips64-dsp/dpsq_sa_l_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsq_sa_l_pw.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dpsq_sa_l_pw.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsq_sa_l_pw.c
diff --git a/tests/tcg/mips/mips64-dsp/dpsq_sa_l_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsq_sa_l_w.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dpsq_sa_l_w.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsq_sa_l_w.c
diff --git a/tests/tcg/mips/mips64-dsp/dpsu_h_obl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsu_h_obl.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dpsu_h_obl.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsu_h_obl.c
diff --git a/tests/tcg/mips/mips64-dsp/dpsu_h_obr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsu_h_obr.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dpsu_h_obr.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsu_h_obr.c
diff --git a/tests/tcg/mips/mips64-dsp/dpsu_h_qbl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsu_h_qbl.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dpsu_h_qbl.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsu_h_qbl.c
diff --git a/tests/tcg/mips/mips64-dsp/dpsu_h_qbr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsu_h_qbr.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dpsu_h_qbr.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dpsu_h_qbr.c
diff --git a/tests/tcg/mips/mips64-dsp/dshilo.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dshilo.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dshilo.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dshilo.c
diff --git a/tests/tcg/mips/mips64-dsp/dshilov.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dshilov.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/dshilov.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_dshilov.c
diff --git a/tests/tcg/mips/mips64-dsp/extp.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extp.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/extp.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extp.c
diff --git a/tests/tcg/mips/mips64-dsp/extpdp.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extpdp.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/extpdp.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extpdp.c
diff --git a/tests/tcg/mips/mips64-dsp/extpdpv.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extpdpv.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/extpdpv.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extpdpv.c
diff --git a/tests/tcg/mips/mips64-dsp/extpv.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extpv.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/extpv.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extpv.c
diff --git a/tests/tcg/mips/mips64-dsp/extr_r_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extr_r_w.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/extr_r_w.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extr_r_w.c
diff --git a/tests/tcg/mips/mips64-dsp/extr_rs_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extr_rs_w.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/extr_rs_w.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extr_rs_w.c
diff --git a/tests/tcg/mips/mips64-dsp/extr_s_h.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extr_s_h.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/extr_s_h.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extr_s_h.c
diff --git a/tests/tcg/mips/mips64-dsp/extr_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extr_w.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/extr_w.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extr_w.c
diff --git a/tests/tcg/mips/mips64-dsp/extrv_r_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extrv_r_w.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/extrv_r_w.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extrv_r_w.c
diff --git a/tests/tcg/mips/mips64-dsp/extrv_rs_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extrv_rs_w.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/extrv_rs_w.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extrv_rs_w.c
diff --git a/tests/tcg/mips/mips64-dsp/extrv_s_h.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extrv_s_h.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/extrv_s_h.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extrv_s_h.c
diff --git a/tests/tcg/mips/mips64-dsp/extrv_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extrv_w.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/extrv_w.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_extrv_w.c
diff --git a/tests/tcg/mips/mips64-dsp/insv.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_insv.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/insv.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_insv.c
diff --git a/tests/tcg/mips/mips64-dsp/lbux.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_lbux.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/lbux.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_lbux.c
diff --git a/tests/tcg/mips/mips64-dsp/ldx.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_ldx.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/ldx.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_ldx.c
diff --git a/tests/tcg/mips/mips64-dsp/lhx.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_lhx.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/lhx.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_lhx.c
diff --git a/tests/tcg/mips/mips64-dsp/lwx.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_lwx.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/lwx.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_lwx.c
diff --git a/tests/tcg/mips/mips64-dsp/madd.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_madd.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/madd.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_madd.c
diff --git a/tests/tcg/mips/mips64-dsp/maddu.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maddu.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/maddu.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maddu.c
diff --git a/tests/tcg/mips/mips64-dsp/maq_s_l_pwl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_l_pwl.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/maq_s_l_pwl.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_l_pwl.c
diff --git a/tests/tcg/mips/mips64-dsp/maq_s_l_pwr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_l_pwr.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/maq_s_l_pwr.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_l_pwr.c
diff --git a/tests/tcg/mips/mips64-dsp/maq_s_w_phl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_phl.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/maq_s_w_phl.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_phl.c
diff --git a/tests/tcg/mips/mips64-dsp/maq_s_w_phr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_phr.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/maq_s_w_phr.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_phr.c
diff --git a/tests/tcg/mips/mips64-dsp/maq_s_w_qhll.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_qhll.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/maq_s_w_qhll.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_qhll.c
diff --git a/tests/tcg/mips/mips64-dsp/maq_s_w_qhlr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_qhlr.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/maq_s_w_qhlr.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_qhlr.c
diff --git a/tests/tcg/mips/mips64-dsp/maq_s_w_qhrl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_qhrl.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/maq_s_w_qhrl.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_qhrl.c
diff --git a/tests/tcg/mips/mips64-dsp/maq_s_w_qhrr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_qhrr.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/maq_s_w_qhrr.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_s_w_qhrr.c
diff --git a/tests/tcg/mips/mips64-dsp/maq_sa_w_phl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_phl.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/maq_sa_w_phl.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_phl.c
diff --git a/tests/tcg/mips/mips64-dsp/maq_sa_w_phr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_phr.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/maq_sa_w_phr.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_phr.c
diff --git a/tests/tcg/mips/mips64-dsp/maq_sa_w_qhll.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhll.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/maq_sa_w_qhll.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhll.c
diff --git a/tests/tcg/mips/mips64-dsp/maq_sa_w_qhlr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhlr.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/maq_sa_w_qhlr.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhlr.c
diff --git a/tests/tcg/mips/mips64-dsp/maq_sa_w_qhrl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhrl.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/maq_sa_w_qhrl.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhrl.c
diff --git a/tests/tcg/mips/mips64-dsp/maq_sa_w_qhrr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhrr.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/maq_sa_w_qhrr.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_maq_sa_w_qhrr.c
diff --git a/tests/tcg/mips/mips64-dsp/mfhi.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mfhi.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/mfhi.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mfhi.c
diff --git a/tests/tcg/mips/mips64-dsp/mflo.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mflo.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/mflo.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mflo.c
diff --git a/tests/tcg/mips/mips64-dsp/modsub.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_modsub.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/modsub.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_modsub.c
diff --git a/tests/tcg/mips/mips64-dsp/msub.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_msub.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/msub.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_msub.c
diff --git a/tests/tcg/mips/mips64-dsp/msubu.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_msubu.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/msubu.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_msubu.c
diff --git a/tests/tcg/mips/mips64-dsp/mthi.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mthi.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/mthi.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mthi.c
diff --git a/tests/tcg/mips/mips64-dsp/mthlip.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mthlip.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/mthlip.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mthlip.c
diff --git a/tests/tcg/mips/mips64-dsp/mtlo.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mtlo.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/mtlo.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mtlo.c
diff --git a/tests/tcg/mips/mips64-dsp/muleq_s_pw_qhl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleq_s_pw_qhl.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/muleq_s_pw_qhl.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleq_s_pw_qhl.c
diff --git a/tests/tcg/mips/mips64-dsp/muleq_s_pw_qhr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleq_s_pw_qhr.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/muleq_s_pw_qhr.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleq_s_pw_qhr.c
diff --git a/tests/tcg/mips/mips64-dsp/muleq_s_w_phl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleq_s_w_phl.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/muleq_s_w_phl.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleq_s_w_phl.c
diff --git a/tests/tcg/mips/mips64-dsp/muleq_s_w_phr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleq_s_w_phr.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/muleq_s_w_phr.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleq_s_w_phr.c
diff --git a/tests/tcg/mips/mips64-dsp/muleu_s_ph_qbl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleu_s_ph_qbl.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/muleu_s_ph_qbl.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleu_s_ph_qbl.c
diff --git a/tests/tcg/mips/mips64-dsp/muleu_s_ph_qbr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleu_s_ph_qbr.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/muleu_s_ph_qbr.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleu_s_ph_qbr.c
diff --git a/tests/tcg/mips/mips64-dsp/muleu_s_qh_obl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleu_s_qh_obl.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/muleu_s_qh_obl.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleu_s_qh_obl.c
diff --git a/tests/tcg/mips/mips64-dsp/muleu_s_qh_obr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleu_s_qh_obr.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/muleu_s_qh_obr.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_muleu_s_qh_obr.c
diff --git a/tests/tcg/mips/mips64-dsp/mulq_rs_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mulq_rs_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/mulq_rs_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mulq_rs_ph.c
diff --git a/tests/tcg/mips/mips64-dsp/mulq_rs_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mulq_rs_qh.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/mulq_rs_qh.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mulq_rs_qh.c
diff --git a/tests/tcg/mips/mips64-dsp/mulsaq_s_l_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mulsaq_s_l_pw.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/mulsaq_s_l_pw.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mulsaq_s_l_pw.c
diff --git a/tests/tcg/mips/mips64-dsp/mulsaq_s_w_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mulsaq_s_w_qh.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/mulsaq_s_w_qh.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mulsaq_s_w_qh.c
diff --git a/tests/tcg/mips/mips64-dsp/mult.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mult.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/mult.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_mult.c
diff --git a/tests/tcg/mips/mips64-dsp/multu.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_multu.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/multu.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_multu.c
diff --git a/tests/tcg/mips/mips64-dsp/packrl_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_packrl_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/packrl_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_packrl_ph.c
diff --git a/tests/tcg/mips/mips64-dsp/packrl_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_packrl_pw.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/packrl_pw.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_packrl_pw.c
diff --git a/tests/tcg/mips/mips64-dsp/pick_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_pick_ob.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/pick_ob.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_pick_ob.c
diff --git a/tests/tcg/mips/mips64-dsp/pick_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_pick_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/pick_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_pick_ph.c
diff --git a/tests/tcg/mips/mips64-dsp/pick_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_pick_pw.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/pick_pw.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_pick_pw.c
diff --git a/tests/tcg/mips/mips64-dsp/pick_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_pick_qb.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/pick_qb.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_pick_qb.c
diff --git a/tests/tcg/mips/mips64-dsp/pick_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_pick_qh.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/pick_qh.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_pick_qh.c
diff --git a/tests/tcg/mips/mips64-dsp/preceq_l_pwl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_l_pwl.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/preceq_l_pwl.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_l_pwl.c
diff --git a/tests/tcg/mips/mips64-dsp/preceq_l_pwr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_l_pwr.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/preceq_l_pwr.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_l_pwr.c
diff --git a/tests/tcg/mips/mips64-dsp/preceq_pw_qhl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_pw_qhl.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/preceq_pw_qhl.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_pw_qhl.c
diff --git a/tests/tcg/mips/mips64-dsp/preceq_pw_qhla.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_pw_qhla.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/preceq_pw_qhla.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_pw_qhla.c
diff --git a/tests/tcg/mips/mips64-dsp/preceq_pw_qhr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_pw_qhr.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/preceq_pw_qhr.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_pw_qhr.c
diff --git a/tests/tcg/mips/mips64-dsp/preceq_pw_qhra.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_pw_qhra.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/preceq_pw_qhra.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_pw_qhra.c
diff --git a/tests/tcg/mips/mips64-dsp/preceq_w_phl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_w_phl.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/preceq_w_phl.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_w_phl.c
diff --git a/tests/tcg/mips/mips64-dsp/preceq_w_phr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_w_phr.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/preceq_w_phr.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceq_w_phr.c
diff --git a/tests/tcg/mips/mips64-dsp/precequ_ph_qbl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_ph_qbl.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/precequ_ph_qbl.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_ph_qbl.c
diff --git a/tests/tcg/mips/mips64-dsp/precequ_ph_qbla.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_ph_qbla.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/precequ_ph_qbla.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_ph_qbla.c
diff --git a/tests/tcg/mips/mips64-dsp/precequ_ph_qbr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_ph_qbr.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/precequ_ph_qbr.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_ph_qbr.c
diff --git a/tests/tcg/mips/mips64-dsp/precequ_ph_qbra.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_ph_qbra.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/precequ_ph_qbra.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_ph_qbra.c
diff --git a/tests/tcg/mips/mips64-dsp/precequ_qh_obl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_qh_obl.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/precequ_qh_obl.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_qh_obl.c
diff --git a/tests/tcg/mips/mips64-dsp/precequ_qh_obla.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_qh_obla.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/precequ_qh_obla.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_qh_obla.c
diff --git a/tests/tcg/mips/mips64-dsp/precequ_qh_obr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_qh_obr.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/precequ_qh_obr.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_qh_obr.c
diff --git a/tests/tcg/mips/mips64-dsp/precequ_qh_obra.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_qh_obra.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/precequ_qh_obra.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precequ_qh_obra.c
diff --git a/tests/tcg/mips/mips64-dsp/preceu_ph_qbl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_ph_qbl.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/preceu_ph_qbl.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_ph_qbl.c
diff --git a/tests/tcg/mips/mips64-dsp/preceu_ph_qbla.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_ph_qbla.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/preceu_ph_qbla.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_ph_qbla.c
diff --git a/tests/tcg/mips/mips64-dsp/preceu_ph_qbr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_ph_qbr.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/preceu_ph_qbr.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_ph_qbr.c
diff --git a/tests/tcg/mips/mips64-dsp/preceu_ph_qbra.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_ph_qbra.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/preceu_ph_qbra.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_ph_qbra.c
diff --git a/tests/tcg/mips/mips64-dsp/preceu_qh_obl.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_qh_obl.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/preceu_qh_obl.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_qh_obl.c
diff --git a/tests/tcg/mips/mips64-dsp/preceu_qh_obla.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_qh_obla.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/preceu_qh_obla.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_qh_obla.c
diff --git a/tests/tcg/mips/mips64-dsp/preceu_qh_obr.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_qh_obr.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/preceu_qh_obr.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_qh_obr.c
diff --git a/tests/tcg/mips/mips64-dsp/preceu_qh_obra.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_qh_obra.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/preceu_qh_obra.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_preceu_qh_obra.c
diff --git a/tests/tcg/mips/mips64-dsp/precr_ob_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precr_ob_qh.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/precr_ob_qh.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precr_ob_qh.c
diff --git a/tests/tcg/mips/mips64-dsp/precr_sra_qh_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precr_sra_qh_pw.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/precr_sra_qh_pw.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precr_sra_qh_pw.c
diff --git a/tests/tcg/mips/mips64-dsp/precr_sra_r_qh_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precr_sra_r_qh_pw.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/precr_sra_r_qh_pw.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precr_sra_r_qh_pw.c
diff --git a/tests/tcg/mips/mips64-dsp/precrq_ob_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_ob_qh.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/precrq_ob_qh.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_ob_qh.c
diff --git a/tests/tcg/mips/mips64-dsp/precrq_ph_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_ph_w.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/precrq_ph_w.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_ph_w.c
diff --git a/tests/tcg/mips/mips64-dsp/precrq_pw_l.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_pw_l.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/precrq_pw_l.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_pw_l.c
diff --git a/tests/tcg/mips/mips64-dsp/precrq_qb_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_qb_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/precrq_qb_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_qb_ph.c
diff --git a/tests/tcg/mips/mips64-dsp/precrq_qh_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_qh_pw.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/precrq_qh_pw.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_qh_pw.c
diff --git a/tests/tcg/mips/mips64-dsp/precrq_rs_ph_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_rs_ph_w.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/precrq_rs_ph_w.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_rs_ph_w.c
diff --git a/tests/tcg/mips/mips64-dsp/precrq_rs_qh_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_rs_qh_pw.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/precrq_rs_qh_pw.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrq_rs_qh_pw.c
diff --git a/tests/tcg/mips/mips64-dsp/precrqu_s_ob_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrqu_s_ob_qh.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/precrqu_s_ob_qh.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrqu_s_ob_qh.c
diff --git a/tests/tcg/mips/mips64-dsp/precrqu_s_qb_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrqu_s_qb_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/precrqu_s_qb_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_precrqu_s_qb_ph.c
diff --git a/tests/tcg/mips/mips64-dsp/prependd.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_prependd.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/prependd.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_prependd.c
diff --git a/tests/tcg/mips/mips64-dsp/prependw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_prependw.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/prependw.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_prependw.c
diff --git a/tests/tcg/mips/mips64-dspr2/printf.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_printf.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/printf.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_printf.c
diff --git a/tests/tcg/mips/mips64-dsp/raddu_l_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_raddu_l_ob.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/raddu_l_ob.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_raddu_l_ob.c
diff --git a/tests/tcg/mips/mips64-dsp/raddu_w_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_raddu_w_qb.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/raddu_w_qb.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_raddu_w_qb.c
diff --git a/tests/tcg/mips/mips64-dsp/rddsp.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_rddsp.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/rddsp.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_rddsp.c
diff --git a/tests/tcg/mips/mips64-dsp/repl_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_repl_ob.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/repl_ob.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_repl_ob.c
diff --git a/tests/tcg/mips/mips64-dsp/repl_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_repl_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/repl_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_repl_ph.c
diff --git a/tests/tcg/mips/mips64-dsp/repl_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_repl_pw.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/repl_pw.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_repl_pw.c
diff --git a/tests/tcg/mips/mips64-dsp/repl_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_repl_qb.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/repl_qb.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_repl_qb.c
diff --git a/tests/tcg/mips/mips64-dsp/repl_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_repl_qh.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/repl_qh.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_repl_qh.c
diff --git a/tests/tcg/mips/mips64-dsp/replv_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_replv_ob.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/replv_ob.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_replv_ob.c
diff --git a/tests/tcg/mips/mips64-dsp/replv_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_replv_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/replv_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_replv_ph.c
diff --git a/tests/tcg/mips/mips64-dsp/replv_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_replv_pw.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/replv_pw.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_replv_pw.c
diff --git a/tests/tcg/mips/mips64-dsp/replv_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_replv_qb.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/replv_qb.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_replv_qb.c
diff --git a/tests/tcg/mips/mips64-dsp/shilo.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shilo.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shilo.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shilo.c
diff --git a/tests/tcg/mips/mips64-dsp/shilov.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shilov.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shilov.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shilov.c
diff --git a/tests/tcg/mips/mips64-dsp/shll_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_ob.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shll_ob.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_ob.c
diff --git a/tests/tcg/mips/mips64-dsp/shll_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shll_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_ph.c
diff --git a/tests/tcg/mips/mips64-dsp/shll_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_pw.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shll_pw.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_pw.c
diff --git a/tests/tcg/mips/mips64-dsp/shll_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_qb.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shll_qb.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_qb.c
diff --git a/tests/tcg/mips/mips64-dsp/shll_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_qh.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shll_qh.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_qh.c
diff --git a/tests/tcg/mips/mips64-dsp/shll_s_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_s_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shll_s_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_s_ph.c
diff --git a/tests/tcg/mips/mips64-dsp/shll_s_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_s_pw.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shll_s_pw.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_s_pw.c
diff --git a/tests/tcg/mips/mips64-dsp/shll_s_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_s_qh.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shll_s_qh.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_s_qh.c
diff --git a/tests/tcg/mips/mips64-dsp/shll_s_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_s_w.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shll_s_w.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shll_s_w.c
diff --git a/tests/tcg/mips/mips64-dsp/shllv_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_ob.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shllv_ob.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_ob.c
diff --git a/tests/tcg/mips/mips64-dsp/shllv_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shllv_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_ph.c
diff --git a/tests/tcg/mips/mips64-dsp/shllv_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_pw.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shllv_pw.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_pw.c
diff --git a/tests/tcg/mips/mips64-dsp/shllv_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_qb.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shllv_qb.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_qb.c
diff --git a/tests/tcg/mips/mips64-dsp/shllv_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_qh.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shllv_qh.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_qh.c
diff --git a/tests/tcg/mips/mips64-dsp/shllv_s_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_s_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shllv_s_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_s_ph.c
diff --git a/tests/tcg/mips/mips64-dsp/shllv_s_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_s_pw.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shllv_s_pw.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_s_pw.c
diff --git a/tests/tcg/mips/mips64-dsp/shllv_s_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_s_qh.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shllv_s_qh.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_s_qh.c
diff --git a/tests/tcg/mips/mips64-dsp/shllv_s_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_s_w.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shllv_s_w.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shllv_s_w.c
diff --git a/tests/tcg/mips/mips64-dsp/shra_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_ob.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shra_ob.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_ob.c
diff --git a/tests/tcg/mips/mips64-dsp/shra_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shra_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_ph.c
diff --git a/tests/tcg/mips/mips64-dsp/shra_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_pw.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shra_pw.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_pw.c
diff --git a/tests/tcg/mips/mips64-dsp/shra_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_qh.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shra_qh.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_qh.c
diff --git a/tests/tcg/mips/mips64-dsp/shra_r_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_r_ob.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shra_r_ob.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_r_ob.c
diff --git a/tests/tcg/mips/mips64-dsp/shra_r_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_r_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shra_r_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_r_ph.c
diff --git a/tests/tcg/mips/mips64-dsp/shra_r_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_r_pw.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shra_r_pw.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_r_pw.c
diff --git a/tests/tcg/mips/mips64-dsp/shra_r_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_r_qh.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shra_r_qh.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_r_qh.c
diff --git a/tests/tcg/mips/mips64-dsp/shra_r_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_r_w.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shra_r_w.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shra_r_w.c
diff --git a/tests/tcg/mips/mips64-dsp/shrav_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shrav_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_ph.c
diff --git a/tests/tcg/mips/mips64-dsp/shrav_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_pw.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shrav_pw.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_pw.c
diff --git a/tests/tcg/mips/mips64-dsp/shrav_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_qh.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shrav_qh.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_qh.c
diff --git a/tests/tcg/mips/mips64-dsp/shrav_r_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_r_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shrav_r_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_r_ph.c
diff --git a/tests/tcg/mips/mips64-dsp/shrav_r_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_r_pw.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shrav_r_pw.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_r_pw.c
diff --git a/tests/tcg/mips/mips64-dsp/shrav_r_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_r_qh.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shrav_r_qh.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_r_qh.c
diff --git a/tests/tcg/mips/mips64-dsp/shrav_r_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_r_w.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shrav_r_w.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrav_r_w.c
diff --git a/tests/tcg/mips/mips64-dsp/shrl_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrl_ob.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shrl_ob.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrl_ob.c
diff --git a/tests/tcg/mips/mips64-dsp/shrl_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrl_qb.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shrl_qb.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrl_qb.c
diff --git a/tests/tcg/mips/mips64-dsp/shrl_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrl_qh.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shrl_qh.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrl_qh.c
diff --git a/tests/tcg/mips/mips64-dsp/shrlv_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrlv_ob.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shrlv_ob.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrlv_ob.c
diff --git a/tests/tcg/mips/mips64-dsp/shrlv_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrlv_qb.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shrlv_qb.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrlv_qb.c
diff --git a/tests/tcg/mips/mips64-dsp/shrlv_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrlv_qh.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/shrlv_qh.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_shrlv_qh.c
diff --git a/tests/tcg/mips/mips64-dsp/subq_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/subq_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_ph.c
diff --git a/tests/tcg/mips/mips64-dsp/subq_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_pw.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/subq_pw.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_pw.c
diff --git a/tests/tcg/mips/mips64-dsp/subq_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_qh.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/subq_qh.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_qh.c
diff --git a/tests/tcg/mips/mips64-dsp/subq_s_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_s_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/subq_s_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_s_ph.c
diff --git a/tests/tcg/mips/mips64-dsp/subq_s_pw.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_s_pw.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/subq_s_pw.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_s_pw.c
diff --git a/tests/tcg/mips/mips64-dsp/subq_s_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_s_qh.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/subq_s_qh.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_s_qh.c
diff --git a/tests/tcg/mips/mips64-dsp/subq_s_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_s_w.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/subq_s_w.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subq_s_w.c
diff --git a/tests/tcg/mips/mips64-dsp/subu_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subu_ob.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/subu_ob.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subu_ob.c
diff --git a/tests/tcg/mips/mips64-dsp/subu_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subu_qb.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/subu_qb.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subu_qb.c
diff --git a/tests/tcg/mips/mips64-dsp/subu_s_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subu_s_ob.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/subu_s_ob.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subu_s_ob.c
diff --git a/tests/tcg/mips/mips64-dsp/subu_s_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subu_s_qb.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/subu_s_qb.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_subu_s_qb.c
diff --git a/tests/tcg/mips/mips64-dsp/wrdsp.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_wrdsp.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/wrdsp.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r1_wrdsp.c
diff --git a/tests/tcg/mips/mips64-dspr2/absq_s_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_absq_s_qb.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/absq_s_qb.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_absq_s_qb.c
diff --git a/tests/tcg/mips/mips64-dspr2/addqh_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addqh_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/addqh_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addqh_ph.c
diff --git a/tests/tcg/mips/mips64-dspr2/addqh_r_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addqh_r_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/addqh_r_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addqh_r_ph.c
diff --git a/tests/tcg/mips/mips64-dspr2/addqh_r_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addqh_r_w.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/addqh_r_w.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addqh_r_w.c
diff --git a/tests/tcg/mips/mips64-dspr2/addqh_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addqh_w.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/addqh_w.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addqh_w.c
diff --git a/tests/tcg/mips/mips64-dspr2/addu_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addu_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/addu_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addu_ph.c
diff --git a/tests/tcg/mips/mips64-dspr2/addu_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addu_qh.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/addu_qh.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addu_qh.c
diff --git a/tests/tcg/mips/mips64-dspr2/addu_s_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addu_s_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/addu_s_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addu_s_ph.c
diff --git a/tests/tcg/mips/mips64-dspr2/addu_s_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addu_s_qh.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/addu_s_qh.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_addu_s_qh.c
diff --git a/tests/tcg/mips/mips64-dspr2/adduh_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_adduh_ob.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/adduh_ob.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_adduh_ob.c
diff --git a/tests/tcg/mips/mips64-dspr2/adduh_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_adduh_qb.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/adduh_qb.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_adduh_qb.c
diff --git a/tests/tcg/mips/mips64-dspr2/adduh_r_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_adduh_r_ob.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/adduh_r_ob.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_adduh_r_ob.c
diff --git a/tests/tcg/mips/mips64-dspr2/adduh_r_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_adduh_r_qb.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/adduh_r_qb.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_adduh_r_qb.c
diff --git a/tests/tcg/mips/mips64-dspr2/append.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_append.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/append.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_append.c
diff --git a/tests/tcg/mips/mips64-dspr2/balign.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_balign.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/balign.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_balign.c
diff --git a/tests/tcg/mips/mips64-dspr2/cmpgdu_eq_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_eq_ob.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/cmpgdu_eq_ob.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_eq_ob.c
diff --git a/tests/tcg/mips/mips64-dspr2/cmpgdu_eq_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_eq_qb.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/cmpgdu_eq_qb.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_eq_qb.c
diff --git a/tests/tcg/mips/mips64-dspr2/cmpgdu_le_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_le_ob.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/cmpgdu_le_ob.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_le_ob.c
diff --git a/tests/tcg/mips/mips64-dspr2/cmpgdu_le_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_le_qb.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/cmpgdu_le_qb.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_le_qb.c
diff --git a/tests/tcg/mips/mips64-dspr2/cmpgdu_lt_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_lt_ob.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/cmpgdu_lt_ob.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_lt_ob.c
diff --git a/tests/tcg/mips/mips64-dspr2/cmpgdu_lt_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_lt_qb.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/cmpgdu_lt_qb.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_cmpgdu_lt_qb.c
diff --git a/tests/tcg/mips/mips64-dspr2/dbalign.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dbalign.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/dbalign.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dbalign.c
diff --git a/tests/tcg/mips/mips64-dspr2/dpa_w_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpa_w_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/dpa_w_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpa_w_ph.c
diff --git a/tests/tcg/mips/mips64-dspr2/dpa_w_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpa_w_qh.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/dpa_w_qh.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpa_w_qh.c
diff --git a/tests/tcg/mips/mips64-dspr2/dpaqx_s_w_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpaqx_s_w_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/dpaqx_s_w_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpaqx_s_w_ph.c
diff --git a/tests/tcg/mips/mips64-dspr2/dpaqx_sa_w_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpaqx_sa_w_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/dpaqx_sa_w_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpaqx_sa_w_ph.c
diff --git a/tests/tcg/mips/mips64-dspr2/dpax_w_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpax_w_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/dpax_w_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpax_w_ph.c
diff --git a/tests/tcg/mips/mips64-dspr2/dps_w_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dps_w_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/dps_w_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dps_w_ph.c
diff --git a/tests/tcg/mips/mips64-dspr2/dps_w_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dps_w_qh.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/dps_w_qh.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dps_w_qh.c
diff --git a/tests/tcg/mips/mips64-dspr2/dpsqx_s_w_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpsqx_s_w_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/dpsqx_s_w_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpsqx_s_w_ph.c
diff --git a/tests/tcg/mips/mips64-dspr2/dpsqx_sa_w_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpsqx_sa_w_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/dpsqx_sa_w_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpsqx_sa_w_ph.c
diff --git a/tests/tcg/mips/mips64-dspr2/dpsx_w_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpsx_w_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/dpsx_w_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_dpsx_w_ph.c
diff --git a/tests/tcg/mips/mips64-dspr2/mul_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mul_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/mul_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mul_ph.c
diff --git a/tests/tcg/mips/mips64-dspr2/mul_s_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mul_s_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/mul_s_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mul_s_ph.c
diff --git a/tests/tcg/mips/mips64-dspr2/mulq_rs_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mulq_rs_w.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/mulq_rs_w.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mulq_rs_w.c
diff --git a/tests/tcg/mips/mips64-dspr2/mulq_s_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mulq_s_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/mulq_s_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mulq_s_ph.c
diff --git a/tests/tcg/mips/mips64-dspr2/mulq_s_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mulq_s_w.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/mulq_s_w.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mulq_s_w.c
diff --git a/tests/tcg/mips/mips64-dspr2/mulsa_w_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mulsa_w_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/mulsa_w_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mulsa_w_ph.c
diff --git a/tests/tcg/mips/mips64-dspr2/mulsaq_s_w_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mulsaq_s_w_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/mulsaq_s_w_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_mulsaq_s_w_ph.c
diff --git a/tests/tcg/mips/mips64-dspr2/precr_qb_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_precr_qb_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/precr_qb_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_precr_qb_ph.c
diff --git a/tests/tcg/mips/mips64-dspr2/precr_sra_ph_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_precr_sra_ph_w.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/precr_sra_ph_w.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_precr_sra_ph_w.c
diff --git a/tests/tcg/mips/mips64-dspr2/precr_sra_r_ph_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_precr_sra_r_ph_w.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/precr_sra_r_ph_w.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_precr_sra_r_ph_w.c
diff --git a/tests/tcg/mips/mips64-dspr2/prepend.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_prepend.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/prepend.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_prepend.c
diff --git a/tests/tcg/mips/mips64-dsp/printf.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_printf.c
similarity index 100%
rename from tests/tcg/mips/mips64-dsp/printf.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_printf.c
diff --git a/tests/tcg/mips/mips64-dspr2/shra_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shra_qb.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/shra_qb.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shra_qb.c
diff --git a/tests/tcg/mips/mips64-dspr2/shra_r_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shra_r_qb.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/shra_r_qb.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shra_r_qb.c
diff --git a/tests/tcg/mips/mips64-dspr2/shrav_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrav_ob.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/shrav_ob.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrav_ob.c
diff --git a/tests/tcg/mips/mips64-dspr2/shrav_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrav_qb.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/shrav_qb.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrav_qb.c
diff --git a/tests/tcg/mips/mips64-dspr2/shrav_r_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrav_r_ob.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/shrav_r_ob.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrav_r_ob.c
diff --git a/tests/tcg/mips/mips64-dspr2/shrav_r_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrav_r_qb.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/shrav_r_qb.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrav_r_qb.c
diff --git a/tests/tcg/mips/mips64-dspr2/shrl_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrl_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/shrl_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrl_ph.c
diff --git a/tests/tcg/mips/mips64-dspr2/shrlv_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrlv_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/shrlv_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_shrlv_ph.c
diff --git a/tests/tcg/mips/mips64-dspr2/subqh_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subqh_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/subqh_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subqh_ph.c
diff --git a/tests/tcg/mips/mips64-dspr2/subqh_r_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subqh_r_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/subqh_r_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subqh_r_ph.c
diff --git a/tests/tcg/mips/mips64-dspr2/subqh_r_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subqh_r_w.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/subqh_r_w.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subqh_r_w.c
diff --git a/tests/tcg/mips/mips64-dspr2/subqh_w.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subqh_w.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/subqh_w.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subqh_w.c
diff --git a/tests/tcg/mips/mips64-dspr2/subu_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subu_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/subu_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subu_ph.c
diff --git a/tests/tcg/mips/mips64-dspr2/subu_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subu_qh.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/subu_qh.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subu_qh.c
diff --git a/tests/tcg/mips/mips64-dspr2/subu_s_ph.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subu_s_ph.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/subu_s_ph.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subu_s_ph.c
diff --git a/tests/tcg/mips/mips64-dspr2/subu_s_qh.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subu_s_qh.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/subu_s_qh.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subu_s_qh.c
diff --git a/tests/tcg/mips/mips64-dspr2/subuh_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subuh_ob.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/subuh_ob.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subuh_ob.c
diff --git a/tests/tcg/mips/mips64-dspr2/subuh_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subuh_qb.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/subuh_qb.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subuh_qb.c
diff --git a/tests/tcg/mips/mips64-dspr2/subuh_r_ob.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subuh_r_ob.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/subuh_r_ob.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subuh_r_ob.c
diff --git a/tests/tcg/mips/mips64-dspr2/subuh_r_qb.c b/tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subuh_r_qb.c
similarity index 100%
rename from tests/tcg/mips/mips64-dspr2/subuh_r_qb.c
rename to tests/tcg/mips/system/ase/dsp/test_64_dsp_r2_subuh_r_qb.c
diff --git a/tests/tcg/mips/mips32-dsp/absq_s_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_absq_s_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/absq_s_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_absq_s_ph.c
diff --git a/tests/tcg/mips/mips32-dsp/absq_s_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_absq_s_w.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/absq_s_w.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_absq_s_w.c
diff --git a/tests/tcg/mips/mips32-dsp/addq_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addq_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/addq_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addq_ph.c
diff --git a/tests/tcg/mips/mips32-dsp/addq_s_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addq_s_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/addq_s_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addq_s_ph.c
diff --git a/tests/tcg/mips/mips32-dsp/addq_s_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addq_s_w.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/addq_s_w.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addq_s_w.c
diff --git a/tests/tcg/mips/mips32-dsp/addsc.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addsc.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/addsc.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addsc.c
diff --git a/tests/tcg/mips/mips32-dsp/addu_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addu_qb.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/addu_qb.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addu_qb.c
diff --git a/tests/tcg/mips/mips32-dsp/addu_s_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addu_s_qb.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/addu_s_qb.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addu_s_qb.c
diff --git a/tests/tcg/mips/mips32-dsp/addwc.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addwc.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/addwc.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_addwc.c
diff --git a/tests/tcg/mips/mips32-dsp/bitrev.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_bitrev.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/bitrev.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_bitrev.c
diff --git a/tests/tcg/mips/mips32-dsp/bposge32.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_bposge32.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/bposge32.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_bposge32.c
diff --git a/tests/tcg/mips/mips32-dsp/cmp_eq_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmp_eq_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/cmp_eq_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmp_eq_ph.c
diff --git a/tests/tcg/mips/mips32-dsp/cmp_le_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmp_le_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/cmp_le_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmp_le_ph.c
diff --git a/tests/tcg/mips/mips32-dsp/cmp_lt_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmp_lt_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/cmp_lt_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmp_lt_ph.c
diff --git a/tests/tcg/mips/mips32-dsp/cmpgu_eq_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpgu_eq_qb.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/cmpgu_eq_qb.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpgu_eq_qb.c
diff --git a/tests/tcg/mips/mips32-dsp/cmpgu_le_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpgu_le_qb.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/cmpgu_le_qb.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpgu_le_qb.c
diff --git a/tests/tcg/mips/mips32-dsp/cmpgu_lt_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpgu_lt_qb.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/cmpgu_lt_qb.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpgu_lt_qb.c
diff --git a/tests/tcg/mips/mips32-dsp/cmpu_eq_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpu_eq_qb.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/cmpu_eq_qb.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpu_eq_qb.c
diff --git a/tests/tcg/mips/mips32-dsp/cmpu_le_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpu_le_qb.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/cmpu_le_qb.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpu_le_qb.c
diff --git a/tests/tcg/mips/mips32-dsp/cmpu_lt_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpu_lt_qb.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/cmpu_lt_qb.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_cmpu_lt_qb.c
diff --git a/tests/tcg/mips/mips32-dsp/dpaq_s_w_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpaq_s_w_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/dpaq_s_w_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpaq_s_w_ph.c
diff --git a/tests/tcg/mips/mips32-dsp/dpaq_sa_l_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpaq_sa_l_w.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/dpaq_sa_l_w.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpaq_sa_l_w.c
diff --git a/tests/tcg/mips/mips32-dsp/dpau_h_qbl.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpau_h_qbl.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/dpau_h_qbl.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpau_h_qbl.c
diff --git a/tests/tcg/mips/mips32-dsp/dpau_h_qbr.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpau_h_qbr.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/dpau_h_qbr.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpau_h_qbr.c
diff --git a/tests/tcg/mips/mips32-dsp/dpsq_s_w_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpsq_s_w_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/dpsq_s_w_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpsq_s_w_ph.c
diff --git a/tests/tcg/mips/mips32-dsp/dpsq_sa_l_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpsq_sa_l_w.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/dpsq_sa_l_w.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpsq_sa_l_w.c
diff --git a/tests/tcg/mips/mips32-dsp/dpsu_h_qbl.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpsu_h_qbl.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/dpsu_h_qbl.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpsu_h_qbl.c
diff --git a/tests/tcg/mips/mips32-dsp/dpsu_h_qbr.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpsu_h_qbr.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/dpsu_h_qbr.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_dpsu_h_qbr.c
diff --git a/tests/tcg/mips/mips32-dsp/extp.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extp.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/extp.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extp.c
diff --git a/tests/tcg/mips/mips32-dsp/extpdp.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extpdp.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/extpdp.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extpdp.c
diff --git a/tests/tcg/mips/mips32-dsp/extpdpv.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extpdpv.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/extpdpv.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extpdpv.c
diff --git a/tests/tcg/mips/mips32-dsp/extpv.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extpv.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/extpv.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extpv.c
diff --git a/tests/tcg/mips/mips32-dsp/extr_r_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extr_r_w.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/extr_r_w.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extr_r_w.c
diff --git a/tests/tcg/mips/mips32-dsp/extr_rs_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extr_rs_w.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/extr_rs_w.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extr_rs_w.c
diff --git a/tests/tcg/mips/mips32-dsp/extr_s_h.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extr_s_h.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/extr_s_h.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extr_s_h.c
diff --git a/tests/tcg/mips/mips32-dsp/extr_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extr_w.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/extr_w.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extr_w.c
diff --git a/tests/tcg/mips/mips32-dsp/extrv_r_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extrv_r_w.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/extrv_r_w.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extrv_r_w.c
diff --git a/tests/tcg/mips/mips32-dsp/extrv_rs_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extrv_rs_w.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/extrv_rs_w.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extrv_rs_w.c
diff --git a/tests/tcg/mips/mips32-dsp/extrv_s_h.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extrv_s_h.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/extrv_s_h.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extrv_s_h.c
diff --git a/tests/tcg/mips/mips32-dsp/extrv_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extrv_w.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/extrv_w.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_extrv_w.c
diff --git a/tests/tcg/mips/mips32-dsp/insv.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_insv.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/insv.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_insv.c
diff --git a/tests/tcg/mips/mips32-dsp/lbux.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_lbux.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/lbux.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_lbux.c
diff --git a/tests/tcg/mips/mips32-dsp/lhx.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_lhx.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/lhx.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_lhx.c
diff --git a/tests/tcg/mips/mips32-dsp/lwx.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_lwx.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/lwx.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_lwx.c
diff --git a/tests/tcg/mips/mips32-dsp/maddu.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_madd.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/maddu.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_madd.c
diff --git a/tests/tcg/mips/mips32-dsp/madd.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_maddu.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/madd.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_maddu.c
diff --git a/tests/tcg/mips/mips32-dsp/main.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_main.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/main.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_main.c
diff --git a/tests/tcg/mips/mips32-dsp/maq_s_w_phl.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_maq_s_w_phl.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/maq_s_w_phl.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_maq_s_w_phl.c
diff --git a/tests/tcg/mips/mips32-dsp/maq_s_w_phr.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_maq_s_w_phr.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/maq_s_w_phr.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_maq_s_w_phr.c
diff --git a/tests/tcg/mips/mips32-dsp/maq_sa_w_phl.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_maq_sa_w_phl.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/maq_sa_w_phl.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_maq_sa_w_phl.c
diff --git a/tests/tcg/mips/mips32-dsp/maq_sa_w_phr.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_maq_sa_w_phr.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/maq_sa_w_phr.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_maq_sa_w_phr.c
diff --git a/tests/tcg/mips/mips32-dsp/mthi.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mfhi.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/mthi.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mfhi.c
diff --git a/tests/tcg/mips/mips32-dsp/mtlo.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mflo.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/mtlo.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mflo.c
diff --git a/tests/tcg/mips/mips32-dsp/modsub.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_modsub.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/modsub.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_modsub.c
diff --git a/tests/tcg/mips/mips32-dsp/msub.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_msub.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/msub.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_msub.c
diff --git a/tests/tcg/mips/mips32-dsp/msubu.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_msubu.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/msubu.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_msubu.c
diff --git a/tests/tcg/mips/mips32-dsp/mfhi.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mthi.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/mfhi.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mthi.c
diff --git a/tests/tcg/mips/mips32-dsp/mthlip.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mthlip.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/mthlip.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mthlip.c
diff --git a/tests/tcg/mips/mips32-dsp/mflo.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mtlo.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/mflo.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mtlo.c
diff --git a/tests/tcg/mips/mips32-dsp/muleq_s_w_phl.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_muleq_s_w_phl.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/muleq_s_w_phl.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_muleq_s_w_phl.c
diff --git a/tests/tcg/mips/mips32-dsp/muleq_s_w_phr.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_muleq_s_w_phr.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/muleq_s_w_phr.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_muleq_s_w_phr.c
diff --git a/tests/tcg/mips/mips32-dsp/muleu_s_ph_qbl.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_muleu_s_ph_qbl.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/muleu_s_ph_qbl.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_muleu_s_ph_qbl.c
diff --git a/tests/tcg/mips/mips32-dsp/muleu_s_ph_qbr.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_muleu_s_ph_qbr.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/muleu_s_ph_qbr.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_muleu_s_ph_qbr.c
diff --git a/tests/tcg/mips/mips32-dsp/mulq_rs_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mulq_rs_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/mulq_rs_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mulq_rs_ph.c
diff --git a/tests/tcg/mips/mips32-dsp/mult.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mult.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/mult.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_mult.c
diff --git a/tests/tcg/mips/mips32-dsp/multu.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_multu.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/multu.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_multu.c
diff --git a/tests/tcg/mips/mips32-dsp/packrl_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_packrl_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/packrl_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_packrl_ph.c
diff --git a/tests/tcg/mips/mips32-dsp/pick_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_pick_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/pick_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_pick_ph.c
diff --git a/tests/tcg/mips/mips32-dsp/pick_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_pick_qb.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/pick_qb.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_pick_qb.c
diff --git a/tests/tcg/mips/mips32-dsp/preceq_w_phl.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceq_w_phl.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/preceq_w_phl.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceq_w_phl.c
diff --git a/tests/tcg/mips/mips32-dsp/preceq_w_phr.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceq_w_phr.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/preceq_w_phr.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceq_w_phr.c
diff --git a/tests/tcg/mips/mips32-dsp/precequ_ph_qbl.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precequ_ph_qbl.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/precequ_ph_qbl.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precequ_ph_qbl.c
diff --git a/tests/tcg/mips/mips32-dsp/precequ_ph_qbla.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precequ_ph_qbla.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/precequ_ph_qbla.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precequ_ph_qbla.c
diff --git a/tests/tcg/mips/mips32-dsp/precequ_ph_qbr.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precequ_ph_qbr.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/precequ_ph_qbr.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precequ_ph_qbr.c
diff --git a/tests/tcg/mips/mips32-dsp/precequ_ph_qbra.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precequ_ph_qbra.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/precequ_ph_qbra.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precequ_ph_qbra.c
diff --git a/tests/tcg/mips/mips32-dsp/preceu_ph_qbl.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceu_ph_qbl.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/preceu_ph_qbl.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceu_ph_qbl.c
diff --git a/tests/tcg/mips/mips32-dsp/preceu_ph_qbla.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceu_ph_qbla.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/preceu_ph_qbla.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceu_ph_qbla.c
diff --git a/tests/tcg/mips/mips32-dsp/preceu_ph_qbr.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceu_ph_qbr.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/preceu_ph_qbr.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceu_ph_qbr.c
diff --git a/tests/tcg/mips/mips32-dsp/preceu_ph_qbra.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceu_ph_qbra.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/preceu_ph_qbra.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_preceu_ph_qbra.c
diff --git a/tests/tcg/mips/mips32-dsp/precrq_ph_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precrq_ph_w.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/precrq_ph_w.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precrq_ph_w.c
diff --git a/tests/tcg/mips/mips32-dsp/precrq_qb_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precrq_qb_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/precrq_qb_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precrq_qb_ph.c
diff --git a/tests/tcg/mips/mips32-dsp/precrq_rs_ph_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precrq_rs_ph_w.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/precrq_rs_ph_w.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precrq_rs_ph_w.c
diff --git a/tests/tcg/mips/mips32-dsp/precrqu_s_qb_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precrqu_s_qb_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/precrqu_s_qb_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_precrqu_s_qb_ph.c
diff --git a/tests/tcg/mips/mips32-dsp/raddu_w_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_raddu_w_qb.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/raddu_w_qb.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_raddu_w_qb.c
diff --git a/tests/tcg/mips/mips32-dsp/rddsp.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_rddsp.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/rddsp.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_rddsp.c
diff --git a/tests/tcg/mips/mips32-dsp/repl_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_repl_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/repl_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_repl_ph.c
diff --git a/tests/tcg/mips/mips32-dsp/repl_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_repl_qb.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/repl_qb.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_repl_qb.c
diff --git a/tests/tcg/mips/mips32-dsp/replv_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_replv_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/replv_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_replv_ph.c
diff --git a/tests/tcg/mips/mips32-dsp/replv_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_replv_qb.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/replv_qb.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_replv_qb.c
diff --git a/tests/tcg/mips/mips32-dsp/shilo.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shilo.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/shilo.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shilo.c
diff --git a/tests/tcg/mips/mips32-dsp/shilov.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shilov.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/shilov.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shilov.c
diff --git a/tests/tcg/mips/mips32-dsp/shll_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shll_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/shll_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shll_ph.c
diff --git a/tests/tcg/mips/mips32-dsp/shll_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shll_qb.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/shll_qb.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shll_qb.c
diff --git a/tests/tcg/mips/mips32-dsp/shll_s_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shll_s_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/shll_s_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shll_s_ph.c
diff --git a/tests/tcg/mips/mips32-dsp/shll_s_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shll_s_w.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/shll_s_w.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shll_s_w.c
diff --git a/tests/tcg/mips/mips32-dsp/shllv_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shllv_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/shllv_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shllv_ph.c
diff --git a/tests/tcg/mips/mips32-dsp/shllv_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shllv_qb.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/shllv_qb.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shllv_qb.c
diff --git a/tests/tcg/mips/mips32-dsp/shllv_s_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shllv_s_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/shllv_s_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shllv_s_ph.c
diff --git a/tests/tcg/mips/mips32-dsp/shllv_s_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shllv_s_w.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/shllv_s_w.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shllv_s_w.c
diff --git a/tests/tcg/mips/mips32-dsp/shra_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shra_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/shra_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shra_ph.c
diff --git a/tests/tcg/mips/mips32-dsp/shra_r_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shra_r_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/shra_r_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shra_r_ph.c
diff --git a/tests/tcg/mips/mips32-dsp/shra_r_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shra_r_w.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/shra_r_w.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shra_r_w.c
diff --git a/tests/tcg/mips/mips32-dsp/shrav_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shrav_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/shrav_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shrav_ph.c
diff --git a/tests/tcg/mips/mips32-dsp/shrav_r_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shrav_r_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/shrav_r_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shrav_r_ph.c
diff --git a/tests/tcg/mips/mips32-dsp/shrav_r_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shrav_r_w.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/shrav_r_w.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shrav_r_w.c
diff --git a/tests/tcg/mips/mips32-dsp/shrl_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shrl_qb.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/shrl_qb.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shrl_qb.c
diff --git a/tests/tcg/mips/mips32-dsp/shrlv_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shrlv_qb.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/shrlv_qb.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_shrlv_qb.c
diff --git a/tests/tcg/mips/mips32-dsp/subq_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_subq_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/subq_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_subq_ph.c
diff --git a/tests/tcg/mips/mips32-dsp/subq_s_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_subq_s_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/subq_s_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_subq_s_ph.c
diff --git a/tests/tcg/mips/mips32-dsp/subq_s_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_subq_s_w.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/subq_s_w.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_subq_s_w.c
diff --git a/tests/tcg/mips/mips32-dsp/subu_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_subu_qb.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/subu_qb.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_subu_qb.c
diff --git a/tests/tcg/mips/mips32-dsp/subu_s_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_subu_s_qb.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/subu_s_qb.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_subu_s_qb.c
diff --git a/tests/tcg/mips/mips32-dsp/wrdsp.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_wrdsp.c
similarity index 100%
rename from tests/tcg/mips/mips32-dsp/wrdsp.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r1_wrdsp.c
diff --git a/tests/tcg/mips/mips32-dspr2/absq_s_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_absq_s_qb.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/absq_s_qb.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_absq_s_qb.c
diff --git a/tests/tcg/mips/mips32-dspr2/addqh_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addqh_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/addqh_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addqh_ph.c
diff --git a/tests/tcg/mips/mips32-dspr2/addqh_r_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addqh_r_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/addqh_r_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addqh_r_ph.c
diff --git a/tests/tcg/mips/mips32-dspr2/addqh_r_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addqh_r_w.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/addqh_r_w.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addqh_r_w.c
diff --git a/tests/tcg/mips/mips32-dspr2/addqh_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addqh_w.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/addqh_w.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addqh_w.c
diff --git a/tests/tcg/mips/mips32-dspr2/addu_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addu_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/addu_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addu_ph.c
diff --git a/tests/tcg/mips/mips32-dspr2/addu_s_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addu_s_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/addu_s_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_addu_s_ph.c
diff --git a/tests/tcg/mips/mips32-dspr2/adduh_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_adduh_qb.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/adduh_qb.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_adduh_qb.c
diff --git a/tests/tcg/mips/mips32-dspr2/adduh_r_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_adduh_r_qb.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/adduh_r_qb.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_adduh_r_qb.c
diff --git a/tests/tcg/mips/mips32-dspr2/append.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_append.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/append.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_append.c
diff --git a/tests/tcg/mips/mips32-dspr2/balign.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_balign.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/balign.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_balign.c
diff --git a/tests/tcg/mips/mips32-dspr2/cmpgdu_eq_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_cmpgdu_eq_qb.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/cmpgdu_eq_qb.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_cmpgdu_eq_qb.c
diff --git a/tests/tcg/mips/mips32-dspr2/cmpgdu_le_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_cmpgdu_le_qb.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/cmpgdu_le_qb.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_cmpgdu_le_qb.c
diff --git a/tests/tcg/mips/mips32-dspr2/cmpgdu_lt_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_cmpgdu_lt_qb.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/cmpgdu_lt_qb.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_cmpgdu_lt_qb.c
diff --git a/tests/tcg/mips/mips32-dspr2/dpa_w_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpa_w_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/dpa_w_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpa_w_ph.c
diff --git a/tests/tcg/mips/mips32-dspr2/dpaqx_s_w_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpaqx_s_w_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/dpaqx_s_w_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpaqx_s_w_ph.c
diff --git a/tests/tcg/mips/mips32-dspr2/dpaqx_sa_w_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpaqx_sa_w_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/dpaqx_sa_w_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpaqx_sa_w_ph.c
diff --git a/tests/tcg/mips/mips32-dspr2/dpax_w_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpax_w_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/dpax_w_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpax_w_ph.c
diff --git a/tests/tcg/mips/mips32-dspr2/dps_w_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dps_w_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/dps_w_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dps_w_ph.c
diff --git a/tests/tcg/mips/mips32-dspr2/dpsqx_s_w_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpsqx_s_w_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/dpsqx_s_w_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpsqx_s_w_ph.c
diff --git a/tests/tcg/mips/mips32-dspr2/dpsqx_sa_w_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpsqx_sa_w_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/dpsqx_sa_w_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpsqx_sa_w_ph.c
diff --git a/tests/tcg/mips/mips32-dspr2/dpsx_w_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpsx_w_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/dpsx_w_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_dpsx_w_ph.c
diff --git a/tests/tcg/mips/mips32-dspr2/mul_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mul_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/mul_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mul_ph.c
diff --git a/tests/tcg/mips/mips32-dspr2/mul_s_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mul_s_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/mul_s_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mul_s_ph.c
diff --git a/tests/tcg/mips/mips32-dspr2/mulq_rs_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mulq_rs_w.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/mulq_rs_w.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mulq_rs_w.c
diff --git a/tests/tcg/mips/mips32-dspr2/mulq_s_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mulq_s_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/mulq_s_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mulq_s_ph.c
diff --git a/tests/tcg/mips/mips32-dspr2/mulq_s_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mulq_s_w.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/mulq_s_w.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mulq_s_w.c
diff --git a/tests/tcg/mips/mips32-dspr2/mulsa_w_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mulsa_w_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/mulsa_w_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mulsa_w_ph.c
diff --git a/tests/tcg/mips/mips32-dspr2/mulsaq_s_w_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mulsaq_s_w_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/mulsaq_s_w_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_mulsaq_s_w_ph.c
diff --git a/tests/tcg/mips/mips32-dspr2/precr_qb_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_precr_qb_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/precr_qb_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_precr_qb_ph.c
diff --git a/tests/tcg/mips/mips32-dspr2/precr_sra_ph_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_precr_sra_ph_w.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/precr_sra_ph_w.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_precr_sra_ph_w.c
diff --git a/tests/tcg/mips/mips32-dspr2/precr_sra_r_ph_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_precr_sra_r_ph_w.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/precr_sra_r_ph_w.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_precr_sra_r_ph_w.c
diff --git a/tests/tcg/mips/mips32-dspr2/prepend.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_prepend.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/prepend.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_prepend.c
diff --git a/tests/tcg/mips/mips32-dspr2/shra_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shra_qb.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/shra_qb.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shra_qb.c
diff --git a/tests/tcg/mips/mips32-dspr2/shra_r_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shra_r_qb.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/shra_r_qb.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shra_r_qb.c
diff --git a/tests/tcg/mips/mips32-dspr2/shrav_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shrav_qb.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/shrav_qb.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shrav_qb.c
diff --git a/tests/tcg/mips/mips32-dspr2/shrav_r_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shrav_r_qb.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/shrav_r_qb.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shrav_r_qb.c
diff --git a/tests/tcg/mips/mips32-dspr2/shrl_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shrl_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/shrl_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shrl_ph.c
diff --git a/tests/tcg/mips/mips32-dspr2/shrlv_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shrlv_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/shrlv_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_shrlv_ph.c
diff --git a/tests/tcg/mips/mips32-dspr2/subqh_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subqh_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/subqh_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subqh_ph.c
diff --git a/tests/tcg/mips/mips32-dspr2/subqh_r_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subqh_r_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/subqh_r_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subqh_r_ph.c
diff --git a/tests/tcg/mips/mips32-dspr2/subqh_r_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subqh_r_w.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/subqh_r_w.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subqh_r_w.c
diff --git a/tests/tcg/mips/mips32-dspr2/subqh_w.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subqh_w.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/subqh_w.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subqh_w.c
diff --git a/tests/tcg/mips/mips32-dspr2/subu_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subu_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/subu_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subu_ph.c
diff --git a/tests/tcg/mips/mips32-dspr2/subu_s_ph.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subu_s_ph.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/subu_s_ph.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subu_s_ph.c
diff --git a/tests/tcg/mips/mips32-dspr2/subuh_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subuh_qb.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/subuh_qb.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subuh_qb.c
diff --git a/tests/tcg/mips/mips32-dspr2/subuh_r_qb.c b/tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subuh_r_qb.c
similarity index 100%
rename from tests/tcg/mips/mips32-dspr2/subuh_r_qb.c
rename to tests/tcg/mips/user/ase/dsp/test_32_dsp_r2_subuh_r_qb.c
diff --git a/tests/tcg/mips/mipsr5900/div1.c b/tests/tcg/mips/user/isa/r5900/test_r5900_div1.c
similarity index 100%
rename from tests/tcg/mips/mipsr5900/div1.c
rename to tests/tcg/mips/user/isa/r5900/test_r5900_div1.c
diff --git a/tests/tcg/mips/mipsr5900/divu1.c b/tests/tcg/mips/user/isa/r5900/test_r5900_divu1.c
similarity index 100%
rename from tests/tcg/mips/mipsr5900/divu1.c
rename to tests/tcg/mips/user/isa/r5900/test_r5900_divu1.c
diff --git a/tests/tcg/mips/mipsr5900/madd.c b/tests/tcg/mips/user/isa/r5900/test_r5900_madd.c
similarity index 100%
rename from tests/tcg/mips/mipsr5900/madd.c
rename to tests/tcg/mips/user/isa/r5900/test_r5900_madd.c
diff --git a/tests/tcg/mips/mipsr5900/maddu.c b/tests/tcg/mips/user/isa/r5900/test_r5900_maddu.c
similarity index 100%
rename from tests/tcg/mips/mipsr5900/maddu.c
rename to tests/tcg/mips/user/isa/r5900/test_r5900_maddu.c
diff --git a/tests/tcg/mips/mipsr5900/mflohi1.c b/tests/tcg/mips/user/isa/r5900/test_r5900_mflohi1.c
similarity index 100%
rename from tests/tcg/mips/mipsr5900/mflohi1.c
rename to tests/tcg/mips/user/isa/r5900/test_r5900_mflohi1.c
diff --git a/tests/tcg/mips/mipsr5900/mtlohi1.c b/tests/tcg/mips/user/isa/r5900/test_r5900_mtlohi1.c
similarity index 100%
rename from tests/tcg/mips/mipsr5900/mtlohi1.c
rename to tests/tcg/mips/user/isa/r5900/test_r5900_mtlohi1.c
diff --git a/tests/tcg/mips/mipsr5900/mult.c b/tests/tcg/mips/user/isa/r5900/test_r5900_mult.c
similarity index 100%
rename from tests/tcg/mips/mipsr5900/mult.c
rename to tests/tcg/mips/user/isa/r5900/test_r5900_mult.c
diff --git a/tests/tcg/mips/mipsr5900/multu.c b/tests/tcg/mips/user/isa/r5900/test_r5900_multu.c
similarity index 100%
rename from tests/tcg/mips/mipsr5900/multu.c
rename to tests/tcg/mips/user/isa/r5900/test_r5900_multu.c
-- 
2.7.4

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2019-01-04 16:48 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-12-27 13:12 [Qemu-devel] [PATCH 0/2] tests: Reorganize MIPS TCG directories and files Aleksandar Markovic
2018-12-27 13:12 ` [Qemu-devel] [PATCH 1/2] tests: tcg: mips: Move source files to new location Aleksandar Markovic
2018-12-31 19:43   ` Philippe Mathieu-Daudé
2019-01-01 22:19   ` Philippe Mathieu-Daudé
2018-12-27 13:13 ` [Qemu-devel] [PATCH 2/2] tests: tcg: mips: Remove old directories after reorganization Aleksandar Markovic
2018-12-27 22:02 ` [Qemu-devel] [PATCH 0/2] tests: Reorganize MIPS TCG directories and files Philippe Mathieu-Daudé
2018-12-28  9:29   ` Aleksandar Markovic
2019-01-03 20:06 ` Eric Blake
2019-01-03 20:36   ` Aleksandar Markovic
2019-01-04 16:46 Aleksandar Markovic
2019-01-04 16:46 ` [Qemu-devel] [PATCH 1/2] tests: tcg: mips: Move source files to new location Aleksandar Markovic

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.