1fcf5ef2aSThomas Huth DEF_HELPER_3(raise_exception_err, noreturn, env, i32, int) 2fcf5ef2aSThomas Huth DEF_HELPER_2(raise_exception, noreturn, env, i32) 3fcf5ef2aSThomas Huth DEF_HELPER_1(raise_exception_debug, noreturn, env) 4fcf5ef2aSThomas Huth 5fcf5ef2aSThomas Huth #ifdef TARGET_MIPS64 6fcf5ef2aSThomas Huth DEF_HELPER_4(sdl, void, env, tl, tl, int) 7fcf5ef2aSThomas Huth DEF_HELPER_4(sdr, void, env, tl, tl, int) 8fcf5ef2aSThomas Huth #endif 9fcf5ef2aSThomas Huth DEF_HELPER_4(swl, void, env, tl, tl, int) 10fcf5ef2aSThomas Huth DEF_HELPER_4(swr, void, env, tl, tl, int) 11fcf5ef2aSThomas Huth 12fcf5ef2aSThomas Huth #ifndef CONFIG_USER_ONLY 13fcf5ef2aSThomas Huth DEF_HELPER_3(ll, tl, env, tl, int) 14fcf5ef2aSThomas Huth #ifdef TARGET_MIPS64 15fcf5ef2aSThomas Huth DEF_HELPER_3(lld, tl, env, tl, int) 16fcf5ef2aSThomas Huth #endif 17fcf5ef2aSThomas Huth #endif 18fcf5ef2aSThomas Huth 19fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(bitswap, TCG_CALL_NO_RWG_SE, tl, tl) 20fcf5ef2aSThomas Huth #ifdef TARGET_MIPS64 21fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(dbitswap, TCG_CALL_NO_RWG_SE, tl, tl) 22fcf5ef2aSThomas Huth #endif 23fcf5ef2aSThomas Huth 24e222f506SMatthew Fortune DEF_HELPER_FLAGS_4(rotx, TCG_CALL_NO_RWG_SE, tl, tl, i32, i32, i32) 25e222f506SMatthew Fortune 26fcf5ef2aSThomas Huth /* microMIPS functions */ 27fcf5ef2aSThomas Huth DEF_HELPER_4(lwm, void, env, tl, tl, i32) 28fcf5ef2aSThomas Huth DEF_HELPER_4(swm, void, env, tl, tl, i32) 29fcf5ef2aSThomas Huth #ifdef TARGET_MIPS64 30fcf5ef2aSThomas Huth DEF_HELPER_4(ldm, void, env, tl, tl, i32) 31fcf5ef2aSThomas Huth DEF_HELPER_4(sdm, void, env, tl, tl, i32) 32fcf5ef2aSThomas Huth #endif 33fcf5ef2aSThomas Huth 34fcf5ef2aSThomas Huth DEF_HELPER_2(fork, void, tl, tl) 35fcf5ef2aSThomas Huth DEF_HELPER_2(yield, tl, env, tl) 36fcf5ef2aSThomas Huth 37fcf5ef2aSThomas Huth /* CP1 functions */ 38fcf5ef2aSThomas Huth DEF_HELPER_2(cfc1, tl, env, i32) 39fcf5ef2aSThomas Huth DEF_HELPER_4(ctc1, void, env, tl, i32, i32) 40fcf5ef2aSThomas Huth 41fcf5ef2aSThomas Huth DEF_HELPER_2(float_cvtd_s, i64, env, i32) 42fcf5ef2aSThomas Huth DEF_HELPER_2(float_cvtd_w, i64, env, i32) 43fcf5ef2aSThomas Huth DEF_HELPER_2(float_cvtd_l, i64, env, i64) 44fcf5ef2aSThomas Huth DEF_HELPER_2(float_cvtps_pw, i64, env, i64) 45fcf5ef2aSThomas Huth DEF_HELPER_2(float_cvtpw_ps, i64, env, i64) 46fcf5ef2aSThomas Huth DEF_HELPER_2(float_cvts_d, i32, env, i64) 47fcf5ef2aSThomas Huth DEF_HELPER_2(float_cvts_w, i32, env, i32) 48fcf5ef2aSThomas Huth DEF_HELPER_2(float_cvts_l, i32, env, i64) 49fcf5ef2aSThomas Huth DEF_HELPER_2(float_cvts_pl, i32, env, i32) 50fcf5ef2aSThomas Huth DEF_HELPER_2(float_cvts_pu, i32, env, i32) 51fcf5ef2aSThomas Huth 52fcf5ef2aSThomas Huth DEF_HELPER_3(float_addr_ps, i64, env, i64, i64) 53fcf5ef2aSThomas Huth DEF_HELPER_3(float_mulr_ps, i64, env, i64, i64) 54fcf5ef2aSThomas Huth 55fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(float_class_s, TCG_CALL_NO_RWG_SE, i32, env, i32) 56fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(float_class_d, TCG_CALL_NO_RWG_SE, i64, env, i64) 57fcf5ef2aSThomas Huth 58fcf5ef2aSThomas Huth #define FOP_PROTO(op) \ 59fcf5ef2aSThomas Huth DEF_HELPER_4(float_ ## op ## _s, i32, env, i32, i32, i32) \ 60fcf5ef2aSThomas Huth DEF_HELPER_4(float_ ## op ## _d, i64, env, i64, i64, i64) 61fcf5ef2aSThomas Huth FOP_PROTO(maddf) 62fcf5ef2aSThomas Huth FOP_PROTO(msubf) 63fcf5ef2aSThomas Huth #undef FOP_PROTO 64fcf5ef2aSThomas Huth 65fcf5ef2aSThomas Huth #define FOP_PROTO(op) \ 66fcf5ef2aSThomas Huth DEF_HELPER_3(float_ ## op ## _s, i32, env, i32, i32) \ 67fcf5ef2aSThomas Huth DEF_HELPER_3(float_ ## op ## _d, i64, env, i64, i64) 68fcf5ef2aSThomas Huth FOP_PROTO(max) 69fcf5ef2aSThomas Huth FOP_PROTO(maxa) 70fcf5ef2aSThomas Huth FOP_PROTO(min) 71fcf5ef2aSThomas Huth FOP_PROTO(mina) 72fcf5ef2aSThomas Huth #undef FOP_PROTO 73fcf5ef2aSThomas Huth 74fcf5ef2aSThomas Huth #define FOP_PROTO(op) \ 75fcf5ef2aSThomas Huth DEF_HELPER_2(float_ ## op ## _l_s, i64, env, i32) \ 76fcf5ef2aSThomas Huth DEF_HELPER_2(float_ ## op ## _l_d, i64, env, i64) \ 77fcf5ef2aSThomas Huth DEF_HELPER_2(float_ ## op ## _w_s, i32, env, i32) \ 78fcf5ef2aSThomas Huth DEF_HELPER_2(float_ ## op ## _w_d, i32, env, i64) 79fcf5ef2aSThomas Huth FOP_PROTO(cvt) 80fcf5ef2aSThomas Huth FOP_PROTO(round) 81fcf5ef2aSThomas Huth FOP_PROTO(trunc) 82fcf5ef2aSThomas Huth FOP_PROTO(ceil) 83fcf5ef2aSThomas Huth FOP_PROTO(floor) 84fcf5ef2aSThomas Huth FOP_PROTO(cvt_2008) 85fcf5ef2aSThomas Huth FOP_PROTO(round_2008) 86fcf5ef2aSThomas Huth FOP_PROTO(trunc_2008) 87fcf5ef2aSThomas Huth FOP_PROTO(ceil_2008) 88fcf5ef2aSThomas Huth FOP_PROTO(floor_2008) 89fcf5ef2aSThomas Huth #undef FOP_PROTO 90fcf5ef2aSThomas Huth 91fcf5ef2aSThomas Huth #define FOP_PROTO(op) \ 92fcf5ef2aSThomas Huth DEF_HELPER_2(float_ ## op ## _s, i32, env, i32) \ 93fcf5ef2aSThomas Huth DEF_HELPER_2(float_ ## op ## _d, i64, env, i64) 94fcf5ef2aSThomas Huth FOP_PROTO(sqrt) 95fcf5ef2aSThomas Huth FOP_PROTO(rsqrt) 96fcf5ef2aSThomas Huth FOP_PROTO(recip) 97fcf5ef2aSThomas Huth FOP_PROTO(rint) 98fcf5ef2aSThomas Huth #undef FOP_PROTO 99fcf5ef2aSThomas Huth 100fcf5ef2aSThomas Huth #define FOP_PROTO(op) \ 101fcf5ef2aSThomas Huth DEF_HELPER_1(float_ ## op ## _s, i32, i32) \ 102fcf5ef2aSThomas Huth DEF_HELPER_1(float_ ## op ## _d, i64, i64) \ 103fcf5ef2aSThomas Huth DEF_HELPER_1(float_ ## op ## _ps, i64, i64) 104fcf5ef2aSThomas Huth FOP_PROTO(abs) 105fcf5ef2aSThomas Huth FOP_PROTO(chs) 106fcf5ef2aSThomas Huth #undef FOP_PROTO 107fcf5ef2aSThomas Huth 108fcf5ef2aSThomas Huth #define FOP_PROTO(op) \ 109fcf5ef2aSThomas Huth DEF_HELPER_2(float_ ## op ## _s, i32, env, i32) \ 110fcf5ef2aSThomas Huth DEF_HELPER_2(float_ ## op ## _d, i64, env, i64) \ 111fcf5ef2aSThomas Huth DEF_HELPER_2(float_ ## op ## _ps, i64, env, i64) 112fcf5ef2aSThomas Huth FOP_PROTO(recip1) 113fcf5ef2aSThomas Huth FOP_PROTO(rsqrt1) 114fcf5ef2aSThomas Huth #undef FOP_PROTO 115fcf5ef2aSThomas Huth 116fcf5ef2aSThomas Huth #define FOP_PROTO(op) \ 117fcf5ef2aSThomas Huth DEF_HELPER_3(float_ ## op ## _s, i32, env, i32, i32) \ 118fcf5ef2aSThomas Huth DEF_HELPER_3(float_ ## op ## _d, i64, env, i64, i64) \ 119fcf5ef2aSThomas Huth DEF_HELPER_3(float_ ## op ## _ps, i64, env, i64, i64) 120fcf5ef2aSThomas Huth FOP_PROTO(add) 121fcf5ef2aSThomas Huth FOP_PROTO(sub) 122fcf5ef2aSThomas Huth FOP_PROTO(mul) 123fcf5ef2aSThomas Huth FOP_PROTO(div) 124fcf5ef2aSThomas Huth FOP_PROTO(recip2) 125fcf5ef2aSThomas Huth FOP_PROTO(rsqrt2) 126fcf5ef2aSThomas Huth #undef FOP_PROTO 127fcf5ef2aSThomas Huth 128fcf5ef2aSThomas Huth #define FOP_PROTO(op) \ 129fcf5ef2aSThomas Huth DEF_HELPER_4(float_ ## op ## _s, i32, env, i32, i32, i32) \ 130fcf5ef2aSThomas Huth DEF_HELPER_4(float_ ## op ## _d, i64, env, i64, i64, i64) \ 131fcf5ef2aSThomas Huth DEF_HELPER_4(float_ ## op ## _ps, i64, env, i64, i64, i64) 132fcf5ef2aSThomas Huth FOP_PROTO(madd) 133fcf5ef2aSThomas Huth FOP_PROTO(msub) 134fcf5ef2aSThomas Huth FOP_PROTO(nmadd) 135fcf5ef2aSThomas Huth FOP_PROTO(nmsub) 136fcf5ef2aSThomas Huth #undef FOP_PROTO 137fcf5ef2aSThomas Huth 138fcf5ef2aSThomas Huth #define FOP_PROTO(op) \ 139fcf5ef2aSThomas Huth DEF_HELPER_4(cmp_d_ ## op, void, env, i64, i64, int) \ 140fcf5ef2aSThomas Huth DEF_HELPER_4(cmpabs_d_ ## op, void, env, i64, i64, int) \ 141fcf5ef2aSThomas Huth DEF_HELPER_4(cmp_s_ ## op, void, env, i32, i32, int) \ 142fcf5ef2aSThomas Huth DEF_HELPER_4(cmpabs_s_ ## op, void, env, i32, i32, int) \ 143fcf5ef2aSThomas Huth DEF_HELPER_4(cmp_ps_ ## op, void, env, i64, i64, int) \ 144fcf5ef2aSThomas Huth DEF_HELPER_4(cmpabs_ps_ ## op, void, env, i64, i64, int) 145fcf5ef2aSThomas Huth FOP_PROTO(f) 146fcf5ef2aSThomas Huth FOP_PROTO(un) 147fcf5ef2aSThomas Huth FOP_PROTO(eq) 148fcf5ef2aSThomas Huth FOP_PROTO(ueq) 149fcf5ef2aSThomas Huth FOP_PROTO(olt) 150fcf5ef2aSThomas Huth FOP_PROTO(ult) 151fcf5ef2aSThomas Huth FOP_PROTO(ole) 152fcf5ef2aSThomas Huth FOP_PROTO(ule) 153fcf5ef2aSThomas Huth FOP_PROTO(sf) 154fcf5ef2aSThomas Huth FOP_PROTO(ngle) 155fcf5ef2aSThomas Huth FOP_PROTO(seq) 156fcf5ef2aSThomas Huth FOP_PROTO(ngl) 157fcf5ef2aSThomas Huth FOP_PROTO(lt) 158fcf5ef2aSThomas Huth FOP_PROTO(nge) 159fcf5ef2aSThomas Huth FOP_PROTO(le) 160fcf5ef2aSThomas Huth FOP_PROTO(ngt) 161fcf5ef2aSThomas Huth #undef FOP_PROTO 162fcf5ef2aSThomas Huth 163fcf5ef2aSThomas Huth #define FOP_PROTO(op) \ 164fcf5ef2aSThomas Huth DEF_HELPER_3(r6_cmp_d_ ## op, i64, env, i64, i64) \ 165fcf5ef2aSThomas Huth DEF_HELPER_3(r6_cmp_s_ ## op, i32, env, i32, i32) 166fcf5ef2aSThomas Huth FOP_PROTO(af) 167fcf5ef2aSThomas Huth FOP_PROTO(un) 168fcf5ef2aSThomas Huth FOP_PROTO(eq) 169fcf5ef2aSThomas Huth FOP_PROTO(ueq) 170fcf5ef2aSThomas Huth FOP_PROTO(lt) 171fcf5ef2aSThomas Huth FOP_PROTO(ult) 172fcf5ef2aSThomas Huth FOP_PROTO(le) 173fcf5ef2aSThomas Huth FOP_PROTO(ule) 174fcf5ef2aSThomas Huth FOP_PROTO(saf) 175fcf5ef2aSThomas Huth FOP_PROTO(sun) 176fcf5ef2aSThomas Huth FOP_PROTO(seq) 177fcf5ef2aSThomas Huth FOP_PROTO(sueq) 178fcf5ef2aSThomas Huth FOP_PROTO(slt) 179fcf5ef2aSThomas Huth FOP_PROTO(sult) 180fcf5ef2aSThomas Huth FOP_PROTO(sle) 181fcf5ef2aSThomas Huth FOP_PROTO(sule) 182fcf5ef2aSThomas Huth FOP_PROTO(or) 183fcf5ef2aSThomas Huth FOP_PROTO(une) 184fcf5ef2aSThomas Huth FOP_PROTO(ne) 185fcf5ef2aSThomas Huth FOP_PROTO(sor) 186fcf5ef2aSThomas Huth FOP_PROTO(sune) 187fcf5ef2aSThomas Huth FOP_PROTO(sne) 188fcf5ef2aSThomas Huth #undef FOP_PROTO 189fcf5ef2aSThomas Huth 190fcf5ef2aSThomas Huth DEF_HELPER_1(rdhwr_cpunum, tl, env) 191fcf5ef2aSThomas Huth DEF_HELPER_1(rdhwr_synci_step, tl, env) 192fcf5ef2aSThomas Huth DEF_HELPER_1(rdhwr_cc, tl, env) 193fcf5ef2aSThomas Huth DEF_HELPER_1(rdhwr_ccres, tl, env) 194fcf5ef2aSThomas Huth DEF_HELPER_1(rdhwr_performance, tl, env) 195fcf5ef2aSThomas Huth DEF_HELPER_1(rdhwr_xnp, tl, env) 196fcf5ef2aSThomas Huth DEF_HELPER_2(pmon, void, env, int) 197fcf5ef2aSThomas Huth DEF_HELPER_1(wait, void, env) 198fcf5ef2aSThomas Huth 199*03afdc28SJiaxun Yang #ifdef TARGET_MIPS64 200*03afdc28SJiaxun Yang DEF_HELPER_FLAGS_2(lcsr_cpucfg, TCG_CALL_NO_RWG_SE, tl, env, tl) 201*03afdc28SJiaxun Yang #endif 202*03afdc28SJiaxun Yang 203fcf5ef2aSThomas Huth /* Loongson multimedia functions. */ 204fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(paddsh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 205fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(paddush, TCG_CALL_NO_RWG_SE, i64, i64, i64) 206fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(paddh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 207fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(paddw, TCG_CALL_NO_RWG_SE, i64, i64, i64) 208fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(paddsb, TCG_CALL_NO_RWG_SE, i64, i64, i64) 209fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(paddusb, TCG_CALL_NO_RWG_SE, i64, i64, i64) 210fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(paddb, TCG_CALL_NO_RWG_SE, i64, i64, i64) 211fcf5ef2aSThomas Huth 212fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(psubsh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 213fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(psubush, TCG_CALL_NO_RWG_SE, i64, i64, i64) 214fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(psubh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 215fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(psubw, TCG_CALL_NO_RWG_SE, i64, i64, i64) 216fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(psubsb, TCG_CALL_NO_RWG_SE, i64, i64, i64) 217fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(psubusb, TCG_CALL_NO_RWG_SE, i64, i64, i64) 218fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(psubb, TCG_CALL_NO_RWG_SE, i64, i64, i64) 219fcf5ef2aSThomas Huth 220fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(pshufh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 221fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(packsswh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 222fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(packsshb, TCG_CALL_NO_RWG_SE, i64, i64, i64) 223fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(packushb, TCG_CALL_NO_RWG_SE, i64, i64, i64) 224fcf5ef2aSThomas Huth 225fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(punpcklhw, TCG_CALL_NO_RWG_SE, i64, i64, i64) 226fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(punpckhhw, TCG_CALL_NO_RWG_SE, i64, i64, i64) 227fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(punpcklbh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 228fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(punpckhbh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 229fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(punpcklwd, TCG_CALL_NO_RWG_SE, i64, i64, i64) 230fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(punpckhwd, TCG_CALL_NO_RWG_SE, i64, i64, i64) 231fcf5ef2aSThomas Huth 232fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(pavgh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 233fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(pavgb, TCG_CALL_NO_RWG_SE, i64, i64, i64) 234fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(pmaxsh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 235fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(pminsh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 236fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(pmaxub, TCG_CALL_NO_RWG_SE, i64, i64, i64) 237fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(pminub, TCG_CALL_NO_RWG_SE, i64, i64, i64) 238fcf5ef2aSThomas Huth 239fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(pcmpeqw, TCG_CALL_NO_RWG_SE, i64, i64, i64) 240fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(pcmpgtw, TCG_CALL_NO_RWG_SE, i64, i64, i64) 241fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(pcmpeqh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 242fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(pcmpgth, TCG_CALL_NO_RWG_SE, i64, i64, i64) 243fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(pcmpeqb, TCG_CALL_NO_RWG_SE, i64, i64, i64) 244fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(pcmpgtb, TCG_CALL_NO_RWG_SE, i64, i64, i64) 245fcf5ef2aSThomas Huth 246fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(psllw, TCG_CALL_NO_RWG_SE, i64, i64, i64) 247fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(psllh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 248fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(psrlw, TCG_CALL_NO_RWG_SE, i64, i64, i64) 249fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(psrlh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 250fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(psraw, TCG_CALL_NO_RWG_SE, i64, i64, i64) 251fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(psrah, TCG_CALL_NO_RWG_SE, i64, i64, i64) 252fcf5ef2aSThomas Huth 253fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(pmullh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 254fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(pmulhh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 255fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(pmulhuh, TCG_CALL_NO_RWG_SE, i64, i64, i64) 256fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(pmaddhw, TCG_CALL_NO_RWG_SE, i64, i64, i64) 257fcf5ef2aSThomas Huth 258fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(pasubub, TCG_CALL_NO_RWG_SE, i64, i64, i64) 259fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(biadd, TCG_CALL_NO_RWG_SE, i64, i64) 260fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(pmovmskb, TCG_CALL_NO_RWG_SE, i64, i64) 261fcf5ef2aSThomas Huth 262fcf5ef2aSThomas Huth /*** MIPS DSP ***/ 263fcf5ef2aSThomas Huth /* DSP Arithmetic Sub-class insns */ 264fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(addq_ph, 0, tl, tl, tl, env) 265fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(addq_s_ph, 0, tl, tl, tl, env) 266fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 267fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(addq_qh, 0, tl, tl, tl, env) 268fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(addq_s_qh, 0, tl, tl, tl, env) 269fcf5ef2aSThomas Huth #endif 270fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(addq_s_w, 0, tl, tl, tl, env) 271fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 272fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(addq_pw, 0, tl, tl, tl, env) 273fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(addq_s_pw, 0, tl, tl, tl, env) 274fcf5ef2aSThomas Huth #endif 275fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(addu_qb, 0, tl, tl, tl, env) 276fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(addu_s_qb, 0, tl, tl, tl, env) 277fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(adduh_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl) 278fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(adduh_r_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl) 279fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(addu_ph, 0, tl, tl, tl, env) 280fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(addu_s_ph, 0, tl, tl, tl, env) 281fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(addqh_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl) 282fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(addqh_r_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl) 283fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(addqh_w, TCG_CALL_NO_RWG_SE, tl, tl, tl) 284fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(addqh_r_w, TCG_CALL_NO_RWG_SE, tl, tl, tl) 285fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 286fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(addu_ob, 0, tl, tl, tl, env) 287fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(addu_s_ob, 0, tl, tl, tl, env) 288fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(adduh_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl) 289fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(adduh_r_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl) 290fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(addu_qh, 0, tl, tl, tl, env) 291fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(addu_s_qh, 0, tl, tl, tl, env) 292fcf5ef2aSThomas Huth #endif 293fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(subq_ph, 0, tl, tl, tl, env) 294fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(subq_s_ph, 0, tl, tl, tl, env) 295fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 296fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(subq_qh, 0, tl, tl, tl, env) 297fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(subq_s_qh, 0, tl, tl, tl, env) 298fcf5ef2aSThomas Huth #endif 299fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(subq_s_w, 0, tl, tl, tl, env) 300fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 301fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(subq_pw, 0, tl, tl, tl, env) 302fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(subq_s_pw, 0, tl, tl, tl, env) 303fcf5ef2aSThomas Huth #endif 304fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(subu_qb, 0, tl, tl, tl, env) 305fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(subu_s_qb, 0, tl, tl, tl, env) 306fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(subuh_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl) 307fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(subuh_r_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl) 308fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(subu_ph, 0, tl, tl, tl, env) 309fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(subu_s_ph, 0, tl, tl, tl, env) 310fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(subqh_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl) 311fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(subqh_r_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl) 312fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(subqh_w, TCG_CALL_NO_RWG_SE, tl, tl, tl) 313fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(subqh_r_w, TCG_CALL_NO_RWG_SE, tl, tl, tl) 314fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 315fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(subu_ob, 0, tl, tl, tl, env) 316fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(subu_s_ob, 0, tl, tl, tl, env) 317fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(subuh_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl) 318fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(subuh_r_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl) 319fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(subu_qh, 0, tl, tl, tl, env) 320fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(subu_s_qh, 0, tl, tl, tl, env) 321fcf5ef2aSThomas Huth #endif 322fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(addsc, 0, tl, tl, tl, env) 323fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(addwc, 0, tl, tl, tl, env) 324fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(modsub, TCG_CALL_NO_RWG_SE, tl, tl, tl) 325fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(raddu_w_qb, TCG_CALL_NO_RWG_SE, tl, tl) 326fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 327fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(raddu_l_ob, TCG_CALL_NO_RWG_SE, tl, tl) 328fcf5ef2aSThomas Huth #endif 329fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(absq_s_qb, 0, tl, tl, env) 330fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(absq_s_ph, 0, tl, tl, env) 331fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(absq_s_w, 0, tl, tl, env) 332fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 333fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(absq_s_ob, 0, tl, tl, env) 334fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(absq_s_qh, 0, tl, tl, env) 335fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(absq_s_pw, 0, tl, tl, env) 336fcf5ef2aSThomas Huth #endif 337fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(precr_qb_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl) 338fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(precrq_qb_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl) 339fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(precr_sra_ph_w, TCG_CALL_NO_RWG_SE, 340fcf5ef2aSThomas Huth tl, i32, tl, tl) 341fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(precr_sra_r_ph_w, TCG_CALL_NO_RWG_SE, 342fcf5ef2aSThomas Huth tl, i32, tl, tl) 343fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(precrq_ph_w, TCG_CALL_NO_RWG_SE, tl, tl, tl) 344fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(precrq_rs_ph_w, 0, tl, tl, tl, env) 345fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 346fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(precr_ob_qh, TCG_CALL_NO_RWG_SE, tl, tl, tl) 347fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(precr_sra_qh_pw, 348fcf5ef2aSThomas Huth TCG_CALL_NO_RWG_SE, tl, tl, tl, i32) 349fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(precr_sra_r_qh_pw, 350fcf5ef2aSThomas Huth TCG_CALL_NO_RWG_SE, tl, tl, tl, i32) 351fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(precrq_ob_qh, TCG_CALL_NO_RWG_SE, tl, tl, tl) 352fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(precrq_qh_pw, TCG_CALL_NO_RWG_SE, tl, tl, tl) 353fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(precrq_rs_qh_pw, 354fcf5ef2aSThomas Huth TCG_CALL_NO_RWG_SE, tl, tl, tl, env) 355fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(precrq_pw_l, TCG_CALL_NO_RWG_SE, tl, tl, tl) 356fcf5ef2aSThomas Huth #endif 357fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(precrqu_s_qb_ph, 0, tl, tl, tl, env) 358fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 359fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(precrqu_s_ob_qh, 360fcf5ef2aSThomas Huth TCG_CALL_NO_RWG_SE, tl, tl, tl, env) 361fcf5ef2aSThomas Huth 362fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(preceq_pw_qhl, TCG_CALL_NO_RWG_SE, tl, tl) 363fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(preceq_pw_qhr, TCG_CALL_NO_RWG_SE, tl, tl) 364fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(preceq_pw_qhla, TCG_CALL_NO_RWG_SE, tl, tl) 365fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(preceq_pw_qhra, TCG_CALL_NO_RWG_SE, tl, tl) 366fcf5ef2aSThomas Huth #endif 367fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(precequ_ph_qbl, TCG_CALL_NO_RWG_SE, tl, tl) 368fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(precequ_ph_qbr, TCG_CALL_NO_RWG_SE, tl, tl) 369fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(precequ_ph_qbla, TCG_CALL_NO_RWG_SE, tl, tl) 370fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(precequ_ph_qbra, TCG_CALL_NO_RWG_SE, tl, tl) 371fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 372fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(precequ_qh_obl, TCG_CALL_NO_RWG_SE, tl, tl) 373fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(precequ_qh_obr, TCG_CALL_NO_RWG_SE, tl, tl) 374fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(precequ_qh_obla, TCG_CALL_NO_RWG_SE, tl, tl) 375fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(precequ_qh_obra, TCG_CALL_NO_RWG_SE, tl, tl) 376fcf5ef2aSThomas Huth #endif 377fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(preceu_ph_qbl, TCG_CALL_NO_RWG_SE, tl, tl) 378fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(preceu_ph_qbr, TCG_CALL_NO_RWG_SE, tl, tl) 379fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(preceu_ph_qbla, TCG_CALL_NO_RWG_SE, tl, tl) 380fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(preceu_ph_qbra, TCG_CALL_NO_RWG_SE, tl, tl) 381fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 382fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(preceu_qh_obl, TCG_CALL_NO_RWG_SE, tl, tl) 383fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(preceu_qh_obr, TCG_CALL_NO_RWG_SE, tl, tl) 384fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(preceu_qh_obla, TCG_CALL_NO_RWG_SE, tl, tl) 385fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(preceu_qh_obra, TCG_CALL_NO_RWG_SE, tl, tl) 386fcf5ef2aSThomas Huth #endif 387fcf5ef2aSThomas Huth 388fcf5ef2aSThomas Huth /* DSP GPR-Based Shift Sub-class insns */ 389fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(shll_qb, 0, tl, tl, tl, env) 390fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 391fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(shll_ob, 0, tl, tl, tl, env) 392fcf5ef2aSThomas Huth #endif 393fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(shll_ph, 0, tl, tl, tl, env) 394fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(shll_s_ph, 0, tl, tl, tl, env) 395fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 396fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(shll_qh, 0, tl, tl, tl, env) 397fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(shll_s_qh, 0, tl, tl, tl, env) 398fcf5ef2aSThomas Huth #endif 399fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(shll_s_w, 0, tl, tl, tl, env) 400fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 401fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(shll_pw, 0, tl, tl, tl, env) 402fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(shll_s_pw, 0, tl, tl, tl, env) 403fcf5ef2aSThomas Huth #endif 404fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(shrl_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl) 405fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(shrl_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl) 406fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 407fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(shrl_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl) 408fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(shrl_qh, TCG_CALL_NO_RWG_SE, tl, tl, tl) 409fcf5ef2aSThomas Huth #endif 410fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(shra_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl) 411fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(shra_r_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl) 412fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 413fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(shra_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl) 414fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(shra_r_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl) 415fcf5ef2aSThomas Huth #endif 416fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(shra_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl) 417fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(shra_r_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl) 418fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(shra_r_w, TCG_CALL_NO_RWG_SE, tl, tl, tl) 419fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 420fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(shra_qh, TCG_CALL_NO_RWG_SE, tl, tl, tl) 421fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(shra_r_qh, TCG_CALL_NO_RWG_SE, tl, tl, tl) 422fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(shra_pw, TCG_CALL_NO_RWG_SE, tl, tl, tl) 423fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(shra_r_pw, TCG_CALL_NO_RWG_SE, tl, tl, tl) 424fcf5ef2aSThomas Huth #endif 425fcf5ef2aSThomas Huth 426fcf5ef2aSThomas Huth /* DSP Multiply Sub-class insns */ 427fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(muleu_s_ph_qbl, 0, tl, tl, tl, env) 428fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(muleu_s_ph_qbr, 0, tl, tl, tl, env) 429fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 430fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(muleu_s_qh_obl, 0, tl, tl, tl, env) 431fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(muleu_s_qh_obr, 0, tl, tl, tl, env) 432fcf5ef2aSThomas Huth #endif 433fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(mulq_rs_ph, 0, tl, tl, tl, env) 434fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 435fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(mulq_rs_qh, 0, tl, tl, tl, env) 436fcf5ef2aSThomas Huth #endif 437fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(muleq_s_w_phl, 0, tl, tl, tl, env) 438fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(muleq_s_w_phr, 0, tl, tl, tl, env) 439fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 440fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(muleq_s_pw_qhl, 0, tl, tl, tl, env) 441fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(muleq_s_pw_qhr, 0, tl, tl, tl, env) 442fcf5ef2aSThomas Huth #endif 443fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpau_h_qbl, 0, void, i32, tl, tl, env) 444fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpau_h_qbr, 0, void, i32, tl, tl, env) 445fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 446fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpau_h_obl, 0, void, tl, tl, i32, env) 447fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpau_h_obr, 0, void, tl, tl, i32, env) 448fcf5ef2aSThomas Huth #endif 449fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpsu_h_qbl, 0, void, i32, tl, tl, env) 450fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpsu_h_qbr, 0, void, i32, tl, tl, env) 451fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 452fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpsu_h_obl, 0, void, tl, tl, i32, env) 453fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpsu_h_obr, 0, void, tl, tl, i32, env) 454fcf5ef2aSThomas Huth #endif 455fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpa_w_ph, 0, void, i32, tl, tl, env) 456fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 457fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpa_w_qh, 0, void, tl, tl, i32, env) 458fcf5ef2aSThomas Huth #endif 459fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpax_w_ph, 0, void, i32, tl, tl, env) 460fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpaq_s_w_ph, 0, void, i32, tl, tl, env) 461fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 462fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpaq_s_w_qh, 0, void, tl, tl, i32, env) 463fcf5ef2aSThomas Huth #endif 464fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpaqx_s_w_ph, 0, void, i32, tl, tl, env) 465fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpaqx_sa_w_ph, 0, void, i32, tl, tl, env) 466fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dps_w_ph, 0, void, i32, tl, tl, env) 467fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 468fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dps_w_qh, 0, void, tl, tl, i32, env) 469fcf5ef2aSThomas Huth #endif 470fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpsx_w_ph, 0, void, i32, tl, tl, env) 471fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpsq_s_w_ph, 0, void, i32, tl, tl, env) 472fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 473fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpsq_s_w_qh, 0, void, tl, tl, i32, env) 474fcf5ef2aSThomas Huth #endif 475fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpsqx_s_w_ph, 0, void, i32, tl, tl, env) 476fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpsqx_sa_w_ph, 0, void, i32, tl, tl, env) 477fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(mulsaq_s_w_ph, 0, void, i32, tl, tl, env) 478fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 479fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(mulsaq_s_w_qh, 0, void, tl, tl, i32, env) 480fcf5ef2aSThomas Huth #endif 481fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpaq_sa_l_w, 0, void, i32, tl, tl, env) 482fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 483fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpaq_sa_l_pw, 0, void, tl, tl, i32, env) 484fcf5ef2aSThomas Huth #endif 485fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpsq_sa_l_w, 0, void, i32, tl, tl, env) 486fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 487fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dpsq_sa_l_pw, 0, void, tl, tl, i32, env) 488fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(mulsaq_s_l_pw, 0, void, tl, tl, i32, env) 489fcf5ef2aSThomas Huth #endif 490fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(maq_s_w_phl, 0, void, i32, tl, tl, env) 491fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(maq_s_w_phr, 0, void, i32, tl, tl, env) 492fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(maq_sa_w_phl, 0, void, i32, tl, tl, env) 493fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(maq_sa_w_phr, 0, void, i32, tl, tl, env) 494fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(mul_ph, 0, tl, tl, tl, env) 495fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(mul_s_ph, 0, tl, tl, tl, env) 496fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(mulq_s_ph, 0, tl, tl, tl, env) 497fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(mulq_s_w, 0, tl, tl, tl, env) 498fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(mulq_rs_w, 0, tl, tl, tl, env) 499fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(mulsa_w_ph, 0, void, i32, tl, tl, env) 500fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 501fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(maq_s_w_qhll, 0, void, tl, tl, i32, env) 502fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(maq_s_w_qhlr, 0, void, tl, tl, i32, env) 503fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(maq_s_w_qhrl, 0, void, tl, tl, i32, env) 504fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(maq_s_w_qhrr, 0, void, tl, tl, i32, env) 505fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(maq_sa_w_qhll, 0, void, tl, tl, i32, env) 506fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(maq_sa_w_qhlr, 0, void, tl, tl, i32, env) 507fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(maq_sa_w_qhrl, 0, void, tl, tl, i32, env) 508fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(maq_sa_w_qhrr, 0, void, tl, tl, i32, env) 509fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(maq_s_l_pwl, 0, void, tl, tl, i32, env) 510fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(maq_s_l_pwr, 0, void, tl, tl, i32, env) 511fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dmadd, 0, void, tl, tl, i32, env) 512fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dmaddu, 0, void, tl, tl, i32, env) 513fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dmsub, 0, void, tl, tl, i32, env) 514fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_4(dmsubu, 0, void, tl, tl, i32, env) 515fcf5ef2aSThomas Huth #endif 516fcf5ef2aSThomas Huth 517fcf5ef2aSThomas Huth /* DSP Bit/Manipulation Sub-class insns */ 518fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_1(bitrev, TCG_CALL_NO_RWG_SE, tl, tl) 519fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(insv, 0, tl, env, tl, tl) 520fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 521fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(dinsv, 0, tl, env, tl, tl) 522fcf5ef2aSThomas Huth #endif 523fcf5ef2aSThomas Huth 524fcf5ef2aSThomas Huth /* DSP Compare-Pick Sub-class insns */ 525fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(cmpu_eq_qb, 0, void, tl, tl, env) 526fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(cmpu_lt_qb, 0, void, tl, tl, env) 527fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(cmpu_le_qb, 0, void, tl, tl, env) 528fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(cmpgu_eq_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl) 529fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(cmpgu_lt_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl) 530fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(cmpgu_le_qb, TCG_CALL_NO_RWG_SE, tl, tl, tl) 531fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(cmp_eq_ph, 0, void, tl, tl, env) 532fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(cmp_lt_ph, 0, void, tl, tl, env) 533fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(cmp_le_ph, 0, void, tl, tl, env) 534fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 535fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(cmpu_eq_ob, 0, void, tl, tl, env) 536fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(cmpu_lt_ob, 0, void, tl, tl, env) 537fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(cmpu_le_ob, 0, void, tl, tl, env) 538fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(cmpgdu_eq_ob, 0, tl, tl, tl, env) 539fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(cmpgdu_lt_ob, 0, tl, tl, tl, env) 540fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(cmpgdu_le_ob, 0, tl, tl, tl, env) 541fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(cmpgu_eq_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl) 542fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(cmpgu_lt_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl) 543fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(cmpgu_le_ob, TCG_CALL_NO_RWG_SE, tl, tl, tl) 544fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(cmp_eq_qh, 0, void, tl, tl, env) 545fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(cmp_lt_qh, 0, void, tl, tl, env) 546fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(cmp_le_qh, 0, void, tl, tl, env) 547fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(cmp_eq_pw, 0, void, tl, tl, env) 548fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(cmp_lt_pw, 0, void, tl, tl, env) 549fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(cmp_le_pw, 0, void, tl, tl, env) 550fcf5ef2aSThomas Huth #endif 551fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(pick_qb, 0, tl, tl, tl, env) 552fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(pick_ph, 0, tl, tl, tl, env) 553fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 554fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(pick_ob, 0, tl, tl, tl, env) 555fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(pick_qh, 0, tl, tl, tl, env) 556fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(pick_pw, 0, tl, tl, tl, env) 557fcf5ef2aSThomas Huth #endif 558fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(packrl_ph, TCG_CALL_NO_RWG_SE, tl, tl, tl) 559fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 560fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(packrl_pw, TCG_CALL_NO_RWG_SE, tl, tl, tl) 561fcf5ef2aSThomas Huth #endif 562fcf5ef2aSThomas Huth 563fcf5ef2aSThomas Huth /* DSP Accumulator and DSPControl Access Sub-class insns */ 564fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(extr_w, 0, tl, tl, tl, env) 565fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(extr_r_w, 0, tl, tl, tl, env) 566fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(extr_rs_w, 0, tl, tl, tl, env) 567fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 568fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(dextr_w, 0, tl, tl, tl, env) 569fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(dextr_r_w, 0, tl, tl, tl, env) 570fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(dextr_rs_w, 0, tl, tl, tl, env) 571fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(dextr_l, 0, tl, tl, tl, env) 572fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(dextr_r_l, 0, tl, tl, tl, env) 573fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(dextr_rs_l, 0, tl, tl, tl, env) 574fcf5ef2aSThomas Huth #endif 575fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(extr_s_h, 0, tl, tl, tl, env) 576fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 577fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(dextr_s_h, 0, tl, tl, tl, env) 578fcf5ef2aSThomas Huth #endif 579fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(extp, 0, tl, tl, tl, env) 580fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(extpdp, 0, tl, tl, tl, env) 581fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 582fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(dextp, 0, tl, tl, tl, env) 583fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(dextpdp, 0, tl, tl, tl, env) 584fcf5ef2aSThomas Huth #endif 585fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(shilo, 0, void, tl, tl, env) 586fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 587fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(dshilo, 0, void, tl, tl, env) 588fcf5ef2aSThomas Huth #endif 589fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(mthlip, 0, void, tl, tl, env) 590fcf5ef2aSThomas Huth #if defined(TARGET_MIPS64) 591fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(dmthlip, 0, void, tl, tl, env) 592fcf5ef2aSThomas Huth #endif 593fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_3(wrdsp, 0, void, tl, tl, env) 594fcf5ef2aSThomas Huth DEF_HELPER_FLAGS_2(rddsp, 0, tl, tl, env) 595fcf5ef2aSThomas Huth 596ad520a97SPhilippe Mathieu-Daudé #ifndef CONFIG_USER_ONLY 597ad520a97SPhilippe Mathieu-Daudé #include "tcg/sysemu_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