[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 17/22] tcg-i386: Tidy unary arithmetic.
From: |
Aurelien Jarno |
Subject: |
Re: [Qemu-devel] [PATCH 17/22] tcg-i386: Tidy unary arithmetic. |
Date: |
Fri, 21 May 2010 11:41:51 +0200 |
User-agent: |
Mutt/1.5.20 (2009-06-14) |
On Wed, Apr 14, 2010 at 11:22:39AM -0700, Richard Henderson wrote:
> Define OPC_GRP3 and EXT3_FOO to match. Use them instead of
> bare constants.
>
> Define OPC_GRP5 and rename the existing EXT_BAR to EXT5_BAR to
> make it clear which extension should be used with which opcode.
>
> Signed-off-by: Richard Henderson <address@hidden>
Acked-by: Aurelien Jarno <address@hidden>
> ---
> tcg/i386/tcg-target.c | 38 +++++++++++++++++++++++++-------------
> 1 files changed, 25 insertions(+), 13 deletions(-)
>
> diff --git a/tcg/i386/tcg-target.c b/tcg/i386/tcg-target.c
> index 0c1a53a..c3f3e4d 100644
> --- a/tcg/i386/tcg-target.c
> +++ b/tcg/i386/tcg-target.c
> @@ -195,7 +195,11 @@ static inline int tcg_target_const_match(tcg_target_long
> val,
> #define OPC_SHIFT_cl (0xd3)
> #define OPC_TESTL (0x85)
>
> -/* Group 1 opcode extensions for 0x80-0x83. */
> +#define OPC_GRP3_Ev (0xf7)
> +#define OPC_GRP5 (0xff)
> +
> +/* Group 1 opcode extensions for 0x80-0x83.
> + These are also used as modifiers for OPC_ARITH. */
> #define ARITH_ADD 0
> #define ARITH_OR 1
> #define ARITH_ADC 2
> @@ -212,9 +216,17 @@ static inline int tcg_target_const_match(tcg_target_long
> val,
> #define SHIFT_SHR 5
> #define SHIFT_SAR 7
>
> -/* Group 5 opcode extensions for 0xff. */
> -#define EXT_CALLN_Ev 2
> -#define EXT_JMPN_Ev 4
> +/* Group 3 opcode extensions for 0xf6, 0xf7. To be used with OPC_GRP3. */
> +#define EXT3_NOT 2
> +#define EXT3_NEG 3
> +#define EXT3_MUL 4
> +#define EXT3_IMUL 5
> +#define EXT3_DIV 6
> +#define EXT3_IDIV 7
> +
> +/* Group 5 opcode extensions for 0xff. To be used with OPC_GRP5. */
> +#define EXT5_CALLN_Ev 2
> +#define EXT5_JMPN_Ev 4
>
> /* Condition codes to be added to OPC_JCC_{long,short}. */
> #define JCC_JMP (-1)
> @@ -1081,7 +1093,7 @@ static inline void tcg_out_op(TCGContext *s, TCGOpcode
> opc,
> tcg_out32(s, 0);
> } else {
> /* indirect jump method */
> - tcg_out_modrm_offset(s, 0xff, EXT_JMPN_Ev, -1,
> + tcg_out_modrm_offset(s, OPC_GRP5, EXT5_JMPN_Ev, -1,
> (tcg_target_long)(s->tb_next + args[0]));
> }
> s->tb_next_offset[args[0]] = s->code_ptr - s->code_buf;
> @@ -1091,7 +1103,7 @@ static inline void tcg_out_op(TCGContext *s, TCGOpcode
> opc,
> tcg_out_calli(s, args[0]);
> } else {
> /* call *reg */
> - tcg_out_modrm(s, 0xff, EXT_CALLN_Ev, args[0]);
> + tcg_out_modrm(s, OPC_GRP5, EXT5_CALLN_Ev, args[0]);
> }
> break;
> case INDEX_op_jmp:
> @@ -1100,7 +1112,7 @@ static inline void tcg_out_op(TCGContext *s, TCGOpcode
> opc,
> tcg_out32(s, args[0] - (tcg_target_long)s->code_ptr - 4);
> } else {
> /* jmp *reg */
> - tcg_out_modrm(s, 0xff, EXT_JMPN_Ev, args[0]);
> + tcg_out_modrm(s, OPC_GRP5, EXT5_JMPN_Ev, args[0]);
> }
> break;
> case INDEX_op_br:
> @@ -1177,13 +1189,13 @@ static inline void tcg_out_op(TCGContext *s,
> TCGOpcode opc,
> }
> break;
> case INDEX_op_mulu2_i32:
> - tcg_out_modrm(s, 0xf7, 4, args[3]);
> + tcg_out_modrm(s, OPC_GRP3_Ev, EXT3_MUL, args[3]);
> break;
> case INDEX_op_div2_i32:
> - tcg_out_modrm(s, 0xf7, 7, args[4]);
> + tcg_out_modrm(s, OPC_GRP3_Ev, EXT3_IDIV, args[4]);
> break;
> case INDEX_op_divu2_i32:
> - tcg_out_modrm(s, 0xf7, 6, args[4]);
> + tcg_out_modrm(s, OPC_GRP3_Ev, EXT3_DIV, args[4]);
> break;
> case INDEX_op_shl_i32:
> c = SHIFT_SHL;
> @@ -1247,11 +1259,11 @@ static inline void tcg_out_op(TCGContext *s,
> TCGOpcode opc,
> break;
>
> case INDEX_op_neg_i32:
> - tcg_out_modrm(s, 0xf7, 3, args[0]);
> + tcg_out_modrm(s, OPC_GRP3_Ev, EXT3_NEG, args[0]);
> break;
>
> case INDEX_op_not_i32:
> - tcg_out_modrm(s, 0xf7, 2, args[0]);
> + tcg_out_modrm(s, OPC_GRP3_Ev, EXT3_NOT, args[0]);
> break;
>
> case INDEX_op_ext8s_i32:
> @@ -1419,7 +1431,7 @@ void tcg_target_qemu_prologue(TCGContext *s)
> stack_addend = frame_size - push_size;
> tcg_out_addi(s, TCG_REG_ESP, -stack_addend);
>
> - tcg_out_modrm(s, 0xff, EXT_JMPN_Ev, TCG_REG_EAX); /* jmp *%eax */
> + tcg_out_modrm(s, OPC_GRP5, EXT5_JMPN_Ev, TCG_REG_EAX); /* jmp *%eax */
>
> /* TB epilogue */
> tb_ret_addr = s->code_ptr;
> --
> 1.6.6.1
>
>
>
>
--
Aurelien Jarno GPG: 1024D/F1BCDB73
address@hidden http://www.aurel32.net
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [Qemu-devel] [PATCH 17/22] tcg-i386: Tidy unary arithmetic.,
Aurelien Jarno <=