From nobody Wed Apr 9 10:36:32 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1599610682; cv=none; d=zohomail.com; s=zohoarc; b=Fdxc1vg1/cBLZvPtdGmFm9z+5a/e+o04UU/UF5TMspSg0sPAvq0HqAs2wQuOi2EUmb4nxxWEfBABaq0NKESW/7p7Zscq2fZrGava7+I+6PTJO4KU+OoonpcnCuQSBIBr9M3JIofBppBRR8qSrgUmX6Vl2481fNYXIey/ldkov+Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1599610682; h=Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=8o0uWhLzeN38mYwNmOczSIkntUGVwMo0kdZUPs4vnow=; b=jb5Kpm2LZKfMAt/BVAy7cMV6JK41jdZLMuPYUrqn8KHvVS0MWjm9EnVArq2snwdjj4alNayn/4ipybYHQII7uBplobA+tO5iFepxJdD+zRsrZNK5UxCa6qgDg+Ag+n3OuWl6g2Fgzk8oRUr/bCOYb9xmZHuhond0jHxCB5J9ZXw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1599610682991199.28029004789698; Tue, 8 Sep 2020 17:18:02 -0700 (PDT) Received: from localhost ([::1]:57886 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kFnoH-000194-If for importer@patchew.org; Tue, 08 Sep 2020 20:18:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37186) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kFnnH-0007fa-VN for qemu-devel@nongnu.org; Tue, 08 Sep 2020 20:16:59 -0400 Received: from mail-pg1-x530.google.com ([2607:f8b0:4864:20::530]:40904) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kFnnF-00029k-4i for qemu-devel@nongnu.org; Tue, 08 Sep 2020 20:16:59 -0400 Received: by mail-pg1-x530.google.com with SMTP id j34so728092pgi.7 for ; Tue, 08 Sep 2020 17:16:56 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id 137sm505437pfu.149.2020.09.08.17.16.54 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Sep 2020 17:16:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=8o0uWhLzeN38mYwNmOczSIkntUGVwMo0kdZUPs4vnow=; b=BoCBD4BzW+AO1LLUMxIrUqNhGQhHQwq/R6RMyTr31FfG8qfzDoIQ1QZNfkqhXZimXO Y+xjT0sU69Cf70OPFbuMRGf19NJk5rsTDX0KYUPFKtdQtyCjnxU+GoYxTvH98kd1FZpV RK3KU3yPgNBFFWntmUUi5o7hErvrcoEKio1cybQQ02kFVBsSH/VXNp6BteMEkz+0mpBk /lrKAacRx359714DgO0iLwmaphGwo69q+5ft6wVDarHPhYVzqZ89x0baBTlx6Nw8zBq6 IDD5wi+gQtQKiFO0k6FKy245Ge0JB7G3XvY4zp4Ea0Cop+qsK3ZTwwr2VwOXpJxHcjWS DH2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=8o0uWhLzeN38mYwNmOczSIkntUGVwMo0kdZUPs4vnow=; b=F0WtAYVt+AhHvL6zz+wVA6YjLsjsEa4tSW7eQl37bacABrwAXx800LFdV9UoIW1rfQ uudrfOoQ5uVAD08FVM1Ta37CbQKb4XoQXsHJyeIOL6tGU4ZzuBk5nQdbzET9N333bdj5 Se66ZQrve3swwucnePK+0Qy8ihFQLWUtIx73lxgYk0d73JjXdD4n+06eB7SdKjQQfVoT VXMwojOCT3wJxQ32fZ4LZnh6VqHybtY7or5tsDcks8JnFTclHjiIq4z45YjnajvTC3q+ rg+FV60TbDZO3hdNVx4MyNvn9suN3qV1yatVSn8tBWuWqQW3+AjHZ0WiXT+VkpcQasS9 p8yA== X-Gm-Message-State: AOAM532OTtp1udJjO6GjlptVaR0/OYqBpVeWioiPJLn8MDdNaxRTPm47 AWSEpPOo8Alnirlt7y9evXdR6bZce1IhWQ== X-Google-Smtp-Source: ABdhPJyzzBXJRm84FzikqZZ3Qvw14/jKkd92CIEpe4fNCYjvWC62P37rqPYnl0wuItBtxgl4rmvdgw== X-Received: by 2002:aa7:961b:0:b029:13e:d13d:a140 with SMTP id q27-20020aa7961b0000b029013ed13da140mr1547069pfg.40.1599610614952; Tue, 08 Sep 2020 17:16:54 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 04/43] tcg: Remove TCG_CT_REG Date: Tue, 8 Sep 2020 17:16:08 -0700 Message-Id: <20200909001647.532249-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200909001647.532249-1-richard.henderson@linaro.org> References: <20200909001647.532249-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::530; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x530.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" This wasn't actually used for anything, really. All variable operands must accept registers, and which are indicated by the set in TCGArgConstraint.regs. Signed-off-by: Richard Henderson --- include/tcg/tcg.h | 1 - tcg/tcg.c | 15 ++++----------- tcg/aarch64/tcg-target.c.inc | 3 --- tcg/arm/tcg-target.c.inc | 3 --- tcg/i386/tcg-target.c.inc | 11 ----------- tcg/mips/tcg-target.c.inc | 3 --- tcg/ppc/tcg-target.c.inc | 5 ----- tcg/riscv/tcg-target.c.inc | 2 -- tcg/s390/tcg-target.c.inc | 4 ---- tcg/sparc/tcg-target.c.inc | 5 ----- tcg/tci/tcg-target.c.inc | 1 - 11 files changed, 4 insertions(+), 49 deletions(-) diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h index 63955ac85b..3168315bb8 100644 --- a/include/tcg/tcg.h +++ b/include/tcg/tcg.h @@ -979,7 +979,6 @@ void tcg_dump_op_count(void); #define TCG_CT_ALIAS 0x80 #define TCG_CT_IALIAS 0x40 #define TCG_CT_NEWREG 0x20 /* output requires a new register */ -#define TCG_CT_REG 0x01 #define TCG_CT_CONST 0x02 /* any constant of register size */ =20 typedef struct TCGArgConstraint { diff --git a/tcg/tcg.c b/tcg/tcg.c index 0a04b6cbd9..a618497c94 100644 --- a/tcg/tcg.c +++ b/tcg/tcg.c @@ -2194,21 +2194,14 @@ static void tcg_dump_ops(TCGContext *s, bool have_p= refs) /* we give more priority to constraints with less registers */ static int get_constraint_priority(const TCGOpDef *def, int k) { - const TCGArgConstraint *arg_ct; + const TCGArgConstraint *arg_ct =3D &def->args_ct[k]; + int n; =20 - int i, n; - arg_ct =3D &def->args_ct[k]; if (arg_ct->ct & TCG_CT_ALIAS) { /* an alias is equivalent to a single register */ n =3D 1; } else { - if (!(arg_ct->ct & TCG_CT_REG)) - return 0; - n =3D 0; - for(i =3D 0; i < TCG_TARGET_NB_REGS; i++) { - if (tcg_regset_test_reg(arg_ct->regs, i)) - n++; - } + n =3D ctpop64(arg_ct->regs); } return TCG_TARGET_NB_REGS - n + 1; } @@ -2276,7 +2269,7 @@ static void process_op_defs(TCGContext *s) int oarg =3D *ct_str - '0'; tcg_debug_assert(ct_str =3D=3D tdefs->args_ct_str[= i]); tcg_debug_assert(oarg < def->nb_oargs); - tcg_debug_assert(def->args_ct[oarg].ct & TCG_CT_RE= G); + tcg_debug_assert(def->args_ct[oarg].regs !=3D 0); /* TCG_CT_ALIAS is for the output arguments. The input is tagged with TCG_CT_IALIAS. */ def->args_ct[i] =3D def->args_ct[oarg]; diff --git a/tcg/aarch64/tcg-target.c.inc b/tcg/aarch64/tcg-target.c.inc index d4b7cb4867..479a9d26be 100644 --- a/tcg/aarch64/tcg-target.c.inc +++ b/tcg/aarch64/tcg-target.c.inc @@ -128,15 +128,12 @@ static const char *target_parse_constraint(TCGArgCons= traint *ct, { switch (*ct_str++) { case 'r': /* general registers */ - ct->ct |=3D TCG_CT_REG; ct->regs |=3D 0xffffffffu; break; case 'w': /* advsimd registers */ - ct->ct |=3D TCG_CT_REG; ct->regs |=3D 0xffffffff00000000ull; break; case 'l': /* qemu_ld / qemu_st address, data_reg */ - ct->ct |=3D TCG_CT_REG; ct->regs =3D 0xffffffffu; #ifdef CONFIG_SOFTMMU /* x0 and x1 will be overwritten when reading the tlb entry, diff --git a/tcg/arm/tcg-target.c.inc b/tcg/arm/tcg-target.c.inc index 978eb1dd70..62c37a954b 100644 --- a/tcg/arm/tcg-target.c.inc +++ b/tcg/arm/tcg-target.c.inc @@ -253,13 +253,11 @@ static const char *target_parse_constraint(TCGArgCons= traint *ct, break; =20 case 'r': - ct->ct |=3D TCG_CT_REG; ct->regs =3D 0xffff; break; =20 /* qemu_ld address */ case 'l': - ct->ct |=3D TCG_CT_REG; ct->regs =3D 0xffff; #ifdef CONFIG_SOFTMMU /* r0-r2,lr will be overwritten when reading the tlb entry, @@ -274,7 +272,6 @@ static const char *target_parse_constraint(TCGArgConstr= aint *ct, =20 /* qemu_st address & data */ case 's': - ct->ct |=3D TCG_CT_REG; ct->regs =3D 0xffff; /* r0-r2 will be overwritten when reading the tlb entry (softmmu o= nly) and r0-r1 doing the byte swapping, so don't use these. */ diff --git a/tcg/i386/tcg-target.c.inc b/tcg/i386/tcg-target.c.inc index 8661ec3393..2f696074ab 100644 --- a/tcg/i386/tcg-target.c.inc +++ b/tcg/i386/tcg-target.c.inc @@ -208,42 +208,33 @@ static const char *target_parse_constraint(TCGArgCons= traint *ct, { switch(*ct_str++) { case 'a': - ct->ct |=3D TCG_CT_REG; tcg_regset_set_reg(ct->regs, TCG_REG_EAX); break; case 'b': - ct->ct |=3D TCG_CT_REG; tcg_regset_set_reg(ct->regs, TCG_REG_EBX); break; case 'c': - ct->ct |=3D TCG_CT_REG; tcg_regset_set_reg(ct->regs, TCG_REG_ECX); break; case 'd': - ct->ct |=3D TCG_CT_REG; tcg_regset_set_reg(ct->regs, TCG_REG_EDX); break; case 'S': - ct->ct |=3D TCG_CT_REG; tcg_regset_set_reg(ct->regs, TCG_REG_ESI); break; case 'D': - ct->ct |=3D TCG_CT_REG; tcg_regset_set_reg(ct->regs, TCG_REG_EDI); break; case 'q': /* A register that can be used as a byte operand. */ - ct->ct |=3D TCG_CT_REG; ct->regs =3D TCG_TARGET_REG_BITS =3D=3D 64 ? 0xffff : 0xf; break; case 'Q': /* A register with an addressable second byte (e.g. %ah). */ - ct->ct |=3D TCG_CT_REG; ct->regs =3D 0xf; break; case 'r': /* A general register. */ - ct->ct |=3D TCG_CT_REG; ct->regs |=3D ALL_GENERAL_REGS; break; case 'W': @@ -252,13 +243,11 @@ static const char *target_parse_constraint(TCGArgCons= traint *ct, break; case 'x': /* A vector register. */ - ct->ct |=3D TCG_CT_REG; ct->regs |=3D ALL_VECTOR_REGS; break; =20 /* qemu_ld/st address constraint */ case 'L': - ct->ct |=3D TCG_CT_REG; ct->regs =3D TCG_TARGET_REG_BITS =3D=3D 64 ? 0xffff : 0xff; tcg_regset_reset_reg(ct->regs, TCG_REG_L0); tcg_regset_reset_reg(ct->regs, TCG_REG_L1); diff --git a/tcg/mips/tcg-target.c.inc b/tcg/mips/tcg-target.c.inc index d49a02bb03..98c6a41caf 100644 --- a/tcg/mips/tcg-target.c.inc +++ b/tcg/mips/tcg-target.c.inc @@ -195,11 +195,9 @@ static const char *target_parse_constraint(TCGArgConst= raint *ct, { switch(*ct_str++) { case 'r': - ct->ct |=3D TCG_CT_REG; ct->regs =3D 0xffffffff; break; case 'L': /* qemu_ld input arg constraint */ - ct->ct |=3D TCG_CT_REG; ct->regs =3D 0xffffffff; tcg_regset_reset_reg(ct->regs, TCG_REG_A0); #if defined(CONFIG_SOFTMMU) @@ -209,7 +207,6 @@ static const char *target_parse_constraint(TCGArgConstr= aint *ct, #endif break; case 'S': /* qemu_st constraint */ - ct->ct |=3D TCG_CT_REG; ct->regs =3D 0xffffffff; tcg_regset_reset_reg(ct->regs, TCG_REG_A0); #if defined(CONFIG_SOFTMMU) diff --git a/tcg/ppc/tcg-target.c.inc b/tcg/ppc/tcg-target.c.inc index 450b555522..7a5760bb23 100644 --- a/tcg/ppc/tcg-target.c.inc +++ b/tcg/ppc/tcg-target.c.inc @@ -224,19 +224,15 @@ static const char *target_parse_constraint(TCGArgCons= traint *ct, { switch (*ct_str++) { case 'A': case 'B': case 'C': case 'D': - ct->ct |=3D TCG_CT_REG; tcg_regset_set_reg(ct->regs, 3 + ct_str[0] - 'A'); break; case 'r': - ct->ct |=3D TCG_CT_REG; ct->regs =3D 0xffffffff; break; case 'v': - ct->ct |=3D TCG_CT_REG; ct->regs =3D 0xffffffff00000000ull; break; case 'L': /* qemu_ld constraint */ - ct->ct |=3D TCG_CT_REG; ct->regs =3D 0xffffffff; tcg_regset_reset_reg(ct->regs, TCG_REG_R3); #ifdef CONFIG_SOFTMMU @@ -245,7 +241,6 @@ static const char *target_parse_constraint(TCGArgConstr= aint *ct, #endif break; case 'S': /* qemu_st constraint */ - ct->ct |=3D TCG_CT_REG; ct->regs =3D 0xffffffff; tcg_regset_reset_reg(ct->regs, TCG_REG_R3); #ifdef CONFIG_SOFTMMU diff --git a/tcg/riscv/tcg-target.c.inc b/tcg/riscv/tcg-target.c.inc index 0a69839adb..d536f3ccc1 100644 --- a/tcg/riscv/tcg-target.c.inc +++ b/tcg/riscv/tcg-target.c.inc @@ -137,12 +137,10 @@ static const char *target_parse_constraint(TCGArgCons= traint *ct, { switch (*ct_str++) { case 'r': - ct->ct |=3D TCG_CT_REG; ct->regs =3D 0xffffffff; break; case 'L': /* qemu_ld/qemu_st constraint */ - ct->ct |=3D TCG_CT_REG; ct->regs =3D 0xffffffff; /* qemu_ld/qemu_st uses TCG_REG_TMP0 */ #if defined(CONFIG_SOFTMMU) diff --git a/tcg/s390/tcg-target.c.inc b/tcg/s390/tcg-target.c.inc index 9cd266a2d0..c5e096449b 100644 --- a/tcg/s390/tcg-target.c.inc +++ b/tcg/s390/tcg-target.c.inc @@ -408,23 +408,19 @@ static const char *target_parse_constraint(TCGArgCons= traint *ct, { switch (*ct_str++) { case 'r': /* all registers */ - ct->ct |=3D TCG_CT_REG; ct->regs =3D 0xffff; break; case 'L': /* qemu_ld/st constraint */ - ct->ct |=3D TCG_CT_REG; ct->regs =3D 0xffff; tcg_regset_reset_reg(ct->regs, TCG_REG_R2); tcg_regset_reset_reg(ct->regs, TCG_REG_R3); tcg_regset_reset_reg(ct->regs, TCG_REG_R4); break; case 'a': /* force R2 for division */ - ct->ct |=3D TCG_CT_REG; ct->regs =3D 0; tcg_regset_set_reg(ct->regs, TCG_REG_R2); break; case 'b': /* force R3 for division */ - ct->ct |=3D TCG_CT_REG; ct->regs =3D 0; tcg_regset_set_reg(ct->regs, TCG_REG_R3); break; diff --git a/tcg/sparc/tcg-target.c.inc b/tcg/sparc/tcg-target.c.inc index c662293fc7..44373d742b 100644 --- a/tcg/sparc/tcg-target.c.inc +++ b/tcg/sparc/tcg-target.c.inc @@ -325,15 +325,12 @@ static const char *target_parse_constraint(TCGArgCons= traint *ct, { switch (*ct_str++) { case 'r': - ct->ct |=3D TCG_CT_REG; ct->regs =3D 0xffffffff; break; case 'R': - ct->ct |=3D TCG_CT_REG; ct->regs =3D ALL_64; break; case 'A': /* qemu_ld/st address constraint */ - ct->ct |=3D TCG_CT_REG; ct->regs =3D TARGET_LONG_BITS =3D=3D 64 ? ALL_64 : 0xffffffff; reserve_helpers: tcg_regset_reset_reg(ct->regs, TCG_REG_O0); @@ -341,11 +338,9 @@ static const char *target_parse_constraint(TCGArgConst= raint *ct, tcg_regset_reset_reg(ct->regs, TCG_REG_O2); break; case 's': /* qemu_st data 32-bit constraint */ - ct->ct |=3D TCG_CT_REG; ct->regs =3D 0xffffffff; goto reserve_helpers; case 'S': /* qemu_st data 64-bit constraint */ - ct->ct |=3D TCG_CT_REG; ct->regs =3D ALL_64; goto reserve_helpers; case 'I': diff --git a/tcg/tci/tcg-target.c.inc b/tcg/tci/tcg-target.c.inc index a7215f346f..231b9b1775 100644 --- a/tcg/tci/tcg-target.c.inc +++ b/tcg/tci/tcg-target.c.inc @@ -392,7 +392,6 @@ static const char *target_parse_constraint(TCGArgConstr= aint *ct, case 'r': case 'L': /* qemu_ld constraint */ case 'S': /* qemu_st constraint */ - ct->ct |=3D TCG_CT_REG; ct->regs =3D BIT(TCG_TARGET_NB_REGS) - 1; break; default: --=20 2.25.1