From: Aurelien Jarno <aurelien@aurel32.net>
To: Richard Henderson <rth@twiddle.net>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 17/22] tcg-i386: Tidy unary arithmetic.
Date: Fri, 21 May 2010 11:41:51 +0200 [thread overview]
Message-ID: <20100521094151.GI1950@volta.aurel32.net> (raw)
In-Reply-To: <a13a9ff3fcc6fbda1371e47992de65da8b9ea4e7.1272479073.git.rth@twiddle.net>
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 <rth@twiddle.net>
Acked-by: Aurelien Jarno <aurelien@aurel32.net>
> ---
> 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
aurelien@aurel32.net http://www.aurel32.net
next prev parent reply other threads:[~2010-05-21 9:43 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-04-28 18:24 [Qemu-devel] [PATCH 00/22] tcg-i386 cleanup and improvement, v2 Richard Henderson
2010-04-13 22:23 ` [Qemu-devel] [PATCH 01/22] tcg-i386: Allocate call-saved registers first Richard Henderson
2010-05-19 6:46 ` Aurelien Jarno
2010-04-13 22:26 ` [Qemu-devel] [PATCH 02/22] tcg-i386: Tidy initialization of tcg_target_call_clobber_regs Richard Henderson
2010-05-19 6:46 ` Aurelien Jarno
2010-04-13 22:59 ` [Qemu-devel] [PATCH 03/22] tcg-i386: Tidy ext8u and ext16u operations Richard Henderson
2010-05-19 6:47 ` Aurelien Jarno
2010-05-19 18:31 ` Richard Henderson
2010-05-20 13:39 ` Aurelien Jarno
2010-05-20 14:04 ` Aurelien Jarno
2010-05-20 14:40 ` Richard Henderson
2010-05-20 18:50 ` Aurelien Jarno
2010-04-13 23:13 ` [Qemu-devel] [PATCH 04/22] tcg-i386: Tidy ext8s and ext16s operations Richard Henderson
2010-05-20 18:52 ` Aurelien Jarno
2010-04-14 14:58 ` [Qemu-devel] [PATCH 07/22] tcg-i386: Tidy move operations Richard Henderson
2010-04-14 15:06 ` [Qemu-devel] [PATCH 08/22] tcg-i386: Eliminate extra move from qemu_ld64 Richard Henderson
2010-04-14 15:26 ` [Qemu-devel] [PATCH 09/22] tcg-i386: Tidy jumps Richard Henderson
2010-04-14 15:38 ` [Qemu-devel] [PATCH 10/22] tcg-i386: Tidy immediate arithmetic operations Richard Henderson
2010-05-21 9:38 ` Aurelien Jarno
2010-04-14 17:16 ` [Qemu-devel] [PATCH 11/22] tcg-i386: Tidy non-immediate " Richard Henderson
2010-05-21 9:38 ` Aurelien Jarno
2010-04-14 17:20 ` [Qemu-devel] [PATCH 12/22] tcg-i386: Tidy movi Richard Henderson
2010-05-21 9:38 ` Aurelien Jarno
2010-04-14 17:59 ` [Qemu-devel] [PATCH 13/22] tcg-i386: Tidy push/pop Richard Henderson
2010-05-21 9:38 ` Aurelien Jarno
2010-04-14 18:02 ` [Qemu-devel] [PATCH 14/22] tcg-i386: Tidy calls Richard Henderson
2010-05-21 9:40 ` Aurelien Jarno
2010-04-14 18:04 ` [Qemu-devel] [PATCH 15/22] tcg-i386: Tidy ret Richard Henderson
2010-05-21 9:40 ` Aurelien Jarno
2010-04-14 18:07 ` [Qemu-devel] [PATCH 16/22] tcg-i386: Tidy setcc Richard Henderson
2010-05-21 9:40 ` Aurelien Jarno
2010-04-14 18:22 ` [Qemu-devel] [PATCH 17/22] tcg-i386: Tidy unary arithmetic Richard Henderson
2010-05-21 9:41 ` Aurelien Jarno [this message]
2010-04-14 18:29 ` [Qemu-devel] [PATCH 18/22] tcg-i386: Tidy multiply Richard Henderson
2010-05-21 9:41 ` Aurelien Jarno
2010-04-14 18:32 ` [Qemu-devel] [PATCH 19/22] tcg-i386: Tidy xchg Richard Henderson
2010-05-21 9:42 ` Aurelien Jarno
2010-04-14 19:08 ` [Qemu-devel] [PATCH 20/22] tcg-i386: Tidy lea Richard Henderson
2010-05-21 9:43 ` Aurelien Jarno
2010-04-14 20:29 ` [Qemu-devel] [PATCH 21/22] tcg-i386: Use lea for three-operand add Richard Henderson
2010-05-21 9:44 ` Aurelien Jarno
2010-04-28 17:31 ` [Qemu-devel] [PATCH 05/22] tcg-i386: Tidy bswap operations Richard Henderson
2010-04-28 17:38 ` [Qemu-devel] [PATCH 06/22] tcg-i386: Tidy shift operations Richard Henderson
2010-04-28 18:23 ` [Qemu-devel] [PATCH 22/22] tcg-i386: Tidy data16 prefixes Richard Henderson
2010-05-21 9:45 ` Aurelien Jarno
2010-05-17 18:26 ` [Qemu-devel] [PATCH 00/22] tcg-i386 cleanup and improvement, v2 Richard Henderson
2010-05-17 19:54 ` Aurelien Jarno
2010-05-21 9:46 ` Aurelien Jarno
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100521094151.GI1950@volta.aurel32.net \
--to=aurelien@aurel32.net \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).