Lines Matching refs:ot

238 static void gen_jmp_rel(DisasContext *s, MemOp ot, int diff, int tb_num);
240 static void gen_op(DisasContext *s1, int op, MemOp ot, int d);
408 static inline MemOp mo_pushpop(DisasContext *s, MemOp ot) in mo_pushpop() argument
411 return ot == MO_16 ? MO_16 : MO_64; in mo_pushpop()
413 return ot; in mo_pushpop()
424 static inline MemOp mo_64_32(MemOp ot) in mo_64_32() argument
427 return ot == MO_64 ? MO_64 : MO_32; in mo_64_32()
435 static inline MemOp mo_b_d(int b, MemOp ot) in mo_b_d() argument
437 return b & 1 ? ot : MO_8; in mo_b_d()
442 static inline MemOp mo_b_d32(int b, MemOp ot) in mo_b_d32() argument
444 return b & 1 ? (ot == MO_16 ? MO_16 : MO_32) : MO_8; in mo_b_d32()
455 static TCGv gen_op_deposit_reg_v(DisasContext *s, MemOp ot, int reg, TCGv dest, TCGv t0) in gen_op_deposit_reg_v() argument
457 switch(ot) { in gen_op_deposit_reg_v()
489 static void gen_op_mov_reg_v(DisasContext *s, MemOp ot, int reg, TCGv t0) in gen_op_mov_reg_v() argument
491 gen_op_deposit_reg_v(s, ot, reg, NULL, t0); in gen_op_mov_reg_v()
495 void gen_op_mov_v_reg(DisasContext *s, MemOp ot, TCGv t0, int reg) in gen_op_mov_v_reg() argument
497 if (ot == MO_8 && byte_reg_is_xH(s, reg)) { in gen_op_mov_v_reg()
704 static inline void gen_op_movl_T0_Dshift(DisasContext *s, MemOp ot) in gen_op_movl_T0_Dshift() argument
707 tcg_gen_shli_tl(s->T0, s->T0, ot); in gen_op_movl_T0_Dshift()
719 static void gen_extu(MemOp ot, TCGv reg) in gen_extu() argument
721 gen_ext_tl(reg, reg, ot, false); in gen_extu()
724 static void gen_exts(MemOp ot, TCGv reg) in gen_exts() argument
726 gen_ext_tl(reg, reg, ot, true); in gen_exts()
746 static void gen_helper_in_func(MemOp ot, TCGv v, TCGv_i32 n) in gen_helper_in_func() argument
748 switch (ot) { in gen_helper_in_func()
763 static void gen_helper_out_func(MemOp ot, TCGv_i32 v, TCGv_i32 n) in gen_helper_out_func() argument
765 switch (ot) { in gen_helper_out_func()
784 static bool gen_check_io(DisasContext *s, MemOp ot, TCGv_i32 port, in gen_check_io() argument
796 gen_helper_check_io(tcg_env, port, tcg_constant_i32(1 << ot)); in gen_check_io()
804 svm_flags |= 1 << (SVM_IOIO_SIZE_SHIFT + ot); in gen_check_io()
813 static void gen_movs(DisasContext *s, MemOp ot) in gen_movs() argument
816 gen_op_ld_v(s, ot, s->T0, s->A0); in gen_movs()
818 gen_op_st_v(s, ot, s->T0, s->A0); in gen_movs()
819 gen_op_movl_T0_Dshift(s, ot); in gen_movs()
1240 static void gen_stos(DisasContext *s, MemOp ot) in gen_stos() argument
1244 gen_op_st_v(s, ot, s->T0, s->A0); in gen_stos()
1245 gen_op_movl_T0_Dshift(s, ot); in gen_stos()
1249 static void gen_lods(DisasContext *s, MemOp ot) in gen_lods() argument
1252 gen_op_ld_v(s, ot, s->T0, s->A0); in gen_lods()
1253 gen_op_mov_reg_v(s, ot, R_EAX, s->T0); in gen_lods()
1254 gen_op_movl_T0_Dshift(s, ot); in gen_lods()
1258 static void gen_scas(DisasContext *s, MemOp ot) in gen_scas() argument
1261 gen_op_ld_v(s, ot, s->T1, s->A0); in gen_scas()
1262 gen_op(s, OP_CMPL, ot, R_EAX); in gen_scas()
1263 gen_op_movl_T0_Dshift(s, ot); in gen_scas()
1267 static void gen_cmps(DisasContext *s, MemOp ot) in gen_cmps() argument
1270 gen_op_ld_v(s, ot, s->T1, s->A0); in gen_cmps()
1272 gen_op(s, OP_CMPL, ot, OR_TMP0); in gen_cmps()
1273 gen_op_movl_T0_Dshift(s, ot); in gen_cmps()
1278 static void gen_bpt_io(DisasContext *s, TCGv_i32 t_port, int ot) in gen_bpt_io() argument
1285 TCGv_i32 t_size = tcg_constant_i32(1 << ot); in gen_bpt_io()
1292 static void gen_ins(DisasContext *s, MemOp ot) in gen_ins() argument
1298 gen_op_st_v(s, ot, s->T0, s->A0); in gen_ins()
1301 gen_helper_in_func(ot, s->T0, s->tmp2_i32); in gen_ins()
1302 gen_op_st_v(s, ot, s->T0, s->A0); in gen_ins()
1303 gen_op_movl_T0_Dshift(s, ot); in gen_ins()
1305 gen_bpt_io(s, s->tmp2_i32, ot); in gen_ins()
1308 static void gen_outs(DisasContext *s, MemOp ot) in gen_outs() argument
1311 gen_op_ld_v(s, ot, s->T0, s->A0); in gen_outs()
1316 gen_helper_out_func(ot, s->tmp2_i32, s->tmp3_i32); in gen_outs()
1317 gen_op_movl_T0_Dshift(s, ot); in gen_outs()
1319 gen_bpt_io(s, s->tmp2_i32, ot); in gen_outs()
1323 static void gen_repz(DisasContext *s, MemOp ot, in gen_repz() argument
1324 void (*fn)(DisasContext *s, MemOp ot)) in gen_repz()
1329 fn(s, ot); in gen_repz()
1342 static inline void gen_repz_ ## op(DisasContext *s, MemOp ot) \
1343 { gen_repz(s, ot, gen_##op); }
1345 static void gen_repz2(DisasContext *s, MemOp ot, int nz, in gen_repz2() argument
1346 void (*fn)(DisasContext *s, MemOp ot)) in gen_repz2()
1351 fn(s, ot); in gen_repz2()
1362 static inline void gen_repz_ ## op(DisasContext *s, MemOp ot, int nz) \
1363 { gen_repz2(s, ot, nz, gen_##op); }
1481 static void gen_op(DisasContext *s1, int op, MemOp ot, int d) in gen_op() argument
1490 gen_op_mov_v_reg(s1, ot, s1->T0, d); in gen_op()
1492 gen_op_ld_v(s1, ot, s1->T0, s1->A0); in gen_op()
1500 s1->mem_index, ot | MO_LE); in gen_op()
1504 gen_op_st_rm_T0_A0(s1, ot, d); in gen_op()
1507 set_cc_op(s1, CC_OP_ADCB + ot); in gen_op()
1515 s1->mem_index, ot | MO_LE); in gen_op()
1519 gen_op_st_rm_T0_A0(s1, ot, d); in gen_op()
1522 set_cc_op(s1, CC_OP_SBBB + ot); in gen_op()
1527 s1->mem_index, ot | MO_LE); in gen_op()
1530 gen_op_st_rm_T0_A0(s1, ot, d); in gen_op()
1533 set_cc_op(s1, CC_OP_ADDB + ot); in gen_op()
1539 s1->mem_index, ot | MO_LE); in gen_op()
1544 gen_op_st_rm_T0_A0(s1, ot, d); in gen_op()
1547 set_cc_op(s1, CC_OP_SUBB + ot); in gen_op()
1553 s1->mem_index, ot | MO_LE); in gen_op()
1556 gen_op_st_rm_T0_A0(s1, ot, d); in gen_op()
1559 set_cc_op(s1, CC_OP_LOGICB + ot); in gen_op()
1564 s1->mem_index, ot | MO_LE); in gen_op()
1567 gen_op_st_rm_T0_A0(s1, ot, d); in gen_op()
1570 set_cc_op(s1, CC_OP_LOGICB + ot); in gen_op()
1575 s1->mem_index, ot | MO_LE); in gen_op()
1578 gen_op_st_rm_T0_A0(s1, ot, d); in gen_op()
1581 set_cc_op(s1, CC_OP_LOGICB + ot); in gen_op()
1587 set_cc_op(s1, CC_OP_SUBB + ot); in gen_op()
1593 static void gen_inc(DisasContext *s1, MemOp ot, int d, int c) in gen_inc() argument
1603 s1->mem_index, ot | MO_LE); in gen_inc()
1606 gen_op_mov_v_reg(s1, ot, s1->T0, d); in gen_inc()
1608 gen_op_ld_v(s1, ot, s1->T0, s1->A0); in gen_inc()
1611 gen_op_st_rm_T0_A0(s1, ot, d); in gen_inc()
1616 set_cc_op(s1, (c > 0 ? CC_OP_INCB : CC_OP_DECB) + ot); in gen_inc()
1619 static void gen_shift_flags(DisasContext *s, MemOp ot, TCGv result, in gen_shift_flags() argument
1643 tcg_gen_movi_i32(s->tmp2_i32, (is_right ? CC_OP_SARB : CC_OP_SHLB) + ot); in gen_shift_flags()
1661 static void gen_shift_rm_T1(DisasContext *s, MemOp ot, int op1, in gen_shift_rm_T1() argument
1664 target_ulong mask = (ot == MO_64 ? 0x3f : 0x1f); in gen_shift_rm_T1()
1668 gen_op_ld_v(s, ot, s->T0, s->A0); in gen_shift_rm_T1()
1670 gen_op_mov_v_reg(s, ot, s->T0, op1); in gen_shift_rm_T1()
1678 gen_exts(ot, s->T0); in gen_shift_rm_T1()
1682 gen_extu(ot, s->T0); in gen_shift_rm_T1()
1692 gen_op_st_rm_T0_A0(s, ot, op1); in gen_shift_rm_T1()
1694 gen_shift_flags(s, ot, s->T0, s->tmp0, s->T1, is_right); in gen_shift_rm_T1()
1697 static void gen_shift_rm_im(DisasContext *s, MemOp ot, int op1, int op2, in gen_shift_rm_im() argument
1700 int mask = (ot == MO_64 ? 0x3f : 0x1f); in gen_shift_rm_im()
1704 gen_op_ld_v(s, ot, s->T0, s->A0); in gen_shift_rm_im()
1706 gen_op_mov_v_reg(s, ot, s->T0, op1); in gen_shift_rm_im()
1712 gen_exts(ot, s->T0); in gen_shift_rm_im()
1716 gen_extu(ot, s->T0); in gen_shift_rm_im()
1727 gen_op_st_rm_T0_A0(s, ot, op1); in gen_shift_rm_im()
1733 set_cc_op(s, (is_right ? CC_OP_SARB : CC_OP_SHLB) + ot); in gen_shift_rm_im()
1737 static void gen_rot_rm_T1(DisasContext *s, MemOp ot, int op1, int is_right) in gen_rot_rm_T1() argument
1739 target_ulong mask = (ot == MO_64 ? 0x3f : 0x1f); in gen_rot_rm_T1()
1744 gen_op_ld_v(s, ot, s->T0, s->A0); in gen_rot_rm_T1()
1746 gen_op_mov_v_reg(s, ot, s->T0, op1); in gen_rot_rm_T1()
1751 switch (ot) { in gen_rot_rm_T1()
1784 gen_op_st_rm_T0_A0(s, ot, op1); in gen_rot_rm_T1()
1820 static void gen_rot_rm_im(DisasContext *s, MemOp ot, int op1, int op2, in gen_rot_rm_im() argument
1823 int mask = (ot == MO_64 ? 0x3f : 0x1f); in gen_rot_rm_im()
1828 gen_op_ld_v(s, ot, s->T0, s->A0); in gen_rot_rm_im()
1830 gen_op_mov_v_reg(s, ot, s->T0, op1); in gen_rot_rm_im()
1835 switch (ot) { in gen_rot_rm_im()
1864 gen_extu(ot, s->T0); in gen_rot_rm_im()
1873 gen_op_st_rm_T0_A0(s, ot, op1); in gen_rot_rm_im()
1898 static void gen_rotc_rm_T1(DisasContext *s, MemOp ot, int op1, in gen_rotc_rm_T1() argument
1906 gen_op_ld_v(s, ot, s->T0, s->A0); in gen_rotc_rm_T1()
1908 gen_op_mov_v_reg(s, ot, s->T0, op1); in gen_rotc_rm_T1()
1911 switch (ot) { in gen_rotc_rm_T1()
1930 switch (ot) { in gen_rotc_rm_T1()
1950 gen_op_st_rm_T0_A0(s, ot, op1); in gen_rotc_rm_T1()
1954 static void gen_shiftd_rm_T1(DisasContext *s, MemOp ot, int op1, in gen_shiftd_rm_T1() argument
1957 target_ulong mask = (ot == MO_64 ? 63 : 31); in gen_shiftd_rm_T1()
1962 gen_op_ld_v(s, ot, s->T0, s->A0); in gen_shiftd_rm_T1()
1964 gen_op_mov_v_reg(s, ot, s->T0, op1); in gen_shiftd_rm_T1()
1970 switch (ot) { in gen_shiftd_rm_T1()
2013 if (ot == MO_16) { in gen_shiftd_rm_T1()
2032 gen_op_st_rm_T0_A0(s, ot, op1); in gen_shiftd_rm_T1()
2034 gen_shift_flags(s, ot, s->T0, s->tmp0, count, is_right); in gen_shiftd_rm_T1()
2037 static void gen_shift(DisasContext *s1, int op, MemOp ot, int d, int s) in gen_shift() argument
2040 gen_op_mov_v_reg(s1, ot, s1->T1, s); in gen_shift()
2043 gen_rot_rm_T1(s1, ot, d, 0); in gen_shift()
2046 gen_rot_rm_T1(s1, ot, d, 1); in gen_shift()
2050 gen_shift_rm_T1(s1, ot, d, 0, 0); in gen_shift()
2053 gen_shift_rm_T1(s1, ot, d, 1, 0); in gen_shift()
2056 gen_shift_rm_T1(s1, ot, d, 1, 1); in gen_shift()
2059 gen_rotc_rm_T1(s1, ot, d, 0); in gen_shift()
2062 gen_rotc_rm_T1(s1, ot, d, 1); in gen_shift()
2067 static void gen_shifti(DisasContext *s1, int op, MemOp ot, int d, int c) in gen_shifti() argument
2071 gen_rot_rm_im(s1, ot, d, c, 0); in gen_shifti()
2074 gen_rot_rm_im(s1, ot, d, c, 1); in gen_shifti()
2078 gen_shift_rm_im(s1, ot, d, c, 0, 0); in gen_shifti()
2081 gen_shift_rm_im(s1, ot, d, c, 1, 0); in gen_shifti()
2084 gen_shift_rm_im(s1, ot, d, c, 1, 1); in gen_shifti()
2089 gen_shift(s1, op, ot, d, OR_TMP1); in gen_shifti()
2356 MemOp ot, int reg, int is_store) in gen_ldst_modrm() argument
2365 gen_op_mov_v_reg(s, ot, s->T0, reg); in gen_ldst_modrm()
2366 gen_op_mov_reg_v(s, ot, rm, s->T0); in gen_ldst_modrm()
2368 gen_op_mov_v_reg(s, ot, s->T0, rm); in gen_ldst_modrm()
2370 gen_op_mov_reg_v(s, ot, reg, s->T0); in gen_ldst_modrm()
2376 gen_op_mov_v_reg(s, ot, s->T0, reg); in gen_ldst_modrm()
2377 gen_op_st_v(s, ot, s->T0, s->A0); in gen_ldst_modrm()
2379 gen_op_ld_v(s, ot, s->T0, s->A0); in gen_ldst_modrm()
2381 gen_op_mov_reg_v(s, ot, reg, s->T0); in gen_ldst_modrm()
2386 static target_ulong insn_get_addr(CPUX86State *env, DisasContext *s, MemOp ot) in insn_get_addr() argument
2390 switch (ot) { in insn_get_addr()
2411 static inline uint32_t insn_get(CPUX86State *env, DisasContext *s, MemOp ot) in insn_get() argument
2415 switch (ot) { in insn_get()
2434 static target_long insn_get_signed(CPUX86State *env, DisasContext *s, MemOp ot) in insn_get_signed() argument
2438 switch (ot) { in insn_get_signed()
2459 static inline int insn_const_size(MemOp ot) in insn_const_size() argument
2461 if (ot <= MO_32) { in insn_const_size()
2462 return 1 << ot; in insn_const_size()
2478 static void gen_cmovcc1(CPUX86State *env, DisasContext *s, MemOp ot, int b, in gen_cmovcc1() argument
2483 gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 0); in gen_cmovcc1()
2497 gen_op_mov_reg_v(s, ot, reg, s->T0); in gen_cmovcc1()
2585 static inline void gen_pop_update(DisasContext *s, MemOp ot) in gen_pop_update() argument
2587 gen_stack_update(s, 1 << ot); in gen_pop_update()
2830 static void gen_jmp_rel(DisasContext *s, MemOp ot, int diff, int tb_num) in gen_jmp_rel() argument
2839 if (ot == MO_16) { in gen_jmp_rel()
3068 MemOp ot, aflag, dflag; in disas_insn() local
3232 ot = mo_b_d(b, dflag); in disas_insn()
3248 gen_op_mov_reg_v(s, ot, reg, s->T0); in disas_insn()
3253 gen_op_mov_v_reg(s, ot, s->T1, reg); in disas_insn()
3254 gen_op(s, op, ot, opreg); in disas_insn()
3263 gen_op_ld_v(s, ot, s->T1, s->A0); in disas_insn()
3267 gen_op_mov_v_reg(s, ot, s->T1, rm); in disas_insn()
3269 gen_op(s, op, ot, reg); in disas_insn()
3272 val = insn_get(env, s, ot); in disas_insn()
3274 gen_op(s, op, ot, OR_EAX); in disas_insn()
3288 ot = mo_b_d(b, dflag); in disas_insn()
3299 s->rip_offset = insn_const_size(ot); in disas_insn()
3311 val = insn_get(env, s, ot); in disas_insn()
3318 gen_op(s, op, ot, opreg); in disas_insn()
3325 ot = dflag; in disas_insn()
3326 gen_inc(s, ot, OR_EAX + (b & 7), 1); in disas_insn()
3329 ot = dflag; in disas_insn()
3330 gen_inc(s, ot, OR_EAX + (b & 7), -1); in disas_insn()
3334 ot = mo_b_d(b, dflag); in disas_insn()
3342 s->rip_offset = insn_const_size(ot); in disas_insn()
3348 gen_op_ld_v(s, ot, s->T0, s->A0); in disas_insn()
3351 gen_op_mov_v_reg(s, ot, s->T0, rm); in disas_insn()
3356 val = insn_get(env, s, ot); in disas_insn()
3359 set_cc_op(s, CC_OP_LOGICB + ot); in disas_insn()
3368 s->mem_index, ot | MO_LE); in disas_insn()
3372 gen_op_st_v(s, ot, s->T0, s->A0); in disas_insn()
3374 gen_op_mov_reg_v(s, ot, rm, s->T0); in disas_insn()
3396 s->mem_index, ot | MO_LE); in disas_insn()
3403 gen_op_st_v(s, ot, s->T0, s->A0); in disas_insn()
3405 gen_op_mov_reg_v(s, ot, rm, s->T0); in disas_insn()
3409 set_cc_op(s, CC_OP_SUBB + ot); in disas_insn()
3412 switch(ot) { in disas_insn()
3461 switch(ot) { in disas_insn()
3515 switch(ot) { in disas_insn()
3534 switch(ot) { in disas_insn()
3559 ot = mo_b_d(b, dflag); in disas_insn()
3571 ot = MO_64; in disas_insn()
3573 ot = dflag != MO_16 ? MO_32 + REX_W(s) : MO_16; in disas_insn()
3576 ot = mo_pushpop(s, dflag); in disas_insn()
3582 gen_op_ld_v(s, ot, s->T0, s->A0); in disas_insn()
3584 gen_op_mov_v_reg(s, ot, s->T0, rm); in disas_insn()
3593 gen_inc(s, ot, opreg, 1); in disas_insn()
3600 gen_inc(s, ot, opreg, -1); in disas_insn()
3616 gen_op_ld_v(s, ot, s->T1, s->A0); in disas_insn()
3617 gen_add_A0_im(s, 1 << ot); in disas_insn()
3646 gen_op_ld_v(s, ot, s->T1, s->A0); in disas_insn()
3647 gen_add_A0_im(s, 1 << ot); in disas_insn()
3670 ot = mo_b_d(b, dflag); in disas_insn()
3675 gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 0); in disas_insn()
3676 gen_op_mov_v_reg(s, ot, s->T1, reg); in disas_insn()
3678 set_cc_op(s, CC_OP_LOGICB + ot); in disas_insn()
3683 ot = mo_b_d(b, dflag); in disas_insn()
3684 val = insn_get(env, s, ot); in disas_insn()
3686 gen_op_mov_v_reg(s, ot, s->T0, OR_EAX); in disas_insn()
3689 set_cc_op(s, CC_OP_LOGICB + ot); in disas_insn()
3743 ot = dflag; in disas_insn()
3747 s->rip_offset = insn_const_size(ot); in disas_insn()
3750 gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 0); in disas_insn()
3752 val = insn_get(env, s, ot); in disas_insn()
3758 gen_op_mov_v_reg(s, ot, s->T1, reg); in disas_insn()
3760 switch (ot) { in disas_insn()
3788 gen_op_mov_reg_v(s, ot, reg, s->T0); in disas_insn()
3791 set_cc_op(s, CC_OP_MULB + ot); in disas_insn()
3795 ot = mo_b_d(b, dflag); in disas_insn()
3799 gen_op_mov_v_reg(s, ot, s->T0, reg); in disas_insn()
3802 gen_op_mov_v_reg(s, ot, s->T1, rm); in disas_insn()
3804 gen_op_mov_reg_v(s, ot, reg, s->T1); in disas_insn()
3805 gen_op_mov_reg_v(s, ot, rm, s->T0); in disas_insn()
3810 s->mem_index, ot | MO_LE); in disas_insn()
3813 gen_op_ld_v(s, ot, s->T1, s->A0); in disas_insn()
3815 gen_op_st_v(s, ot, s->T0, s->A0); in disas_insn()
3817 gen_op_mov_reg_v(s, ot, reg, s->T1); in disas_insn()
3820 set_cc_op(s, CC_OP_ADDB + ot); in disas_insn()
3827 ot = mo_b_d(b, dflag); in disas_insn()
3834 gen_op_mov_v_reg(s, ot, newv, reg); in disas_insn()
3836 gen_extu(ot, cmpv); in disas_insn()
3843 s->mem_index, ot | MO_LE); in disas_insn()
3847 gen_op_mov_v_reg(s, ot, oldv, rm); in disas_insn()
3848 gen_extu(ot, oldv); in disas_insn()
3859 dest = gen_op_deposit_reg_v(s, ot, rm, newv, newv); in disas_insn()
3863 gen_op_ld_v(s, ot, oldv, s->A0); in disas_insn()
3872 gen_op_st_v(s, ot, newv, s->A0); in disas_insn()
3879 dest = gen_op_deposit_reg_v(s, ot, R_EAX, newv, oldv); in disas_insn()
3884 set_cc_op(s, CC_OP_SUBB + ot); in disas_insn()
3956 ot = gen_pop_T0(s); in disas_insn()
3958 gen_pop_update(s, ot); in disas_insn()
3959 gen_op_mov_reg_v(s, ot, (b & 7) | REX_B(s), s->T0); in disas_insn()
3973 ot = mo_pushpop(s, dflag); in disas_insn()
3975 val = insn_get(env, s, ot); in disas_insn()
3984 ot = gen_pop_T0(s); in disas_insn()
3987 gen_pop_update(s, ot); in disas_insn()
3989 gen_op_mov_reg_v(s, ot, rm, s->T0); in disas_insn()
3992 s->popl_esp_hack = 1 << ot; in disas_insn()
3993 gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 1); in disas_insn()
3995 gen_pop_update(s, ot); in disas_insn()
4029 ot = gen_pop_T0(s); in disas_insn()
4031 gen_pop_update(s, ot); in disas_insn()
4035 ot = gen_pop_T0(s); in disas_insn()
4037 gen_pop_update(s, ot); in disas_insn()
4044 ot = mo_b_d(b, dflag); in disas_insn()
4049 gen_ldst_modrm(env, s, modrm, ot, reg, 1); in disas_insn()
4053 ot = mo_b_d(b, dflag); in disas_insn()
4057 s->rip_offset = insn_const_size(ot); in disas_insn()
4060 val = insn_get(env, s, ot); in disas_insn()
4063 gen_op_st_v(s, ot, s->T0, s->A0); in disas_insn()
4065 gen_op_mov_reg_v(s, ot, (modrm & 7) | REX_B(s), s->T0); in disas_insn()
4070 ot = mo_b_d(b, dflag); in disas_insn()
4074 gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 0); in disas_insn()
4075 gen_op_mov_reg_v(s, ot, reg, s->T0); in disas_insn()
4092 ot = mod == 3 ? dflag : MO_16; in disas_insn()
4093 gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 1); in disas_insn()
4107 ot = (b & 1) + MO_8; in disas_insn()
4109 s_ot = b & 8 ? MO_SIGN | ot : ot; in disas_insn()
4120 gen_op_mov_v_reg(s, ot, s->T0, rm); in disas_insn()
4167 ot = mo_b_d(b, dflag); in disas_insn()
4172 gen_op_ld_v(s, ot, s->T0, s->A0); in disas_insn()
4173 gen_op_mov_reg_v(s, ot, R_EAX, s->T0); in disas_insn()
4175 gen_op_mov_v_reg(s, ot, s->T0, R_EAX); in disas_insn()
4176 gen_op_st_v(s, ot, s->T0, s->A0); in disas_insn()
4206 ot = dflag; in disas_insn()
4207 val = insn_get(env, s, ot); in disas_insn()
4210 gen_op_mov_reg_v(s, ot, reg, s->T0); in disas_insn()
4216 ot = dflag; in disas_insn()
4222 ot = mo_b_d(b, dflag); in disas_insn()
4229 gen_op_mov_v_reg(s, ot, s->T0, reg); in disas_insn()
4230 gen_op_mov_v_reg(s, ot, s->T1, rm); in disas_insn()
4231 gen_op_mov_reg_v(s, ot, rm, s->T0); in disas_insn()
4232 gen_op_mov_reg_v(s, ot, reg, s->T1); in disas_insn()
4235 gen_op_mov_v_reg(s, ot, s->T0, reg); in disas_insn()
4238 s->mem_index, ot | MO_LE); in disas_insn()
4239 gen_op_mov_reg_v(s, ot, reg, s->T1); in disas_insn()
4259 ot = dflag != MO_16 ? MO_32 : MO_16; in disas_insn()
4266 gen_op_ld_v(s, ot, s->T1, s->A0); in disas_insn()
4267 gen_add_A0_im(s, 1 << ot); in disas_insn()
4272 gen_op_mov_reg_v(s, ot, reg, s->T1); in disas_insn()
4283 ot = mo_b_d(b, dflag); in disas_insn()
4300 gen_shift(s, op, ot, opreg, OR_ECX); in disas_insn()
4305 gen_shifti(s, op, ot, opreg, shift); in disas_insn()
4336 ot = dflag; in disas_insn()
4347 gen_op_mov_v_reg(s, ot, s->T1, reg); in disas_insn()
4351 gen_shiftd_rm_T1(s, ot, opreg, op, imm); in disas_insn()
4353 gen_shiftd_rm_T1(s, ot, opreg, op, cpu_regs[R_ECX]); in disas_insn()
4921 ot = mo_b_d(b, dflag); in disas_insn()
4923 gen_repz_movs(s, ot); in disas_insn()
4925 gen_movs(s, ot); in disas_insn()
4931 ot = mo_b_d(b, dflag); in disas_insn()
4933 gen_repz_stos(s, ot); in disas_insn()
4935 gen_stos(s, ot); in disas_insn()
4940 ot = mo_b_d(b, dflag); in disas_insn()
4942 gen_repz_lods(s, ot); in disas_insn()
4944 gen_lods(s, ot); in disas_insn()
4949 ot = mo_b_d(b, dflag); in disas_insn()
4951 gen_repz_scas(s, ot, 1); in disas_insn()
4953 gen_repz_scas(s, ot, 0); in disas_insn()
4955 gen_scas(s, ot); in disas_insn()
4961 ot = mo_b_d(b, dflag); in disas_insn()
4963 gen_repz_cmps(s, ot, 1); in disas_insn()
4965 gen_repz_cmps(s, ot, 0); in disas_insn()
4967 gen_cmps(s, ot); in disas_insn()
4972 ot = mo_b_d32(b, dflag); in disas_insn()
4975 if (!gen_check_io(s, ot, s->tmp2_i32, in disas_insn()
4981 gen_repz_ins(s, ot); in disas_insn()
4983 gen_ins(s, ot); in disas_insn()
4988 ot = mo_b_d32(b, dflag); in disas_insn()
4991 if (!gen_check_io(s, ot, s->tmp2_i32, SVM_IOIO_STR_MASK)) { in disas_insn()
4996 gen_repz_outs(s, ot); in disas_insn()
4998 gen_outs(s, ot); in disas_insn()
5007 ot = mo_b_d32(b, dflag); in disas_insn()
5010 if (!gen_check_io(s, ot, s->tmp2_i32, SVM_IOIO_TYPE_MASK)) { in disas_insn()
5014 gen_helper_in_func(ot, s->T1, s->tmp2_i32); in disas_insn()
5015 gen_op_mov_reg_v(s, ot, R_EAX, s->T1); in disas_insn()
5016 gen_bpt_io(s, s->tmp2_i32, ot); in disas_insn()
5020 ot = mo_b_d32(b, dflag); in disas_insn()
5023 if (!gen_check_io(s, ot, s->tmp2_i32, 0)) { in disas_insn()
5027 gen_op_mov_v_reg(s, ot, s->T1, R_EAX); in disas_insn()
5029 gen_helper_out_func(ot, s->tmp2_i32, s->tmp3_i32); in disas_insn()
5030 gen_bpt_io(s, s->tmp2_i32, ot); in disas_insn()
5034 ot = mo_b_d32(b, dflag); in disas_insn()
5037 if (!gen_check_io(s, ot, s->tmp2_i32, SVM_IOIO_TYPE_MASK)) { in disas_insn()
5041 gen_helper_in_func(ot, s->T1, s->tmp2_i32); in disas_insn()
5042 gen_op_mov_reg_v(s, ot, R_EAX, s->T1); in disas_insn()
5043 gen_bpt_io(s, s->tmp2_i32, ot); in disas_insn()
5047 ot = mo_b_d32(b, dflag); in disas_insn()
5050 if (!gen_check_io(s, ot, s->tmp2_i32, 0)) { in disas_insn()
5054 gen_op_mov_v_reg(s, ot, s->T1, R_EAX); in disas_insn()
5056 gen_helper_out_func(ot, s->tmp2_i32, s->tmp3_i32); in disas_insn()
5057 gen_bpt_io(s, s->tmp2_i32, ot); in disas_insn()
5064 ot = gen_pop_T0(s); in disas_insn()
5065 gen_stack_update(s, val + (1 << ot)); in disas_insn()
5072 ot = gen_pop_T0(s); in disas_insn()
5073 gen_pop_update(s, ot); in disas_insn()
5137 ot = dflag; in disas_insn()
5138 offset = insn_get(env, s, ot); in disas_insn()
5160 ot = dflag; in disas_insn()
5161 offset = insn_get(env, s, ot); in disas_insn()
5200 ot = dflag; in disas_insn()
5203 gen_cmovcc1(env, s, ot, b, modrm, reg); in disas_insn()
5230 ot = gen_pop_T0(s); in disas_insn()
5232 gen_pop_update(s, ot); in disas_insn()
5279 ot = dflag; in disas_insn()
5288 gen_op_ld_v(s, ot, s->T0, s->A0); in disas_insn()
5291 gen_op_mov_v_reg(s, ot, s->T0, rm); in disas_insn()
5312 ot = dflag; in disas_insn()
5321 gen_exts(ot, s->T1); in disas_insn()
5322 tcg_gen_sari_tl(s->tmp0, s->T1, 3 + ot); in disas_insn()
5323 tcg_gen_shli_tl(s->tmp0, s->tmp0, ot); in disas_insn()
5327 gen_op_ld_v(s, ot, s->T0, s->A0); in disas_insn()
5330 gen_op_mov_v_reg(s, ot, s->T0, rm); in disas_insn()
5333 tcg_gen_andi_tl(s->T1, s->T1, (1 << (3 + ot)) - 1); in disas_insn()
5341 gen_op_ld_v(s, ot, s->T0, s->A0); in disas_insn()
5345 s->mem_index, ot | MO_LE); in disas_insn()
5350 s->mem_index, ot | MO_LE); in disas_insn()
5355 s->mem_index, ot | MO_LE); in disas_insn()
5378 gen_op_st_v(s, ot, s->T0, s->A0); in disas_insn()
5380 gen_op_mov_reg_v(s, ot, rm, s->T0); in disas_insn()
5417 ot = dflag; in disas_insn()
5420 gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 0); in disas_insn()
5421 gen_extu(ot, s->T0); in disas_insn()
5428 int size = 8 << ot; in disas_insn()
5442 set_cc_op(s, CC_OP_BMILGB + ot); in disas_insn()
5447 set_cc_op(s, CC_OP_LOGICB + ot); in disas_insn()
5463 gen_op_mov_reg_v(s, ot, reg, s->T0); in disas_insn()
5579 ot = dflag; in disas_insn()
5585 gen_op_mov_v_reg(s, ot, s->T0, reg); in disas_insn()
5588 if (ot == MO_16) { in disas_insn()
5756 ot = mod == 3 ? dflag : MO_16; in disas_insn()
5757 gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 1); in disas_insn()
5778 ot = mod == 3 ? dflag : MO_16; in disas_insn()
5779 gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 1); in disas_insn()
6057 ot = (mod != 3 ? MO_16 : s->dflag); in disas_insn()
6058 gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 1); in disas_insn()
6180 ot = MO_16; in disas_insn()
6187 gen_op_ld_v(s, ot, t0, s->A0); in disas_insn()
6189 gen_op_mov_v_reg(s, ot, t0, rm); in disas_insn()
6191 gen_op_mov_v_reg(s, ot, t1, reg); in disas_insn()
6202 gen_op_st_v(s, ot, t0, s->A0); in disas_insn()
6204 gen_op_mov_reg_v(s, ot, rm, t0); in disas_insn()
6218 ot = dflag != MO_16 ? MO_32 : MO_16; in disas_insn()
6232 gen_op_mov_reg_v(s, ot, reg, t0); in disas_insn()
6481 ot = (CODE64(s) ? MO_64 : MO_32); in disas_insn()
6486 gen_op_mov_v_reg(s, ot, s->T0, rm); in disas_insn()
6492 gen_op_mov_reg_v(s, ot, rm, s->T0); in disas_insn()
6508 ot = MO_64; in disas_insn()
6510 ot = MO_32; in disas_insn()
6516 gen_op_mov_v_reg(s, ot, s->T0, rm); in disas_insn()
6524 gen_op_mov_reg_v(s, ot, rm, s->T0); in disas_insn()
6540 ot = mo_64_32(dflag); in disas_insn()
6547 gen_ldst_modrm(env, s, modrm, ot, reg, 1); in disas_insn()
6778 ot = MO_16; in disas_insn()
6780 ot = mo_64_32(dflag); in disas_insn()
6783 gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 0); in disas_insn()
6784 gen_extu(ot, s->T0); in disas_insn()
6787 gen_op_mov_reg_v(s, ot, reg, s->T0); in disas_insn()