2021-02-18 19:51:45 +01:00
|
|
|
// TODO: set helper call flags
|
|
|
|
|
2020-12-16 20:19:01 +01:00
|
|
|
#define dh_alias_Reg ptr
|
|
|
|
#define dh_alias_f80 ptr
|
|
|
|
#define dh_ctype_Reg E2KReg *
|
|
|
|
#define dh_ctype_f80 floatx80 *
|
|
|
|
#define dh_typecode_Reg dh_typecode_ptr
|
|
|
|
#define dh_typecode_f80 dh_typecode_ptr
|
|
|
|
#define dh_is_signed_Reg dh_is_signed_ptr
|
|
|
|
#define dh_is_signed_f80 dh_is_signed_ptr
|
|
|
|
|
2020-11-10 13:06:44 +01:00
|
|
|
DEF_HELPER_2(raise_exception, noreturn, env, int)
|
2021-03-05 17:47:33 +01:00
|
|
|
DEF_HELPER_1(syscall, noreturn, env)
|
|
|
|
DEF_HELPER_1(break_restore_state, void, env)
|
|
|
|
DEF_HELPER_1(expand_stacks, void, env)
|
|
|
|
|
|
|
|
DEF_HELPER_4(call, void, env, i64, int, tl)
|
2020-11-28 10:32:50 +01:00
|
|
|
DEF_HELPER_2(prep_return, i64, env, int)
|
2020-11-23 07:14:26 +01:00
|
|
|
DEF_HELPER_1(return, void, env)
|
2021-02-02 12:47:14 +01:00
|
|
|
DEF_HELPER_1(signal_return, void, env)
|
2021-03-05 17:47:33 +01:00
|
|
|
|
2021-01-21 23:20:49 +01:00
|
|
|
DEF_HELPER_4(setwd, void, env, int, int, int)
|
2021-03-05 17:47:33 +01:00
|
|
|
|
|
|
|
DEF_HELPER_FLAGS_2(probe_read_access, TCG_CALL_NO_RWG, int, env, tl)
|
|
|
|
DEF_HELPER_FLAGS_2(probe_write_access, TCG_CALL_NO_RWG, int, env, tl)
|
2021-01-15 03:35:45 +01:00
|
|
|
|
2020-12-08 17:57:28 +01:00
|
|
|
DEF_HELPER_1(aau_load_program, void, env)
|
2021-02-07 13:57:36 +01:00
|
|
|
DEF_HELPER_4(mova_ptr, tl, env, int, int, int)
|
2020-12-08 17:57:28 +01:00
|
|
|
DEF_HELPER_3(aau_am, void, env, int, int)
|
2020-12-15 16:16:37 +01:00
|
|
|
DEF_HELPER_4(dam_lock_addr, void, env, i64, int, int)
|
|
|
|
DEF_HELPER_4(dam_unlock_addr, int, env, i64, int, int)
|
2020-12-09 20:12:43 +01:00
|
|
|
|
2021-03-05 17:47:33 +01:00
|
|
|
DEF_HELPER_2(getsp, i64, env, i32)
|
|
|
|
|
|
|
|
DEF_HELPER_FLAGS_2(rrd, TCG_CALL_NO_WG_SE, i64, env, int)
|
|
|
|
DEF_HELPER_3(rwd, void, env, int, i64)
|
|
|
|
DEF_HELPER_3(rws, void, env, int, i32)
|
|
|
|
|
|
|
|
DEF_HELPER_FLAGS_2(sxt, TCG_CALL_NO_RWG_SE, i64, i64, i32)
|
|
|
|
|
2021-01-15 03:35:45 +01:00
|
|
|
/* Packed Min/Max */
|
2021-03-05 17:47:33 +01:00
|
|
|
DEF_HELPER_FLAGS_2(pminub, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(pminsb, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(pminuh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(pminsh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(pminuw, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(pminsw, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(pmaxub, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(pmaxsb, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(pmaxuh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(pmaxsh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(pmaxuw, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(pmaxsw, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
2021-01-15 03:35:45 +01:00
|
|
|
|
2021-01-15 20:30:02 +01:00
|
|
|
/* Packed Cmp */
|
2021-03-05 17:47:33 +01:00
|
|
|
DEF_HELPER_FLAGS_2(pcmpeqb, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(pcmpeqh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(pcmpeqw, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(pcmpeqd, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(pcmpgtb, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(pcmpgth, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(pcmpgtw, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(pcmpgtd, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
2021-01-15 20:30:02 +01:00
|
|
|
|
2021-01-16 15:03:20 +01:00
|
|
|
/* Pached Horizontal Add */
|
2021-03-05 17:47:33 +01:00
|
|
|
DEF_HELPER_FLAGS_2(phaddh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(phaddw, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(phaddsh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
2021-01-16 15:03:20 +01:00
|
|
|
|
|
|
|
/* Packed Horizontal Sub */
|
2021-03-05 17:47:33 +01:00
|
|
|
DEF_HELPER_FLAGS_2(phsubh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(phsubw, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(phsubsh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
2021-01-16 15:03:20 +01:00
|
|
|
|
2021-01-15 21:49:11 +01:00
|
|
|
/* Packed Add using saturation */
|
2021-03-05 17:47:33 +01:00
|
|
|
DEF_HELPER_FLAGS_2(paddsb, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(paddsh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(paddusb, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(paddush, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
2021-01-15 21:49:11 +01:00
|
|
|
|
|
|
|
/* Packed Sub using saturation */
|
2021-03-05 17:47:33 +01:00
|
|
|
DEF_HELPER_FLAGS_2(psubsb, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(psubsh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(psubusb, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(psubush, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
2021-01-15 21:49:11 +01:00
|
|
|
|
2021-01-15 22:22:28 +01:00
|
|
|
/* Packed shifts */
|
2021-03-05 17:47:33 +01:00
|
|
|
DEF_HELPER_FLAGS_2(psllh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(psllw, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(psrlh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(psrlw, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
2021-01-15 22:22:28 +01:00
|
|
|
|
2021-01-15 23:23:31 +01:00
|
|
|
/* Packed shifts with sign */
|
2021-03-05 17:47:33 +01:00
|
|
|
DEF_HELPER_FLAGS_2(psrah, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(psraw, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
2021-01-15 23:23:31 +01:00
|
|
|
|
2021-01-16 00:00:47 +01:00
|
|
|
/* Packed Mul */
|
2021-03-05 17:47:33 +01:00
|
|
|
DEF_HELPER_FLAGS_2(pmaddh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(pmaddubsh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(pmulhh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(pmullh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(pmulhuh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(pmulubhh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(pmulhrsh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
2021-01-16 00:00:47 +01:00
|
|
|
|
2021-01-16 15:19:56 +01:00
|
|
|
/* Packed Sign Mul */
|
2021-03-05 17:47:33 +01:00
|
|
|
DEF_HELPER_FLAGS_2(psignb, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(psignh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(psignw, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
2021-01-16 15:19:56 +01:00
|
|
|
|
2021-01-16 09:59:04 +01:00
|
|
|
/* Packed Move Mask */
|
2021-03-05 17:47:33 +01:00
|
|
|
DEF_HELPER_FLAGS_2(pmovmskb, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(pmovmskps, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(pmovmskpd, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
2021-01-16 09:59:04 +01:00
|
|
|
|
2021-01-16 10:23:16 +01:00
|
|
|
/* Packed packs */
|
2021-03-05 17:47:33 +01:00
|
|
|
DEF_HELPER_FLAGS_2(packsshb, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(packushb, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(packsswh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(packuswh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
2021-01-16 10:23:16 +01:00
|
|
|
|
2021-01-16 12:09:59 +01:00
|
|
|
/* Packed unpacks */
|
2021-03-05 17:47:33 +01:00
|
|
|
DEF_HELPER_FLAGS_2(punpcklbh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(punpcklhw, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(punpcklwd, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(punpckhbh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(punpckhhw, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(punpckhwd, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
2021-01-16 12:09:59 +01:00
|
|
|
|
2021-01-16 11:10:53 +01:00
|
|
|
/* Packed shuffle */
|
2021-03-05 17:47:33 +01:00
|
|
|
DEF_HELPER_FLAGS_3(pshufb, TCG_CALL_NO_RWG_SE, i64, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_3(pmerge, TCG_CALL_NO_RWG_SE, i64, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(pshufh, TCG_CALL_NO_RWG_SE, i64, i64, i32)
|
|
|
|
DEF_HELPER_FLAGS_3(pshufw, TCG_CALL_NO_RWG_SE, i64, i64, i64, i32)
|
2021-01-16 11:10:53 +01:00
|
|
|
|
2021-01-16 00:27:25 +01:00
|
|
|
/* Packed uncategorized */
|
2021-03-05 17:47:33 +01:00
|
|
|
DEF_HELPER_FLAGS_2(psadbw, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(pavgusb, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(pavgush, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(phminposuh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(mpsadbh, TCG_CALL_NO_RWG_SE, i64, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_4(plog, TCG_CALL_NO_RWG_SE, i64, i32, i64, i64, i64)
|
2021-01-16 00:27:25 +01:00
|
|
|
|
2021-01-15 03:35:45 +01:00
|
|
|
/* Float 32/64 Ops */
|
2021-03-05 17:47:33 +01:00
|
|
|
DEF_HELPER_FLAGS_3(fadds, TCG_CALL_NO_RWG, i32, env, i32, i32)
|
|
|
|
DEF_HELPER_FLAGS_3(fsubs, TCG_CALL_NO_RWG, i32, env, i32, i32)
|
|
|
|
DEF_HELPER_FLAGS_3(fmuls, TCG_CALL_NO_RWG, i32, env, i32, i32)
|
|
|
|
DEF_HELPER_FLAGS_3(fdivs, TCG_CALL_NO_RWG, i32, env, i32, i32)
|
|
|
|
DEF_HELPER_FLAGS_3(fmins, TCG_CALL_NO_RWG, i32, env, i32, i32)
|
|
|
|
DEF_HELPER_FLAGS_3(fmaxs, TCG_CALL_NO_RWG, i32, env, i32, i32)
|
|
|
|
DEF_HELPER_FLAGS_3(fscales, TCG_CALL_NO_RWG, i32, env, i32, i32)
|
|
|
|
|
|
|
|
DEF_HELPER_FLAGS_3(faddd, TCG_CALL_NO_RWG, i64, env, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_3(fsubd, TCG_CALL_NO_RWG, i64, env, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_3(fmuld, TCG_CALL_NO_RWG, i64, env, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_3(fdivd, TCG_CALL_NO_RWG, i64, env, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_3(fmind, TCG_CALL_NO_RWG, i64, env, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_3(fmaxd, TCG_CALL_NO_RWG, i64, env, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_3(fscaled, TCG_CALL_NO_RWG, i64, env, i64, i32)
|
|
|
|
|
|
|
|
DEF_HELPER_FLAGS_2(frcps, TCG_CALL_NO_RWG, i32, env, i32)
|
|
|
|
DEF_HELPER_FLAGS_2(fsqrts, TCG_CALL_NO_RWG, i32, env, i32)
|
|
|
|
DEF_HELPER_FLAGS_2(frsqrts, TCG_CALL_NO_RWG, i32, env, i32)
|
|
|
|
DEF_HELPER_FLAGS_3(fsqrttd, TCG_CALL_NO_RWG, i64, env, i64, i64)
|
2021-01-15 03:35:45 +01:00
|
|
|
|
2021-02-08 20:31:41 +01:00
|
|
|
/* Packed Float ops */
|
2021-03-05 17:47:33 +01:00
|
|
|
DEF_HELPER_FLAGS_3(pfadds, TCG_CALL_NO_RWG, i64, env, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_3(pfsubs, TCG_CALL_NO_RWG, i64, env, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_3(pfmuls, TCG_CALL_NO_RWG, i64, env, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_3(pfmaxs, TCG_CALL_NO_RWG, i64, env, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_3(pfmins, TCG_CALL_NO_RWG, i64, env, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_3(pfhadds, TCG_CALL_NO_RWG, i64, env, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_3(pfhsubs, TCG_CALL_NO_RWG, i64, env, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_3(pfaddsubs, TCG_CALL_NO_RWG, i64, env, i64, i64)
|
|
|
|
|
|
|
|
DEF_HELPER_FLAGS_3(pfstoifs, TCG_CALL_NO_RWG, i64, env, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(pistofs, TCG_CALL_NO_RWG, i64, env, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(pfstois, TCG_CALL_NO_RWG, i64, env, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(pfstoistr, TCG_CALL_NO_RWG, i64, env, i64)
|
|
|
|
|
|
|
|
DEF_HELPER_FLAGS_3(pfcmpeqs, TCG_CALL_NO_RWG, i64, env, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_3(pfcmplts, TCG_CALL_NO_RWG, i64, env, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_3(pfcmples, TCG_CALL_NO_RWG, i64, env, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_3(pfcmpuods, TCG_CALL_NO_RWG, i64, env, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_3(pfcmpneqs, TCG_CALL_NO_RWG, i64, env, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_3(pfcmpnlts, TCG_CALL_NO_RWG, i64, env, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_3(pfcmpnles, TCG_CALL_NO_RWG, i64, env, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_3(pfcmpods, TCG_CALL_NO_RWG, i64, env, i64, i64)
|
2021-02-08 20:31:41 +01:00
|
|
|
|
2021-01-15 03:35:45 +01:00
|
|
|
/* Float x80 ops */
|
2021-03-05 17:47:33 +01:00
|
|
|
#define DEF_FX_OP2(op) \
|
|
|
|
DEF_HELPER_FLAGS_3(glue(op, ss), TCG_CALL_NO_RWG, i32, env, f80, i32) \
|
|
|
|
DEF_HELPER_FLAGS_3(glue(op, dd), TCG_CALL_NO_RWG, i64, env, f80, i64) \
|
|
|
|
DEF_HELPER_FLAGS_4(glue(op, sx), TCG_CALL_NO_RWG, void, f80, env, f80, i32) \
|
|
|
|
DEF_HELPER_FLAGS_4(glue(op, dx), TCG_CALL_NO_RWG, void, f80, env, f80, i64) \
|
|
|
|
DEF_HELPER_FLAGS_4(glue(op, xx), TCG_CALL_NO_RWG, void, f80, env, f80, f80) \
|
|
|
|
DEF_HELPER_FLAGS_3(glue(op, xd), TCG_CALL_NO_RWG, i64, env, f80, f80) \
|
|
|
|
DEF_HELPER_FLAGS_3(glue(op, xs), TCG_CALL_NO_RWG, i32, env, f80, f80)
|
|
|
|
|
|
|
|
DEF_FX_OP2(fxadd)
|
|
|
|
DEF_FX_OP2(fxsub)
|
|
|
|
DEF_FX_OP2(fxmul)
|
|
|
|
DEF_FX_OP2(fxdiv)
|
|
|
|
|
|
|
|
#undef DEF_FX_OP2
|
|
|
|
|
|
|
|
DEF_HELPER_FLAGS_3(fxdivtss, TCG_CALL_NO_RWG, f32, env, f32, f80)
|
|
|
|
DEF_HELPER_FLAGS_3(fxdivtdd, TCG_CALL_NO_RWG, f64, env, f64, f80)
|
|
|
|
DEF_HELPER_FLAGS_4(fxdivtsx, TCG_CALL_NO_RWG, void, f80, env, f32, f80)
|
|
|
|
DEF_HELPER_FLAGS_4(fxdivtdx, TCG_CALL_NO_RWG, void, f80, env, f64, f80)
|
|
|
|
|
|
|
|
DEF_HELPER_FLAGS_3(fxrsubss, TCG_CALL_NO_RWG, i32, env, f80, i32)
|
|
|
|
DEF_HELPER_FLAGS_3(fxrsubdd, TCG_CALL_NO_RWG, i64, env, f80, i64)
|
|
|
|
DEF_HELPER_FLAGS_4(fxrsubsx, TCG_CALL_NO_RWG, void, f80, env, f80, i32)
|
|
|
|
DEF_HELPER_FLAGS_4(fxrsubdx, TCG_CALL_NO_RWG, void, f80, env, f80, i64)
|
|
|
|
|
|
|
|
DEF_HELPER_FLAGS_4(fxsqrttsx, TCG_CALL_NO_RWG, void, f80, env, i32, f80)
|
|
|
|
DEF_HELPER_FLAGS_4(fxsqrttdx, TCG_CALL_NO_RWG, void, f80, env, i64, f80)
|
|
|
|
DEF_HELPER_FLAGS_4(fxsqrttxx, TCG_CALL_NO_RWG, void, f80, env, f80, f80)
|
|
|
|
|
|
|
|
DEF_HELPER_FLAGS_4(fxscalesx, TCG_CALL_NO_RWG, void, f80, env, f80, i32)
|
|
|
|
|
|
|
|
DEF_HELPER_FLAGS_3(fxcmpodsf, TCG_CALL_NO_RWG, i32, env, f80, f32)
|
|
|
|
DEF_HELPER_FLAGS_3(fxcmpudsf, TCG_CALL_NO_RWG, i32, env, f80, f32)
|
|
|
|
DEF_HELPER_FLAGS_3(fxcmpoddf, TCG_CALL_NO_RWG, i32, env, f80, f64)
|
|
|
|
DEF_HELPER_FLAGS_3(fxcmpuddf, TCG_CALL_NO_RWG, i32, env, f80, f64)
|
|
|
|
DEF_HELPER_FLAGS_3(fxcmpodxf, TCG_CALL_NO_RWG, i32, env, f80, f80)
|
|
|
|
DEF_HELPER_FLAGS_3(fxcmpudxf, TCG_CALL_NO_RWG, i32, env, f80, f80)
|
|
|
|
|
|
|
|
/* Float Comparisons */
|
|
|
|
#define DEF_HELPER_FP_CMP(P, S, R, A, B) \
|
|
|
|
DEF_HELPER_FLAGS_3(glue(glue(P, cmpeq), S), TCG_CALL_NO_RWG, R, env, A, B) \
|
|
|
|
DEF_HELPER_FLAGS_3(glue(glue(P, cmpneq), S), TCG_CALL_NO_RWG, R, env, A, B) \
|
|
|
|
DEF_HELPER_FLAGS_3(glue(glue(P, cmple), S), TCG_CALL_NO_RWG, R, env, A, B) \
|
|
|
|
DEF_HELPER_FLAGS_3(glue(glue(P, cmpnle), S), TCG_CALL_NO_RWG, R, env, A, B) \
|
|
|
|
DEF_HELPER_FLAGS_3(glue(glue(P, cmplt), S), TCG_CALL_NO_RWG, R, env, A, B) \
|
|
|
|
DEF_HELPER_FLAGS_3(glue(glue(P, cmpnlt), S), TCG_CALL_NO_RWG, R, env, A, B) \
|
|
|
|
DEF_HELPER_FLAGS_3(glue(glue(P, cmpuod), S), TCG_CALL_NO_RWG, R, env, A, B) \
|
|
|
|
DEF_HELPER_FLAGS_3(glue(glue(P, cmpod), S), TCG_CALL_NO_RWG, R, env, A, B)
|
|
|
|
|
|
|
|
DEF_HELPER_FP_CMP(f, s, i32, i32, i32)
|
|
|
|
DEF_HELPER_FP_CMP(f, d, i64, i64, i64)
|
|
|
|
DEF_HELPER_FP_CMP(fx, s, i64, f80, i32)
|
|
|
|
DEF_HELPER_FP_CMP(fx, d, i64, f80, i64)
|
|
|
|
DEF_HELPER_FP_CMP(fx, x, i64, f80, f80)
|
2020-12-09 23:23:46 +01:00
|
|
|
|
2021-01-15 03:35:45 +01:00
|
|
|
/* Float Flag Comparisons */
|
2021-03-05 17:47:33 +01:00
|
|
|
DEF_HELPER_FLAGS_3(fcmpodsf, TCG_CALL_NO_RWG, i32, env, i32, i32)
|
|
|
|
DEF_HELPER_FLAGS_3(fcmpudsf, TCG_CALL_NO_RWG, i32, env, i32, i32)
|
|
|
|
DEF_HELPER_FLAGS_3(fcmpoddf, TCG_CALL_NO_RWG, i64, env, i64, i64)
|
|
|
|
DEF_HELPER_FLAGS_3(fcmpuddf, TCG_CALL_NO_RWG, i64, env, i64, i64)
|
2021-01-15 03:35:45 +01:00
|
|
|
|
|
|
|
/* Float Conversions */
|
2021-03-05 17:47:33 +01:00
|
|
|
DEF_HELPER_FLAGS_2(fstofd, TCG_CALL_NO_RWG, i64, env, i32)
|
|
|
|
DEF_HELPER_FLAGS_3(fstofx, TCG_CALL_NO_RWG, void, f80, env, i32)
|
2020-12-16 20:19:01 +01:00
|
|
|
|
2021-03-05 17:47:33 +01:00
|
|
|
DEF_HELPER_FLAGS_2(fdtofs, TCG_CALL_NO_RWG, i32, env, i64)
|
|
|
|
DEF_HELPER_FLAGS_3(fdtofx, TCG_CALL_NO_RWG, void, f80, env, i64)
|
|
|
|
|
|
|
|
DEF_HELPER_FLAGS_2(fxtofs, TCG_CALL_NO_RWG, i32, env, f80)
|
|
|
|
DEF_HELPER_FLAGS_2(fxtofd, TCG_CALL_NO_RWG, i64, env, f80)
|
|
|
|
|
|
|
|
DEF_HELPER_FLAGS_2(istofs, TCG_CALL_NO_RWG, i32, env, i32)
|
|
|
|
DEF_HELPER_FLAGS_2(istofd, TCG_CALL_NO_RWG, i64, env, i32)
|
|
|
|
DEF_HELPER_FLAGS_3(istofx, TCG_CALL_NO_RWG, void, f80, env, i32)
|
2021-01-15 04:56:29 +01:00
|
|
|
|
2021-03-05 17:47:33 +01:00
|
|
|
DEF_HELPER_FLAGS_2(idtofs, TCG_CALL_NO_RWG, i32, env, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(idtofd, TCG_CALL_NO_RWG, i64, env, i64)
|
|
|
|
DEF_HELPER_FLAGS_3(idtofx, TCG_CALL_NO_RWG, void, f80, env, i64)
|
|
|
|
|
|
|
|
DEF_HELPER_FLAGS_2(fstois, TCG_CALL_NO_RWG, i32, env, i32)
|
|
|
|
DEF_HELPER_FLAGS_2(fstoid, TCG_CALL_NO_RWG, i64, env, i32)
|
|
|
|
DEF_HELPER_FLAGS_2(fstoistr, TCG_CALL_NO_RWG, i32, env, i32)
|
|
|
|
DEF_HELPER_FLAGS_2(fstoidtr, TCG_CALL_NO_RWG, i64, env, i32)
|
|
|
|
|
|
|
|
DEF_HELPER_FLAGS_2(fdtois, TCG_CALL_NO_RWG, i32, env, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(fdtoid, TCG_CALL_NO_RWG, i64, env, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(fdtoistr, TCG_CALL_NO_RWG, i32, env, i64)
|
|
|
|
DEF_HELPER_FLAGS_2(fdtoidtr, TCG_CALL_NO_RWG, i64, env, i64)
|
|
|
|
|
|
|
|
DEF_HELPER_FLAGS_2(fxtois, TCG_CALL_NO_RWG, i32, env, f80)
|
|
|
|
DEF_HELPER_FLAGS_2(fxtoistr, TCG_CALL_NO_RWG, i32, env, f80)
|
|
|
|
DEF_HELPER_FLAGS_2(fxtoid, TCG_CALL_NO_RWG, i64, env, f80)
|
|
|
|
DEF_HELPER_FLAGS_2(fxtoidtr, TCG_CALL_NO_RWG, i64, env, f80)
|
|
|
|
|
|
|
|
/* Float Rounding */
|
|
|
|
DEF_HELPER_FLAGS_3(fstoifs, TCG_CALL_NO_RWG, i32, env, i32, i32)
|
|
|
|
DEF_HELPER_FLAGS_3(fdtoifd, TCG_CALL_NO_RWG, i64, env, i64, i64)
|