1895c2d04SBlue Swirl DEF_HELPER_3(raise_exception_err, noreturn, env, i32, int) 2895c2d04SBlue Swirl DEF_HELPER_2(raise_exception, noreturn, env, i32) 39c708c7fSPavel Dovgaluk DEF_HELPER_1(raise_exception_debug, noreturn, env) 47dd9e556Sths 5c8c2227eSths #ifdef TARGET_MIPS64 6895c2d04SBlue Swirl DEF_HELPER_4(sdl, void, env, tl, tl, int) 7895c2d04SBlue Swirl DEF_HELPER_4(sdr, void, env, tl, tl, int) 8c8c2227eSths #endif 9895c2d04SBlue Swirl DEF_HELPER_4(swl, void, env, tl, tl, int) 10895c2d04SBlue Swirl DEF_HELPER_4(swr, void, env, tl, tl, int) 11c8c2227eSths 12e7139c44SAurelien Jarno #ifndef CONFIG_USER_ONLY 13895c2d04SBlue Swirl DEF_HELPER_3(ll, tl, env, tl, int) 14e7139c44SAurelien Jarno #ifdef TARGET_MIPS64 15895c2d04SBlue Swirl DEF_HELPER_3(lld, tl, env, tl, int) 16e7139c44SAurelien Jarno #endif 17e7139c44SAurelien Jarno #endif 18e7139c44SAurelien Jarno 1915eacb9bSYongbok Kim DEF_HELPER_FLAGS_1(bitswap, TCG_CALL_NO_RWG_SE, tl, tl) 2015eacb9bSYongbok Kim #ifdef TARGET_MIPS64 2115eacb9bSYongbok Kim DEF_HELPER_FLAGS_1(dbitswap, TCG_CALL_NO_RWG_SE, tl, tl) 2215eacb9bSYongbok Kim #endif 2315eacb9bSYongbok Kim 24e222f506SMatthew Fortune DEF_HELPER_FLAGS_4(rotx, TCG_CALL_NO_RWG_SE, tl, tl, i32, i32, i32) 25e222f506SMatthew Fortune 263c824109SNathan Froyd /* microMIPS functions */ 27f5daeec4SRichard Henderson DEF_HELPER_4(lwm, void, env, tl, tl, i32) 28f5daeec4SRichard Henderson DEF_HELPER_4(swm, void, env, tl, tl, i32) 293c824109SNathan Froyd #ifdef TARGET_MIPS64 30f5daeec4SRichard Henderson DEF_HELPER_4(ldm, void, env, tl, tl, i32) 31f5daeec4SRichard Henderson DEF_HELPER_4(sdm, void, env, tl, tl, i32) 323c824109SNathan Froyd #endif 333c824109SNathan Froyd 34a7812ae4Spbrook DEF_HELPER_2(fork, void, tl, tl) 35895c2d04SBlue Swirl DEF_HELPER_2(yield, tl, env, tl) 36f1aa6320Sths 37f1aa6320Sths /* CP1 functions */ 38895c2d04SBlue Swirl DEF_HELPER_2(cfc1, tl, env, i32) 39736d120aSPetar Jovanovic DEF_HELPER_4(ctc1, void, env, tl, i32, i32) 405d0fc900Sths 41895c2d04SBlue Swirl DEF_HELPER_2(float_cvtd_s, i64, env, i32) 42895c2d04SBlue Swirl DEF_HELPER_2(float_cvtd_w, i64, env, i32) 43895c2d04SBlue Swirl DEF_HELPER_2(float_cvtd_l, i64, env, i64) 44895c2d04SBlue Swirl DEF_HELPER_2(float_cvtps_pw, i64, env, i64) 45895c2d04SBlue Swirl DEF_HELPER_2(float_cvtpw_ps, i64, env, i64) 46895c2d04SBlue Swirl DEF_HELPER_2(float_cvts_d, i32, env, i64) 47895c2d04SBlue Swirl DEF_HELPER_2(float_cvts_w, i32, env, i32) 48895c2d04SBlue Swirl DEF_HELPER_2(float_cvts_l, i32, env, i64) 49895c2d04SBlue Swirl DEF_HELPER_2(float_cvts_pl, i32, env, i32) 50895c2d04SBlue Swirl DEF_HELPER_2(float_cvts_pu, i32, env, i32) 515d0fc900Sths 52895c2d04SBlue Swirl DEF_HELPER_3(float_addr_ps, i64, env, i64, i64) 53895c2d04SBlue Swirl DEF_HELPER_3(float_mulr_ps, i64, env, i64, i64) 545d0fc900Sths 55af39bc8cSAleksandar Markovic DEF_HELPER_FLAGS_2(float_class_s, TCG_CALL_NO_RWG_SE, i32, env, i32) 56af39bc8cSAleksandar Markovic DEF_HELPER_FLAGS_2(float_class_d, TCG_CALL_NO_RWG_SE, i64, env, i64) 57e7f16abbSLeon Alrae 58e7f16abbSLeon Alrae #define FOP_PROTO(op) \ 59e7f16abbSLeon Alrae DEF_HELPER_4(float_ ## op ## _s, i32, env, i32, i32, i32) \ 60e7f16abbSLeon Alrae DEF_HELPER_4(float_ ## op ## _d, i64, env, i64, i64, i64) 61e7f16abbSLeon Alrae FOP_PROTO(maddf) 62e7f16abbSLeon Alrae FOP_PROTO(msubf) 63e7f16abbSLeon Alrae #undef FOP_PROTO 64e7f16abbSLeon Alrae 65e7f16abbSLeon Alrae #define FOP_PROTO(op) \ 66e7f16abbSLeon Alrae DEF_HELPER_3(float_ ## op ## _s, i32, env, i32, i32) \ 67e7f16abbSLeon Alrae DEF_HELPER_3(float_ ## op ## _d, i64, env, i64, i64) 68e7f16abbSLeon Alrae FOP_PROTO(max) 69e7f16abbSLeon Alrae FOP_PROTO(maxa) 70e7f16abbSLeon Alrae FOP_PROTO(min) 71e7f16abbSLeon Alrae FOP_PROTO(mina) 72e7f16abbSLeon Alrae #undef FOP_PROTO 73e7f16abbSLeon Alrae 745d0fc900Sths #define FOP_PROTO(op) \ 7587552089SAleksandar Markovic DEF_HELPER_2(float_ ## op ## _l_s, i64, env, i32) \ 7687552089SAleksandar Markovic DEF_HELPER_2(float_ ## op ## _l_d, i64, env, i64) \ 7787552089SAleksandar Markovic DEF_HELPER_2(float_ ## op ## _w_s, i32, env, i32) \ 7887552089SAleksandar Markovic DEF_HELPER_2(float_ ## op ## _w_d, i32, env, i64) 7987552089SAleksandar Markovic FOP_PROTO(cvt) 80b6d96bedSths FOP_PROTO(round) 81b6d96bedSths FOP_PROTO(trunc) 82b6d96bedSths FOP_PROTO(ceil) 83b6d96bedSths FOP_PROTO(floor) 8487552089SAleksandar Markovic FOP_PROTO(cvt_2008) 8587552089SAleksandar Markovic FOP_PROTO(round_2008) 8687552089SAleksandar Markovic FOP_PROTO(trunc_2008) 8787552089SAleksandar Markovic FOP_PROTO(ceil_2008) 8887552089SAleksandar Markovic FOP_PROTO(floor_2008) 89b6d96bedSths #undef FOP_PROTO 90b6d96bedSths 91b6d96bedSths #define FOP_PROTO(op) \ 92895c2d04SBlue Swirl DEF_HELPER_2(float_ ## op ## _s, i32, env, i32) \ 93895c2d04SBlue Swirl DEF_HELPER_2(float_ ## op ## _d, i64, env, i64) 94a16336e4Sths FOP_PROTO(sqrt) 955d0fc900Sths FOP_PROTO(rsqrt) 965d0fc900Sths FOP_PROTO(recip) 97e7f16abbSLeon Alrae FOP_PROTO(rint) 985d0fc900Sths #undef FOP_PROTO 995d0fc900Sths 1005d0fc900Sths #define FOP_PROTO(op) \ 101a7812ae4Spbrook DEF_HELPER_1(float_ ## op ## _s, i32, i32) \ 102a7812ae4Spbrook DEF_HELPER_1(float_ ## op ## _d, i64, i64) \ 103a7812ae4Spbrook DEF_HELPER_1(float_ ## op ## _ps, i64, i64) 104b6d96bedSths FOP_PROTO(abs) 105b6d96bedSths FOP_PROTO(chs) 106895c2d04SBlue Swirl #undef FOP_PROTO 107895c2d04SBlue Swirl 108895c2d04SBlue Swirl #define FOP_PROTO(op) \ 109895c2d04SBlue Swirl DEF_HELPER_2(float_ ## op ## _s, i32, env, i32) \ 110895c2d04SBlue Swirl DEF_HELPER_2(float_ ## op ## _d, i64, env, i64) \ 111895c2d04SBlue Swirl DEF_HELPER_2(float_ ## op ## _ps, i64, env, i64) 112b6d96bedSths FOP_PROTO(recip1) 113b6d96bedSths FOP_PROTO(rsqrt1) 114b6d96bedSths #undef FOP_PROTO 115b6d96bedSths 116b6d96bedSths #define FOP_PROTO(op) \ 117895c2d04SBlue Swirl DEF_HELPER_3(float_ ## op ## _s, i32, env, i32, i32) \ 118895c2d04SBlue Swirl DEF_HELPER_3(float_ ## op ## _d, i64, env, i64, i64) \ 119895c2d04SBlue Swirl DEF_HELPER_3(float_ ## op ## _ps, i64, env, i64, i64) 1205d0fc900Sths FOP_PROTO(add) 1215d0fc900Sths FOP_PROTO(sub) 1225d0fc900Sths FOP_PROTO(mul) 1235d0fc900Sths FOP_PROTO(div) 1245d0fc900Sths FOP_PROTO(recip2) 1255d0fc900Sths FOP_PROTO(rsqrt2) 1265d0fc900Sths #undef FOP_PROTO 1275d0fc900Sths 1285d0fc900Sths #define FOP_PROTO(op) \ 129895c2d04SBlue Swirl DEF_HELPER_4(float_ ## op ## _s, i32, env, i32, i32, i32) \ 130895c2d04SBlue Swirl DEF_HELPER_4(float_ ## op ## _d, i64, env, i64, i64, i64) \ 131895c2d04SBlue Swirl DEF_HELPER_4(float_ ## op ## _ps, i64, env, i64, i64, i64) 132b3d6cd44SAurelien Jarno FOP_PROTO(madd) 133b3d6cd44SAurelien Jarno FOP_PROTO(msub) 134b3d6cd44SAurelien Jarno FOP_PROTO(nmadd) 135b3d6cd44SAurelien Jarno FOP_PROTO(nmsub) 136b6d96bedSths #undef FOP_PROTO 137b6d96bedSths 138b6d96bedSths #define FOP_PROTO(op) \ 139895c2d04SBlue Swirl DEF_HELPER_4(cmp_d_ ## op, void, env, i64, i64, int) \ 140895c2d04SBlue Swirl DEF_HELPER_4(cmpabs_d_ ## op, void, env, i64, i64, int) \ 141895c2d04SBlue Swirl DEF_HELPER_4(cmp_s_ ## op, void, env, i32, i32, int) \ 142895c2d04SBlue Swirl DEF_HELPER_4(cmpabs_s_ ## op, void, env, i32, i32, int) \ 143895c2d04SBlue Swirl DEF_HELPER_4(cmp_ps_ ## op, void, env, i64, i64, int) \ 144895c2d04SBlue Swirl DEF_HELPER_4(cmpabs_ps_ ## op, void, env, i64, i64, int) 1455d0fc900Sths FOP_PROTO(f) 1465d0fc900Sths FOP_PROTO(un) 1475d0fc900Sths FOP_PROTO(eq) 1485d0fc900Sths FOP_PROTO(ueq) 1495d0fc900Sths FOP_PROTO(olt) 1505d0fc900Sths FOP_PROTO(ult) 1515d0fc900Sths FOP_PROTO(ole) 1525d0fc900Sths FOP_PROTO(ule) 1535d0fc900Sths FOP_PROTO(sf) 1545d0fc900Sths FOP_PROTO(ngle) 1555d0fc900Sths FOP_PROTO(seq) 1565d0fc900Sths FOP_PROTO(ngl) 1575d0fc900Sths FOP_PROTO(lt) 1585d0fc900Sths FOP_PROTO(nge) 1595d0fc900Sths FOP_PROTO(le) 1605d0fc900Sths FOP_PROTO(ngt) 1615d0fc900Sths #undef FOP_PROTO 16208ba7963Sths 1633f493883SYongbok Kim #define FOP_PROTO(op) \ 1643f493883SYongbok Kim DEF_HELPER_3(r6_cmp_d_ ## op, i64, env, i64, i64) \ 1653f493883SYongbok Kim DEF_HELPER_3(r6_cmp_s_ ## op, i32, env, i32, i32) 1663f493883SYongbok Kim FOP_PROTO(af) 1673f493883SYongbok Kim FOP_PROTO(un) 1683f493883SYongbok Kim FOP_PROTO(eq) 1693f493883SYongbok Kim FOP_PROTO(ueq) 1703f493883SYongbok Kim FOP_PROTO(lt) 1713f493883SYongbok Kim FOP_PROTO(ult) 1723f493883SYongbok Kim FOP_PROTO(le) 1733f493883SYongbok Kim FOP_PROTO(ule) 1743f493883SYongbok Kim FOP_PROTO(saf) 1753f493883SYongbok Kim FOP_PROTO(sun) 1763f493883SYongbok Kim FOP_PROTO(seq) 1773f493883SYongbok Kim FOP_PROTO(sueq) 1783f493883SYongbok Kim FOP_PROTO(slt) 1793f493883SYongbok Kim FOP_PROTO(sult) 1803f493883SYongbok Kim FOP_PROTO(sle) 1813f493883SYongbok Kim FOP_PROTO(sule) 1823f493883SYongbok Kim FOP_PROTO(or) 1833f493883SYongbok Kim FOP_PROTO(une) 1843f493883SYongbok Kim FOP_PROTO(ne) 1853f493883SYongbok Kim FOP_PROTO(sor) 1863f493883SYongbok Kim FOP_PROTO(sune) 1873f493883SYongbok Kim FOP_PROTO(sne) 1883f493883SYongbok Kim #undef FOP_PROTO 1893f493883SYongbok Kim 190895c2d04SBlue Swirl DEF_HELPER_1(rdhwr_cpunum, tl, env) 191895c2d04SBlue Swirl DEF_HELPER_1(rdhwr_synci_step, tl, env) 192895c2d04SBlue Swirl DEF_HELPER_1(rdhwr_cc, tl, env) 193895c2d04SBlue Swirl DEF_HELPER_1(rdhwr_ccres, tl, env) 194b00c7218SYongbok Kim DEF_HELPER_1(rdhwr_performance, tl, env) 195b00c7218SYongbok Kim DEF_HELPER_1(rdhwr_xnp, tl, env) 196895c2d04SBlue Swirl DEF_HELPER_2(pmon, void, env, int) 197895c2d04SBlue Swirl DEF_HELPER_1(wait, void, env) 198a7812ae4Spbrook 19903afdc28SJiaxun Yang #ifdef TARGET_MIPS64 20003afdc28SJiaxun Yang DEF_HELPER_FLAGS_2(lcsr_cpucfg, TCG_CALL_NO_RWG_SE, tl, env, tl) 20103afdc28SJiaxun Yang #endif 20203afdc28SJiaxun Yang 203bd277fa1SRichard Henderson /* Loongson multimedia functions. */ 20495bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(paddsh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 20595bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(paddush, TCG_CALL_NO_RWG_SE, i64, i64, i64) 20695bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(paddh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 20795bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(paddw, TCG_CALL_NO_RWG_SE, i64, i64, i64) 20895bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(paddsb, TCG_CALL_NO_RWG_SE, i64, i64, i64) 20995bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(paddusb, TCG_CALL_NO_RWG_SE, i64, i64, i64) 21095bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(paddb, TCG_CALL_NO_RWG_SE, i64, i64, i64) 211bd277fa1SRichard Henderson 21295bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(psubsh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 21395bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(psubush, TCG_CALL_NO_RWG_SE, i64, i64, i64) 21495bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(psubh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 21595bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(psubw, TCG_CALL_NO_RWG_SE, i64, i64, i64) 21695bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(psubsb, TCG_CALL_NO_RWG_SE, i64, i64, i64) 21795bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(psubusb, TCG_CALL_NO_RWG_SE, i64, i64, i64) 21895bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(psubb, TCG_CALL_NO_RWG_SE, i64, i64, i64) 219bd277fa1SRichard Henderson 22095bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(pshufh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 22195bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(packsswh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 22295bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(packsshb, TCG_CALL_NO_RWG_SE, i64, i64, i64) 22395bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(packushb, TCG_CALL_NO_RWG_SE, i64, i64, i64) 224bd277fa1SRichard Henderson 22595bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(punpcklhw, TCG_CALL_NO_RWG_SE, i64, i64, i64) 22695bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(punpckhhw, TCG_CALL_NO_RWG_SE, i64, i64, i64) 22795bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(punpcklbh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 22895bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(punpckhbh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 22995bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(punpcklwd, TCG_CALL_NO_RWG_SE, i64, i64, i64) 23095bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(punpckhwd, TCG_CALL_NO_RWG_SE, i64, i64, i64) 231bd277fa1SRichard Henderson 23295bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(pavgh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 23395bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(pavgb, TCG_CALL_NO_RWG_SE, i64, i64, i64) 23495bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(pmaxsh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 23595bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(pminsh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 23695bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(pmaxub, TCG_CALL_NO_RWG_SE, i64, i64, i64) 23795bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(pminub, TCG_CALL_NO_RWG_SE, i64, i64, i64) 238bd277fa1SRichard Henderson 23995bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(pcmpeqw, TCG_CALL_NO_RWG_SE, i64, i64, i64) 24095bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(pcmpgtw, TCG_CALL_NO_RWG_SE, i64, i64, i64) 24195bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(pcmpeqh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 24295bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(pcmpgth, TCG_CALL_NO_RWG_SE, i64, i64, i64) 24395bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(pcmpeqb, TCG_CALL_NO_RWG_SE, i64, i64, i64) 24495bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(pcmpgtb, TCG_CALL_NO_RWG_SE, i64, i64, i64) 245bd277fa1SRichard Henderson 24695bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(psllw, TCG_CALL_NO_RWG_SE, i64, i64, i64) 24795bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(psllh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 24895bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(psrlw, TCG_CALL_NO_RWG_SE, i64, i64, i64) 24995bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(psrlh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 25095bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(psraw, TCG_CALL_NO_RWG_SE, i64, i64, i64) 25195bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(psrah, TCG_CALL_NO_RWG_SE, i64, i64, i64) 252bd277fa1SRichard Henderson 25395bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(pmullh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 25495bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(pmulhh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 25595bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(pmulhuh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 25695bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(pmaddhw, TCG_CALL_NO_RWG_SE, i64, i64, i64) 257bd277fa1SRichard Henderson 25895bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(pasubub, TCG_CALL_NO_RWG_SE, i64, i64, i64) 25995bf787eSAurelien Jarno DEF_HELPER_FLAGS_1(biadd, TCG_CALL_NO_RWG_SE, i64, i64) 26095bf787eSAurelien Jarno DEF_HELPER_FLAGS_1(pmovmskb, TCG_CALL_NO_RWG_SE, i64, i64) 261bd277fa1SRichard Henderson 262461c08dfSJia Liu /*** MIPS DSP ***/ 263461c08dfSJia Liu /* DSP Arithmetic Sub-class insns */ 264461c08dfSJia Liu DEF_HELPER_FLAGS_3(addq_ph, 0, tl, tl, tl, env) 265461c08dfSJia Liu DEF_HELPER_FLAGS_3(addq_s_ph, 0, tl, tl, tl, env) 266461c08dfSJia Liu #if defined(TARGET_MIPS64) 267461c08dfSJia Liu DEF_HELPER_FLAGS_3(addq_qh, 0, tl, tl, tl, env) 268461c08dfSJia Liu DEF_HELPER_FLAGS_3(addq_s_qh, 0, tl, tl, tl, env) 269461c08dfSJia Liu #endif 270461c08dfSJia Liu DEF_HELPER_FLAGS_3(addq_s_w, 0, tl, tl, tl, env) 271461c08dfSJia Liu #if defined(TARGET_MIPS64) 272461c08dfSJia Liu DEF_HELPER_FLAGS_3(addq_pw, 0, tl, tl, tl, env) 273461c08dfSJia Liu DEF_HELPER_FLAGS_3(addq_s_pw, 0, tl, tl, tl, env) 274461c08dfSJia Liu #endif 275461c08dfSJia Liu DEF_HELPER_FLAGS_3(addu_qb, 0, tl, tl, tl, env) 276461c08dfSJia Liu DEF_HELPER_FLAGS_3(addu_s_qb, 0, tl, tl, tl, env) 277461c08dfSJia Liu DEF_HELPER_FLAGS_2(adduh_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl) 278461c08dfSJia Liu DEF_HELPER_FLAGS_2(adduh_r_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl) 279461c08dfSJia Liu DEF_HELPER_FLAGS_3(addu_ph, 0, tl, tl, tl, env) 280461c08dfSJia Liu DEF_HELPER_FLAGS_3(addu_s_ph, 0, tl, tl, tl, env) 281461c08dfSJia Liu DEF_HELPER_FLAGS_2(addqh_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl) 282461c08dfSJia Liu DEF_HELPER_FLAGS_2(addqh_r_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl) 283461c08dfSJia Liu DEF_HELPER_FLAGS_2(addqh_w, TCG_CALL_NO_RWG_SE, tl, tl, tl) 284461c08dfSJia Liu DEF_HELPER_FLAGS_2(addqh_r_w, TCG_CALL_NO_RWG_SE, tl, tl, tl) 285461c08dfSJia Liu #if defined(TARGET_MIPS64) 286461c08dfSJia Liu DEF_HELPER_FLAGS_3(addu_ob, 0, tl, tl, tl, env) 287461c08dfSJia Liu DEF_HELPER_FLAGS_3(addu_s_ob, 0, tl, tl, tl, env) 288461c08dfSJia Liu DEF_HELPER_FLAGS_2(adduh_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl) 289461c08dfSJia Liu DEF_HELPER_FLAGS_2(adduh_r_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl) 290461c08dfSJia Liu DEF_HELPER_FLAGS_3(addu_qh, 0, tl, tl, tl, env) 291461c08dfSJia Liu DEF_HELPER_FLAGS_3(addu_s_qh, 0, tl, tl, tl, env) 292461c08dfSJia Liu #endif 293461c08dfSJia Liu DEF_HELPER_FLAGS_3(subq_ph, 0, tl, tl, tl, env) 294461c08dfSJia Liu DEF_HELPER_FLAGS_3(subq_s_ph, 0, tl, tl, tl, env) 295461c08dfSJia Liu #if defined(TARGET_MIPS64) 296461c08dfSJia Liu DEF_HELPER_FLAGS_3(subq_qh, 0, tl, tl, tl, env) 297461c08dfSJia Liu DEF_HELPER_FLAGS_3(subq_s_qh, 0, tl, tl, tl, env) 298461c08dfSJia Liu #endif 299461c08dfSJia Liu DEF_HELPER_FLAGS_3(subq_s_w, 0, tl, tl, tl, env) 300461c08dfSJia Liu #if defined(TARGET_MIPS64) 301461c08dfSJia Liu DEF_HELPER_FLAGS_3(subq_pw, 0, tl, tl, tl, env) 302461c08dfSJia Liu DEF_HELPER_FLAGS_3(subq_s_pw, 0, tl, tl, tl, env) 303461c08dfSJia Liu #endif 304461c08dfSJia Liu DEF_HELPER_FLAGS_3(subu_qb, 0, tl, tl, tl, env) 305461c08dfSJia Liu DEF_HELPER_FLAGS_3(subu_s_qb, 0, tl, tl, tl, env) 306461c08dfSJia Liu DEF_HELPER_FLAGS_2(subuh_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl) 307461c08dfSJia Liu DEF_HELPER_FLAGS_2(subuh_r_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl) 308461c08dfSJia Liu DEF_HELPER_FLAGS_3(subu_ph, 0, tl, tl, tl, env) 309461c08dfSJia Liu DEF_HELPER_FLAGS_3(subu_s_ph, 0, tl, tl, tl, env) 310461c08dfSJia Liu DEF_HELPER_FLAGS_2(subqh_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl) 311461c08dfSJia Liu DEF_HELPER_FLAGS_2(subqh_r_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl) 312461c08dfSJia Liu DEF_HELPER_FLAGS_2(subqh_w, TCG_CALL_NO_RWG_SE, tl, tl, tl) 313461c08dfSJia Liu DEF_HELPER_FLAGS_2(subqh_r_w, TCG_CALL_NO_RWG_SE, tl, tl, tl) 314461c08dfSJia Liu #if defined(TARGET_MIPS64) 315461c08dfSJia Liu DEF_HELPER_FLAGS_3(subu_ob, 0, tl, tl, tl, env) 316461c08dfSJia Liu DEF_HELPER_FLAGS_3(subu_s_ob, 0, tl, tl, tl, env) 317461c08dfSJia Liu DEF_HELPER_FLAGS_2(subuh_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl) 318461c08dfSJia Liu DEF_HELPER_FLAGS_2(subuh_r_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl) 319461c08dfSJia Liu DEF_HELPER_FLAGS_3(subu_qh, 0, tl, tl, tl, env) 320461c08dfSJia Liu DEF_HELPER_FLAGS_3(subu_s_qh, 0, tl, tl, tl, env) 321461c08dfSJia Liu #endif 322461c08dfSJia Liu DEF_HELPER_FLAGS_3(addsc, 0, tl, tl, tl, env) 323461c08dfSJia Liu DEF_HELPER_FLAGS_3(addwc, 0, tl, tl, tl, env) 324461c08dfSJia Liu DEF_HELPER_FLAGS_2(modsub, TCG_CALL_NO_RWG_SE, tl, tl, tl) 325461c08dfSJia Liu DEF_HELPER_FLAGS_1(raddu_w_qb, TCG_CALL_NO_RWG_SE, tl, tl) 326461c08dfSJia Liu #if defined(TARGET_MIPS64) 327461c08dfSJia Liu DEF_HELPER_FLAGS_1(raddu_l_ob, TCG_CALL_NO_RWG_SE, tl, tl) 328461c08dfSJia Liu #endif 329461c08dfSJia Liu DEF_HELPER_FLAGS_2(absq_s_qb, 0, tl, tl, env) 330461c08dfSJia Liu DEF_HELPER_FLAGS_2(absq_s_ph, 0, tl, tl, env) 331461c08dfSJia Liu DEF_HELPER_FLAGS_2(absq_s_w, 0, tl, tl, env) 332461c08dfSJia Liu #if defined(TARGET_MIPS64) 333461c08dfSJia Liu DEF_HELPER_FLAGS_2(absq_s_ob, 0, tl, tl, env) 334461c08dfSJia Liu DEF_HELPER_FLAGS_2(absq_s_qh, 0, tl, tl, env) 335461c08dfSJia Liu DEF_HELPER_FLAGS_2(absq_s_pw, 0, tl, tl, env) 336461c08dfSJia Liu #endif 337461c08dfSJia Liu DEF_HELPER_FLAGS_2(precr_qb_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl) 338461c08dfSJia Liu DEF_HELPER_FLAGS_2(precrq_qb_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl) 339461c08dfSJia Liu DEF_HELPER_FLAGS_3(precr_sra_ph_w, TCG_CALL_NO_RWG_SE, 340461c08dfSJia Liu tl, i32, tl, tl) 341461c08dfSJia Liu DEF_HELPER_FLAGS_3(precr_sra_r_ph_w, TCG_CALL_NO_RWG_SE, 342461c08dfSJia Liu tl, i32, tl, tl) 343461c08dfSJia Liu DEF_HELPER_FLAGS_2(precrq_ph_w, TCG_CALL_NO_RWG_SE, tl, tl, tl) 344461c08dfSJia Liu DEF_HELPER_FLAGS_3(precrq_rs_ph_w, 0, tl, tl, tl, env) 345461c08dfSJia Liu #if defined(TARGET_MIPS64) 346461c08dfSJia Liu DEF_HELPER_FLAGS_2(precr_ob_qh, TCG_CALL_NO_RWG_SE, tl, tl, tl) 347461c08dfSJia Liu DEF_HELPER_FLAGS_3(precr_sra_qh_pw, 348461c08dfSJia Liu TCG_CALL_NO_RWG_SE, tl, tl, tl, i32) 349461c08dfSJia Liu DEF_HELPER_FLAGS_3(precr_sra_r_qh_pw, 350461c08dfSJia Liu TCG_CALL_NO_RWG_SE, tl, tl, tl, i32) 351461c08dfSJia Liu DEF_HELPER_FLAGS_2(precrq_ob_qh, TCG_CALL_NO_RWG_SE, tl, tl, tl) 352461c08dfSJia Liu DEF_HELPER_FLAGS_2(precrq_qh_pw, TCG_CALL_NO_RWG_SE, tl, tl, tl) 353461c08dfSJia Liu DEF_HELPER_FLAGS_3(precrq_rs_qh_pw, 354461c08dfSJia Liu TCG_CALL_NO_RWG_SE, tl, tl, tl, env) 355461c08dfSJia Liu DEF_HELPER_FLAGS_2(precrq_pw_l, TCG_CALL_NO_RWG_SE, tl, tl, tl) 356461c08dfSJia Liu #endif 357461c08dfSJia Liu DEF_HELPER_FLAGS_3(precrqu_s_qb_ph, 0, tl, tl, tl, env) 358461c08dfSJia Liu #if defined(TARGET_MIPS64) 359461c08dfSJia Liu DEF_HELPER_FLAGS_3(precrqu_s_ob_qh, 360461c08dfSJia Liu TCG_CALL_NO_RWG_SE, tl, tl, tl, env) 361461c08dfSJia Liu 362461c08dfSJia Liu DEF_HELPER_FLAGS_1(preceq_pw_qhl, TCG_CALL_NO_RWG_SE, tl, tl) 363461c08dfSJia Liu DEF_HELPER_FLAGS_1(preceq_pw_qhr, TCG_CALL_NO_RWG_SE, tl, tl) 364461c08dfSJia Liu DEF_HELPER_FLAGS_1(preceq_pw_qhla, TCG_CALL_NO_RWG_SE, tl, tl) 365461c08dfSJia Liu DEF_HELPER_FLAGS_1(preceq_pw_qhra, TCG_CALL_NO_RWG_SE, tl, tl) 366461c08dfSJia Liu #endif 367461c08dfSJia Liu DEF_HELPER_FLAGS_1(precequ_ph_qbl, TCG_CALL_NO_RWG_SE, tl, tl) 368461c08dfSJia Liu DEF_HELPER_FLAGS_1(precequ_ph_qbr, TCG_CALL_NO_RWG_SE, tl, tl) 369461c08dfSJia Liu DEF_HELPER_FLAGS_1(precequ_ph_qbla, TCG_CALL_NO_RWG_SE, tl, tl) 370461c08dfSJia Liu DEF_HELPER_FLAGS_1(precequ_ph_qbra, TCG_CALL_NO_RWG_SE, tl, tl) 371461c08dfSJia Liu #if defined(TARGET_MIPS64) 372461c08dfSJia Liu DEF_HELPER_FLAGS_1(precequ_qh_obl, TCG_CALL_NO_RWG_SE, tl, tl) 373461c08dfSJia Liu DEF_HELPER_FLAGS_1(precequ_qh_obr, TCG_CALL_NO_RWG_SE, tl, tl) 374461c08dfSJia Liu DEF_HELPER_FLAGS_1(precequ_qh_obla, TCG_CALL_NO_RWG_SE, tl, tl) 375461c08dfSJia Liu DEF_HELPER_FLAGS_1(precequ_qh_obra, TCG_CALL_NO_RWG_SE, tl, tl) 376461c08dfSJia Liu #endif 377461c08dfSJia Liu DEF_HELPER_FLAGS_1(preceu_ph_qbl, TCG_CALL_NO_RWG_SE, tl, tl) 378461c08dfSJia Liu DEF_HELPER_FLAGS_1(preceu_ph_qbr, TCG_CALL_NO_RWG_SE, tl, tl) 379461c08dfSJia Liu DEF_HELPER_FLAGS_1(preceu_ph_qbla, TCG_CALL_NO_RWG_SE, tl, tl) 380461c08dfSJia Liu DEF_HELPER_FLAGS_1(preceu_ph_qbra, TCG_CALL_NO_RWG_SE, tl, tl) 381461c08dfSJia Liu #if defined(TARGET_MIPS64) 382461c08dfSJia Liu DEF_HELPER_FLAGS_1(preceu_qh_obl, TCG_CALL_NO_RWG_SE, tl, tl) 383461c08dfSJia Liu DEF_HELPER_FLAGS_1(preceu_qh_obr, TCG_CALL_NO_RWG_SE, tl, tl) 384461c08dfSJia Liu DEF_HELPER_FLAGS_1(preceu_qh_obla, TCG_CALL_NO_RWG_SE, tl, tl) 385461c08dfSJia Liu DEF_HELPER_FLAGS_1(preceu_qh_obra, TCG_CALL_NO_RWG_SE, tl, tl) 386461c08dfSJia Liu #endif 387461c08dfSJia Liu 38877c5fa8bSJia Liu /* DSP GPR-Based Shift Sub-class insns */ 38977c5fa8bSJia Liu DEF_HELPER_FLAGS_3(shll_qb, 0, tl, tl, tl, env) 39077c5fa8bSJia Liu #if defined(TARGET_MIPS64) 39177c5fa8bSJia Liu DEF_HELPER_FLAGS_3(shll_ob, 0, tl, tl, tl, env) 39277c5fa8bSJia Liu #endif 39377c5fa8bSJia Liu DEF_HELPER_FLAGS_3(shll_ph, 0, tl, tl, tl, env) 39477c5fa8bSJia Liu DEF_HELPER_FLAGS_3(shll_s_ph, 0, tl, tl, tl, env) 39577c5fa8bSJia Liu #if defined(TARGET_MIPS64) 39677c5fa8bSJia Liu DEF_HELPER_FLAGS_3(shll_qh, 0, tl, tl, tl, env) 39777c5fa8bSJia Liu DEF_HELPER_FLAGS_3(shll_s_qh, 0, tl, tl, tl, env) 39877c5fa8bSJia Liu #endif 39977c5fa8bSJia Liu DEF_HELPER_FLAGS_3(shll_s_w, 0, tl, tl, tl, env) 40077c5fa8bSJia Liu #if defined(TARGET_MIPS64) 40177c5fa8bSJia Liu DEF_HELPER_FLAGS_3(shll_pw, 0, tl, tl, tl, env) 40277c5fa8bSJia Liu DEF_HELPER_FLAGS_3(shll_s_pw, 0, tl, tl, tl, env) 40377c5fa8bSJia Liu #endif 40477c5fa8bSJia Liu DEF_HELPER_FLAGS_2(shrl_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl) 40577c5fa8bSJia Liu DEF_HELPER_FLAGS_2(shrl_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl) 40677c5fa8bSJia Liu #if defined(TARGET_MIPS64) 40777c5fa8bSJia Liu DEF_HELPER_FLAGS_2(shrl_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl) 40877c5fa8bSJia Liu DEF_HELPER_FLAGS_2(shrl_qh, TCG_CALL_NO_RWG_SE, tl, tl, tl) 40977c5fa8bSJia Liu #endif 41077c5fa8bSJia Liu DEF_HELPER_FLAGS_2(shra_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl) 41177c5fa8bSJia Liu DEF_HELPER_FLAGS_2(shra_r_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl) 41277c5fa8bSJia Liu #if defined(TARGET_MIPS64) 41377c5fa8bSJia Liu DEF_HELPER_FLAGS_2(shra_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl) 41477c5fa8bSJia Liu DEF_HELPER_FLAGS_2(shra_r_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl) 41577c5fa8bSJia Liu #endif 41677c5fa8bSJia Liu DEF_HELPER_FLAGS_2(shra_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl) 41777c5fa8bSJia Liu DEF_HELPER_FLAGS_2(shra_r_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl) 41877c5fa8bSJia Liu DEF_HELPER_FLAGS_2(shra_r_w, TCG_CALL_NO_RWG_SE, tl, tl, tl) 41977c5fa8bSJia Liu #if defined(TARGET_MIPS64) 42077c5fa8bSJia Liu DEF_HELPER_FLAGS_2(shra_qh, TCG_CALL_NO_RWG_SE, tl, tl, tl) 42177c5fa8bSJia Liu DEF_HELPER_FLAGS_2(shra_r_qh, TCG_CALL_NO_RWG_SE, tl, tl, tl) 42277c5fa8bSJia Liu DEF_HELPER_FLAGS_2(shra_pw, TCG_CALL_NO_RWG_SE, tl, tl, tl) 42377c5fa8bSJia Liu DEF_HELPER_FLAGS_2(shra_r_pw, TCG_CALL_NO_RWG_SE, tl, tl, tl) 42477c5fa8bSJia Liu #endif 42577c5fa8bSJia Liu 426a22260aeSJia Liu /* DSP Multiply Sub-class insns */ 427a22260aeSJia Liu DEF_HELPER_FLAGS_3(muleu_s_ph_qbl, 0, tl, tl, tl, env) 428a22260aeSJia Liu DEF_HELPER_FLAGS_3(muleu_s_ph_qbr, 0, tl, tl, tl, env) 429a22260aeSJia Liu #if defined(TARGET_MIPS64) 430a22260aeSJia Liu DEF_HELPER_FLAGS_3(muleu_s_qh_obl, 0, tl, tl, tl, env) 431a22260aeSJia Liu DEF_HELPER_FLAGS_3(muleu_s_qh_obr, 0, tl, tl, tl, env) 432a22260aeSJia Liu #endif 433a22260aeSJia Liu DEF_HELPER_FLAGS_3(mulq_rs_ph, 0, tl, tl, tl, env) 434a22260aeSJia Liu #if defined(TARGET_MIPS64) 435a22260aeSJia Liu DEF_HELPER_FLAGS_3(mulq_rs_qh, 0, tl, tl, tl, env) 436a22260aeSJia Liu #endif 437a22260aeSJia Liu DEF_HELPER_FLAGS_3(muleq_s_w_phl, 0, tl, tl, tl, env) 438a22260aeSJia Liu DEF_HELPER_FLAGS_3(muleq_s_w_phr, 0, tl, tl, tl, env) 439a22260aeSJia Liu #if defined(TARGET_MIPS64) 440a22260aeSJia Liu DEF_HELPER_FLAGS_3(muleq_s_pw_qhl, 0, tl, tl, tl, env) 441a22260aeSJia Liu DEF_HELPER_FLAGS_3(muleq_s_pw_qhr, 0, tl, tl, tl, env) 442a22260aeSJia Liu #endif 443a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpau_h_qbl, 0, void, i32, tl, tl, env) 444a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpau_h_qbr, 0, void, i32, tl, tl, env) 445a22260aeSJia Liu #if defined(TARGET_MIPS64) 446a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpau_h_obl, 0, void, tl, tl, i32, env) 447a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpau_h_obr, 0, void, tl, tl, i32, env) 448a22260aeSJia Liu #endif 449a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpsu_h_qbl, 0, void, i32, tl, tl, env) 450a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpsu_h_qbr, 0, void, i32, tl, tl, env) 451a22260aeSJia Liu #if defined(TARGET_MIPS64) 452a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpsu_h_obl, 0, void, tl, tl, i32, env) 453a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpsu_h_obr, 0, void, tl, tl, i32, env) 454a22260aeSJia Liu #endif 455a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpa_w_ph, 0, void, i32, tl, tl, env) 456a22260aeSJia Liu #if defined(TARGET_MIPS64) 457a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpa_w_qh, 0, void, tl, tl, i32, env) 458a22260aeSJia Liu #endif 459a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpax_w_ph, 0, void, i32, tl, tl, env) 460a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpaq_s_w_ph, 0, void, i32, tl, tl, env) 461a22260aeSJia Liu #if defined(TARGET_MIPS64) 462a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpaq_s_w_qh, 0, void, tl, tl, i32, env) 463a22260aeSJia Liu #endif 464a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpaqx_s_w_ph, 0, void, i32, tl, tl, env) 465a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpaqx_sa_w_ph, 0, void, i32, tl, tl, env) 466a22260aeSJia Liu DEF_HELPER_FLAGS_4(dps_w_ph, 0, void, i32, tl, tl, env) 467a22260aeSJia Liu #if defined(TARGET_MIPS64) 468a22260aeSJia Liu DEF_HELPER_FLAGS_4(dps_w_qh, 0, void, tl, tl, i32, env) 469a22260aeSJia Liu #endif 470a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpsx_w_ph, 0, void, i32, tl, tl, env) 471a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpsq_s_w_ph, 0, void, i32, tl, tl, env) 472a22260aeSJia Liu #if defined(TARGET_MIPS64) 473a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpsq_s_w_qh, 0, void, tl, tl, i32, env) 474a22260aeSJia Liu #endif 475a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpsqx_s_w_ph, 0, void, i32, tl, tl, env) 476a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpsqx_sa_w_ph, 0, void, i32, tl, tl, env) 477a22260aeSJia Liu DEF_HELPER_FLAGS_4(mulsaq_s_w_ph, 0, void, i32, tl, tl, env) 478a22260aeSJia Liu #if defined(TARGET_MIPS64) 479a22260aeSJia Liu DEF_HELPER_FLAGS_4(mulsaq_s_w_qh, 0, void, tl, tl, i32, env) 480a22260aeSJia Liu #endif 481a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpaq_sa_l_w, 0, void, i32, tl, tl, env) 482a22260aeSJia Liu #if defined(TARGET_MIPS64) 483a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpaq_sa_l_pw, 0, void, tl, tl, i32, env) 484a22260aeSJia Liu #endif 485a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpsq_sa_l_w, 0, void, i32, tl, tl, env) 486a22260aeSJia Liu #if defined(TARGET_MIPS64) 487a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpsq_sa_l_pw, 0, void, tl, tl, i32, env) 488a22260aeSJia Liu DEF_HELPER_FLAGS_4(mulsaq_s_l_pw, 0, void, tl, tl, i32, env) 489a22260aeSJia Liu #endif 490a22260aeSJia Liu DEF_HELPER_FLAGS_4(maq_s_w_phl, 0, void, i32, tl, tl, env) 491a22260aeSJia Liu DEF_HELPER_FLAGS_4(maq_s_w_phr, 0, void, i32, tl, tl, env) 492a22260aeSJia Liu DEF_HELPER_FLAGS_4(maq_sa_w_phl, 0, void, i32, tl, tl, env) 493a22260aeSJia Liu DEF_HELPER_FLAGS_4(maq_sa_w_phr, 0, void, i32, tl, tl, env) 494a22260aeSJia Liu DEF_HELPER_FLAGS_3(mul_ph, 0, tl, tl, tl, env) 495a22260aeSJia Liu DEF_HELPER_FLAGS_3(mul_s_ph, 0, tl, tl, tl, env) 496a22260aeSJia Liu DEF_HELPER_FLAGS_3(mulq_s_ph, 0, tl, tl, tl, env) 497a22260aeSJia Liu DEF_HELPER_FLAGS_3(mulq_s_w, 0, tl, tl, tl, env) 498a22260aeSJia Liu DEF_HELPER_FLAGS_3(mulq_rs_w, 0, tl, tl, tl, env) 499a22260aeSJia Liu DEF_HELPER_FLAGS_4(mulsa_w_ph, 0, void, i32, tl, tl, env) 500a22260aeSJia Liu #if defined(TARGET_MIPS64) 501a22260aeSJia Liu DEF_HELPER_FLAGS_4(maq_s_w_qhll, 0, void, tl, tl, i32, env) 502a22260aeSJia Liu DEF_HELPER_FLAGS_4(maq_s_w_qhlr, 0, void, tl, tl, i32, env) 503a22260aeSJia Liu DEF_HELPER_FLAGS_4(maq_s_w_qhrl, 0, void, tl, tl, i32, env) 504a22260aeSJia Liu DEF_HELPER_FLAGS_4(maq_s_w_qhrr, 0, void, tl, tl, i32, env) 505a22260aeSJia Liu DEF_HELPER_FLAGS_4(maq_sa_w_qhll, 0, void, tl, tl, i32, env) 506a22260aeSJia Liu DEF_HELPER_FLAGS_4(maq_sa_w_qhlr, 0, void, tl, tl, i32, env) 507a22260aeSJia Liu DEF_HELPER_FLAGS_4(maq_sa_w_qhrl, 0, void, tl, tl, i32, env) 508a22260aeSJia Liu DEF_HELPER_FLAGS_4(maq_sa_w_qhrr, 0, void, tl, tl, i32, env) 509a22260aeSJia Liu DEF_HELPER_FLAGS_4(maq_s_l_pwl, 0, void, tl, tl, i32, env) 510a22260aeSJia Liu DEF_HELPER_FLAGS_4(maq_s_l_pwr, 0, void, tl, tl, i32, env) 511a22260aeSJia Liu DEF_HELPER_FLAGS_4(dmadd, 0, void, tl, tl, i32, env) 512a22260aeSJia Liu DEF_HELPER_FLAGS_4(dmaddu, 0, void, tl, tl, i32, env) 513a22260aeSJia Liu DEF_HELPER_FLAGS_4(dmsub, 0, void, tl, tl, i32, env) 514a22260aeSJia Liu DEF_HELPER_FLAGS_4(dmsubu, 0, void, tl, tl, i32, env) 515a22260aeSJia Liu #endif 516a22260aeSJia Liu 5171cb6686cSJia Liu /* DSP Bit/Manipulation Sub-class insns */ 5181cb6686cSJia Liu DEF_HELPER_FLAGS_1(bitrev, TCG_CALL_NO_RWG_SE, tl, tl) 5191cb6686cSJia Liu DEF_HELPER_FLAGS_3(insv, 0, tl, env, tl, tl) 5201cb6686cSJia Liu #if defined(TARGET_MIPS64) 521f5daeec4SRichard Henderson DEF_HELPER_FLAGS_3(dinsv, 0, tl, env, tl, tl) 5221cb6686cSJia Liu #endif 5231cb6686cSJia Liu 52426690560SJia Liu /* DSP Compare-Pick Sub-class insns */ 52526690560SJia Liu DEF_HELPER_FLAGS_3(cmpu_eq_qb, 0, void, tl, tl, env) 52626690560SJia Liu DEF_HELPER_FLAGS_3(cmpu_lt_qb, 0, void, tl, tl, env) 52726690560SJia Liu DEF_HELPER_FLAGS_3(cmpu_le_qb, 0, void, tl, tl, env) 52826690560SJia Liu DEF_HELPER_FLAGS_2(cmpgu_eq_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl) 52926690560SJia Liu DEF_HELPER_FLAGS_2(cmpgu_lt_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl) 53026690560SJia Liu DEF_HELPER_FLAGS_2(cmpgu_le_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl) 53126690560SJia Liu DEF_HELPER_FLAGS_3(cmp_eq_ph, 0, void, tl, tl, env) 53226690560SJia Liu DEF_HELPER_FLAGS_3(cmp_lt_ph, 0, void, tl, tl, env) 53326690560SJia Liu DEF_HELPER_FLAGS_3(cmp_le_ph, 0, void, tl, tl, env) 53426690560SJia Liu #if defined(TARGET_MIPS64) 53526690560SJia Liu DEF_HELPER_FLAGS_3(cmpu_eq_ob, 0, void, tl, tl, env) 53626690560SJia Liu DEF_HELPER_FLAGS_3(cmpu_lt_ob, 0, void, tl, tl, env) 53726690560SJia Liu DEF_HELPER_FLAGS_3(cmpu_le_ob, 0, void, tl, tl, env) 53826690560SJia Liu DEF_HELPER_FLAGS_3(cmpgdu_eq_ob, 0, tl, tl, tl, env) 53926690560SJia Liu DEF_HELPER_FLAGS_3(cmpgdu_lt_ob, 0, tl, tl, tl, env) 54026690560SJia Liu DEF_HELPER_FLAGS_3(cmpgdu_le_ob, 0, tl, tl, tl, env) 54126690560SJia Liu DEF_HELPER_FLAGS_2(cmpgu_eq_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl) 54226690560SJia Liu DEF_HELPER_FLAGS_2(cmpgu_lt_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl) 54326690560SJia Liu DEF_HELPER_FLAGS_2(cmpgu_le_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl) 54426690560SJia Liu DEF_HELPER_FLAGS_3(cmp_eq_qh, 0, void, tl, tl, env) 54526690560SJia Liu DEF_HELPER_FLAGS_3(cmp_lt_qh, 0, void, tl, tl, env) 54626690560SJia Liu DEF_HELPER_FLAGS_3(cmp_le_qh, 0, void, tl, tl, env) 54726690560SJia Liu DEF_HELPER_FLAGS_3(cmp_eq_pw, 0, void, tl, tl, env) 54826690560SJia Liu DEF_HELPER_FLAGS_3(cmp_lt_pw, 0, void, tl, tl, env) 54926690560SJia Liu DEF_HELPER_FLAGS_3(cmp_le_pw, 0, void, tl, tl, env) 55026690560SJia Liu #endif 55126690560SJia Liu DEF_HELPER_FLAGS_3(pick_qb, 0, tl, tl, tl, env) 55226690560SJia Liu DEF_HELPER_FLAGS_3(pick_ph, 0, tl, tl, tl, env) 55326690560SJia Liu #if defined(TARGET_MIPS64) 55426690560SJia Liu DEF_HELPER_FLAGS_3(pick_ob, 0, tl, tl, tl, env) 55526690560SJia Liu DEF_HELPER_FLAGS_3(pick_qh, 0, tl, tl, tl, env) 55626690560SJia Liu DEF_HELPER_FLAGS_3(pick_pw, 0, tl, tl, tl, env) 55726690560SJia Liu #endif 55826690560SJia Liu DEF_HELPER_FLAGS_2(packrl_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl) 55926690560SJia Liu #if defined(TARGET_MIPS64) 56026690560SJia Liu DEF_HELPER_FLAGS_2(packrl_pw, TCG_CALL_NO_RWG_SE, tl, tl, tl) 56126690560SJia Liu #endif 56226690560SJia Liu 563b53371edSJia Liu /* DSP Accumulator and DSPControl Access Sub-class insns */ 564b53371edSJia Liu DEF_HELPER_FLAGS_3(extr_w, 0, tl, tl, tl, env) 565b53371edSJia Liu DEF_HELPER_FLAGS_3(extr_r_w, 0, tl, tl, tl, env) 566b53371edSJia Liu DEF_HELPER_FLAGS_3(extr_rs_w, 0, tl, tl, tl, env) 567b53371edSJia Liu #if defined(TARGET_MIPS64) 568b53371edSJia Liu DEF_HELPER_FLAGS_3(dextr_w, 0, tl, tl, tl, env) 569b53371edSJia Liu DEF_HELPER_FLAGS_3(dextr_r_w, 0, tl, tl, tl, env) 570b53371edSJia Liu DEF_HELPER_FLAGS_3(dextr_rs_w, 0, tl, tl, tl, env) 571b53371edSJia Liu DEF_HELPER_FLAGS_3(dextr_l, 0, tl, tl, tl, env) 572b53371edSJia Liu DEF_HELPER_FLAGS_3(dextr_r_l, 0, tl, tl, tl, env) 573b53371edSJia Liu DEF_HELPER_FLAGS_3(dextr_rs_l, 0, tl, tl, tl, env) 574b53371edSJia Liu #endif 575b53371edSJia Liu DEF_HELPER_FLAGS_3(extr_s_h, 0, tl, tl, tl, env) 576b53371edSJia Liu #if defined(TARGET_MIPS64) 577b53371edSJia Liu DEF_HELPER_FLAGS_3(dextr_s_h, 0, tl, tl, tl, env) 578b53371edSJia Liu #endif 579b53371edSJia Liu DEF_HELPER_FLAGS_3(extp, 0, tl, tl, tl, env) 580b53371edSJia Liu DEF_HELPER_FLAGS_3(extpdp, 0, tl, tl, tl, env) 581b53371edSJia Liu #if defined(TARGET_MIPS64) 582b53371edSJia Liu DEF_HELPER_FLAGS_3(dextp, 0, tl, tl, tl, env) 583b53371edSJia Liu DEF_HELPER_FLAGS_3(dextpdp, 0, tl, tl, tl, env) 584b53371edSJia Liu #endif 585b53371edSJia Liu DEF_HELPER_FLAGS_3(shilo, 0, void, tl, tl, env) 586b53371edSJia Liu #if defined(TARGET_MIPS64) 587b53371edSJia Liu DEF_HELPER_FLAGS_3(dshilo, 0, void, tl, tl, env) 588b53371edSJia Liu #endif 589b53371edSJia Liu DEF_HELPER_FLAGS_3(mthlip, 0, void, tl, tl, env) 590b53371edSJia Liu #if defined(TARGET_MIPS64) 591b53371edSJia Liu DEF_HELPER_FLAGS_3(dmthlip, 0, void, tl, tl, env) 592b53371edSJia Liu #endif 593b53371edSJia Liu DEF_HELPER_FLAGS_3(wrdsp, 0, void, tl, tl, env) 594b53371edSJia Liu DEF_HELPER_FLAGS_2(rddsp, 0, tl, tl, env) 5954c789546SYongbok Kim 596ad520a97SPhilippe Mathieu-Daudé #ifndef CONFIG_USER_ONLY 597*32cad1ffSPhilippe Mathieu-Daudé #include "tcg/system_helper.h.inc" 598ad520a97SPhilippe Mathieu-Daudé #endif /* !CONFIG_USER_ONLY */ 599ad520a97SPhilippe Mathieu-Daudé 600a2b0a27dSPhilippe Mathieu-Daudé #include "tcg/msa_helper.h.inc" 60107565cbfSPhilippe Mathieu-Daudé 60207565cbfSPhilippe Mathieu-Daudé /* Vendor extensions */ 60307565cbfSPhilippe Mathieu-Daudé #include "tcg/vr54xx_helper.h.inc" 604