[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 02/22] tcg/i386: Move constraint type check to tcg_target_
From: |
Richard Henderson |
Subject: |
Re: [PATCH v2 02/22] tcg/i386: Move constraint type check to tcg_target_const_match |
Date: |
Tue, 19 Jan 2021 09:19:51 -1000 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 |
On 1/19/21 4:27 AM, Peter Maydell wrote:
> On Fri, 15 Jan 2021 at 21:14, Richard Henderson
> <richard.henderson@linaro.org> wrote:
>>
>> Rather than check the type when filling in the constraint,
>> check it when matching the constant. This removes the only
>> use of the type argument to target_parse_constraint.
>>
>> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
>> ---
>> tcg/i386/tcg-target.c.inc | 28 +++++++++++++++++-----------
>> 1 file changed, 17 insertions(+), 11 deletions(-)
>>
>> diff --git a/tcg/i386/tcg-target.c.inc b/tcg/i386/tcg-target.c.inc
>> index 050f3cb0b1..74637f654a 100644
>> --- a/tcg/i386/tcg-target.c.inc
>> +++ b/tcg/i386/tcg-target.c.inc
>> @@ -263,13 +263,13 @@ static const char
>> *target_parse_constraint(TCGArgConstraint *ct,
>> break;
>>
>> case 'e':
>> - ct->ct |= (type == TCG_TYPE_I32 ? TCG_CT_CONST : TCG_CT_CONST_S32);
>> + ct->ct |= TCG_CT_CONST_S32;
>> break;
>> case 'Z':
>> - ct->ct |= (type == TCG_TYPE_I32 ? TCG_CT_CONST : TCG_CT_CONST_U32);
>> + ct->ct |= TCG_CT_CONST_U32;
>> break;
>> case 'I':
>> - ct->ct |= (type == TCG_TYPE_I32 ? TCG_CT_CONST : TCG_CT_CONST_I32);
>> + ct->ct |= TCG_CT_CONST_I32;
>> break;
>>
>> default:
>> @@ -286,14 +286,20 @@ static inline int
>> tcg_target_const_match(tcg_target_long val, TCGType type,
>> if (ct & TCG_CT_CONST) {
>> return 1;
>> }
>> - if ((ct & TCG_CT_CONST_S32) && val == (int32_t)val) {
>> - return 1;
>> - }
>> - if ((ct & TCG_CT_CONST_U32) && val == (uint32_t)val) {
>> - return 1;
>> - }
>> - if ((ct & TCG_CT_CONST_I32) && ~val == (int32_t)~val) {
>> - return 1;
>> + if (TCG_TARGET_REG_BITS == 32 || type == TCG_TYPE_I32) {
>
> Where does the TCG_TARGET_REG_BITS check come from? We weren't
> testing that in the old code in target_parse_constraint() that
> I can see.
Premature optimization and a separate change.
Dropped.
r~
>
>> + if (ct & (TCG_CT_CONST_S32 | TCG_CT_CONST_U32 | TCG_CT_CONST_I32)) {
>> + return 1;
>> + }
>> + } else {
>> + if ((ct & TCG_CT_CONST_S32) && val == (int32_t)val) {
>> + return 1;
>> + }
>> + if ((ct & TCG_CT_CONST_U32) && val == (uint32_t)val) {
>> + return 1;
>> + }
>> + if ((ct & TCG_CT_CONST_I32) && ~val == (int32_t)~val) {
>> + return 1;
>> + }
>> }
>> if ((ct & TCG_CT_CONST_WSZ) && val == (type == TCG_TYPE_I32 ? 32 : 64))
>> {
>> return 1;
>
> thanks
> -- PMM
>
- Re: [PATCH v2 05/22] tcg/aarch64: Split out target constraints to tcg-target-con-str.h, (continued)
- [PATCH v2 06/22] tcg/ppc: Split out target constraints to tcg-target-con-str.h, Richard Henderson, 2021/01/15
- [PATCH v2 04/22] tcg/arm: Split out target constraints to tcg-target-con-str.h, Richard Henderson, 2021/01/15
- [PATCH v2 07/22] tcg/tci: Split out target constraints to tcg-target-con-str.h, Richard Henderson, 2021/01/15
- [PATCH v2 02/22] tcg/i386: Move constraint type check to tcg_target_const_match, Richard Henderson, 2021/01/15
- [PATCH v2 09/22] tcg/riscv: Split out target constraints to tcg-target-con-str.h, Richard Henderson, 2021/01/15
- [PATCH v2 11/22] tcg/sparc: Split out target constraints to tcg-target-con-str.h, Richard Henderson, 2021/01/15
- [PATCH v2 08/22] tcg/mips: Split out target constraints to tcg-target-con-str.h, Richard Henderson, 2021/01/15