From: Richard Henderson <richard.henderson@linaro.org>
To: qemu-devel@nongnu.org
Cc: peter.maydell@linaro.org
Subject: [PULL 04/24] tcg/i386: Tidy register constraint definitions
Date: Tue, 2 Feb 2021 16:15:30 -1000 [thread overview]
Message-ID: <20210203021550.375058-5-richard.henderson@linaro.org> (raw)
In-Reply-To: <20210203021550.375058-1-richard.henderson@linaro.org>
Create symbolic constants for all low-byte-addressable
and second-byte-addressable registers. Create a symbol
for the registers that need reserving for softmmu.
There is no functional change for 's', as this letter is
only used for i386. The BYTEL name is correct for the
action we wish from the constraint.
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
tcg/i386/tcg-target.c.inc | 40 +++++++++++++++++++--------------------
1 file changed, 20 insertions(+), 20 deletions(-)
diff --git a/tcg/i386/tcg-target.c.inc b/tcg/i386/tcg-target.c.inc
index 540debdf34..4feb7e2aa1 100644
--- a/tcg/i386/tcg-target.c.inc
+++ b/tcg/i386/tcg-target.c.inc
@@ -132,6 +132,22 @@ static const int tcg_target_call_oarg_regs[] = {
# define TCG_REG_L1 TCG_REG_EDX
#endif
+#define ALL_BYTEH_REGS 0x0000000fu
+#if TCG_TARGET_REG_BITS == 64
+# define ALL_GENERAL_REGS 0x0000ffffu
+# define ALL_VECTOR_REGS 0xffff0000u
+# define ALL_BYTEL_REGS ALL_GENERAL_REGS
+#else
+# define ALL_GENERAL_REGS 0x000000ffu
+# define ALL_VECTOR_REGS 0x00ff0000u
+# define ALL_BYTEL_REGS ALL_BYTEH_REGS
+#endif
+#ifdef CONFIG_SOFTMMU
+# define SOFTMMU_RESERVE_REGS ((1 << TCG_REG_L0) | (1 << TCG_REG_L1))
+#else
+# define SOFTMMU_RESERVE_REGS 0
+#endif
+
/* The host compiler should supply <cpuid.h> to enable runtime features
detection, as we're not going to go so far as our own inline assembly.
If not available, default values will be assumed. */
@@ -193,14 +209,6 @@ static bool patch_reloc(tcg_insn_unit *code_ptr, int type,
return true;
}
-#if TCG_TARGET_REG_BITS == 64
-#define ALL_GENERAL_REGS 0x0000ffffu
-#define ALL_VECTOR_REGS 0xffff0000u
-#else
-#define ALL_GENERAL_REGS 0x000000ffu
-#define ALL_VECTOR_REGS 0x00ff0000u
-#endif
-
/* parse target specific constraints */
static const char *target_parse_constraint(TCGArgConstraint *ct,
const char *ct_str, TCGType type)
@@ -226,11 +234,11 @@ static const char *target_parse_constraint(TCGArgConstraint *ct,
break;
case 'q':
/* A register that can be used as a byte operand. */
- ct->regs = TCG_TARGET_REG_BITS == 64 ? 0xffff : 0xf;
+ ct->regs |= ALL_BYTEL_REGS;
break;
case 'Q':
/* A register with an addressable second byte (e.g. %ah). */
- ct->regs = 0xf;
+ ct->regs |= ALL_BYTEH_REGS;
break;
case 'r':
/* A general register. */
@@ -247,19 +255,11 @@ static const char *target_parse_constraint(TCGArgConstraint *ct,
case 'L':
/* qemu_ld/st data+address constraint */
- ct->regs = TCG_TARGET_REG_BITS == 64 ? 0xffff : 0xff;
-#ifdef CONFIG_SOFTMMU
- tcg_regset_reset_reg(ct->regs, TCG_REG_L0);
- tcg_regset_reset_reg(ct->regs, TCG_REG_L1);
-#endif
+ ct->regs |= ALL_GENERAL_REGS & ~SOFTMMU_RESERVE_REGS;
break;
case 's':
/* qemu_st8_i32 data constraint */
- ct->regs = 0xf;
-#ifdef CONFIG_SOFTMMU
- tcg_regset_reset_reg(ct->regs, TCG_REG_L0);
- tcg_regset_reset_reg(ct->regs, TCG_REG_L1);
-#endif
+ ct->regs |= ALL_BYTEL_REGS & ~SOFTMMU_RESERVE_REGS;
break;
case 'e':
--
2.25.1
next prev parent reply other threads:[~2021-02-03 2:23 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-03 2:15 [PULL 00/24] tcg patch queue Richard Henderson
2021-02-03 2:15 ` [PULL 01/24] tcg/tci: Drop L and S constraints Richard Henderson
2021-02-03 2:15 ` [PULL 02/24] tcg/tci: Remove TCG_TARGET_HAS_* ifdefs Richard Henderson
2021-02-03 2:15 ` [PULL 03/24] tcg/i386: Move constraint type check to tcg_target_const_match Richard Henderson
2021-02-03 2:15 ` Richard Henderson [this message]
2021-02-03 2:15 ` [PULL 05/24] tcg/i386: Split out target constraints to tcg-target-con-str.h Richard Henderson
2021-02-03 2:15 ` [PULL 06/24] tcg/arm: " Richard Henderson
2021-02-03 2:15 ` [PULL 07/24] tcg/aarch64: " Richard Henderson
2021-02-03 2:15 ` [PULL 08/24] tcg/ppc: " Richard Henderson
2021-02-03 2:15 ` [PULL 09/24] tcg/tci: " Richard Henderson
2021-02-03 2:15 ` [PULL 10/24] tcg/mips: " Richard Henderson
2021-02-03 2:15 ` [PULL 11/24] tcg/riscv: " Richard Henderson
2021-02-03 2:15 ` [PULL 12/24] tcg/s390: " Richard Henderson
2021-02-03 2:15 ` [PULL 13/24] tcg/sparc: " Richard Henderson
2021-02-03 2:15 ` [PULL 14/24] tcg: Remove TCG_TARGET_CON_STR_H Richard Henderson
2021-02-03 2:15 ` [PULL 15/24] tcg/i386: Split out constraint sets to tcg-target-con-set.h Richard Henderson
2021-02-03 2:15 ` [PULL 16/24] tcg/aarch64: " Richard Henderson
2021-02-03 2:15 ` [PULL 17/24] tcg/arm: " Richard Henderson
2021-02-03 2:15 ` [PULL 18/24] tcg/mips: " Richard Henderson
2021-02-03 2:15 ` [PULL 19/24] tcg/ppc: " Richard Henderson
2021-02-03 2:15 ` [PULL 20/24] tcg/riscv: " Richard Henderson
2021-02-03 2:15 ` [PULL 21/24] tcg/s390: " Richard Henderson
2021-02-03 2:15 ` [PULL 22/24] tcg/sparc: " Richard Henderson
2021-02-03 2:15 ` [PULL 23/24] tcg/tci: " Richard Henderson
2021-02-03 2:15 ` [PULL 24/24] tcg: Remove TCG_TARGET_CON_SET_H Richard Henderson
2021-02-03 2:39 ` [PULL 00/24] tcg patch queue no-reply
2021-02-04 10:00 ` Peter Maydell
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=20210203021550.375058-5-richard.henderson@linaro.org \
--to=richard.henderson@linaro.org \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
/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).