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 19895c2d04SBlue Swirl DEF_HELPER_3(muls, tl, env, tl, tl) 20895c2d04SBlue Swirl DEF_HELPER_3(mulsu, tl, env, tl, tl) 21895c2d04SBlue Swirl DEF_HELPER_3(macc, tl, env, tl, tl) 22895c2d04SBlue Swirl DEF_HELPER_3(maccu, tl, env, tl, tl) 23895c2d04SBlue Swirl DEF_HELPER_3(msac, tl, env, tl, tl) 24895c2d04SBlue Swirl DEF_HELPER_3(msacu, tl, env, tl, tl) 25895c2d04SBlue Swirl DEF_HELPER_3(mulhi, tl, env, tl, tl) 26895c2d04SBlue Swirl DEF_HELPER_3(mulhiu, tl, env, tl, tl) 27895c2d04SBlue Swirl DEF_HELPER_3(mulshi, tl, env, tl, tl) 28895c2d04SBlue Swirl DEF_HELPER_3(mulshiu, tl, env, tl, tl) 29895c2d04SBlue Swirl DEF_HELPER_3(macchi, tl, env, tl, tl) 30895c2d04SBlue Swirl DEF_HELPER_3(macchiu, tl, env, tl, tl) 31895c2d04SBlue Swirl DEF_HELPER_3(msachi, tl, env, tl, tl) 32895c2d04SBlue Swirl DEF_HELPER_3(msachiu, tl, env, tl, tl) 3392af06d2Sths 3415eacb9bSYongbok Kim DEF_HELPER_FLAGS_1(bitswap, TCG_CALL_NO_RWG_SE, tl, tl) 3515eacb9bSYongbok Kim #ifdef TARGET_MIPS64 3615eacb9bSYongbok Kim DEF_HELPER_FLAGS_1(dbitswap, TCG_CALL_NO_RWG_SE, tl, tl) 3715eacb9bSYongbok Kim #endif 3815eacb9bSYongbok Kim 39e222f506SMatthew Fortune DEF_HELPER_FLAGS_4(rotx, TCG_CALL_NO_RWG_SE, tl, tl, i32, i32, i32) 40e222f506SMatthew Fortune 413c824109SNathan Froyd /* microMIPS functions */ 42f5daeec4SRichard Henderson DEF_HELPER_4(lwm, void, env, tl, tl, i32) 43f5daeec4SRichard Henderson DEF_HELPER_4(swm, void, env, tl, tl, i32) 443c824109SNathan Froyd #ifdef TARGET_MIPS64 45f5daeec4SRichard Henderson DEF_HELPER_4(ldm, void, env, tl, tl, i32) 46f5daeec4SRichard Henderson DEF_HELPER_4(sdm, void, env, tl, tl, i32) 473c824109SNathan Froyd #endif 483c824109SNathan Froyd 49a7812ae4Spbrook DEF_HELPER_2(fork, void, tl, tl) 50895c2d04SBlue Swirl DEF_HELPER_2(yield, tl, env, tl) 51f1aa6320Sths 52f1aa6320Sths /* CP1 functions */ 53895c2d04SBlue Swirl DEF_HELPER_2(cfc1, tl, env, i32) 54736d120aSPetar Jovanovic DEF_HELPER_4(ctc1, void, env, tl, i32, i32) 555d0fc900Sths 56895c2d04SBlue Swirl DEF_HELPER_2(float_cvtd_s, i64, env, i32) 57895c2d04SBlue Swirl DEF_HELPER_2(float_cvtd_w, i64, env, i32) 58895c2d04SBlue Swirl DEF_HELPER_2(float_cvtd_l, i64, env, i64) 59895c2d04SBlue Swirl DEF_HELPER_2(float_cvtps_pw, i64, env, i64) 60895c2d04SBlue Swirl DEF_HELPER_2(float_cvtpw_ps, i64, env, i64) 61895c2d04SBlue Swirl DEF_HELPER_2(float_cvts_d, i32, env, i64) 62895c2d04SBlue Swirl DEF_HELPER_2(float_cvts_w, i32, env, i32) 63895c2d04SBlue Swirl DEF_HELPER_2(float_cvts_l, i32, env, i64) 64895c2d04SBlue Swirl DEF_HELPER_2(float_cvts_pl, i32, env, i32) 65895c2d04SBlue Swirl DEF_HELPER_2(float_cvts_pu, i32, env, i32) 665d0fc900Sths 67895c2d04SBlue Swirl DEF_HELPER_3(float_addr_ps, i64, env, i64, i64) 68895c2d04SBlue Swirl DEF_HELPER_3(float_mulr_ps, i64, env, i64, i64) 695d0fc900Sths 70af39bc8cSAleksandar Markovic DEF_HELPER_FLAGS_2(float_class_s, TCG_CALL_NO_RWG_SE, i32, env, i32) 71af39bc8cSAleksandar Markovic DEF_HELPER_FLAGS_2(float_class_d, TCG_CALL_NO_RWG_SE, i64, env, i64) 72e7f16abbSLeon Alrae 73e7f16abbSLeon Alrae #define FOP_PROTO(op) \ 74e7f16abbSLeon Alrae DEF_HELPER_4(float_ ## op ## _s, i32, env, i32, i32, i32) \ 75e7f16abbSLeon Alrae DEF_HELPER_4(float_ ## op ## _d, i64, env, i64, i64, i64) 76e7f16abbSLeon Alrae FOP_PROTO(maddf) 77e7f16abbSLeon Alrae FOP_PROTO(msubf) 78e7f16abbSLeon Alrae #undef FOP_PROTO 79e7f16abbSLeon Alrae 80e7f16abbSLeon Alrae #define FOP_PROTO(op) \ 81e7f16abbSLeon Alrae DEF_HELPER_3(float_ ## op ## _s, i32, env, i32, i32) \ 82e7f16abbSLeon Alrae DEF_HELPER_3(float_ ## op ## _d, i64, env, i64, i64) 83e7f16abbSLeon Alrae FOP_PROTO(max) 84e7f16abbSLeon Alrae FOP_PROTO(maxa) 85e7f16abbSLeon Alrae FOP_PROTO(min) 86e7f16abbSLeon Alrae FOP_PROTO(mina) 87e7f16abbSLeon Alrae #undef FOP_PROTO 88e7f16abbSLeon Alrae 895d0fc900Sths #define FOP_PROTO(op) \ 9087552089SAleksandar Markovic DEF_HELPER_2(float_ ## op ## _l_s, i64, env, i32) \ 9187552089SAleksandar Markovic DEF_HELPER_2(float_ ## op ## _l_d, i64, env, i64) \ 9287552089SAleksandar Markovic DEF_HELPER_2(float_ ## op ## _w_s, i32, env, i32) \ 9387552089SAleksandar Markovic DEF_HELPER_2(float_ ## op ## _w_d, i32, env, i64) 9487552089SAleksandar Markovic FOP_PROTO(cvt) 95b6d96bedSths FOP_PROTO(round) 96b6d96bedSths FOP_PROTO(trunc) 97b6d96bedSths FOP_PROTO(ceil) 98b6d96bedSths FOP_PROTO(floor) 9987552089SAleksandar Markovic FOP_PROTO(cvt_2008) 10087552089SAleksandar Markovic FOP_PROTO(round_2008) 10187552089SAleksandar Markovic FOP_PROTO(trunc_2008) 10287552089SAleksandar Markovic FOP_PROTO(ceil_2008) 10387552089SAleksandar Markovic FOP_PROTO(floor_2008) 104b6d96bedSths #undef FOP_PROTO 105b6d96bedSths 106b6d96bedSths #define FOP_PROTO(op) \ 107895c2d04SBlue Swirl DEF_HELPER_2(float_ ## op ## _s, i32, env, i32) \ 108895c2d04SBlue Swirl DEF_HELPER_2(float_ ## op ## _d, i64, env, i64) 109a16336e4Sths FOP_PROTO(sqrt) 1105d0fc900Sths FOP_PROTO(rsqrt) 1115d0fc900Sths FOP_PROTO(recip) 112e7f16abbSLeon Alrae FOP_PROTO(rint) 1135d0fc900Sths #undef FOP_PROTO 1145d0fc900Sths 1155d0fc900Sths #define FOP_PROTO(op) \ 116a7812ae4Spbrook DEF_HELPER_1(float_ ## op ## _s, i32, i32) \ 117a7812ae4Spbrook DEF_HELPER_1(float_ ## op ## _d, i64, i64) \ 118a7812ae4Spbrook DEF_HELPER_1(float_ ## op ## _ps, i64, i64) 119b6d96bedSths FOP_PROTO(abs) 120b6d96bedSths FOP_PROTO(chs) 121895c2d04SBlue Swirl #undef FOP_PROTO 122895c2d04SBlue Swirl 123895c2d04SBlue Swirl #define FOP_PROTO(op) \ 124895c2d04SBlue Swirl DEF_HELPER_2(float_ ## op ## _s, i32, env, i32) \ 125895c2d04SBlue Swirl DEF_HELPER_2(float_ ## op ## _d, i64, env, i64) \ 126895c2d04SBlue Swirl DEF_HELPER_2(float_ ## op ## _ps, i64, env, i64) 127b6d96bedSths FOP_PROTO(recip1) 128b6d96bedSths FOP_PROTO(rsqrt1) 129b6d96bedSths #undef FOP_PROTO 130b6d96bedSths 131b6d96bedSths #define FOP_PROTO(op) \ 132895c2d04SBlue Swirl DEF_HELPER_3(float_ ## op ## _s, i32, env, i32, i32) \ 133895c2d04SBlue Swirl DEF_HELPER_3(float_ ## op ## _d, i64, env, i64, i64) \ 134895c2d04SBlue Swirl DEF_HELPER_3(float_ ## op ## _ps, i64, env, i64, i64) 1355d0fc900Sths FOP_PROTO(add) 1365d0fc900Sths FOP_PROTO(sub) 1375d0fc900Sths FOP_PROTO(mul) 1385d0fc900Sths FOP_PROTO(div) 1395d0fc900Sths FOP_PROTO(recip2) 1405d0fc900Sths FOP_PROTO(rsqrt2) 1415d0fc900Sths #undef FOP_PROTO 1425d0fc900Sths 1435d0fc900Sths #define FOP_PROTO(op) \ 144895c2d04SBlue Swirl DEF_HELPER_4(float_ ## op ## _s, i32, env, i32, i32, i32) \ 145895c2d04SBlue Swirl DEF_HELPER_4(float_ ## op ## _d, i64, env, i64, i64, i64) \ 146895c2d04SBlue Swirl DEF_HELPER_4(float_ ## op ## _ps, i64, env, i64, i64, i64) 147b3d6cd44SAurelien Jarno FOP_PROTO(madd) 148b3d6cd44SAurelien Jarno FOP_PROTO(msub) 149b3d6cd44SAurelien Jarno FOP_PROTO(nmadd) 150b3d6cd44SAurelien Jarno FOP_PROTO(nmsub) 151b6d96bedSths #undef FOP_PROTO 152b6d96bedSths 153b6d96bedSths #define FOP_PROTO(op) \ 154895c2d04SBlue Swirl DEF_HELPER_4(cmp_d_ ## op, void, env, i64, i64, int) \ 155895c2d04SBlue Swirl DEF_HELPER_4(cmpabs_d_ ## op, void, env, i64, i64, int) \ 156895c2d04SBlue Swirl DEF_HELPER_4(cmp_s_ ## op, void, env, i32, i32, int) \ 157895c2d04SBlue Swirl DEF_HELPER_4(cmpabs_s_ ## op, void, env, i32, i32, int) \ 158895c2d04SBlue Swirl DEF_HELPER_4(cmp_ps_ ## op, void, env, i64, i64, int) \ 159895c2d04SBlue Swirl DEF_HELPER_4(cmpabs_ps_ ## op, void, env, i64, i64, int) 1605d0fc900Sths FOP_PROTO(f) 1615d0fc900Sths FOP_PROTO(un) 1625d0fc900Sths FOP_PROTO(eq) 1635d0fc900Sths FOP_PROTO(ueq) 1645d0fc900Sths FOP_PROTO(olt) 1655d0fc900Sths FOP_PROTO(ult) 1665d0fc900Sths FOP_PROTO(ole) 1675d0fc900Sths FOP_PROTO(ule) 1685d0fc900Sths FOP_PROTO(sf) 1695d0fc900Sths FOP_PROTO(ngle) 1705d0fc900Sths FOP_PROTO(seq) 1715d0fc900Sths FOP_PROTO(ngl) 1725d0fc900Sths FOP_PROTO(lt) 1735d0fc900Sths FOP_PROTO(nge) 1745d0fc900Sths FOP_PROTO(le) 1755d0fc900Sths FOP_PROTO(ngt) 1765d0fc900Sths #undef FOP_PROTO 17708ba7963Sths 1783f493883SYongbok Kim #define FOP_PROTO(op) \ 1793f493883SYongbok Kim DEF_HELPER_3(r6_cmp_d_ ## op, i64, env, i64, i64) \ 1803f493883SYongbok Kim DEF_HELPER_3(r6_cmp_s_ ## op, i32, env, i32, i32) 1813f493883SYongbok Kim FOP_PROTO(af) 1823f493883SYongbok Kim FOP_PROTO(un) 1833f493883SYongbok Kim FOP_PROTO(eq) 1843f493883SYongbok Kim FOP_PROTO(ueq) 1853f493883SYongbok Kim FOP_PROTO(lt) 1863f493883SYongbok Kim FOP_PROTO(ult) 1873f493883SYongbok Kim FOP_PROTO(le) 1883f493883SYongbok Kim FOP_PROTO(ule) 1893f493883SYongbok Kim FOP_PROTO(saf) 1903f493883SYongbok Kim FOP_PROTO(sun) 1913f493883SYongbok Kim FOP_PROTO(seq) 1923f493883SYongbok Kim FOP_PROTO(sueq) 1933f493883SYongbok Kim FOP_PROTO(slt) 1943f493883SYongbok Kim FOP_PROTO(sult) 1953f493883SYongbok Kim FOP_PROTO(sle) 1963f493883SYongbok Kim FOP_PROTO(sule) 1973f493883SYongbok Kim FOP_PROTO(or) 1983f493883SYongbok Kim FOP_PROTO(une) 1993f493883SYongbok Kim FOP_PROTO(ne) 2003f493883SYongbok Kim FOP_PROTO(sor) 2013f493883SYongbok Kim FOP_PROTO(sune) 2023f493883SYongbok Kim FOP_PROTO(sne) 2033f493883SYongbok Kim #undef FOP_PROTO 2043f493883SYongbok Kim 205895c2d04SBlue Swirl DEF_HELPER_1(rdhwr_cpunum, tl, env) 206895c2d04SBlue Swirl DEF_HELPER_1(rdhwr_synci_step, tl, env) 207895c2d04SBlue Swirl DEF_HELPER_1(rdhwr_cc, tl, env) 208895c2d04SBlue Swirl DEF_HELPER_1(rdhwr_ccres, tl, env) 209b00c7218SYongbok Kim DEF_HELPER_1(rdhwr_performance, tl, env) 210b00c7218SYongbok Kim DEF_HELPER_1(rdhwr_xnp, tl, env) 211895c2d04SBlue Swirl DEF_HELPER_2(pmon, void, env, int) 212895c2d04SBlue Swirl DEF_HELPER_1(wait, void, env) 213a7812ae4Spbrook 214bd277fa1SRichard Henderson /* Loongson multimedia functions. */ 21595bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(paddsh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 21695bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(paddush, TCG_CALL_NO_RWG_SE, i64, i64, i64) 21795bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(paddh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 21895bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(paddw, TCG_CALL_NO_RWG_SE, i64, i64, i64) 21995bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(paddsb, TCG_CALL_NO_RWG_SE, i64, i64, i64) 22095bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(paddusb, TCG_CALL_NO_RWG_SE, i64, i64, i64) 22195bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(paddb, TCG_CALL_NO_RWG_SE, i64, i64, i64) 222bd277fa1SRichard Henderson 22395bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(psubsh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 22495bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(psubush, TCG_CALL_NO_RWG_SE, i64, i64, i64) 22595bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(psubh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 22695bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(psubw, TCG_CALL_NO_RWG_SE, i64, i64, i64) 22795bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(psubsb, TCG_CALL_NO_RWG_SE, i64, i64, i64) 22895bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(psubusb, TCG_CALL_NO_RWG_SE, i64, i64, i64) 22995bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(psubb, TCG_CALL_NO_RWG_SE, i64, i64, i64) 230bd277fa1SRichard Henderson 23195bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(pshufh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 23295bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(packsswh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 23395bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(packsshb, TCG_CALL_NO_RWG_SE, i64, i64, i64) 23495bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(packushb, TCG_CALL_NO_RWG_SE, i64, i64, i64) 235bd277fa1SRichard Henderson 23695bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(punpcklhw, TCG_CALL_NO_RWG_SE, i64, i64, i64) 23795bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(punpckhhw, TCG_CALL_NO_RWG_SE, i64, i64, i64) 23895bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(punpcklbh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 23995bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(punpckhbh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 24095bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(punpcklwd, TCG_CALL_NO_RWG_SE, i64, i64, i64) 24195bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(punpckhwd, TCG_CALL_NO_RWG_SE, i64, i64, i64) 242bd277fa1SRichard Henderson 24395bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(pavgh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 24495bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(pavgb, TCG_CALL_NO_RWG_SE, i64, i64, i64) 24595bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(pmaxsh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 24695bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(pminsh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 24795bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(pmaxub, TCG_CALL_NO_RWG_SE, i64, i64, i64) 24895bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(pminub, TCG_CALL_NO_RWG_SE, i64, i64, i64) 249bd277fa1SRichard Henderson 25095bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(pcmpeqw, TCG_CALL_NO_RWG_SE, i64, i64, i64) 25195bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(pcmpgtw, TCG_CALL_NO_RWG_SE, i64, i64, i64) 25295bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(pcmpeqh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 25395bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(pcmpgth, TCG_CALL_NO_RWG_SE, i64, i64, i64) 25495bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(pcmpeqb, TCG_CALL_NO_RWG_SE, i64, i64, i64) 25595bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(pcmpgtb, TCG_CALL_NO_RWG_SE, i64, i64, i64) 256bd277fa1SRichard Henderson 25795bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(psllw, TCG_CALL_NO_RWG_SE, i64, i64, i64) 25895bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(psllh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 25995bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(psrlw, TCG_CALL_NO_RWG_SE, i64, i64, i64) 26095bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(psrlh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 26195bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(psraw, TCG_CALL_NO_RWG_SE, i64, i64, i64) 26295bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(psrah, TCG_CALL_NO_RWG_SE, i64, i64, i64) 263bd277fa1SRichard Henderson 26495bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(pmullh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 26595bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(pmulhh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 26695bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(pmulhuh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 26795bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(pmaddhw, TCG_CALL_NO_RWG_SE, i64, i64, i64) 268bd277fa1SRichard Henderson 26995bf787eSAurelien Jarno DEF_HELPER_FLAGS_2(pasubub, TCG_CALL_NO_RWG_SE, i64, i64, i64) 27095bf787eSAurelien Jarno DEF_HELPER_FLAGS_1(biadd, TCG_CALL_NO_RWG_SE, i64, i64) 27195bf787eSAurelien Jarno DEF_HELPER_FLAGS_1(pmovmskb, TCG_CALL_NO_RWG_SE, i64, i64) 272bd277fa1SRichard Henderson 273461c08dfSJia Liu /*** MIPS DSP ***/ 274461c08dfSJia Liu /* DSP Arithmetic Sub-class insns */ 275461c08dfSJia Liu DEF_HELPER_FLAGS_3(addq_ph, 0, tl, tl, tl, env) 276461c08dfSJia Liu DEF_HELPER_FLAGS_3(addq_s_ph, 0, tl, tl, tl, env) 277461c08dfSJia Liu #if defined(TARGET_MIPS64) 278461c08dfSJia Liu DEF_HELPER_FLAGS_3(addq_qh, 0, tl, tl, tl, env) 279461c08dfSJia Liu DEF_HELPER_FLAGS_3(addq_s_qh, 0, tl, tl, tl, env) 280461c08dfSJia Liu #endif 281461c08dfSJia Liu DEF_HELPER_FLAGS_3(addq_s_w, 0, tl, tl, tl, env) 282461c08dfSJia Liu #if defined(TARGET_MIPS64) 283461c08dfSJia Liu DEF_HELPER_FLAGS_3(addq_pw, 0, tl, tl, tl, env) 284461c08dfSJia Liu DEF_HELPER_FLAGS_3(addq_s_pw, 0, tl, tl, tl, env) 285461c08dfSJia Liu #endif 286461c08dfSJia Liu DEF_HELPER_FLAGS_3(addu_qb, 0, tl, tl, tl, env) 287461c08dfSJia Liu DEF_HELPER_FLAGS_3(addu_s_qb, 0, tl, tl, tl, env) 288461c08dfSJia Liu DEF_HELPER_FLAGS_2(adduh_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl) 289461c08dfSJia Liu DEF_HELPER_FLAGS_2(adduh_r_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl) 290461c08dfSJia Liu DEF_HELPER_FLAGS_3(addu_ph, 0, tl, tl, tl, env) 291461c08dfSJia Liu DEF_HELPER_FLAGS_3(addu_s_ph, 0, tl, tl, tl, env) 292461c08dfSJia Liu DEF_HELPER_FLAGS_2(addqh_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl) 293461c08dfSJia Liu DEF_HELPER_FLAGS_2(addqh_r_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl) 294461c08dfSJia Liu DEF_HELPER_FLAGS_2(addqh_w, TCG_CALL_NO_RWG_SE, tl, tl, tl) 295461c08dfSJia Liu DEF_HELPER_FLAGS_2(addqh_r_w, TCG_CALL_NO_RWG_SE, tl, tl, tl) 296461c08dfSJia Liu #if defined(TARGET_MIPS64) 297461c08dfSJia Liu DEF_HELPER_FLAGS_3(addu_ob, 0, tl, tl, tl, env) 298461c08dfSJia Liu DEF_HELPER_FLAGS_3(addu_s_ob, 0, tl, tl, tl, env) 299461c08dfSJia Liu DEF_HELPER_FLAGS_2(adduh_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl) 300461c08dfSJia Liu DEF_HELPER_FLAGS_2(adduh_r_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl) 301461c08dfSJia Liu DEF_HELPER_FLAGS_3(addu_qh, 0, tl, tl, tl, env) 302461c08dfSJia Liu DEF_HELPER_FLAGS_3(addu_s_qh, 0, tl, tl, tl, env) 303461c08dfSJia Liu #endif 304461c08dfSJia Liu DEF_HELPER_FLAGS_3(subq_ph, 0, tl, tl, tl, env) 305461c08dfSJia Liu DEF_HELPER_FLAGS_3(subq_s_ph, 0, tl, tl, tl, env) 306461c08dfSJia Liu #if defined(TARGET_MIPS64) 307461c08dfSJia Liu DEF_HELPER_FLAGS_3(subq_qh, 0, tl, tl, tl, env) 308461c08dfSJia Liu DEF_HELPER_FLAGS_3(subq_s_qh, 0, tl, tl, tl, env) 309461c08dfSJia Liu #endif 310461c08dfSJia Liu DEF_HELPER_FLAGS_3(subq_s_w, 0, tl, tl, tl, env) 311461c08dfSJia Liu #if defined(TARGET_MIPS64) 312461c08dfSJia Liu DEF_HELPER_FLAGS_3(subq_pw, 0, tl, tl, tl, env) 313461c08dfSJia Liu DEF_HELPER_FLAGS_3(subq_s_pw, 0, tl, tl, tl, env) 314461c08dfSJia Liu #endif 315461c08dfSJia Liu DEF_HELPER_FLAGS_3(subu_qb, 0, tl, tl, tl, env) 316461c08dfSJia Liu DEF_HELPER_FLAGS_3(subu_s_qb, 0, tl, tl, tl, env) 317461c08dfSJia Liu DEF_HELPER_FLAGS_2(subuh_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl) 318461c08dfSJia Liu DEF_HELPER_FLAGS_2(subuh_r_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl) 319461c08dfSJia Liu DEF_HELPER_FLAGS_3(subu_ph, 0, tl, tl, tl, env) 320461c08dfSJia Liu DEF_HELPER_FLAGS_3(subu_s_ph, 0, tl, tl, tl, env) 321461c08dfSJia Liu DEF_HELPER_FLAGS_2(subqh_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl) 322461c08dfSJia Liu DEF_HELPER_FLAGS_2(subqh_r_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl) 323461c08dfSJia Liu DEF_HELPER_FLAGS_2(subqh_w, TCG_CALL_NO_RWG_SE, tl, tl, tl) 324461c08dfSJia Liu DEF_HELPER_FLAGS_2(subqh_r_w, TCG_CALL_NO_RWG_SE, tl, tl, tl) 325461c08dfSJia Liu #if defined(TARGET_MIPS64) 326461c08dfSJia Liu DEF_HELPER_FLAGS_3(subu_ob, 0, tl, tl, tl, env) 327461c08dfSJia Liu DEF_HELPER_FLAGS_3(subu_s_ob, 0, tl, tl, tl, env) 328461c08dfSJia Liu DEF_HELPER_FLAGS_2(subuh_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl) 329461c08dfSJia Liu DEF_HELPER_FLAGS_2(subuh_r_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl) 330461c08dfSJia Liu DEF_HELPER_FLAGS_3(subu_qh, 0, tl, tl, tl, env) 331461c08dfSJia Liu DEF_HELPER_FLAGS_3(subu_s_qh, 0, tl, tl, tl, env) 332461c08dfSJia Liu #endif 333461c08dfSJia Liu DEF_HELPER_FLAGS_3(addsc, 0, tl, tl, tl, env) 334461c08dfSJia Liu DEF_HELPER_FLAGS_3(addwc, 0, tl, tl, tl, env) 335461c08dfSJia Liu DEF_HELPER_FLAGS_2(modsub, TCG_CALL_NO_RWG_SE, tl, tl, tl) 336461c08dfSJia Liu DEF_HELPER_FLAGS_1(raddu_w_qb, TCG_CALL_NO_RWG_SE, tl, tl) 337461c08dfSJia Liu #if defined(TARGET_MIPS64) 338461c08dfSJia Liu DEF_HELPER_FLAGS_1(raddu_l_ob, TCG_CALL_NO_RWG_SE, tl, tl) 339461c08dfSJia Liu #endif 340461c08dfSJia Liu DEF_HELPER_FLAGS_2(absq_s_qb, 0, tl, tl, env) 341461c08dfSJia Liu DEF_HELPER_FLAGS_2(absq_s_ph, 0, tl, tl, env) 342461c08dfSJia Liu DEF_HELPER_FLAGS_2(absq_s_w, 0, tl, tl, env) 343461c08dfSJia Liu #if defined(TARGET_MIPS64) 344461c08dfSJia Liu DEF_HELPER_FLAGS_2(absq_s_ob, 0, tl, tl, env) 345461c08dfSJia Liu DEF_HELPER_FLAGS_2(absq_s_qh, 0, tl, tl, env) 346461c08dfSJia Liu DEF_HELPER_FLAGS_2(absq_s_pw, 0, tl, tl, env) 347461c08dfSJia Liu #endif 348461c08dfSJia Liu DEF_HELPER_FLAGS_2(precr_qb_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl) 349461c08dfSJia Liu DEF_HELPER_FLAGS_2(precrq_qb_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl) 350461c08dfSJia Liu DEF_HELPER_FLAGS_3(precr_sra_ph_w, TCG_CALL_NO_RWG_SE, 351461c08dfSJia Liu tl, i32, tl, tl) 352461c08dfSJia Liu DEF_HELPER_FLAGS_3(precr_sra_r_ph_w, TCG_CALL_NO_RWG_SE, 353461c08dfSJia Liu tl, i32, tl, tl) 354461c08dfSJia Liu DEF_HELPER_FLAGS_2(precrq_ph_w, TCG_CALL_NO_RWG_SE, tl, tl, tl) 355461c08dfSJia Liu DEF_HELPER_FLAGS_3(precrq_rs_ph_w, 0, tl, tl, tl, env) 356461c08dfSJia Liu #if defined(TARGET_MIPS64) 357461c08dfSJia Liu DEF_HELPER_FLAGS_2(precr_ob_qh, TCG_CALL_NO_RWG_SE, tl, tl, tl) 358461c08dfSJia Liu DEF_HELPER_FLAGS_3(precr_sra_qh_pw, 359461c08dfSJia Liu TCG_CALL_NO_RWG_SE, tl, tl, tl, i32) 360461c08dfSJia Liu DEF_HELPER_FLAGS_3(precr_sra_r_qh_pw, 361461c08dfSJia Liu TCG_CALL_NO_RWG_SE, tl, tl, tl, i32) 362461c08dfSJia Liu DEF_HELPER_FLAGS_2(precrq_ob_qh, TCG_CALL_NO_RWG_SE, tl, tl, tl) 363461c08dfSJia Liu DEF_HELPER_FLAGS_2(precrq_qh_pw, TCG_CALL_NO_RWG_SE, tl, tl, tl) 364461c08dfSJia Liu DEF_HELPER_FLAGS_3(precrq_rs_qh_pw, 365461c08dfSJia Liu TCG_CALL_NO_RWG_SE, tl, tl, tl, env) 366461c08dfSJia Liu DEF_HELPER_FLAGS_2(precrq_pw_l, TCG_CALL_NO_RWG_SE, tl, tl, tl) 367461c08dfSJia Liu #endif 368461c08dfSJia Liu DEF_HELPER_FLAGS_3(precrqu_s_qb_ph, 0, tl, tl, tl, env) 369461c08dfSJia Liu #if defined(TARGET_MIPS64) 370461c08dfSJia Liu DEF_HELPER_FLAGS_3(precrqu_s_ob_qh, 371461c08dfSJia Liu TCG_CALL_NO_RWG_SE, tl, tl, tl, env) 372461c08dfSJia Liu 373461c08dfSJia Liu DEF_HELPER_FLAGS_1(preceq_pw_qhl, TCG_CALL_NO_RWG_SE, tl, tl) 374461c08dfSJia Liu DEF_HELPER_FLAGS_1(preceq_pw_qhr, TCG_CALL_NO_RWG_SE, tl, tl) 375461c08dfSJia Liu DEF_HELPER_FLAGS_1(preceq_pw_qhla, TCG_CALL_NO_RWG_SE, tl, tl) 376461c08dfSJia Liu DEF_HELPER_FLAGS_1(preceq_pw_qhra, TCG_CALL_NO_RWG_SE, tl, tl) 377461c08dfSJia Liu #endif 378461c08dfSJia Liu DEF_HELPER_FLAGS_1(precequ_ph_qbl, TCG_CALL_NO_RWG_SE, tl, tl) 379461c08dfSJia Liu DEF_HELPER_FLAGS_1(precequ_ph_qbr, TCG_CALL_NO_RWG_SE, tl, tl) 380461c08dfSJia Liu DEF_HELPER_FLAGS_1(precequ_ph_qbla, TCG_CALL_NO_RWG_SE, tl, tl) 381461c08dfSJia Liu DEF_HELPER_FLAGS_1(precequ_ph_qbra, TCG_CALL_NO_RWG_SE, tl, tl) 382461c08dfSJia Liu #if defined(TARGET_MIPS64) 383461c08dfSJia Liu DEF_HELPER_FLAGS_1(precequ_qh_obl, TCG_CALL_NO_RWG_SE, tl, tl) 384461c08dfSJia Liu DEF_HELPER_FLAGS_1(precequ_qh_obr, TCG_CALL_NO_RWG_SE, tl, tl) 385461c08dfSJia Liu DEF_HELPER_FLAGS_1(precequ_qh_obla, TCG_CALL_NO_RWG_SE, tl, tl) 386461c08dfSJia Liu DEF_HELPER_FLAGS_1(precequ_qh_obra, TCG_CALL_NO_RWG_SE, tl, tl) 387461c08dfSJia Liu #endif 388461c08dfSJia Liu DEF_HELPER_FLAGS_1(preceu_ph_qbl, TCG_CALL_NO_RWG_SE, tl, tl) 389461c08dfSJia Liu DEF_HELPER_FLAGS_1(preceu_ph_qbr, TCG_CALL_NO_RWG_SE, tl, tl) 390461c08dfSJia Liu DEF_HELPER_FLAGS_1(preceu_ph_qbla, TCG_CALL_NO_RWG_SE, tl, tl) 391461c08dfSJia Liu DEF_HELPER_FLAGS_1(preceu_ph_qbra, TCG_CALL_NO_RWG_SE, tl, tl) 392461c08dfSJia Liu #if defined(TARGET_MIPS64) 393461c08dfSJia Liu DEF_HELPER_FLAGS_1(preceu_qh_obl, TCG_CALL_NO_RWG_SE, tl, tl) 394461c08dfSJia Liu DEF_HELPER_FLAGS_1(preceu_qh_obr, TCG_CALL_NO_RWG_SE, tl, tl) 395461c08dfSJia Liu DEF_HELPER_FLAGS_1(preceu_qh_obla, TCG_CALL_NO_RWG_SE, tl, tl) 396461c08dfSJia Liu DEF_HELPER_FLAGS_1(preceu_qh_obra, TCG_CALL_NO_RWG_SE, tl, tl) 397461c08dfSJia Liu #endif 398461c08dfSJia Liu 39977c5fa8bSJia Liu /* DSP GPR-Based Shift Sub-class insns */ 40077c5fa8bSJia Liu DEF_HELPER_FLAGS_3(shll_qb, 0, tl, tl, tl, env) 40177c5fa8bSJia Liu #if defined(TARGET_MIPS64) 40277c5fa8bSJia Liu DEF_HELPER_FLAGS_3(shll_ob, 0, tl, tl, tl, env) 40377c5fa8bSJia Liu #endif 40477c5fa8bSJia Liu DEF_HELPER_FLAGS_3(shll_ph, 0, tl, tl, tl, env) 40577c5fa8bSJia Liu DEF_HELPER_FLAGS_3(shll_s_ph, 0, tl, tl, tl, env) 40677c5fa8bSJia Liu #if defined(TARGET_MIPS64) 40777c5fa8bSJia Liu DEF_HELPER_FLAGS_3(shll_qh, 0, tl, tl, tl, env) 40877c5fa8bSJia Liu DEF_HELPER_FLAGS_3(shll_s_qh, 0, tl, tl, tl, env) 40977c5fa8bSJia Liu #endif 41077c5fa8bSJia Liu DEF_HELPER_FLAGS_3(shll_s_w, 0, tl, tl, tl, env) 41177c5fa8bSJia Liu #if defined(TARGET_MIPS64) 41277c5fa8bSJia Liu DEF_HELPER_FLAGS_3(shll_pw, 0, tl, tl, tl, env) 41377c5fa8bSJia Liu DEF_HELPER_FLAGS_3(shll_s_pw, 0, tl, tl, tl, env) 41477c5fa8bSJia Liu #endif 41577c5fa8bSJia Liu DEF_HELPER_FLAGS_2(shrl_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl) 41677c5fa8bSJia Liu DEF_HELPER_FLAGS_2(shrl_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl) 41777c5fa8bSJia Liu #if defined(TARGET_MIPS64) 41877c5fa8bSJia Liu DEF_HELPER_FLAGS_2(shrl_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl) 41977c5fa8bSJia Liu DEF_HELPER_FLAGS_2(shrl_qh, TCG_CALL_NO_RWG_SE, tl, tl, tl) 42077c5fa8bSJia Liu #endif 42177c5fa8bSJia Liu DEF_HELPER_FLAGS_2(shra_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl) 42277c5fa8bSJia Liu DEF_HELPER_FLAGS_2(shra_r_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl) 42377c5fa8bSJia Liu #if defined(TARGET_MIPS64) 42477c5fa8bSJia Liu DEF_HELPER_FLAGS_2(shra_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl) 42577c5fa8bSJia Liu DEF_HELPER_FLAGS_2(shra_r_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl) 42677c5fa8bSJia Liu #endif 42777c5fa8bSJia Liu DEF_HELPER_FLAGS_2(shra_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl) 42877c5fa8bSJia Liu DEF_HELPER_FLAGS_2(shra_r_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl) 42977c5fa8bSJia Liu DEF_HELPER_FLAGS_2(shra_r_w, TCG_CALL_NO_RWG_SE, tl, tl, tl) 43077c5fa8bSJia Liu #if defined(TARGET_MIPS64) 43177c5fa8bSJia Liu DEF_HELPER_FLAGS_2(shra_qh, TCG_CALL_NO_RWG_SE, tl, tl, tl) 43277c5fa8bSJia Liu DEF_HELPER_FLAGS_2(shra_r_qh, TCG_CALL_NO_RWG_SE, tl, tl, tl) 43377c5fa8bSJia Liu DEF_HELPER_FLAGS_2(shra_pw, TCG_CALL_NO_RWG_SE, tl, tl, tl) 43477c5fa8bSJia Liu DEF_HELPER_FLAGS_2(shra_r_pw, TCG_CALL_NO_RWG_SE, tl, tl, tl) 43577c5fa8bSJia Liu #endif 43677c5fa8bSJia Liu 437a22260aeSJia Liu /* DSP Multiply Sub-class insns */ 438a22260aeSJia Liu DEF_HELPER_FLAGS_3(muleu_s_ph_qbl, 0, tl, tl, tl, env) 439a22260aeSJia Liu DEF_HELPER_FLAGS_3(muleu_s_ph_qbr, 0, tl, tl, tl, env) 440a22260aeSJia Liu #if defined(TARGET_MIPS64) 441a22260aeSJia Liu DEF_HELPER_FLAGS_3(muleu_s_qh_obl, 0, tl, tl, tl, env) 442a22260aeSJia Liu DEF_HELPER_FLAGS_3(muleu_s_qh_obr, 0, tl, tl, tl, env) 443a22260aeSJia Liu #endif 444a22260aeSJia Liu DEF_HELPER_FLAGS_3(mulq_rs_ph, 0, tl, tl, tl, env) 445a22260aeSJia Liu #if defined(TARGET_MIPS64) 446a22260aeSJia Liu DEF_HELPER_FLAGS_3(mulq_rs_qh, 0, tl, tl, tl, env) 447a22260aeSJia Liu #endif 448a22260aeSJia Liu DEF_HELPER_FLAGS_3(muleq_s_w_phl, 0, tl, tl, tl, env) 449a22260aeSJia Liu DEF_HELPER_FLAGS_3(muleq_s_w_phr, 0, tl, tl, tl, env) 450a22260aeSJia Liu #if defined(TARGET_MIPS64) 451a22260aeSJia Liu DEF_HELPER_FLAGS_3(muleq_s_pw_qhl, 0, tl, tl, tl, env) 452a22260aeSJia Liu DEF_HELPER_FLAGS_3(muleq_s_pw_qhr, 0, tl, tl, tl, env) 453a22260aeSJia Liu #endif 454a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpau_h_qbl, 0, void, i32, tl, tl, env) 455a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpau_h_qbr, 0, void, i32, tl, tl, env) 456a22260aeSJia Liu #if defined(TARGET_MIPS64) 457a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpau_h_obl, 0, void, tl, tl, i32, env) 458a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpau_h_obr, 0, void, tl, tl, i32, env) 459a22260aeSJia Liu #endif 460a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpsu_h_qbl, 0, void, i32, tl, tl, env) 461a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpsu_h_qbr, 0, void, i32, tl, tl, env) 462a22260aeSJia Liu #if defined(TARGET_MIPS64) 463a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpsu_h_obl, 0, void, tl, tl, i32, env) 464a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpsu_h_obr, 0, void, tl, tl, i32, env) 465a22260aeSJia Liu #endif 466a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpa_w_ph, 0, void, i32, tl, tl, env) 467a22260aeSJia Liu #if defined(TARGET_MIPS64) 468a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpa_w_qh, 0, void, tl, tl, i32, env) 469a22260aeSJia Liu #endif 470a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpax_w_ph, 0, void, i32, tl, tl, env) 471a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpaq_s_w_ph, 0, void, i32, tl, tl, env) 472a22260aeSJia Liu #if defined(TARGET_MIPS64) 473a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpaq_s_w_qh, 0, void, tl, tl, i32, env) 474a22260aeSJia Liu #endif 475a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpaqx_s_w_ph, 0, void, i32, tl, tl, env) 476a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpaqx_sa_w_ph, 0, void, i32, tl, tl, env) 477a22260aeSJia Liu DEF_HELPER_FLAGS_4(dps_w_ph, 0, void, i32, tl, tl, env) 478a22260aeSJia Liu #if defined(TARGET_MIPS64) 479a22260aeSJia Liu DEF_HELPER_FLAGS_4(dps_w_qh, 0, void, tl, tl, i32, env) 480a22260aeSJia Liu #endif 481a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpsx_w_ph, 0, void, i32, tl, tl, env) 482a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpsq_s_w_ph, 0, void, i32, tl, tl, env) 483a22260aeSJia Liu #if defined(TARGET_MIPS64) 484a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpsq_s_w_qh, 0, void, tl, tl, i32, env) 485a22260aeSJia Liu #endif 486a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpsqx_s_w_ph, 0, void, i32, tl, tl, env) 487a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpsqx_sa_w_ph, 0, void, i32, tl, tl, env) 488a22260aeSJia Liu DEF_HELPER_FLAGS_4(mulsaq_s_w_ph, 0, void, i32, tl, tl, env) 489a22260aeSJia Liu #if defined(TARGET_MIPS64) 490a22260aeSJia Liu DEF_HELPER_FLAGS_4(mulsaq_s_w_qh, 0, void, tl, tl, i32, env) 491a22260aeSJia Liu #endif 492a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpaq_sa_l_w, 0, void, i32, tl, tl, env) 493a22260aeSJia Liu #if defined(TARGET_MIPS64) 494a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpaq_sa_l_pw, 0, void, tl, tl, i32, env) 495a22260aeSJia Liu #endif 496a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpsq_sa_l_w, 0, void, i32, tl, tl, env) 497a22260aeSJia Liu #if defined(TARGET_MIPS64) 498a22260aeSJia Liu DEF_HELPER_FLAGS_4(dpsq_sa_l_pw, 0, void, tl, tl, i32, env) 499a22260aeSJia Liu DEF_HELPER_FLAGS_4(mulsaq_s_l_pw, 0, void, tl, tl, i32, env) 500a22260aeSJia Liu #endif 501a22260aeSJia Liu DEF_HELPER_FLAGS_4(maq_s_w_phl, 0, void, i32, tl, tl, env) 502a22260aeSJia Liu DEF_HELPER_FLAGS_4(maq_s_w_phr, 0, void, i32, tl, tl, env) 503a22260aeSJia Liu DEF_HELPER_FLAGS_4(maq_sa_w_phl, 0, void, i32, tl, tl, env) 504a22260aeSJia Liu DEF_HELPER_FLAGS_4(maq_sa_w_phr, 0, void, i32, tl, tl, env) 505a22260aeSJia Liu DEF_HELPER_FLAGS_3(mul_ph, 0, tl, tl, tl, env) 506a22260aeSJia Liu DEF_HELPER_FLAGS_3(mul_s_ph, 0, tl, tl, tl, env) 507a22260aeSJia Liu DEF_HELPER_FLAGS_3(mulq_s_ph, 0, tl, tl, tl, env) 508a22260aeSJia Liu DEF_HELPER_FLAGS_3(mulq_s_w, 0, tl, tl, tl, env) 509a22260aeSJia Liu DEF_HELPER_FLAGS_3(mulq_rs_w, 0, tl, tl, tl, env) 510a22260aeSJia Liu DEF_HELPER_FLAGS_4(mulsa_w_ph, 0, void, i32, tl, tl, env) 511a22260aeSJia Liu #if defined(TARGET_MIPS64) 512a22260aeSJia Liu DEF_HELPER_FLAGS_4(maq_s_w_qhll, 0, void, tl, tl, i32, env) 513a22260aeSJia Liu DEF_HELPER_FLAGS_4(maq_s_w_qhlr, 0, void, tl, tl, i32, env) 514a22260aeSJia Liu DEF_HELPER_FLAGS_4(maq_s_w_qhrl, 0, void, tl, tl, i32, env) 515a22260aeSJia Liu DEF_HELPER_FLAGS_4(maq_s_w_qhrr, 0, void, tl, tl, i32, env) 516a22260aeSJia Liu DEF_HELPER_FLAGS_4(maq_sa_w_qhll, 0, void, tl, tl, i32, env) 517a22260aeSJia Liu DEF_HELPER_FLAGS_4(maq_sa_w_qhlr, 0, void, tl, tl, i32, env) 518a22260aeSJia Liu DEF_HELPER_FLAGS_4(maq_sa_w_qhrl, 0, void, tl, tl, i32, env) 519a22260aeSJia Liu DEF_HELPER_FLAGS_4(maq_sa_w_qhrr, 0, void, tl, tl, i32, env) 520a22260aeSJia Liu DEF_HELPER_FLAGS_4(maq_s_l_pwl, 0, void, tl, tl, i32, env) 521a22260aeSJia Liu DEF_HELPER_FLAGS_4(maq_s_l_pwr, 0, void, tl, tl, i32, env) 522a22260aeSJia Liu DEF_HELPER_FLAGS_4(dmadd, 0, void, tl, tl, i32, env) 523a22260aeSJia Liu DEF_HELPER_FLAGS_4(dmaddu, 0, void, tl, tl, i32, env) 524a22260aeSJia Liu DEF_HELPER_FLAGS_4(dmsub, 0, void, tl, tl, i32, env) 525a22260aeSJia Liu DEF_HELPER_FLAGS_4(dmsubu, 0, void, tl, tl, i32, env) 526a22260aeSJia Liu #endif 527a22260aeSJia Liu 5281cb6686cSJia Liu /* DSP Bit/Manipulation Sub-class insns */ 5291cb6686cSJia Liu DEF_HELPER_FLAGS_1(bitrev, TCG_CALL_NO_RWG_SE, tl, tl) 5301cb6686cSJia Liu DEF_HELPER_FLAGS_3(insv, 0, tl, env, tl, tl) 5311cb6686cSJia Liu #if defined(TARGET_MIPS64) 532f5daeec4SRichard Henderson DEF_HELPER_FLAGS_3(dinsv, 0, tl, env, tl, tl) 5331cb6686cSJia Liu #endif 5341cb6686cSJia Liu 53526690560SJia Liu /* DSP Compare-Pick Sub-class insns */ 53626690560SJia Liu DEF_HELPER_FLAGS_3(cmpu_eq_qb, 0, void, tl, tl, env) 53726690560SJia Liu DEF_HELPER_FLAGS_3(cmpu_lt_qb, 0, void, tl, tl, env) 53826690560SJia Liu DEF_HELPER_FLAGS_3(cmpu_le_qb, 0, void, tl, tl, env) 53926690560SJia Liu DEF_HELPER_FLAGS_2(cmpgu_eq_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl) 54026690560SJia Liu DEF_HELPER_FLAGS_2(cmpgu_lt_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl) 54126690560SJia Liu DEF_HELPER_FLAGS_2(cmpgu_le_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl) 54226690560SJia Liu DEF_HELPER_FLAGS_3(cmp_eq_ph, 0, void, tl, tl, env) 54326690560SJia Liu DEF_HELPER_FLAGS_3(cmp_lt_ph, 0, void, tl, tl, env) 54426690560SJia Liu DEF_HELPER_FLAGS_3(cmp_le_ph, 0, void, tl, tl, env) 54526690560SJia Liu #if defined(TARGET_MIPS64) 54626690560SJia Liu DEF_HELPER_FLAGS_3(cmpu_eq_ob, 0, void, tl, tl, env) 54726690560SJia Liu DEF_HELPER_FLAGS_3(cmpu_lt_ob, 0, void, tl, tl, env) 54826690560SJia Liu DEF_HELPER_FLAGS_3(cmpu_le_ob, 0, void, tl, tl, env) 54926690560SJia Liu DEF_HELPER_FLAGS_3(cmpgdu_eq_ob, 0, tl, tl, tl, env) 55026690560SJia Liu DEF_HELPER_FLAGS_3(cmpgdu_lt_ob, 0, tl, tl, tl, env) 55126690560SJia Liu DEF_HELPER_FLAGS_3(cmpgdu_le_ob, 0, tl, tl, tl, env) 55226690560SJia Liu DEF_HELPER_FLAGS_2(cmpgu_eq_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl) 55326690560SJia Liu DEF_HELPER_FLAGS_2(cmpgu_lt_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl) 55426690560SJia Liu DEF_HELPER_FLAGS_2(cmpgu_le_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl) 55526690560SJia Liu DEF_HELPER_FLAGS_3(cmp_eq_qh, 0, void, tl, tl, env) 55626690560SJia Liu DEF_HELPER_FLAGS_3(cmp_lt_qh, 0, void, tl, tl, env) 55726690560SJia Liu DEF_HELPER_FLAGS_3(cmp_le_qh, 0, void, tl, tl, env) 55826690560SJia Liu DEF_HELPER_FLAGS_3(cmp_eq_pw, 0, void, tl, tl, env) 55926690560SJia Liu DEF_HELPER_FLAGS_3(cmp_lt_pw, 0, void, tl, tl, env) 56026690560SJia Liu DEF_HELPER_FLAGS_3(cmp_le_pw, 0, void, tl, tl, env) 56126690560SJia Liu #endif 56226690560SJia Liu DEF_HELPER_FLAGS_3(pick_qb, 0, tl, tl, tl, env) 56326690560SJia Liu DEF_HELPER_FLAGS_3(pick_ph, 0, tl, tl, tl, env) 56426690560SJia Liu #if defined(TARGET_MIPS64) 56526690560SJia Liu DEF_HELPER_FLAGS_3(pick_ob, 0, tl, tl, tl, env) 56626690560SJia Liu DEF_HELPER_FLAGS_3(pick_qh, 0, tl, tl, tl, env) 56726690560SJia Liu DEF_HELPER_FLAGS_3(pick_pw, 0, tl, tl, tl, env) 56826690560SJia Liu #endif 56926690560SJia Liu DEF_HELPER_FLAGS_2(packrl_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl) 57026690560SJia Liu #if defined(TARGET_MIPS64) 57126690560SJia Liu DEF_HELPER_FLAGS_2(packrl_pw, TCG_CALL_NO_RWG_SE, tl, tl, tl) 57226690560SJia Liu #endif 57326690560SJia Liu 574b53371edSJia Liu /* DSP Accumulator and DSPControl Access Sub-class insns */ 575b53371edSJia Liu DEF_HELPER_FLAGS_3(extr_w, 0, tl, tl, tl, env) 576b53371edSJia Liu DEF_HELPER_FLAGS_3(extr_r_w, 0, tl, tl, tl, env) 577b53371edSJia Liu DEF_HELPER_FLAGS_3(extr_rs_w, 0, tl, tl, tl, env) 578b53371edSJia Liu #if defined(TARGET_MIPS64) 579b53371edSJia Liu DEF_HELPER_FLAGS_3(dextr_w, 0, tl, tl, tl, env) 580b53371edSJia Liu DEF_HELPER_FLAGS_3(dextr_r_w, 0, tl, tl, tl, env) 581b53371edSJia Liu DEF_HELPER_FLAGS_3(dextr_rs_w, 0, tl, tl, tl, env) 582b53371edSJia Liu DEF_HELPER_FLAGS_3(dextr_l, 0, tl, tl, tl, env) 583b53371edSJia Liu DEF_HELPER_FLAGS_3(dextr_r_l, 0, tl, tl, tl, env) 584b53371edSJia Liu DEF_HELPER_FLAGS_3(dextr_rs_l, 0, tl, tl, tl, env) 585b53371edSJia Liu #endif 586b53371edSJia Liu DEF_HELPER_FLAGS_3(extr_s_h, 0, tl, tl, tl, env) 587b53371edSJia Liu #if defined(TARGET_MIPS64) 588b53371edSJia Liu DEF_HELPER_FLAGS_3(dextr_s_h, 0, tl, tl, tl, env) 589b53371edSJia Liu #endif 590b53371edSJia Liu DEF_HELPER_FLAGS_3(extp, 0, tl, tl, tl, env) 591b53371edSJia Liu DEF_HELPER_FLAGS_3(extpdp, 0, tl, tl, tl, env) 592b53371edSJia Liu #if defined(TARGET_MIPS64) 593b53371edSJia Liu DEF_HELPER_FLAGS_3(dextp, 0, tl, tl, tl, env) 594b53371edSJia Liu DEF_HELPER_FLAGS_3(dextpdp, 0, tl, tl, tl, env) 595b53371edSJia Liu #endif 596b53371edSJia Liu DEF_HELPER_FLAGS_3(shilo, 0, void, tl, tl, env) 597b53371edSJia Liu #if defined(TARGET_MIPS64) 598b53371edSJia Liu DEF_HELPER_FLAGS_3(dshilo, 0, void, tl, tl, env) 599b53371edSJia Liu #endif 600b53371edSJia Liu DEF_HELPER_FLAGS_3(mthlip, 0, void, tl, tl, env) 601b53371edSJia Liu #if defined(TARGET_MIPS64) 602b53371edSJia Liu DEF_HELPER_FLAGS_3(dmthlip, 0, void, tl, tl, env) 603b53371edSJia Liu #endif 604b53371edSJia Liu DEF_HELPER_FLAGS_3(wrdsp, 0, void, tl, tl, env) 605b53371edSJia Liu DEF_HELPER_FLAGS_2(rddsp, 0, tl, tl, env) 6064c789546SYongbok Kim 607ad520a97SPhilippe Mathieu-Daudé #ifndef CONFIG_USER_ONLY 608ad520a97SPhilippe Mathieu-Daudé #include "tcg/sysemu_helper.h.inc" 609ad520a97SPhilippe Mathieu-Daudé #endif /* !CONFIG_USER_ONLY */ 610ad520a97SPhilippe Mathieu-Daudé 611*a2b0a27dSPhilippe Mathieu-Daudé #include "tcg/msa_helper.h.inc" 612