[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v3 04/24] tcg/i386: Tidy register constraint definitions
From: |
Peter Maydell |
Subject: |
Re: [PATCH v3 04/24] tcg/i386: Tidy register constraint definitions |
Date: |
Fri, 29 Jan 2021 23:20:39 +0000 |
On Fri, 29 Jan 2021 at 20:14, Richard Henderson
<richard.henderson@linaro.org> wrote:
>
> 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.
>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
> tcg/i386/tcg-target.c.inc | 40 +++++++++++++++++++--------------------
> 1 file changed, 20 insertions(+), 20 deletions(-)
>
> @@ -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;
Should these cases really be ORing in these expressions
rather than just using '=' the way the old code was?
Otherwise
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
thanks
-- PMM
- [PATCH v3 00/24] tcg: backend constraints cleanup, Richard Henderson, 2021/01/29
- [PATCH v3 01/24] tcg/tci: Drop L and S constraints, Richard Henderson, 2021/01/29
- [PATCH v3 02/24] tcg/tci: Remove TCG_TARGET_HAS_* ifdefs, Richard Henderson, 2021/01/29
- [PATCH v3 03/24] tcg/i386: Move constraint type check to tcg_target_const_match, Richard Henderson, 2021/01/29
- [PATCH v3 06/24] tcg/arm: Split out target constraints to tcg-target-con-str.h, Richard Henderson, 2021/01/29
- [PATCH v3 04/24] tcg/i386: Tidy register constraint definitions, Richard Henderson, 2021/01/29
- Re: [PATCH v3 04/24] tcg/i386: Tidy register constraint definitions,
Peter Maydell <=
- [PATCH v3 05/24] tcg/i386: Split out target constraints to tcg-target-con-str.h, Richard Henderson, 2021/01/29
- [PATCH v3 08/24] tcg/ppc: Split out target constraints to tcg-target-con-str.h, Richard Henderson, 2021/01/29
- [PATCH v3 07/24] tcg/aarch64: Split out target constraints to tcg-target-con-str.h, Richard Henderson, 2021/01/29
- [PATCH v3 09/24] tcg/tci: Split out target constraints to tcg-target-con-str.h, Richard Henderson, 2021/01/29
- [PATCH v3 11/24] tcg/riscv: Split out target constraints to tcg-target-con-str.h, Richard Henderson, 2021/01/29
- [PATCH v3 10/24] tcg/mips: Split out target constraints to tcg-target-con-str.h, Richard Henderson, 2021/01/29
- [PATCH v3 12/24] tcg/s390: Split out target constraints to tcg-target-con-str.h, Richard Henderson, 2021/01/29