Home | History | Annotate | Download | only in target-i386

Lines Matching refs:ot

360 static inline void gen_op_mov_reg_v(int ot, int reg, TCGv t0)
362 switch(ot) {
393 static inline void gen_op_mov_reg_T0(int ot, int reg)
395 gen_op_mov_reg_v(ot, reg, cpu_T[0]);
398 static inline void gen_op_mov_reg_T1(int ot, int reg)
400 gen_op_mov_reg_v(ot, reg, cpu_T[1]);
429 static inline void gen_op_mov_v_reg(int ot, TCGv t0, int reg)
431 if (ot == OT_BYTE && byte_reg_is_xH(reg)) {
438 static inline void gen_op_mov_TN_reg(int ot, int t_index, int reg)
440 gen_op_mov_v_reg(ot, cpu_T[t_index], reg);
737 static inline void gen_op_movl_T0_Dshift(int ot)
740 tcg_gen_shli_tl(cpu_T[0], cpu_T[0], ot);
774 static void gen_extu(int ot, TCGv reg)
776 gen_ext_tl(reg, reg, ot, false);
779 static void gen_exts(int ot, TCGv reg)
781 gen_ext_tl(reg, reg, ot, true);
798 static void gen_helper_in_func(int ot, TCGv v, TCGv_i32 n)
800 switch (ot) {
813 static void gen_helper_out_func(int ot, TCGv_i32 v, TCGv_i32 n)
815 switch (ot) {
828 static void gen_check_io(DisasContext *s, int ot, target_ulong cur_eip,
840 switch (ot) {
858 svm_flags |= (1 << (4 + ot));
867 static inline void gen_movs(DisasContext *s, int ot)
870 gen_op_ld_T0_A0(ot + s->mem_index);
872 gen_op_st_T0_A0(ot + s->mem_index);
873 gen_op_movl_T0_Dshift(ot);
1314 static inline void gen_stos(DisasContext *s, int ot)
1318 gen_op_st_T0_A0(ot + s->mem_index);
1319 gen_op_movl_T0_Dshift(ot);
1323 static inline void gen_lods(DisasContext *s, int ot)
1326 gen_op_ld_T0_A0(ot + s->mem_index);
1327 gen_op_mov_reg_T0(ot, R_EAX);
1328 gen_op_movl_T0_Dshift(ot);
1332 static inline void gen_scas(DisasContext *s, int ot)
1336 gen_op_ld_T1_A0(ot + s->mem_index);
1338 gen_op_movl_T0_Dshift(ot);
1340 set_cc_op(s, CC_OP_SUBB + ot);
1343 static inline void gen_cmps(DisasContext *s, int ot)
1346 gen_op_ld_T0_A0(ot + s->mem_index);
1348 gen_op_ld_T1_A0(ot + s->mem_index);
1350 gen_op_movl_T0_Dshift(ot);
1353 set_cc_op(s, CC_OP_SUBB + ot);
1356 static inline void gen_ins(DisasContext *s, int ot)
1364 gen_op_st_T0_A0(ot + s->mem_index);
1368 gen_helper_in_func(ot, cpu_T[0], cpu_tmp2_i32);
1369 gen_op_st_T0_A0(ot + s->mem_index);
1370 gen_op_movl_T0_Dshift(ot);
1376 static inline void gen_outs(DisasContext *s, int ot)
1381 gen_op_ld_T0_A0(ot + s->mem_index);
1387 gen_helper_out_func(ot, cpu_tmp2_i32, cpu_tmp3_i32);
1389 gen_op_movl_T0_Dshift(ot);
1398 static inline void gen_repz_ ## op(DisasContext *s, int ot, \
1404 gen_ ## op(s, ot); \
1414 static inline void gen_repz_ ## op(DisasContext *s, int ot, \
1422 gen_ ## op(s, ot); \
1496 static void gen_op(DisasContext *s1, int op, int ot, int d)
1499 gen_op_mov_TN_reg(ot, 0, d);
1501 gen_op_ld_T0_A0(ot + s1->mem_index);
1509 gen_op_mov_reg_T0(ot, d);
1511 gen_op_st_T0_A0(ot + s1->mem_index);
1516 tcg_gen_addi_i32(cpu_cc_op, cpu_tmp2_i32, CC_OP_ADDB + ot);
1524 gen_op_mov_reg_T0(ot, d);
1526 gen_op_st_T0_A0(ot + s1->mem_index);
1531 tcg_gen_addi_i32(cpu_cc_op, cpu_tmp2_i32, CC_OP_SUBB + ot);
1537 gen_op_mov_reg_T0(ot, d);
1539 gen_op_st_T0_A0(ot + s1->mem_index);
1541 set_cc_op(s1, CC_OP_ADDB + ot);
1546 gen_op_mov_reg_T0(ot, d);
1548 gen_op_st_T0_A0(ot + s1->mem_index);
1550 set_cc_op(s1, CC_OP_SUBB + ot);
1556 gen_op_mov_reg_T0(ot, d);
1558 gen_op_st_T0_A0(ot + s1->mem_index);
1560 set_cc_op(s1, CC_OP_LOGICB + ot);
1565 gen_op_mov_reg_T0(ot, d);
1567 gen_op_st_T0_A0(ot + s1->mem_index);
1569 set_cc_op(s1, CC_OP_LOGICB + ot);
1574 gen_op_mov_reg_T0(ot, d);
1576 gen_op_st_T0_A0(ot + s1->mem_index);
1578 set_cc_op(s1, CC_OP_LOGICB + ot);
1582 set_cc_op(s1, CC_OP_SUBB + ot);
1588 static void gen_inc(DisasContext *s1, int ot, int d, int c)
1591 gen_op_mov_TN_reg(ot, 0, d);
1593 gen_op_ld_T0_A0(ot + s1->mem_index);
1597 set_cc_op(s1, CC_OP_INCB + ot);
1600 set_cc_op(s1, CC_OP_DECB + ot);
1603 gen_op_mov_reg_T0(ot, d);
1605 gen_op_st_T0_A0(ot + s1->mem_index);
1609 static void gen_shift_rm_T1(DisasContext *s, int ot, int op1,
1616 if (ot == OT_QUAD)
1623 gen_op_ld_T0_A0(ot + s->mem_index);
1625 gen_op_mov_TN_reg(ot, 0, op1);
1634 gen_exts(ot, cpu_T[0]);
1638 gen_extu(ot, cpu_T[0]);
1649 gen_op_st_T0_A0(ot + s->mem_index);
1651 gen_op_mov_reg_T0(ot, op1);
1670 tcg_gen_movi_i32(cpu_cc_op, CC_OP_SARB + ot);
1672 tcg_gen_movi_i32(cpu_cc_op, CC_OP_SHLB + ot);
1681 static void gen_shift_rm_im(DisasContext *s, int ot, int op1, int op2,
1684 int mask = (ot == OT_QUAD ? 0x3f : 0x1f);
1688 gen_op_ld_T0_A0(ot + s->mem_index);
1690 gen_op_mov_TN_reg(ot, 0, op1);
1696 gen_exts(ot, cpu_T[0]);
1700 gen_extu(ot, cpu_T[0]);
1712 gen_op_st_T0_A0(ot + s->mem_index);
1714 gen_op_mov_reg_T0(ot, op1);
1721 set_cc_op(s, CC_OP_SARB + ot);
1723 set_cc_op(s, CC_OP_SHLB + ot);
1735 static void gen_rot_rm_T1(DisasContext *s, int ot, int op1, int is_right)
1747 if (ot == OT_QUAD)
1755 gen_op_ld_v(ot + s->mem_index, t0, a0);
1757 gen_op_mov_v_reg(ot, t0, op1);
1769 if (ot <= OT_WORD)
1770 tcg_gen_andi_tl(cpu_tmp0, t1, (1 << (3 + ot)) - 1);
1774 gen_extu(ot, t0);
1777 data_bits = 8 << ot;
1794 gen_op_st_v(ot + s->mem_index, t0, a0);
1796 gen_op_mov_reg_v(ot, op1, t0);
1825 static void gen_rot_rm_im(DisasContext *s, int ot, int op1, int op2,
1837 if (ot == OT_QUAD)
1845 gen_op_ld_v(ot + s->mem_index, t0, a0);
1847 gen_op_mov_v_reg(ot, t0, op1);
1850 gen_extu(ot, t0);
1854 data_bits = 8 << ot;
1856 int shift = op2 & ((1 << (3 + ot)) - 1);
1870 gen_op_st_v(ot + s->mem_index, t0, a0);
1872 gen_op_mov_reg_v(ot, op1, t0);
1901 static void gen_rotc_rm_T1(DisasContext *s, int ot, int op1,
1911 gen_op_ld_T0_A0(ot + s->mem_index);
1913 gen_op_mov_TN_reg(ot, 0, op1);
1916 switch (ot) {
1933 switch (ot) {
1952 gen_op_st_T0_A0(ot + s->mem_index);
1954 gen_op_mov_reg_T0(ot, op1);
1958 static void gen_shiftd_rm_T1_T3(DisasContext *s, int ot, int op1,
1970 if (ot == OT_QUAD)
1978 gen_op_ld_v(ot + s->mem_index, t0, a0);
1980 gen_op_mov_v_reg(ot, t0, op1);
1994 if (ot == OT_WORD) {
2029 data_bits = 8 << ot;
2031 if (ot == OT_LONG)
2042 if (ot == OT_LONG)
2058 gen_op_st_v(ot + s->mem_index, t0, a0);
2060 gen_op_mov_reg_v(ot, op1, t0);
2072 tcg_gen_movi_i32(cpu_cc_op, CC_OP_SARB + ot);
2074 tcg_gen_movi_i32(cpu_cc_op, CC_OP_SHLB + ot);
2085 static void gen_shift(DisasContext *s1, int op, int ot, int d, int s)
2088 gen_op_mov_TN_reg(ot, 1, s);
2091 gen_rot_rm_T1(s1, ot, d, 0);
2094 gen_rot_rm_T1(s1, ot, d, 1);
2098 gen_shift_rm_T1(s1, ot, d, 0, 0);
2101 gen_shift_rm_T1(s1, ot, d, 1, 0);
2104 gen_shift_rm_T1(s1, ot, d, 1, 1);
2107 gen_rotc_rm_T1(s1, ot, d, 0);
2110 gen_rotc_rm_T1(s1, ot, d, 1);
2115 static void gen_shifti(DisasContext *s1, int op, int ot, int d, int c)
2119 gen_rot_rm_im(s1, ot, d, c, 0);
2122 gen_rot_rm_im(s1, ot, d, c, 1);
2126 gen_shift_rm_im(s1, ot, d, c, 0, 0);
2129 gen_shift_rm_im(s1, ot, d, c, 1, 0);
2132 gen_shift_rm_im(s1, ot, d, c, 1, 1);
2137 gen_shift(s1, op, ot, d, OR_TMP1);
2404 int ot, int reg, int is_store)
2413 gen_op_mov_TN_reg(ot, 0, reg);
2414 gen_op_mov_reg_T0(ot, rm);
2416 gen_op_mov_TN_reg(ot, 0, rm);
2418 gen_op_mov_reg_T0(ot, reg);
2424 gen_op_mov_TN_reg(ot, 0, reg);
2425 gen_op_st_T0_A0(ot + s->mem_index);
2427 gen_op_ld_T0_A0(ot + s->mem_index);
2429 gen_op_mov_reg_T0(ot, reg);
2434 static inline uint32_t insn_get(CPUX86State *env, DisasContext *s, int ot)
2438 switch(ot) {
2456 static inline int insn_const_size(unsigned int ot)
2458 if (ot <= OT_LONG)
2459 return 1 << ot;
2786 int ot, opsize;
2791 ot = s->dflag ? OT_QUAD : OT_WORD;
2792 opsize = 1 << ot;
2800 gen_op_st_T0_A0(ot + s->mem_index);
2804 tcg_const_i32((ot == OT_QUAD)),
2807 gen_op_mov_reg_T1(ot, R_EBP);
2813 ot = s->dflag + OT_WORD;
2825 gen_op_st_T0_A0(ot + s->mem_index);
2832 gen_op_mov_reg_T1(ot, R_EBP);
3286 int b1, op1_offset, op2_offset, is_xmm, val, ot;
3709 ot = (s->dflag == 2) ? OT_QUAD : OT_LONG;
3710 gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 0);
3713 if (ot == OT_LONG) {
3761 ot = (s->dflag == 2) ? OT_QUAD : OT_LONG;
3776 if (ot == OT_LONG) {
3790 gen_op_mov_reg_T0(ot, reg);
3811 ot = (s->dflag == 2) ? OT_QUAD : OT_LONG;
3825 gen_op_mov_reg_T0(ot, reg);
3955 ot = OT_BYTE;
3958 ot = OT_WORD;
3960 ot = OT_LONG;
3962 ot = OT_QUAD;
3966 gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 0);
3968 cpu_T[0], tcg_const_i32(8 << ot));
3970 ot = (s->dflag == 2) ? OT_QUAD : OT_LONG;
3971 gen_op_mov_reg_T0(ot, reg);
3990 ot = (s->dflag == 2) ? OT_QUAD : OT_LONG;
4001 gen_op_mov_reg_T0(ot, rm);
4010 gen_op_mov_reg_T0(ot, rm);
4016 if (ot == OT_LONG) { /* pextrd */
4022 gen_op_mov_reg_v(ot, rm, cpu_T[0]);
4032 gen_op_mov_reg_v(ot, rm, cpu_tmp1_i64);
4045 gen_op_mov_reg_T0(ot, rm);
4090 if (ot == OT_LONG) { /* pinsrd */
4092 gen_op_mov_v_reg(ot, cpu_tmp0, rm);
4103 gen_op_mov_v_reg(ot, cpu_tmp1_i64, rm);
4272 int shift, ot;
4432 ot = OT_BYTE;
4434 ot = dflag + OT_WORD;
4449 set_cc_op(s, CC_OP_LOGICB + ot);
4450 gen_op_mov_reg_T0(ot, reg);
4456 gen_op_mov_TN_reg(ot, 1, reg);
4457 gen_op(s, op, ot, opreg);
4466 gen_op_ld_T1_A0(ot + s->mem_index);
4470 gen_op_mov_TN_reg(ot, 1, rm);
4472 gen_op(s, op, ot, reg);
4475 val = insn_get(env, s, ot);
4477 gen_op(s, op, ot, OR_EAX);
4493 ot = OT_BYTE;
4495 ot = dflag + OT_WORD;
4506 s->rip_offset = insn_const_size(ot);
4518 val = insn_get(env, s, ot);
4525 gen_op(s, op, ot, opreg);
4532 ot = dflag ? OT_LONG : OT_WORD;
4533 gen_inc(s, ot, OR_EAX + (b & 7), 1);
4536 ot = dflag ? OT_LONG : OT_WORD;
4537 gen_inc(s, ot, OR_EAX + (b & 7), -1);
4542 ot = OT_BYTE;
4544 ot = dflag + OT_WORD;
4552 s->rip_offset = insn_const_size(ot);
4554 gen_op_ld_T0_A0(ot + s->mem_index);
4556 gen_op_mov_TN_reg(ot, 0, rm);
4561 val = insn_get(env, s, ot);
4564 set_cc_op(s, CC_OP_LOGICB + ot);
4569 gen_op_st_T0_A0(ot + s->mem_index);
4571 gen_op_mov_reg_T0(ot, rm);
4577 gen_op_st_T0_A0(ot + s->mem_index);
4579 gen_op_mov_reg_T0(ot, rm);
4582 set_cc_op(s, CC_OP_SUBB + ot);
4585 switch(ot) {
4651 switch(ot) {
4721 switch(ot) {
4744 switch(ot) {
4774 ot = OT_BYTE;
4776 ot = dflag + OT_WORD;
4788 ot = OT_QUAD;
4792 ot = dflag ? OT_LONG : OT_WORD;
4795 ot = dflag ? OT_QUAD : OT_WORD;
4801 gen_op_ld_T0_A0(ot + s->mem_index);
4803 gen_op_mov_TN_reg(ot, 0, rm);
4812 gen_inc(s, ot, opreg, 1);
4819 gen_inc(s, ot, opreg, -1);
4832 gen_op_ld_T1_A0(ot + s->mem_index);
4833 gen_add_A0_im(s, 1 << (ot - OT_WORD + 1));
4858 gen_op_ld_T1_A0(ot + s->mem_index);
4859 gen_add_A0_im(s, 1 << (ot - OT_WORD + 1));
4886 ot = OT_BYTE;
4888 ot = dflag + OT_WORD;
4895 gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 0);
4896 gen_op_mov_TN_reg(ot, 1, reg);
4898 set_cc_op(s, CC_OP_LOGICB + ot);
4904 ot = OT_BYTE;
4906 ot = dflag + OT_WORD;
4907 val = insn_get(env, s, ot);
4909 gen_op_mov_TN_reg(ot, 0, OR_EAX);
4912 set_cc_op(s, CC_OP_LOGICB + ot);
4956 ot = dflag + OT_WORD;
4960 s->rip_offset = insn_const_size(ot);
4963 gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 0);
4965 val = insn_get(env, s, ot);
4971 gen_op_mov_TN_reg(ot, 1, reg);
4975 if (ot == OT_QUAD) {
4979 if (ot == OT_LONG) {
5012 gen_op_mov_reg_T0(ot, reg);
5013 set_cc_op(s, CC_OP_MULB + ot);
5018 ot = OT_BYTE;
5020 ot = dflag + OT_WORD;
5026 gen_op_mov_TN_reg(ot, 0, reg);
5027 gen_op_mov_TN_reg(ot, 1, rm);
5029 gen_op_mov_reg_T1(ot, reg);
5030 gen_op_mov_reg_T0(ot, rm);
5033 gen_op_mov_TN_reg(ot, 0, reg);
5034 gen_op_ld_T1_A0(ot + s->mem_index);
5036 gen_op_st_T0_A0(ot + s->mem_index);
5037 gen_op_mov_reg_T1(ot, reg);
5040 set_cc_op(s, CC_OP_ADDB + ot);
5049 ot = OT_BYTE;
5051 ot = dflag + OT_WORD;
5059 gen_op_mov_v_reg(ot, t1, reg);
5062 gen_op_mov_v_reg(ot, t0, rm);
5066 gen_op_ld_v(ot + s->mem_index, t0, a0);
5072 gen_extu(ot, t2);
5076 gen_op_mov_reg_v(ot, R_EAX, t0);
5079 gen_op_mov_reg_v(ot, rm, t1);
5083 gen_op_mov_reg_v(ot, R_EAX, t0);
5086 gen_op_st_v(ot + s->mem_index, t1, a0);
5090 set_cc_op(s, CC_OP_SUBB + ot);
5131 ot = dflag ? OT_QUAD : OT_WORD;
5133 ot = dflag + OT_WORD;
5138 gen_op_mov_reg_T0(ot, (b & 7) | REX_B(s));
5153 ot = dflag ? OT_QUAD : OT_WORD;
5155 ot = dflag + OT_WORD;
5158 val = insn_get(env, s, ot);
5166 ot = dflag ? OT_QUAD : OT_WORD;
5168 ot = dflag + OT_WORD;
5177 gen_op_mov_reg_T0(ot, rm);
5180 s->popl_esp_hack = 1 << ot;
5181 gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 1);
5209 ot = dflag ? OT_QUAD : OT_WORD;
5211 ot = dflag + OT_WORD;
5213 gen_op_mov_reg_T0(ot, R_EBP);
5268 ot = OT_BYTE;
5270 ot = dflag + OT_WORD;
5275 gen_ldst_modrm(env, s, modrm, ot, reg, 1);
5280 ot = OT_BYTE;
5282 ot = dflag + OT_WORD;
5286 s->rip_offset = insn_const_size(ot);
5289 val = insn_get(env, s, ot);
5292 gen_op_st_T0_A0(ot + s->mem_index);
5294 gen_op_mov_reg_T0(ot, (modrm & 7) | REX_B(s));
5299 ot = OT_BYTE;
5301 ot = OT_WORD + dflag;
5305 gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 0);
5306 gen_op_mov_reg_T0(ot, reg);
5336 ot = OT_WORD + dflag;
5338 ot = OT_WORD;
5339 gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 1);
5350 /* ot is the size of source */
5351 ot = (b & 1) + OT_BYTE;
5358 gen_op_mov_TN_reg(ot, 0, rm);
5359 switch(ot | (b & 8)) {
5378 gen_op_lds_T0_A0(ot + s->mem_index);
5380 gen_op_ldu_T0_A0(ot + s->mem_index);
5388 ot = dflag + OT_WORD;
5400 gen_op_mov_reg_A0(ot - OT_WORD, reg);
5411 ot = OT_BYTE;
5413 ot = dflag + OT_WORD;
5431 gen_op_ld_T0_A0(ot + s->mem_index);
5432 gen_op_mov_reg_T0(ot, R_EAX);
5434 gen_op_mov_TN_reg(ot, 0, R_EAX);
5435 gen_op_st_T0_A0(ot + s->mem_index);
5480 ot = dflag ? OT_LONG : OT_WORD;
5481 val = insn_get(env, s, ot);
5484 gen_op_mov_reg_T0(ot, reg);
5489 ot = dflag + OT_WORD;
5496 ot = OT_BYTE;
5498 ot = dflag + OT_WORD;
5505 gen_op_mov_TN_reg(ot, 0, reg);
5506 gen_op_mov_TN_reg(ot, 1, rm);
5507 gen_op_mov_reg_T0(ot, rm);
5508 gen_op_mov_reg_T1(ot, reg);
5511 gen_op_mov_TN_reg(ot, 0, reg);
5515 gen_op_ld_T1_A0(ot + s->mem_index);
5516 gen_op_st_T0_A0(ot + s->mem_index);
5519 gen_op_mov_reg_T1(ot, reg);
5541 ot = dflag ? OT_LONG : OT_WORD;
5548 gen_op_ld_T1_A0(ot + s->mem_index);
5549 gen_add_A0_im(s, 1 << (ot - OT_WORD + 1));
5554 gen_op_mov_reg_T1(ot, reg);
5570 ot = OT_BYTE;
5572 ot = dflag + OT_WORD;
5590 gen_shift(s, op, ot, opreg, OR_ECX);
5595 gen_shifti(s, op, ot, opreg, shift);
5626 ot = dflag + OT_WORD;
5637 gen_op_mov_TN_reg(ot, 1, reg);
5645 gen_shiftd_rm_T1_T3(s, ot, opreg, op);
6161 ot = OT_BYTE;
6163 ot = dflag + OT_WORD;
6166 gen_repz_movs(s, ot, pc_start - s->cs_base, s->pc - s->cs_base);
6168 gen_movs(s, ot);
6175 ot = OT_BYTE;
6177 ot = dflag + OT_WORD;
6180 gen_repz_stos(s, ot, pc_start - s->cs_base, s->pc - s->cs_base);
6182 gen_stos(s, ot);
6188 ot = OT_BYTE;
6190 ot = dflag + OT_WORD;
6192 gen_repz_lods(s, ot, pc_start - s->cs_base, s->pc - s->cs_base);
6194 gen_lods(s, ot);
6200 ot = OT_BYTE;
6202 ot = dflag + OT_WORD;
6204 gen_repz_scas(s, ot, pc_start - s->cs_base, s->pc - s->cs_base, 1);
6206 gen_repz_scas(s, ot, pc_start - s->cs_base, s->pc - s->cs_base, 0);
6208 gen_scas(s, ot);
6209 set_cc_op(s, CC_OP_SUBB + ot);
6216 ot = OT_BYTE;
6218 ot = dflag + OT_WORD;
6220 gen_repz_cmps(s, ot, pc_start - s->cs_base, s->pc - s->cs_base, 1);
6222 gen_repz_cmps(s, ot, pc_start - s->cs_base, s->pc - s->cs_base, 0);
6224 gen_cmps(s, ot);
6225 set_cc_op(s, CC_OP_SUBB + ot);
6231 ot = OT_BYTE;
6233 ot = dflag ? OT_LONG : OT_WORD;
6236 gen_check_io(s, ot, pc_start - s->cs_base,
6239 gen_repz_ins(s, ot, pc_start - s->cs_base, s->pc - s->cs_base);
6241 gen_ins(s, ot);
6250 ot = OT_BYTE;
6252 ot = dflag ? OT_LONG : OT_WORD;
6255 gen_check_io(s, ot, pc_start - s->cs_base,
6258 gen_repz_outs(s, ot, pc_start - s->cs_base, s->pc - s->cs_base);
6260 gen_outs(s, ot);
6273 ot = OT_BYTE;
6275 ot = dflag ? OT_LONG : OT_WORD;
6278 gen_check_io(s, ot, pc_start - s->cs_base,
6283 gen_helper_in_func(ot, cpu_T[1], cpu_tmp2_i32);
6284 gen_op_mov_reg_T1(ot, R_EAX);
6293 ot = OT_BYTE;
6295 ot = dflag ? OT_LONG : OT_WORD;
6298 gen_check_io(s, ot, pc_start - s->cs_base,
6300 gen_op_mov_TN_reg(ot, 1, R_EAX);
6307 gen_helper_out_func(ot, cpu_tmp2_i32, cpu_tmp3_i32);
6316 ot = OT_BYTE;
6318 ot = dflag ? OT_LONG : OT_WORD;
6321 gen_check_io(s, ot, pc_start - s->cs_base,
6326 gen_helper_in_func(ot, cpu_T[1], cpu_tmp2_i32);
6327 gen_op_mov_reg_T1(ot, R_EAX);
6336 ot = OT_BYTE;
6338 ot = dflag ? OT_LONG : OT_WORD;
6341 gen_check_io(s, ot, pc_start - s->cs_base,
6343 gen_op_mov_TN_reg(ot, 1, R_EAX);
6350 gen_helper_out_func(ot, cpu_tmp2_i32, cpu_tmp3_i32);
6452 ot = dflag ? OT_LONG : OT_WORD;
6453 offset = insn_get(env, s, ot);
6478 ot = dflag ? OT_LONG : OT_WORD;
6479 offset = insn_get(env, s, ot);
6520 ot = dflag + OT_WORD;
6527 gen_op_ld_v(ot + s->mem_index, t0, cpu_A0);
6530 gen_op_mov_v_reg(ot, t0, rm);
6533 if (ot == OT_LONG) {
6546 gen_op_mov_reg_v(ot, reg, t0);
6664 ot = dflag + OT_WORD;
6672 gen_op_ld_T0_A0(ot + s->mem_index);
6674 gen_op_mov_TN_reg(ot, 0, rm);
6695 ot = dflag + OT_WORD;
6704 gen_exts(ot, cpu_T[1]);
6705 tcg_gen_sari_tl(cpu_tmp0, cpu_T[1], 3 + ot);
6706 tcg_gen_shli_tl(cpu_tmp0, cpu_tmp0, ot);
6708 gen_op_ld_T0_A0(ot + s->mem_index);
6710 gen_op_mov_TN_reg(ot, 0, rm);
6713 tcg_gen_andi_tl(cpu_T[1], cpu_T[1], (1 << (3 + ot)) - 1);
6740 set_cc_op(s, CC_OP_SARB + ot);
6743 gen_op_st_T0_A0(ot + s->mem_index);
6745 gen_op_mov_reg_T0(ot, rm);
6756 ot = dflag + OT_WORD;
6759 gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 0);
6760 gen_extu(ot, cpu_T[0]);
6771 gen_op_mov_reg_T0(ot, reg);
6774 set_cc_op(s, CC_OP_LOGICB + ot);
6920 ot = dflag ? OT_LONG : OT_WORD;
6926 gen_op_mov_TN_reg(ot, 0, reg);
6930 if (ot == OT_WORD) {
7106 ot = OT_WORD;
7108 ot += s->dflag;
7109 gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 1);
7129 ot = OT_WORD;
7131 ot += s->dflag;
7132 gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 1);
7434 ot = OT_WORD;
7441 gen_op_ld_v(ot + s->mem_index, t0, cpu_A0);
7443 gen_op_mov_v_reg(ot, t0, rm);
7445 gen_op_mov_v_reg(ot, t1, reg);
7456 gen_op_st_v(ot + s->mem_index, t0, cpu_A0);
7458 gen_op_mov_reg_v(ot, rm, t0);
7475 ot = dflag ? OT_LONG : OT_WORD;
7489 gen_op_mov_reg_v(ot, reg, t0);
7529 ot = OT_QUAD;
7531 ot = OT_LONG;
7541 gen_op_mov_TN_reg(ot, 0, rm);
7547 gen_op_mov_reg_T0(ot, rm);
7566 ot = OT_QUAD;
7568 ot = OT_LONG;
7574 gen_op_mov_TN_reg(ot, 0, rm);
7581 gen_op_mov_reg_T0(ot, rm);
7600 ot = s->dflag == 2 ? OT_QUAD : OT_LONG;
7607 gen_ldst_modrm(env, s, modrm, ot, reg, 1);
7708 ot = OT_WORD;
7710 ot = OT_LONG;
7712 ot = OT_QUAD;
7714 gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 0);
7715 gen_helper_popcnt(cpu_T[0], cpu_env, cpu_T[0], tcg_const_i32(ot));
7716 gen_op_mov_reg_T0(ot, reg);