From nobody Tue May  6 19:42:59 2025
Delivered-To: importer@patchew.org
Authentication-Results: mx.zohomail.com;
	dkim=fail;
	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=fail(p=none dis=none)  header.from=linaro.org
ARC-Seal: i=1; a=rsa-sha256; t=1602163878; cv=none;
	d=zohomail.com; s=zohoarc;
	b=gpM5xQG1pCMVXCzl1guqbfjnEm6v0GED0Ck2WJebWXNvPKnuQ72bnbfe5cTEI3aYhRhF8KA8ZZ6tbSrTySZpuG/DmlIWMvQOKULITTlPpYabuwjkFE7JxeJlv53vOLUSDByJwz8+1+4jJbQdxvmK2pV/DFOXXG9wjBO8jWNGchQ=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com;
 s=zohoarc;
	t=1602163878;
 h=Content-Type:Content-Transfer-Encoding:Cc: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=Sng81+Lojn0PspAFm2XXXoAzolkJuyUQkxTQ83xLlw4=;
	b=h1JRa3JbScsUgrmyLTXEWEUojGGB1If/37IbBHOqXaUznRcXU/gsKoteCY8487lwLVOF7tsqNGxdh4SVZ/n/wSZKROygGAINnk2uIJ2p0+5Xw4H+tgMTXAWmFznwEIW9HY6vMo0or1YT/fm0jUWEEJOkVydKCE9a2bl/Y3ltbi4=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=fail;
	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=fail header.from=<richard.henderson@linaro.org> (p=none dis=none)
 header.from=<richard.henderson@linaro.org>
Return-Path: <qemu-devel-bounces+importer=patchew.org@nongnu.org>
Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by
 mx.zohomail.com
	with SMTPS id 1602163878853576.9593382356262;
 Thu, 8 Oct 2020 06:31:18 -0700 (PDT)
Received: from localhost ([::1]:47892 helo=lists1p.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.90_1)
	(envelope-from <qemu-devel-bounces+importer=patchew.org@nongnu.org>)
	id 1kQVX8-0006QQ-3r
	for importer@patchew.org; Thu, 08 Oct 2020 09:00:34 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:45258)
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <richard.henderson@linaro.org>)
 id 1kQVTo-0003RM-3X
 for qemu-devel@nongnu.org; Thu, 08 Oct 2020 08:57:08 -0400
Received: from mail-ot1-x32e.google.com ([2607:f8b0:4864:20::32e]:32951)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.90_1) (envelope-from <richard.henderson@linaro.org>)
 id 1kQVTm-0001wa-8D
 for qemu-devel@nongnu.org; Thu, 08 Oct 2020 08:57:07 -0400
Received: by mail-ot1-x32e.google.com with SMTP id t15so5409329otk.0
 for <qemu-devel@nongnu.org>; Thu, 08 Oct 2020 05:57:05 -0700 (PDT)
Received: from localhost.localdomain (168.189-204-159.bestelclientes.com.mx.
 [189.204.159.168])
 by smtp.gmail.com with ESMTPSA id w64sm4701933oig.31.2020.10.08.05.57.02
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 08 Oct 2020 05:57:03 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google;
 h=from:to:cc:subject:date:message-id:in-reply-to:references
 :mime-version:content-transfer-encoding;
 bh=Sng81+Lojn0PspAFm2XXXoAzolkJuyUQkxTQ83xLlw4=;
 b=g9thzgBkM+VsqEe7rcXKIAd4prDkT/DLsgbUnE2XwYTUVpcZOdxhMd4C/xkKdIbzgy
 iQezoWttsbp/NTBKJ+sHJd+rJFn816BwrJhI6xjA31dJwJJRe5Ao57ZanspYfWhgNSqv
 ZEpyFXTgVLWRYjr1hKBt9VD0OlXyI9v7r0NnDptzYI5uLusXHuh7OUuYawo/x9Pyvatv
 VEEAnbzYy9iwUMjFZthP5xxwxZrD4BKNYdKvGpNLWl7xBylpPV/CUrNwZx1KpX4n3eY2
 xQyXj994eARL9yGtIWfseB+qDlUABvHzEe02w2p7HdOI9K3WlIpkCVgCmXOR/ba5Y//4
 imKg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references:mime-version:content-transfer-encoding;
 bh=Sng81+Lojn0PspAFm2XXXoAzolkJuyUQkxTQ83xLlw4=;
 b=kVHjnQXFy7zWuGtqVqO/4cA9iAFOk7JWX1ruCe/ZhZkncTXZV+PmdQ78u7p9ZrAoY7
 94yuELeIAMC4/liQ/0vyondeUdCymWC9zv6w/m+/2IHmVQ3blXGxRWFJQDB0l+RH6dA6
 WxSAqXpXN8jTq4dkWEcnWmElgQDzGEjT/Vo+a70vepURj00hno9tUUDo1dKjUAe67xTK
 wcfzSxNwTRP0OWWTmjFWYydqVi2y2QVybueYTs4UYbJlDgmBkwTyTUuKPQm+HOJnGim+
 AL2lu6gYpN5FsTbe0lPgWLfpPCDLNVtNr8iY9sypAEeyVFc/RtPSujrzp+ATiCprD0R3
 WTIg==
X-Gm-Message-State: AOAM533KbN2Z+EprowZ3YNF9XPZZGi8940tN6LYkVeL24SByEss5CGan
 W1aGan+GkEGmbA5Adm79lHS6jMdnGsmzSa81
X-Google-Smtp-Source: 
 ABdhPJzQWgVRmgBeRmytQBcdHgTk/stntxXJRIL86QefT5o3cn3KyyM8ZrEhiGD8gbT0VaIweTcYUA==
X-Received: by 2002:a9d:2047:: with SMTP id n65mr4884061ota.178.1602161824518;
 Thu, 08 Oct 2020 05:57:04 -0700 (PDT)
From: Richard Henderson <richard.henderson@linaro.org>
To: qemu-devel@nongnu.org
Subject: [PULL 01/11] tcg: Adjust simd_desc size encoding
Date: Thu,  8 Oct 2020 07:56:49 -0500
Message-Id: <20201008125659.49857-2-richard.henderson@linaro.org>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20201008125659.49857-1-richard.henderson@linaro.org>
References: <20201008125659.49857-1-richard.henderson@linaro.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
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::32e;
 envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x32e.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: <qemu-devel.nongnu.org>
List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>
List-Archive: <https://lists.nongnu.org/archive/html/qemu-devel>
List-Post: <mailto:qemu-devel@nongnu.org>
List-Help: <mailto:qemu-devel-request@nongnu.org?subject=help>
List-Subscribe: <https://lists.nongnu.org/mailman/listinfo/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=subscribe>
Cc: Frank Chang <frank.chang@sifive.com>, peter.maydell@linaro.org,
 =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <f4bug@amsat.org>
Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org
Sender: "Qemu-devel" <qemu-devel-bounces+importer=patchew.org@nongnu.org>
X-ZohoMail-DKIM: fail (Header signature does not verify)

With larger vector sizes, it turns out oprsz =3D=3D maxsz, and we only
need to represent mismatch for oprsz <=3D 32.  We do, however, need
to represent larger oprsz and do so without reducing SIMD_DATA_BITS.

Reduce the size of the oprsz field and increase the maxsz field.
Steal the oprsz value of 24 to indicate equality with maxsz.

Tested-by: Frank Chang <frank.chang@sifive.com>
Reviewed-by: Frank Chang <frank.chang@sifive.com>
Reviewed-by: Philippe Mathieu-Daud=C3=A9 <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 include/tcg/tcg-gvec-desc.h | 38 ++++++++++++++++++++++++-------------
 tcg/tcg-op-gvec.c           | 35 ++++++++++++++++++++++++++--------
 2 files changed, 52 insertions(+), 21 deletions(-)

diff --git a/include/tcg/tcg-gvec-desc.h b/include/tcg/tcg-gvec-desc.h
index 0224ac3e78..704bd86454 100644
--- a/include/tcg/tcg-gvec-desc.h
+++ b/include/tcg/tcg-gvec-desc.h
@@ -20,29 +20,41 @@
 #ifndef TCG_TCG_GVEC_DESC_H
 #define TCG_TCG_GVEC_DESC_H
=20
-/* ??? These bit widths are set for ARM SVE, maxing out at 256 byte vector=
s. */
-#define SIMD_OPRSZ_SHIFT   0
-#define SIMD_OPRSZ_BITS    5
+/*
+ * This configuration allows MAXSZ to represent 2048 bytes, and
+ * OPRSZ to match MAXSZ, or represent the smaller values 8, 16, or 32.
+ *
+ * Encode this with:
+ *   0, 1, 3 -> 8, 16, 32
+ *   2       -> maxsz
+ *
+ * This steals the input that would otherwise map to 24 to match maxsz.
+ */
+#define SIMD_MAXSZ_SHIFT   0
+#define SIMD_MAXSZ_BITS    8
=20
-#define SIMD_MAXSZ_SHIFT   (SIMD_OPRSZ_SHIFT + SIMD_OPRSZ_BITS)
-#define SIMD_MAXSZ_BITS    5
+#define SIMD_OPRSZ_SHIFT   (SIMD_MAXSZ_SHIFT + SIMD_MAXSZ_BITS)
+#define SIMD_OPRSZ_BITS    2
=20
-#define SIMD_DATA_SHIFT    (SIMD_MAXSZ_SHIFT + SIMD_MAXSZ_BITS)
+#define SIMD_DATA_SHIFT    (SIMD_OPRSZ_SHIFT + SIMD_OPRSZ_BITS)
 #define SIMD_DATA_BITS     (32 - SIMD_DATA_SHIFT)
=20
 /* Create a descriptor from components.  */
 uint32_t simd_desc(uint32_t oprsz, uint32_t maxsz, int32_t data);
=20
-/* Extract the operation size from a descriptor.  */
-static inline intptr_t simd_oprsz(uint32_t desc)
-{
-    return (extract32(desc, SIMD_OPRSZ_SHIFT, SIMD_OPRSZ_BITS) + 1) * 8;
-}
-
 /* Extract the max vector size from a descriptor.  */
 static inline intptr_t simd_maxsz(uint32_t desc)
 {
-    return (extract32(desc, SIMD_MAXSZ_SHIFT, SIMD_MAXSZ_BITS) + 1) * 8;
+    return extract32(desc, SIMD_MAXSZ_SHIFT, SIMD_MAXSZ_BITS) * 8 + 8;
+}
+
+/* Extract the operation size from a descriptor.  */
+static inline intptr_t simd_oprsz(uint32_t desc)
+{
+    uint32_t f =3D extract32(desc, SIMD_OPRSZ_SHIFT, SIMD_OPRSZ_BITS);
+    intptr_t o =3D f * 8 + 8;
+    intptr_t m =3D simd_maxsz(desc);
+    return f =3D=3D 2 ? m : o;
 }
=20
 /* Extract the operation-specific data from a descriptor.  */
diff --git a/tcg/tcg-op-gvec.c b/tcg/tcg-op-gvec.c
index 7ebd9e8298..ddbe06b71a 100644
--- a/tcg/tcg-op-gvec.c
+++ b/tcg/tcg-op-gvec.c
@@ -37,11 +37,21 @@ static const TCGOpcode vecop_list_empty[1] =3D { 0 };
    of the operand offsets so that we can check them all at once.  */
 static void check_size_align(uint32_t oprsz, uint32_t maxsz, uint32_t ofs)
 {
-    uint32_t opr_align =3D oprsz >=3D 16 ? 15 : 7;
-    uint32_t max_align =3D maxsz >=3D 16 || oprsz >=3D 16 ? 15 : 7;
-    tcg_debug_assert(oprsz > 0);
-    tcg_debug_assert(oprsz <=3D maxsz);
-    tcg_debug_assert((oprsz & opr_align) =3D=3D 0);
+    uint32_t max_align;
+
+    switch (oprsz) {
+    case 8:
+    case 16:
+    case 32:
+        tcg_debug_assert(oprsz <=3D maxsz);
+        break;
+    default:
+        tcg_debug_assert(oprsz =3D=3D maxsz);
+        break;
+    }
+    tcg_debug_assert(maxsz <=3D (8 << SIMD_MAXSZ_BITS));
+
+    max_align =3D maxsz >=3D 16 ? 15 : 7;
     tcg_debug_assert((maxsz & max_align) =3D=3D 0);
     tcg_debug_assert((ofs & max_align) =3D=3D 0);
 }
@@ -77,12 +87,21 @@ uint32_t simd_desc(uint32_t oprsz, uint32_t maxsz, int3=
2_t data)
 {
     uint32_t desc =3D 0;
=20
-    assert(oprsz % 8 =3D=3D 0 && oprsz <=3D (8 << SIMD_OPRSZ_BITS));
-    assert(maxsz % 8 =3D=3D 0 && maxsz <=3D (8 << SIMD_MAXSZ_BITS));
-    assert(data =3D=3D sextract32(data, 0, SIMD_DATA_BITS));
+    check_size_align(oprsz, maxsz, 0);
+    tcg_debug_assert(data =3D=3D sextract32(data, 0, SIMD_DATA_BITS));
=20
     oprsz =3D (oprsz / 8) - 1;
     maxsz =3D (maxsz / 8) - 1;
+
+    /*
+     * We have just asserted in check_size_align that either
+     * oprsz is {8,16,32} or matches maxsz.  Encode the final
+     * case with '2', as that would otherwise map to 24.
+     */
+    if (oprsz =3D=3D maxsz) {
+        oprsz =3D 2;
+    }
+
     desc =3D deposit32(desc, SIMD_OPRSZ_SHIFT, SIMD_OPRSZ_BITS, oprsz);
     desc =3D deposit32(desc, SIMD_MAXSZ_SHIFT, SIMD_MAXSZ_BITS, maxsz);
     desc =3D deposit32(desc, SIMD_DATA_SHIFT, SIMD_DATA_BITS, data);
--=20
2.25.1


From nobody Tue May  6 19:42:59 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=1602163833; cv=none;
	d=zohomail.com; s=zohoarc;
	b=KOCEIUVysWCErkUv77n2AsQ7kYAwPIi+wJZPmE48rSqEVi5aTrG+VVTbCqhPDDidbASWp6OPJ1qoqwb3SgFyo7pDSZ7mO9rTtStTVmLC2wmxEnYYQZ+fyry3WSKrahsO9INnzto3R7+PpZNykgaAYfOq6WX3I57LlpL5TPwknhw=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com;
 s=zohoarc;
	t=1602163833;
 h=Content-Type:Content-Transfer-Encoding:Cc: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=g33TexuYH6rB4UUNBCMbt8mxbFAKdagQmJ2x4vq5KFk=;
	b=hcfxHHrIZIQP9OCINngDUJtSrp30eq4srlMj0UDE+cqvvo0IJEYldreC0v7s/AJg1tPy9167L22gP3DtInta5ihLnizwMgcRmK0rBdMahDybZGGSvso68kaGrlJymzEX6pNEdZ1O4ljvawgPgC721PESsbVKcgqny22v23loP5k=
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=<richard.henderson@linaro.org> (p=none dis=none)
 header.from=<richard.henderson@linaro.org>
Return-Path: <qemu-devel-bounces+importer=patchew.org@nongnu.org>
Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by
 mx.zohomail.com
	with SMTPS id 160216383306919.448304977404405;
 Thu, 8 Oct 2020 06:30:33 -0700 (PDT)
Received: from localhost ([::1]:45346 helo=lists1p.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.90_1)
	(envelope-from <qemu-devel-bounces+importer=patchew.org@nongnu.org>)
	id 1kQVVz-0005Hu-CR
	for importer@patchew.org; Thu, 08 Oct 2020 08:59:24 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:45292)
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <richard.henderson@linaro.org>)
 id 1kQVTr-0003X2-O4
 for qemu-devel@nongnu.org; Thu, 08 Oct 2020 08:57:11 -0400
Received: from mail-oo1-xc36.google.com ([2607:f8b0:4864:20::c36]:46412)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.90_1) (envelope-from <richard.henderson@linaro.org>)
 id 1kQVTp-0001ww-2Q
 for qemu-devel@nongnu.org; Thu, 08 Oct 2020 08:57:11 -0400
Received: by mail-oo1-xc36.google.com with SMTP id c25so773303ooe.13
 for <qemu-devel@nongnu.org>; Thu, 08 Oct 2020 05:57:08 -0700 (PDT)
Received: from localhost.localdomain (168.189-204-159.bestelclientes.com.mx.
 [189.204.159.168])
 by smtp.gmail.com with ESMTPSA id w64sm4701933oig.31.2020.10.08.05.57.04
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 08 Oct 2020 05:57:05 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google;
 h=from:to:cc:subject:date:message-id:in-reply-to:references
 :mime-version:content-transfer-encoding;
 bh=g33TexuYH6rB4UUNBCMbt8mxbFAKdagQmJ2x4vq5KFk=;
 b=TIxev3lwvlWSPm1EMQ8UgETGgLXhHkSHIFVRbKF8hhLHg3kp6r3zLR1nyd3jq6DEqp
 qypVasmIXheXV9bMQAvDkUOsQweARJmu6Ct/OBCsaXGyBPII8kbI3XJ9onqfNYaMfHPj
 JkaGo2Zs6gp9BWSMVo9S/WcTjNTlro30LY1kZtqynkHRCShxVwxJd57DOOu6Vr9ue69r
 Gqyc9Veh8cBHM7bTq1AsujpBhhZYKdAICEh71P5kc1eZrCbNtdx8/pttILxIEN5KvVvs
 LpJ+YQyBQ7B5ceMp1tQe7GfWOmA4tsD3oBPwITRU6peZJJLeUV/MBNi2vDngoMsPRxA7
 ryeQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references:mime-version:content-transfer-encoding;
 bh=g33TexuYH6rB4UUNBCMbt8mxbFAKdagQmJ2x4vq5KFk=;
 b=LPC6ZqL05iV1EH6d/wO6Iu4Xz2iYMGf2r7FrOVY6oI6DQQT4BiTYMMBShJR5aGd68h
 PQtlNIff/IMDxcNCAAaKq0YRqlpCj//ipPHhfwMUn90vbay+/eDHra4D6CXOH4wZQWtN
 jvekytQvX8eLmhB5kcBYj0MPIIr5VhYqqy8O7xyR1b+uRucdMZe3u4DeDS3G/XV426No
 meH6Y6qesCRiG5JW/dvzgV+djSKxo4ezk6BrrN1oDBAPJJaNQu78Upz+ejljxAPg7bWx
 17KUWbhKaPvgtlHXj2WgW+VI4YiPKkkPcGVClFIC2tH/xkf1R51whT1/ygyoHQ1+/XqQ
 zWMA==
X-Gm-Message-State: AOAM530RjMR+rgctq9EjtZlwqb8wKiEv2fi/VcdhGtinrwFSxlr5q1Kx
 +DkJt29T+LmtXtn+qn4KX8cKE83zueiRW5ch
X-Google-Smtp-Source: 
 ABdhPJx2eW6e8uQYHKNs/yDikF0v7ho+E3u4oOeLx9fLbc+St33dhqLI4WOWcUCoW0V/m5kxREC3cw==
X-Received: by 2002:a4a:7055:: with SMTP id b21mr5325917oof.26.1602161826711;
 Thu, 08 Oct 2020 05:57:06 -0700 (PDT)
From: Richard Henderson <richard.henderson@linaro.org>
To: qemu-devel@nongnu.org
Subject: [PULL 02/11] tcg: Drop union from TCGArgConstraint
Date: Thu,  8 Oct 2020 07:56:50 -0500
Message-Id: <20201008125659.49857-3-richard.henderson@linaro.org>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20201008125659.49857-1-richard.henderson@linaro.org>
References: <20201008125659.49857-1-richard.henderson@linaro.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
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::c36;
 envelope-from=richard.henderson@linaro.org; helo=mail-oo1-xc36.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: <qemu-devel.nongnu.org>
List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>
List-Archive: <https://lists.nongnu.org/archive/html/qemu-devel>
List-Post: <mailto:qemu-devel@nongnu.org>
List-Help: <mailto:qemu-devel-request@nongnu.org?subject=help>
List-Subscribe: <https://lists.nongnu.org/mailman/listinfo/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=subscribe>
Cc: peter.maydell@linaro.org,
 =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <f4bug@amsat.org>
Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org
Sender: "Qemu-devel" <qemu-devel-bounces+importer=patchew.org@nongnu.org>
X-ZohoMail-DKIM: pass (identity @linaro.org)

The union is unused; let "regs" appear in the main structure
without the "u.regs" wrapping.

Reviewed-by: Philippe Mathieu-Daud=C3=A9 <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 include/tcg/tcg.h            |  4 +---
 tcg/tcg.c                    | 22 +++++++++++-----------
 tcg/aarch64/tcg-target.c.inc | 14 +++++++-------
 tcg/arm/tcg-target.c.inc     | 26 +++++++++++++-------------
 tcg/i386/tcg-target.c.inc    | 26 +++++++++++++-------------
 tcg/mips/tcg-target.c.inc    | 18 +++++++++---------
 tcg/ppc/tcg-target.c.inc     | 24 ++++++++++++------------
 tcg/riscv/tcg-target.c.inc   | 14 +++++++-------
 tcg/s390/tcg-target.c.inc    | 18 +++++++++---------
 tcg/sparc/tcg-target.c.inc   | 16 ++++++++--------
 tcg/tci/tcg-target.c.inc     |  2 +-
 11 files changed, 91 insertions(+), 93 deletions(-)

diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h
index 53ce94c2c5..a5a0ea4ada 100644
--- a/include/tcg/tcg.h
+++ b/include/tcg/tcg.h
@@ -985,9 +985,7 @@ void tcg_dump_op_count(void);
 typedef struct TCGArgConstraint {
     uint16_t ct;
     uint8_t alias_index;
-    union {
-        TCGRegSet regs;
-    } u;
+    TCGRegSet regs;
 } TCGArgConstraint;
=20
 #define TCG_MAX_OP_ARGS 16
diff --git a/tcg/tcg.c b/tcg/tcg.c
index 164a141d74..8e0df353ec 100644
--- a/tcg/tcg.c
+++ b/tcg/tcg.c
@@ -2210,7 +2210,7 @@ static int get_constraint_priority(const TCGOpDef *de=
f, int k)
             return 0;
         n =3D 0;
         for(i =3D 0; i < TCG_TARGET_NB_REGS; i++) {
-            if (tcg_regset_test_reg(arg_ct->u.regs, i))
+            if (tcg_regset_test_reg(arg_ct->regs, i))
                 n++;
         }
     }
@@ -2268,7 +2268,7 @@ static void process_op_defs(TCGContext *s)
             /* Incomplete TCGTargetOpDef entry. */
             tcg_debug_assert(ct_str !=3D NULL);
=20
-            def->args_ct[i].u.regs =3D 0;
+            def->args_ct[i].regs =3D 0;
             def->args_ct[i].ct =3D 0;
             while (*ct_str !=3D '\0') {
                 switch(*ct_str) {
@@ -2855,13 +2855,13 @@ static void liveness_pass_1(TCGContext *s)
                     pset =3D la_temp_pref(ts);
                     set =3D *pset;
=20
-                    set &=3D ct->u.regs;
+                    set &=3D ct->regs;
                     if (ct->ct & TCG_CT_IALIAS) {
                         set &=3D op->output_pref[ct->alias_index];
                     }
                     /* If the combination is not possible, restart.  */
                     if (set =3D=3D 0) {
-                        set =3D ct->u.regs;
+                        set =3D ct->regs;
                     }
                     *pset =3D set;
                 }
@@ -3551,8 +3551,8 @@ static void tcg_reg_alloc_dup(TCGContext *s, const TC=
GOp *op)
         return;
     }
=20
-    dup_out_regs =3D tcg_op_defs[INDEX_op_dup_vec].args_ct[0].u.regs;
-    dup_in_regs =3D tcg_op_defs[INDEX_op_dup_vec].args_ct[1].u.regs;
+    dup_out_regs =3D tcg_op_defs[INDEX_op_dup_vec].args_ct[0].regs;
+    dup_in_regs =3D tcg_op_defs[INDEX_op_dup_vec].args_ct[1].regs;
=20
     /* Allocate the output register now.  */
     if (ots->val_type !=3D TEMP_VAL_REG) {
@@ -3706,10 +3706,10 @@ static void tcg_reg_alloc_op(TCGContext *s, const T=
CGOp *op)
             }
         }
=20
-        temp_load(s, ts, arg_ct->u.regs, i_allocated_regs, i_preferred_reg=
s);
+        temp_load(s, ts, arg_ct->regs, i_allocated_regs, i_preferred_regs);
         reg =3D ts->reg;
=20
-        if (tcg_regset_test_reg(arg_ct->u.regs, reg)) {
+        if (tcg_regset_test_reg(arg_ct->regs, reg)) {
             /* nothing to do : the constraint is satisfied */
         } else {
         allocate_in_reg:
@@ -3717,7 +3717,7 @@ static void tcg_reg_alloc_op(TCGContext *s, const TCG=
Op *op)
                and move the temporary register into it */
             temp_load(s, ts, tcg_target_available_regs[ts->type],
                       i_allocated_regs, 0);
-            reg =3D tcg_reg_alloc(s, arg_ct->u.regs, i_allocated_regs,
+            reg =3D tcg_reg_alloc(s, arg_ct->regs, i_allocated_regs,
                                 o_preferred_regs, ts->indirect_base);
             if (!tcg_out_mov(s, ts->type, reg, ts->reg)) {
                 /*
@@ -3772,11 +3772,11 @@ static void tcg_reg_alloc_op(TCGContext *s, const T=
CGOp *op)
                 && !const_args[arg_ct->alias_index]) {
                 reg =3D new_args[arg_ct->alias_index];
             } else if (arg_ct->ct & TCG_CT_NEWREG) {
-                reg =3D tcg_reg_alloc(s, arg_ct->u.regs,
+                reg =3D tcg_reg_alloc(s, arg_ct->regs,
                                     i_allocated_regs | o_allocated_regs,
                                     op->output_pref[k], ts->indirect_base);
             } else {
-                reg =3D tcg_reg_alloc(s, arg_ct->u.regs, o_allocated_regs,
+                reg =3D tcg_reg_alloc(s, arg_ct->regs, o_allocated_regs,
                                     op->output_pref[k], ts->indirect_base);
             }
             tcg_regset_set_reg(o_allocated_regs, reg);
diff --git a/tcg/aarch64/tcg-target.c.inc b/tcg/aarch64/tcg-target.c.inc
index 2607fe4ab9..dbe5c6a14c 100644
--- a/tcg/aarch64/tcg-target.c.inc
+++ b/tcg/aarch64/tcg-target.c.inc
@@ -129,22 +129,22 @@ static const char *target_parse_constraint(TCGArgCons=
traint *ct,
     switch (*ct_str++) {
     case 'r': /* general registers */
         ct->ct |=3D TCG_CT_REG;
-        ct->u.regs |=3D 0xffffffffu;
+        ct->regs |=3D 0xffffffffu;
         break;
     case 'w': /* advsimd registers */
         ct->ct |=3D TCG_CT_REG;
-        ct->u.regs |=3D 0xffffffff00000000ull;
+        ct->regs |=3D 0xffffffff00000000ull;
         break;
     case 'l': /* qemu_ld / qemu_st address, data_reg */
         ct->ct |=3D TCG_CT_REG;
-        ct->u.regs =3D 0xffffffffu;
+        ct->regs =3D 0xffffffffu;
 #ifdef CONFIG_SOFTMMU
         /* x0 and x1 will be overwritten when reading the tlb entry,
            and x2, and x3 for helper args, better to avoid using them. */
-        tcg_regset_reset_reg(ct->u.regs, TCG_REG_X0);
-        tcg_regset_reset_reg(ct->u.regs, TCG_REG_X1);
-        tcg_regset_reset_reg(ct->u.regs, TCG_REG_X2);
-        tcg_regset_reset_reg(ct->u.regs, TCG_REG_X3);
+        tcg_regset_reset_reg(ct->regs, TCG_REG_X0);
+        tcg_regset_reset_reg(ct->regs, TCG_REG_X1);
+        tcg_regset_reset_reg(ct->regs, TCG_REG_X2);
+        tcg_regset_reset_reg(ct->regs, TCG_REG_X3);
 #endif
         break;
     case 'A': /* Valid for arithmetic immediate (positive or negative).  */
diff --git a/tcg/arm/tcg-target.c.inc b/tcg/arm/tcg-target.c.inc
index bc1e1b5a71..978eb1dd70 100644
--- a/tcg/arm/tcg-target.c.inc
+++ b/tcg/arm/tcg-target.c.inc
@@ -254,40 +254,40 @@ static const char *target_parse_constraint(TCGArgCons=
traint *ct,
=20
     case 'r':
         ct->ct |=3D TCG_CT_REG;
-        ct->u.regs =3D 0xffff;
+        ct->regs =3D 0xffff;
         break;
=20
     /* qemu_ld address */
     case 'l':
         ct->ct |=3D TCG_CT_REG;
-        ct->u.regs =3D 0xffff;
+        ct->regs =3D 0xffff;
 #ifdef CONFIG_SOFTMMU
         /* r0-r2,lr will be overwritten when reading the tlb entry,
            so don't use these. */
-        tcg_regset_reset_reg(ct->u.regs, TCG_REG_R0);
-        tcg_regset_reset_reg(ct->u.regs, TCG_REG_R1);
-        tcg_regset_reset_reg(ct->u.regs, TCG_REG_R2);
-        tcg_regset_reset_reg(ct->u.regs, TCG_REG_R3);
-        tcg_regset_reset_reg(ct->u.regs, TCG_REG_R14);
+        tcg_regset_reset_reg(ct->regs, TCG_REG_R0);
+        tcg_regset_reset_reg(ct->regs, TCG_REG_R1);
+        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_R14);
 #endif
         break;
=20
     /* qemu_st address & data */
     case 's':
         ct->ct |=3D TCG_CT_REG;
-        ct->u.regs =3D 0xffff;
+        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. */
-        tcg_regset_reset_reg(ct->u.regs, TCG_REG_R0);
-        tcg_regset_reset_reg(ct->u.regs, TCG_REG_R1);
+        tcg_regset_reset_reg(ct->regs, TCG_REG_R0);
+        tcg_regset_reset_reg(ct->regs, TCG_REG_R1);
 #if defined(CONFIG_SOFTMMU)
         /* Avoid clashes with registers being used for helper args */
-        tcg_regset_reset_reg(ct->u.regs, TCG_REG_R2);
+        tcg_regset_reset_reg(ct->regs, TCG_REG_R2);
 #if TARGET_LONG_BITS =3D=3D 64
         /* Avoid clashes with registers being used for helper args */
-        tcg_regset_reset_reg(ct->u.regs, TCG_REG_R3);
+        tcg_regset_reset_reg(ct->regs, TCG_REG_R3);
 #endif
-        tcg_regset_reset_reg(ct->u.regs, TCG_REG_R14);
+        tcg_regset_reset_reg(ct->regs, TCG_REG_R14);
 #endif
         break;
=20
diff --git a/tcg/i386/tcg-target.c.inc b/tcg/i386/tcg-target.c.inc
index 0155c0691c..8661ec3393 100644
--- a/tcg/i386/tcg-target.c.inc
+++ b/tcg/i386/tcg-target.c.inc
@@ -209,42 +209,42 @@ 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->u.regs, TCG_REG_EAX);
+        tcg_regset_set_reg(ct->regs, TCG_REG_EAX);
         break;
     case 'b':
         ct->ct |=3D TCG_CT_REG;
-        tcg_regset_set_reg(ct->u.regs, TCG_REG_EBX);
+        tcg_regset_set_reg(ct->regs, TCG_REG_EBX);
         break;
     case 'c':
         ct->ct |=3D TCG_CT_REG;
-        tcg_regset_set_reg(ct->u.regs, TCG_REG_ECX);
+        tcg_regset_set_reg(ct->regs, TCG_REG_ECX);
         break;
     case 'd':
         ct->ct |=3D TCG_CT_REG;
-        tcg_regset_set_reg(ct->u.regs, TCG_REG_EDX);
+        tcg_regset_set_reg(ct->regs, TCG_REG_EDX);
         break;
     case 'S':
         ct->ct |=3D TCG_CT_REG;
-        tcg_regset_set_reg(ct->u.regs, TCG_REG_ESI);
+        tcg_regset_set_reg(ct->regs, TCG_REG_ESI);
         break;
     case 'D':
         ct->ct |=3D TCG_CT_REG;
-        tcg_regset_set_reg(ct->u.regs, TCG_REG_EDI);
+        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->u.regs =3D TCG_TARGET_REG_BITS =3D=3D 64 ? 0xffff : 0xf;
+        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->u.regs =3D 0xf;
+        ct->regs =3D 0xf;
         break;
     case 'r':
         /* A general register.  */
         ct->ct |=3D TCG_CT_REG;
-        ct->u.regs |=3D ALL_GENERAL_REGS;
+        ct->regs |=3D ALL_GENERAL_REGS;
         break;
     case 'W':
         /* With TZCNT/LZCNT, we can have operand-size as an input.  */
@@ -253,15 +253,15 @@ static const char *target_parse_constraint(TCGArgCons=
traint *ct,
     case 'x':
         /* A vector register.  */
         ct->ct |=3D TCG_CT_REG;
-        ct->u.regs |=3D ALL_VECTOR_REGS;
+        ct->regs |=3D ALL_VECTOR_REGS;
         break;
=20
         /* qemu_ld/st address constraint */
     case 'L':
         ct->ct |=3D TCG_CT_REG;
-        ct->u.regs =3D TCG_TARGET_REG_BITS =3D=3D 64 ? 0xffff : 0xff;
-        tcg_regset_reset_reg(ct->u.regs, TCG_REG_L0);
-        tcg_regset_reset_reg(ct->u.regs, TCG_REG_L1);
+        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);
         break;
=20
     case 'e':
diff --git a/tcg/mips/tcg-target.c.inc b/tcg/mips/tcg-target.c.inc
index 7aa2073520..aae4fd187b 100644
--- a/tcg/mips/tcg-target.c.inc
+++ b/tcg/mips/tcg-target.c.inc
@@ -196,28 +196,28 @@ static const char *target_parse_constraint(TCGArgCons=
traint *ct,
     switch(*ct_str++) {
     case 'r':
         ct->ct |=3D TCG_CT_REG;
-        ct->u.regs =3D 0xffffffff;
+        ct->regs =3D 0xffffffff;
         break;
     case 'L': /* qemu_ld input arg constraint */
         ct->ct |=3D TCG_CT_REG;
-        ct->u.regs =3D 0xffffffff;
-        tcg_regset_reset_reg(ct->u.regs, TCG_REG_A0);
+        ct->regs =3D 0xffffffff;
+        tcg_regset_reset_reg(ct->regs, TCG_REG_A0);
 #if defined(CONFIG_SOFTMMU)
         if (TCG_TARGET_REG_BITS < TARGET_LONG_BITS) {
-            tcg_regset_reset_reg(ct->u.regs, TCG_REG_A2);
+            tcg_regset_reset_reg(ct->regs, TCG_REG_A2);
         }
 #endif
         break;
     case 'S': /* qemu_st constraint */
         ct->ct |=3D TCG_CT_REG;
-        ct->u.regs =3D 0xffffffff;
-        tcg_regset_reset_reg(ct->u.regs, TCG_REG_A0);
+        ct->regs =3D 0xffffffff;
+        tcg_regset_reset_reg(ct->regs, TCG_REG_A0);
 #if defined(CONFIG_SOFTMMU)
         if (TCG_TARGET_REG_BITS < TARGET_LONG_BITS) {
-            tcg_regset_reset_reg(ct->u.regs, TCG_REG_A2);
-            tcg_regset_reset_reg(ct->u.regs, TCG_REG_A3);
+            tcg_regset_reset_reg(ct->regs, TCG_REG_A2);
+            tcg_regset_reset_reg(ct->regs, TCG_REG_A3);
         } else {
-            tcg_regset_reset_reg(ct->u.regs, TCG_REG_A1);
+            tcg_regset_reset_reg(ct->regs, TCG_REG_A1);
         }
 #endif
         break;
diff --git a/tcg/ppc/tcg-target.c.inc b/tcg/ppc/tcg-target.c.inc
index 7cb40b0466..0bd947b788 100644
--- a/tcg/ppc/tcg-target.c.inc
+++ b/tcg/ppc/tcg-target.c.inc
@@ -225,33 +225,33 @@ 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->u.regs, 3 + ct_str[0] - 'A');
+        tcg_regset_set_reg(ct->regs, 3 + ct_str[0] - 'A');
         break;
     case 'r':
         ct->ct |=3D TCG_CT_REG;
-        ct->u.regs =3D 0xffffffff;
+        ct->regs =3D 0xffffffff;
         break;
     case 'v':
         ct->ct |=3D TCG_CT_REG;
-        ct->u.regs =3D 0xffffffff00000000ull;
+        ct->regs =3D 0xffffffff00000000ull;
         break;
     case 'L':                   /* qemu_ld constraint */
         ct->ct |=3D TCG_CT_REG;
-        ct->u.regs =3D 0xffffffff;
-        tcg_regset_reset_reg(ct->u.regs, TCG_REG_R3);
+        ct->regs =3D 0xffffffff;
+        tcg_regset_reset_reg(ct->regs, TCG_REG_R3);
 #ifdef CONFIG_SOFTMMU
-        tcg_regset_reset_reg(ct->u.regs, TCG_REG_R4);
-        tcg_regset_reset_reg(ct->u.regs, TCG_REG_R5);
+        tcg_regset_reset_reg(ct->regs, TCG_REG_R4);
+        tcg_regset_reset_reg(ct->regs, TCG_REG_R5);
 #endif
         break;
     case 'S':                   /* qemu_st constraint */
         ct->ct |=3D TCG_CT_REG;
-        ct->u.regs =3D 0xffffffff;
-        tcg_regset_reset_reg(ct->u.regs, TCG_REG_R3);
+        ct->regs =3D 0xffffffff;
+        tcg_regset_reset_reg(ct->regs, TCG_REG_R3);
 #ifdef CONFIG_SOFTMMU
-        tcg_regset_reset_reg(ct->u.regs, TCG_REG_R4);
-        tcg_regset_reset_reg(ct->u.regs, TCG_REG_R5);
-        tcg_regset_reset_reg(ct->u.regs, TCG_REG_R6);
+        tcg_regset_reset_reg(ct->regs, TCG_REG_R4);
+        tcg_regset_reset_reg(ct->regs, TCG_REG_R5);
+        tcg_regset_reset_reg(ct->regs, TCG_REG_R6);
 #endif
         break;
     case 'I':
diff --git a/tcg/riscv/tcg-target.c.inc b/tcg/riscv/tcg-target.c.inc
index 2dfb07e247..0a69839adb 100644
--- a/tcg/riscv/tcg-target.c.inc
+++ b/tcg/riscv/tcg-target.c.inc
@@ -138,19 +138,19 @@ static const char *target_parse_constraint(TCGArgCons=
traint *ct,
     switch (*ct_str++) {
     case 'r':
         ct->ct |=3D TCG_CT_REG;
-        ct->u.regs =3D 0xffffffff;
+        ct->regs =3D 0xffffffff;
         break;
     case 'L':
         /* qemu_ld/qemu_st constraint */
         ct->ct |=3D TCG_CT_REG;
-        ct->u.regs =3D 0xffffffff;
+        ct->regs =3D 0xffffffff;
         /* qemu_ld/qemu_st uses TCG_REG_TMP0 */
 #if defined(CONFIG_SOFTMMU)
-        tcg_regset_reset_reg(ct->u.regs, tcg_target_call_iarg_regs[0]);
-        tcg_regset_reset_reg(ct->u.regs, tcg_target_call_iarg_regs[1]);
-        tcg_regset_reset_reg(ct->u.regs, tcg_target_call_iarg_regs[2]);
-        tcg_regset_reset_reg(ct->u.regs, tcg_target_call_iarg_regs[3]);
-        tcg_regset_reset_reg(ct->u.regs, tcg_target_call_iarg_regs[4]);
+        tcg_regset_reset_reg(ct->regs, tcg_target_call_iarg_regs[0]);
+        tcg_regset_reset_reg(ct->regs, tcg_target_call_iarg_regs[1]);
+        tcg_regset_reset_reg(ct->regs, tcg_target_call_iarg_regs[2]);
+        tcg_regset_reset_reg(ct->regs, tcg_target_call_iarg_regs[3]);
+        tcg_regset_reset_reg(ct->regs, tcg_target_call_iarg_regs[4]);
 #endif
         break;
     case 'I':
diff --git a/tcg/s390/tcg-target.c.inc b/tcg/s390/tcg-target.c.inc
index 985115acfb..9cd266a2d0 100644
--- a/tcg/s390/tcg-target.c.inc
+++ b/tcg/s390/tcg-target.c.inc
@@ -409,24 +409,24 @@ static const char *target_parse_constraint(TCGArgCons=
traint *ct,
     switch (*ct_str++) {
     case 'r':                  /* all registers */
         ct->ct |=3D TCG_CT_REG;
-        ct->u.regs =3D 0xffff;
+        ct->regs =3D 0xffff;
         break;
     case 'L':                  /* qemu_ld/st constraint */
         ct->ct |=3D TCG_CT_REG;
-        ct->u.regs =3D 0xffff;
-        tcg_regset_reset_reg(ct->u.regs, TCG_REG_R2);
-        tcg_regset_reset_reg(ct->u.regs, TCG_REG_R3);
-        tcg_regset_reset_reg(ct->u.regs, TCG_REG_R4);
+        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->u.regs =3D 0;
-        tcg_regset_set_reg(ct->u.regs, TCG_REG_R2);
+        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->u.regs =3D 0;
-        tcg_regset_set_reg(ct->u.regs, TCG_REG_R3);
+        ct->regs =3D 0;
+        tcg_regset_set_reg(ct->regs, TCG_REG_R3);
         break;
     case 'A':
         ct->ct |=3D TCG_CT_CONST_S33;
diff --git a/tcg/sparc/tcg-target.c.inc b/tcg/sparc/tcg-target.c.inc
index 40bc12290c..e2de749af7 100644
--- a/tcg/sparc/tcg-target.c.inc
+++ b/tcg/sparc/tcg-target.c.inc
@@ -326,27 +326,27 @@ static const char *target_parse_constraint(TCGArgCons=
traint *ct,
     switch (*ct_str++) {
     case 'r':
         ct->ct |=3D TCG_CT_REG;
-        ct->u.regs =3D 0xffffffff;
+        ct->regs =3D 0xffffffff;
         break;
     case 'R':
         ct->ct |=3D TCG_CT_REG;
-        ct->u.regs =3D ALL_64;
+        ct->regs =3D ALL_64;
         break;
     case 'A': /* qemu_ld/st address constraint */
         ct->ct |=3D TCG_CT_REG;
-        ct->u.regs =3D TARGET_LONG_BITS =3D=3D 64 ? ALL_64 : 0xffffffff;
+        ct->regs =3D TARGET_LONG_BITS =3D=3D 64 ? ALL_64 : 0xffffffff;
     reserve_helpers:
-        tcg_regset_reset_reg(ct->u.regs, TCG_REG_O0);
-        tcg_regset_reset_reg(ct->u.regs, TCG_REG_O1);
-        tcg_regset_reset_reg(ct->u.regs, TCG_REG_O2);
+        tcg_regset_reset_reg(ct->regs, TCG_REG_O0);
+        tcg_regset_reset_reg(ct->regs, TCG_REG_O1);
+        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->u.regs =3D 0xffffffff;
+        ct->regs =3D 0xffffffff;
         goto reserve_helpers;
     case 'S': /* qemu_st data 64-bit constraint */
         ct->ct |=3D TCG_CT_REG;
-        ct->u.regs =3D ALL_64;
+        ct->regs =3D ALL_64;
         goto reserve_helpers;
     case 'I':
         ct->ct |=3D TCG_CT_CONST_S11;
diff --git a/tcg/tci/tcg-target.c.inc b/tcg/tci/tcg-target.c.inc
index 992d50cb1e..a7215f346f 100644
--- a/tcg/tci/tcg-target.c.inc
+++ b/tcg/tci/tcg-target.c.inc
@@ -393,7 +393,7 @@ static const char *target_parse_constraint(TCGArgConstr=
aint *ct,
     case 'L':                   /* qemu_ld constraint */
     case 'S':                   /* qemu_st constraint */
         ct->ct |=3D TCG_CT_REG;
-        ct->u.regs =3D BIT(TCG_TARGET_NB_REGS) - 1;
+        ct->regs =3D BIT(TCG_TARGET_NB_REGS) - 1;
         break;
     default:
         return NULL;
--=20
2.25.1


From nobody Tue May  6 19:42:59 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=1602163821; cv=none;
	d=zohomail.com; s=zohoarc;
	b=OEzS9ByEp+qder2ZjpT+LiOiyiKX8hXffnes0Ii6g36bXuY/Rzw3ijE25cdXizhNpp6JXxFXNaE9kVfUNEfZKUUGWbzWOa0Gu60GY74uKirJaMbgcSU4HgHc5hlW8VffdzDD1yUGlYGKW2eqgTdUPPL9GYv5VfmRqRE8iie7USQ=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com;
 s=zohoarc;
	t=1602163821;
 h=Content-Transfer-Encoding:Cc: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=DB9tU6r0brwFG1qFXqPktiK9xDRAnPwJJP/MTNU/UOw=;
	b=j95O0Q/iEZKQ8CNrTGRQhTHC+m7wZdJ7Cy9isEXrB0S53yd8UBZSJvShyWjXvfLQdu9syuyuf2p2xbCA2QXw0MnpvoEOds5XEZ6rg8ScK+XSZwwZedd8HhwOrj7Tl1/1IZJnY+wzAvdu6RBBm1wv2FcT3z/lKpiKLTMgvXNWBF4=
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=<richard.henderson@linaro.org> (p=none dis=none)
 header.from=<richard.henderson@linaro.org>
Return-Path: <qemu-devel-bounces+importer=patchew.org@nongnu.org>
Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by
 mx.zohomail.com
	with SMTPS id 1602163821646649.5929079859881;
 Thu, 8 Oct 2020 06:30:21 -0700 (PDT)
Received: from localhost ([::1]:45478 helo=lists1p.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.90_1)
	(envelope-from <qemu-devel-bounces+importer=patchew.org@nongnu.org>)
	id 1kQVW2-0005Lz-VP
	for importer@patchew.org; Thu, 08 Oct 2020 08:59:27 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:45314)
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <richard.henderson@linaro.org>)
 id 1kQVTs-0003Yw-Nc
 for qemu-devel@nongnu.org; Thu, 08 Oct 2020 08:57:12 -0400
Received: from mail-oo1-xc43.google.com ([2607:f8b0:4864:20::c43]:34387)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.90_1) (envelope-from <richard.henderson@linaro.org>)
 id 1kQVTq-0001x6-P2
 for qemu-devel@nongnu.org; Thu, 08 Oct 2020 08:57:12 -0400
Received: by mail-oo1-xc43.google.com with SMTP id o20so1442405ook.1
 for <qemu-devel@nongnu.org>; Thu, 08 Oct 2020 05:57:10 -0700 (PDT)
Received: from localhost.localdomain (168.189-204-159.bestelclientes.com.mx.
 [189.204.159.168])
 by smtp.gmail.com with ESMTPSA id w64sm4701933oig.31.2020.10.08.05.57.06
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 08 Oct 2020 05:57:07 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google;
 h=from:to:cc:subject:date:message-id:in-reply-to:references
 :mime-version:content-transfer-encoding;
 bh=DB9tU6r0brwFG1qFXqPktiK9xDRAnPwJJP/MTNU/UOw=;
 b=MjIw66q+tEL4/MV1cl8hDibP4DW9NmPc9X0glZfJATg+ItiCB7bXeMEFH2Au7P9nuS
 Bfwr70g6yQwKatURQTWoM0rQucMYbWTVGDCkGTpaGSvfWEHUBUREMB8uVU7Py0CL/yMO
 yQMyojQbXHdhjI3oYzNDfKwuoUMw1aJYDSYzeq6CmUTCmqy7U3e9WOtCpLKFL8AOVrYO
 wzDeBFZ+8woZiq1EFYNk2BOR+87A0IHSr0PtVGFd8M2rxgI/AIvqyBGiKo6yRDjrDvPC
 +8iG+wPDqcYg/9RtxG2kX3zIRIgicSWknfTfeZuTn20bX5O2zrWA5wRWX1HvCjLYa+cR
 js5A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references:mime-version:content-transfer-encoding;
 bh=DB9tU6r0brwFG1qFXqPktiK9xDRAnPwJJP/MTNU/UOw=;
 b=XKFlbFGiZKzvhwAPTyYQImFn4ntTxY1zieRLIhq2bIBZTKK0RLYi97M7/ep3V4CGI0
 +bcOK12j9ngCowDsOqo9rhyNOFvjoi6A6r0Txskfc4rb3IpQ03FIJ0GPQ2cnPvWoTl0N
 xY0SHVkEOTVADMNsz85k2rr5KmVnQFIihfJCMO9l9/EsNs3S5G4fKwmBuGsd5o0YELA7
 ym0Q62D5V8VROTn14StvbmhopLfdXKyQYADoDeaOtNUdIhXGHE8Z+ZRTaENV+vf3ivlc
 W6ZCF36UpkTYfg45kNBP1WUk7yEPR4fnoVBGTkAZUMU9qt3rJyZz5+NAez6egd3sQB59
 XZrg==
X-Gm-Message-State: AOAM533LMLZsqOXH35lyDRBuWfUEeOxZlvqrhYObwRjK9WWhj6+WSPG+
 NqFF4VFAA3Nwryy+BCbB9muxnTt5G59ta5NS
X-Google-Smtp-Source: 
 ABdhPJzwgVXAlV2oWLOpyn8dCpTI3Oaw5EYtJSf0cPulgUxJGTKx8WYyPOU0kONZhM426XZ1UC7P9g==
X-Received: by 2002:a4a:aec3:: with SMTP id v3mr5295418oon.66.1602161828346;
 Thu, 08 Oct 2020 05:57:08 -0700 (PDT)
From: Richard Henderson <richard.henderson@linaro.org>
To: qemu-devel@nongnu.org
Subject: [PULL 03/11] tcg: Move sorted_args into TCGArgConstraint.sort_index
Date: Thu,  8 Oct 2020 07:56:51 -0500
Message-Id: <20201008125659.49857-4-richard.henderson@linaro.org>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20201008125659.49857-1-richard.henderson@linaro.org>
References: <20201008125659.49857-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::c43;
 envelope-from=richard.henderson@linaro.org; helo=mail-oo1-xc43.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: <qemu-devel.nongnu.org>
List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>
List-Archive: <https://lists.nongnu.org/archive/html/qemu-devel>
List-Post: <mailto:qemu-devel@nongnu.org>
List-Help: <mailto:qemu-devel-request@nongnu.org?subject=help>
List-Subscribe: <https://lists.nongnu.org/mailman/listinfo/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=subscribe>
Cc: peter.maydell@linaro.org
Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org
Sender: "Qemu-devel" <qemu-devel-bounces+importer=patchew.org@nongnu.org>
X-ZohoMail-DKIM: pass (identity @linaro.org)
Content-Type: text/plain; charset="utf-8"

This uses an existing hole in the TCGArgConstraint structure
and will be convenient for keeping the data in one place.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 include/tcg/tcg.h |  2 +-
 tcg/tcg.c         | 35 +++++++++++++++++------------------
 2 files changed, 18 insertions(+), 19 deletions(-)

diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h
index a5a0ea4ada..63955ac85b 100644
--- a/include/tcg/tcg.h
+++ b/include/tcg/tcg.h
@@ -985,6 +985,7 @@ void tcg_dump_op_count(void);
 typedef struct TCGArgConstraint {
     uint16_t ct;
     uint8_t alias_index;
+    uint8_t sort_index;
     TCGRegSet regs;
 } TCGArgConstraint;
=20
@@ -1015,7 +1016,6 @@ typedef struct TCGOpDef {
     uint8_t nb_oargs, nb_iargs, nb_cargs, nb_args;
     uint8_t flags;
     TCGArgConstraint *args_ct;
-    int *sorted_args;
 #if defined(CONFIG_DEBUG_TCG)
     int used;
 #endif
diff --git a/tcg/tcg.c b/tcg/tcg.c
index 8e0df353ec..da01e39fe4 100644
--- a/tcg/tcg.c
+++ b/tcg/tcg.c
@@ -944,7 +944,6 @@ void tcg_context_init(TCGContext *s)
     int op, total_args, n, i;
     TCGOpDef *def;
     TCGArgConstraint *args_ct;
-    int *sorted_args;
     TCGTemp *ts;
=20
     memset(s, 0, sizeof(*s));
@@ -960,14 +959,11 @@ void tcg_context_init(TCGContext *s)
     }
=20
     args_ct =3D g_malloc(sizeof(TCGArgConstraint) * total_args);
-    sorted_args =3D g_malloc(sizeof(int) * total_args);
=20
     for(op =3D 0; op < NB_OPS; op++) {
         def =3D &tcg_op_defs[op];
         def->args_ct =3D args_ct;
-        def->sorted_args =3D sorted_args;
         n =3D def->nb_iargs + def->nb_oargs;
-        sorted_args +=3D n;
         args_ct +=3D n;
     }
=20
@@ -2220,20 +2216,23 @@ static int get_constraint_priority(const TCGOpDef *=
def, int k)
 /* sort from highest priority to lowest */
 static void sort_constraints(TCGOpDef *def, int start, int n)
 {
-    int i, j, p1, p2, tmp;
+    int i, j;
+    TCGArgConstraint *a =3D def->args_ct;
=20
-    for(i =3D 0; i < n; i++)
-        def->sorted_args[start + i] =3D start + i;
-    if (n <=3D 1)
+    for (i =3D 0; i < n; i++) {
+        a[start + i].sort_index =3D start + i;
+    }
+    if (n <=3D 1) {
         return;
-    for(i =3D 0; i < n - 1; i++) {
-        for(j =3D i + 1; j < n; j++) {
-            p1 =3D get_constraint_priority(def, def->sorted_args[start + i=
]);
-            p2 =3D get_constraint_priority(def, def->sorted_args[start + j=
]);
+    }
+    for (i =3D 0; i < n - 1; i++) {
+        for (j =3D i + 1; j < n; j++) {
+            int p1 =3D get_constraint_priority(def, a[start + i].sort_inde=
x);
+            int p2 =3D get_constraint_priority(def, a[start + j].sort_inde=
x);
             if (p1 < p2) {
-                tmp =3D def->sorted_args[start + i];
-                def->sorted_args[start + i] =3D def->sorted_args[start + j=
];
-                def->sorted_args[start + j] =3D tmp;
+                int tmp =3D a[start + i].sort_index;
+                a[start + i].sort_index =3D a[start + j].sort_index;
+                a[start + j].sort_index =3D tmp;
             }
         }
     }
@@ -3659,7 +3658,7 @@ static void tcg_reg_alloc_op(TCGContext *s, const TCG=
Op *op)
     for (k =3D 0; k < nb_iargs; k++) {
         TCGRegSet i_preferred_regs, o_preferred_regs;
=20
-        i =3D def->sorted_args[nb_oargs + k];
+        i =3D def->args_ct[nb_oargs + k].sort_index;
         arg =3D op->args[i];
         arg_ct =3D &def->args_ct[i];
         ts =3D arg_temp(arg);
@@ -3695,7 +3694,7 @@ static void tcg_reg_alloc_op(TCGContext *s, const TCG=
Op *op)
                     int k2, i2;
                     reg =3D ts->reg;
                     for (k2 =3D 0 ; k2 < k ; k2++) {
-                        i2 =3D def->sorted_args[nb_oargs + k2];
+                        i2 =3D def->args_ct[nb_oargs + k2].sort_index;
                         if ((def->args_ct[i2].ct & TCG_CT_IALIAS) &&
                             reg =3D=3D new_args[i2]) {
                             goto allocate_in_reg;
@@ -3760,7 +3759,7 @@ static void tcg_reg_alloc_op(TCGContext *s, const TCG=
Op *op)
        =20
         /* satisfy the output constraints */
         for(k =3D 0; k < nb_oargs; k++) {
-            i =3D def->sorted_args[k];
+            i =3D def->args_ct[k].sort_index;
             arg =3D op->args[i];
             arg_ct =3D &def->args_ct[i];
             ts =3D arg_temp(arg);
--=20
2.25.1


From nobody Tue May  6 19:42:59 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=1602163872; cv=none;
	d=zohomail.com; s=zohoarc;
	b=DuO2hJe/O4xD7pE9DOLutuisK8seD3ggsNAtqmGHU6L2qKl4vvYswIBrQzIkqeY+Q2RFCN7XvSol/XxKnX1pOdK7+5OofcYZLB3IEyeYmclvMrrOp4Ch0zVGc3aQ1USS1ORmIoNtSj+hML0iUseaHGsStnmaAZfoa3k1JK7my3A=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com;
 s=zohoarc;
	t=1602163872;
 h=Content-Transfer-Encoding:Cc: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=W+OIgxh1X4FjLRLRziiRSeMVMSIyenZxG7ukb0+dNkc=;
	b=R66aykpWv9S3i7QHPgvyU+YnPQ4PyjWR0ZMa3yE00m1365R4VYSP4o1DA/RwZhEIKvdaQQTADJNkSapuladoMdmi74a0IVzBYAJZ7F1XnyH0vC0GgPI4oOI69WnWpjSg+XkFGmbVXIqTvKeRqx2xD8zDvp/Yk8Gy8dnVuYesy5I=
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=<richard.henderson@linaro.org> (p=none dis=none)
 header.from=<richard.henderson@linaro.org>
Return-Path: <qemu-devel-bounces+importer=patchew.org@nongnu.org>
Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by
 mx.zohomail.com
	with SMTPS id 160216387295665.41938098475987;
 Thu, 8 Oct 2020 06:31:12 -0700 (PDT)
Received: from localhost ([::1]:56490 helo=lists1p.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.90_1)
	(envelope-from <qemu-devel-bounces+importer=patchew.org@nongnu.org>)
	id 1kQVbA-0001nT-Q7
	for importer@patchew.org; Thu, 08 Oct 2020 09:04:44 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:45346)
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <richard.henderson@linaro.org>)
 id 1kQVTu-0003d0-JB
 for qemu-devel@nongnu.org; Thu, 08 Oct 2020 08:57:14 -0400
Received: from mail-oi1-x231.google.com ([2607:f8b0:4864:20::231]:41019)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.90_1) (envelope-from <richard.henderson@linaro.org>)
 id 1kQVTr-0001xD-VF
 for qemu-devel@nongnu.org; Thu, 08 Oct 2020 08:57:14 -0400
Received: by mail-oi1-x231.google.com with SMTP id q136so4988905oic.8
 for <qemu-devel@nongnu.org>; Thu, 08 Oct 2020 05:57:11 -0700 (PDT)
Received: from localhost.localdomain (168.189-204-159.bestelclientes.com.mx.
 [189.204.159.168])
 by smtp.gmail.com with ESMTPSA id w64sm4701933oig.31.2020.10.08.05.57.08
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 08 Oct 2020 05:57:09 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google;
 h=from:to:cc:subject:date:message-id:in-reply-to:references
 :mime-version:content-transfer-encoding;
 bh=W+OIgxh1X4FjLRLRziiRSeMVMSIyenZxG7ukb0+dNkc=;
 b=g+qQeB4c/T1d7UYugCcJMwKOiHlEoytlKEfHf6Nxr3+33afnWlUnDS492wW01iQiLL
 JIRREpe0/mSiCkwmwnQ1PjiM+OanhkyVNEk4bHB4ondZVvBXOcwN4xtVZk7PRSe3tY7w
 gtEu8buA0jO/LGZsUvbxHlcL+zn1zzPscj3kNSyvoaosHxCOvvxCU12xu1KJsmLDrLyC
 M+We3EUpUGR7n/amYUeSdGuH1skDJF3ucn/Syb54Nn2gyUmD0iCxNIeiiNzTYj6dBsqb
 Bq2OoVvvi0wH/NHE7/QvXTiyCkl79Z/E61oLLoamFn5LppQfpiMtWFsdJ6Q41GIUli/E
 ABMw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references:mime-version:content-transfer-encoding;
 bh=W+OIgxh1X4FjLRLRziiRSeMVMSIyenZxG7ukb0+dNkc=;
 b=dORgRM42RE8pl2gt6N2zGdwal7fZV+wg0rH5c10f3cY0VsPLDBMZEu9txgrK4u3EV1
 5eR2o/pS7z+Lyw00dAEFdmvn5nMRlR4FFmVzRotpsxygunqa/33Mz5cR4DN2adjnyuev
 YMWJYvnQCaS4gvoEqOTCrCy81ZYOR06HSs2lAPdrhL6aJI1DITDCocZZwRkttHGQsS/0
 pfW4i0MDbbiokx+B0LP33Ej/9+1ft0jSspRU+8HeB7lhZOL07TgykxkItEsljb4911JA
 IO8YMPi3KFxBZrNb2Pqd+wg2YCyZr17bl/uB5fMffaZXbCu6k78QdLVCwMSbOHvKEfzq
 A2Zw==
X-Gm-Message-State: AOAM532FOAOP3UfPHXjCl53Qxlz8TatOARPp9zN11cfv+BmG4gk2+QjM
 xYvydlHJwxMZBX5cVqDDjmMWrMPbA/XbEvd9
X-Google-Smtp-Source: 
 ABdhPJwBKUrQWGLtnKIHKBRhedwJ37T212hsZgOWSpA0qpwBIBJpv8nJp4DDUpG8Dkf2Ufi2WmmkHg==
X-Received: by 2002:aca:ba07:: with SMTP id k7mr5195890oif.159.1602161829948;
 Thu, 08 Oct 2020 05:57:09 -0700 (PDT)
From: Richard Henderson <richard.henderson@linaro.org>
To: qemu-devel@nongnu.org
Subject: [PULL 04/11] tcg: Remove TCG_CT_REG
Date: Thu,  8 Oct 2020 07:56:52 -0500
Message-Id: <20201008125659.49857-5-richard.henderson@linaro.org>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20201008125659.49857-1-richard.henderson@linaro.org>
References: <20201008125659.49857-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::231;
 envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x231.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: <qemu-devel.nongnu.org>
List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>
List-Archive: <https://lists.nongnu.org/archive/html/qemu-devel>
List-Post: <mailto:qemu-devel@nongnu.org>
List-Help: <mailto:qemu-devel-request@nongnu.org?subject=help>
List-Subscribe: <https://lists.nongnu.org/mailman/listinfo/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=subscribe>
Cc: peter.maydell@linaro.org
Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org
Sender: "Qemu-devel" <qemu-devel-bounces+importer=patchew.org@nongnu.org>
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 <richard.henderson@linaro.org>
---
 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 da01e39fe4..55b2fc3ae3 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 dbe5c6a14c..26f71cb599 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 aae4fd187b..41be574e89 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 0bd947b788..18ee989f95 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 e2de749af7..6775bd30fc 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


From nobody Tue May  6 19:42:59 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=1602163858; cv=none;
	d=zohomail.com; s=zohoarc;
	b=dT2T0MTDgbFIHzy+cK9BUzb71IY58t/97ziUNvJhtCoUhoj1W3Eox86KkVSkrZRatK+ZIcQ4MLtN2cQD69swcQ1Qp+JEsNn9l8kvqT69sWMKz3mq98lG9lzBRM0heo3iexS4UeFsILHqm0AkWa9ydJha81hoqrs83xwGKZ/pMzc=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com;
 s=zohoarc;
	t=1602163858;
 h=Content-Transfer-Encoding:Cc: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=g67AaWSNMDVXjRU+vP3LKCD0hiHwTorrb1XmdieL2IE=;
	b=ITlgroyT5zguxkJR5uHRoPnApnSf9rmvmB/XRB4hycDme3yvoS63ykwK5+xV/5EBV9nBS2gKsJEhAayOtduz1NH5U5wtEVS/fn7MCghIsXRyWGexWc6dHOfCON8j1Yu6LUthZJ2P5RUI78LyVXa84E75EuuXQT3ui303fCuV1U8=
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=<richard.henderson@linaro.org> (p=none dis=none)
 header.from=<richard.henderson@linaro.org>
Return-Path: <qemu-devel-bounces+importer=patchew.org@nongnu.org>
Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by
 mx.zohomail.com
	with SMTPS id 1602163858850920.451293002637;
 Thu, 8 Oct 2020 06:30:58 -0700 (PDT)
Received: from localhost ([::1]:53392 helo=lists1p.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.90_1)
	(envelope-from <qemu-devel-bounces+importer=patchew.org@nongnu.org>)
	id 1kQVZn-0000Sm-R2
	for importer@patchew.org; Thu, 08 Oct 2020 09:03:19 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:45352)
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <richard.henderson@linaro.org>)
 id 1kQVTu-0003ds-U2
 for qemu-devel@nongnu.org; Thu, 08 Oct 2020 08:57:14 -0400
Received: from mail-oi1-x229.google.com ([2607:f8b0:4864:20::229]:35632)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.90_1) (envelope-from <richard.henderson@linaro.org>)
 id 1kQVTs-0001yW-VQ
 for qemu-devel@nongnu.org; Thu, 08 Oct 2020 08:57:14 -0400
Received: by mail-oi1-x229.google.com with SMTP id w141so6192465oia.2
 for <qemu-devel@nongnu.org>; Thu, 08 Oct 2020 05:57:12 -0700 (PDT)
Received: from localhost.localdomain (168.189-204-159.bestelclientes.com.mx.
 [189.204.159.168])
 by smtp.gmail.com with ESMTPSA id w64sm4701933oig.31.2020.10.08.05.57.10
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 08 Oct 2020 05:57:10 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google;
 h=from:to:cc:subject:date:message-id:in-reply-to:references
 :mime-version:content-transfer-encoding;
 bh=g67AaWSNMDVXjRU+vP3LKCD0hiHwTorrb1XmdieL2IE=;
 b=Fgi3twoc1HVrcIetOSBYpE9HtjSkihuYNxLQBYm2S3UohpajeIH7AeYnxVFWGfB4yi
 9gqqri2qdUPe43YJpNAnZsK7QCtDfUeJ1yL9nG4JkYgxq0RqW1JjNh1/lHdmOXK9Q7K3
 dmvzSuv3t8T4perpgIY72PZ7ofn4aNWDmxu2JNRKmVEUPjfnY4QCigJNnVIgIivLI3Zk
 ICaZv2/K4Ub4NVSzzjMCflKhXJ2lWRmdDqVPWmXuM4sX8v/vBxKk1t/yEZbGi9YEw+IX
 EEBiU4YRZX/7QVczwmBo/+5oUNg2+Zg/rQuXQyWxRvgEDJUhDmrAd39XbXzpZSBJP330
 olIw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references:mime-version:content-transfer-encoding;
 bh=g67AaWSNMDVXjRU+vP3LKCD0hiHwTorrb1XmdieL2IE=;
 b=IaZD7wulDmHjqDHSyuxuJRuezzqhiDAlvgiEydLIXNMf438ik5ueZDqHzYgHE6Z768
 kMn51Q8iylRAGJdkMvjI/teLsc8lEc/aUUU507l6Eq8mcy5vkiNXJVQZd+xwtdjtjAQU
 /R15+JiBhFv1kfDPcn9xr/JSB0YuNjuXN9BNJhCWSujnIbL5i5pkopNLbSilRheO/LzV
 Ym2vhjNMQPYz5TIQcq881TGvx52Mvr7bBWmojm4Expgdi1IfyJCC+V+y/jtKQBnbVstK
 5G8nO3uEvmDVvoC/PQsoqnqkxhb39JogooeFXIlWeiKT2vAWCsTv+JHnYyuk7RtUu6vL
 eU6A==
X-Gm-Message-State: AOAM5337vWg2ksbeArhk4eFYfStVeebm4wjSFPK9QaKk4gKxt2Sx2Ity
 h88bBc8Y+Ie+ep6ZT1jDQl7xCuD/DWa3DrSm
X-Google-Smtp-Source: 
 ABdhPJznlJPgeg2iY0nVtR6jAy+QTGL8s0O7OWojMrwRKGAyDcCjtrU9n3QlEe12wHgebNuqu5pSTg==
X-Received: by 2002:aca:3607:: with SMTP id d7mr5000347oia.168.1602161831449;
 Thu, 08 Oct 2020 05:57:11 -0700 (PDT)
From: Richard Henderson <richard.henderson@linaro.org>
To: qemu-devel@nongnu.org
Subject: [PULL 05/11] tcg: Move some TCG_CT_* bits to TCGArgConstraint
 bitfields
Date: Thu,  8 Oct 2020 07:56:53 -0500
Message-Id: <20201008125659.49857-6-richard.henderson@linaro.org>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20201008125659.49857-1-richard.henderson@linaro.org>
References: <20201008125659.49857-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::229;
 envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x229.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: <qemu-devel.nongnu.org>
List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>
List-Archive: <https://lists.nongnu.org/archive/html/qemu-devel>
List-Post: <mailto:qemu-devel@nongnu.org>
List-Help: <mailto:qemu-devel-request@nongnu.org?subject=help>
List-Subscribe: <https://lists.nongnu.org/mailman/listinfo/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=subscribe>
Cc: peter.maydell@linaro.org
Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org
Sender: "Qemu-devel" <qemu-devel-bounces+importer=patchew.org@nongnu.org>
X-ZohoMail-DKIM: pass (identity @linaro.org)
Content-Type: text/plain; charset="utf-8"

These are easier to set and test when they have their own fields.
Reduce the size of alias_index and sort_index to 4 bits, which is
sufficient for TCG_MAX_OP_ARGS.  This leaves only the bits indicating
constants within the ct field.

Move all initialization to allocation time, rather than init
individual fields in process_op_defs.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 include/tcg/tcg.h | 14 +++++++-------
 tcg/tcg.c         | 28 ++++++++++++----------------
 2 files changed, 19 insertions(+), 23 deletions(-)

diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h
index 3168315bb8..e8629b58c8 100644
--- a/include/tcg/tcg.h
+++ b/include/tcg/tcg.h
@@ -976,15 +976,15 @@ int64_t tcg_cpu_exec_time(void);
 void tcg_dump_info(void);
 void tcg_dump_op_count(void);
=20
-#define TCG_CT_ALIAS  0x80
-#define TCG_CT_IALIAS 0x40
-#define TCG_CT_NEWREG 0x20 /* output requires a new register */
-#define TCG_CT_CONST  0x02 /* any constant of register size */
+#define TCG_CT_CONST  1 /* any constant of register size */
=20
 typedef struct TCGArgConstraint {
-    uint16_t ct;
-    uint8_t alias_index;
-    uint8_t sort_index;
+    unsigned ct : 16;
+    unsigned alias_index : 4;
+    unsigned sort_index : 4;
+    bool oalias : 1;
+    bool ialias : 1;
+    bool newreg : 1;
     TCGRegSet regs;
 } TCGArgConstraint;
=20
diff --git a/tcg/tcg.c b/tcg/tcg.c
index 55b2fc3ae3..a8c28440e2 100644
--- a/tcg/tcg.c
+++ b/tcg/tcg.c
@@ -958,7 +958,7 @@ void tcg_context_init(TCGContext *s)
         total_args +=3D n;
     }
=20
-    args_ct =3D g_malloc(sizeof(TCGArgConstraint) * total_args);
+    args_ct =3D g_new0(TCGArgConstraint, total_args);
=20
     for(op =3D 0; op < NB_OPS; op++) {
         def =3D &tcg_op_defs[op];
@@ -2197,7 +2197,7 @@ static int get_constraint_priority(const TCGOpDef *de=
f, int k)
     const TCGArgConstraint *arg_ct =3D &def->args_ct[k];
     int n;
=20
-    if (arg_ct->ct & TCG_CT_ALIAS) {
+    if (arg_ct->oalias) {
         /* an alias is equivalent to a single register */
         n =3D 1;
     } else {
@@ -2260,8 +2260,6 @@ static void process_op_defs(TCGContext *s)
             /* Incomplete TCGTargetOpDef entry. */
             tcg_debug_assert(ct_str !=3D NULL);
=20
-            def->args_ct[i].regs =3D 0;
-            def->args_ct[i].ct =3D 0;
             while (*ct_str !=3D '\0') {
                 switch(*ct_str) {
                 case '0' ... '9':
@@ -2270,18 +2268,18 @@ static void process_op_defs(TCGContext *s)
                         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].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];
-                        def->args_ct[oarg].ct |=3D TCG_CT_ALIAS;
+                        /* The output sets oalias.  */
+                        def->args_ct[oarg].oalias =3D true;
                         def->args_ct[oarg].alias_index =3D i;
-                        def->args_ct[i].ct |=3D TCG_CT_IALIAS;
+                        /* The input sets ialias. */
+                        def->args_ct[i].ialias =3D true;
                         def->args_ct[i].alias_index =3D oarg;
                     }
                     ct_str++;
                     break;
                 case '&':
-                    def->args_ct[i].ct |=3D TCG_CT_NEWREG;
+                    def->args_ct[i].newreg =3D true;
                     ct_str++;
                     break;
                 case 'i':
@@ -2848,7 +2846,7 @@ static void liveness_pass_1(TCGContext *s)
                     set =3D *pset;
=20
                     set &=3D ct->regs;
-                    if (ct->ct & TCG_CT_IALIAS) {
+                    if (ct->ialias) {
                         set &=3D op->output_pref[ct->alias_index];
                     }
                     /* If the combination is not possible, restart.  */
@@ -3665,7 +3663,7 @@ static void tcg_reg_alloc_op(TCGContext *s, const TCG=
Op *op)
         }
=20
         i_preferred_regs =3D o_preferred_regs =3D 0;
-        if (arg_ct->ct & TCG_CT_IALIAS) {
+        if (arg_ct->ialias) {
             o_preferred_regs =3D op->output_pref[arg_ct->alias_index];
             if (ts->fixed_reg) {
                 /* if fixed register, we must allocate a new register
@@ -3688,8 +3686,7 @@ static void tcg_reg_alloc_op(TCGContext *s, const TCG=
Op *op)
                     reg =3D ts->reg;
                     for (k2 =3D 0 ; k2 < k ; k2++) {
                         i2 =3D def->args_ct[nb_oargs + k2].sort_index;
-                        if ((def->args_ct[i2].ct & TCG_CT_IALIAS) &&
-                            reg =3D=3D new_args[i2]) {
+                        if (def->args_ct[i2].ialias && reg =3D=3D new_args=
[i2]) {
                             goto allocate_in_reg;
                         }
                     }
@@ -3760,10 +3757,9 @@ static void tcg_reg_alloc_op(TCGContext *s, const TC=
GOp *op)
             /* ENV should not be modified.  */
             tcg_debug_assert(!ts->fixed_reg);
=20
-            if ((arg_ct->ct & TCG_CT_ALIAS)
-                && !const_args[arg_ct->alias_index]) {
+            if (arg_ct->oalias && !const_args[arg_ct->alias_index]) {
                 reg =3D new_args[arg_ct->alias_index];
-            } else if (arg_ct->ct & TCG_CT_NEWREG) {
+            } else if (arg_ct->newreg) {
                 reg =3D tcg_reg_alloc(s, arg_ct->regs,
                                     i_allocated_regs | o_allocated_regs,
                                     op->output_pref[k], ts->indirect_base);
--=20
2.25.1


From nobody Tue May  6 19:42:59 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=1602163887; cv=none;
	d=zohomail.com; s=zohoarc;
	b=lPtc2h7A7kzSjUbn1TB9TzMBLxW68W9P0bvx1V8eymooHeurE8JvahJGRO2wi85V9dvDWcvlSHhZzq2poeslQ5YAy6wZbAowHfWxK2a40P+89qEZ9bVPCYlP4c5VM0/dI2jJ8z5lqY48sTHApWhpAcFNcV2p/z6wce7EwDctvs0=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com;
 s=zohoarc;
	t=1602163887;
 h=Content-Type:Content-Transfer-Encoding:Cc: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=afbVfXCyOnplvKb9IQqsRxrxK8WhYnUUFrCjNMF3AZ4=;
	b=RCW8xcSOVWoDZsBnmIz7y8OfzYMvs5900VaZP/PILWS73tTgTFn6JbnQpVyeFaICLhNnhDPPSUL9WBJzn/WaFkSuXLtvfVb49OFe9SXnG9+/rtImqgDJ/MyvCun7OhX8MN5+PVCTQkuZTZhLDBhfKU0e3RU4PlhRQtMQB4VJhuo=
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=<richard.henderson@linaro.org> (p=none dis=none)
 header.from=<richard.henderson@linaro.org>
Return-Path: <qemu-devel-bounces+importer=patchew.org@nongnu.org>
Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by
 mx.zohomail.com
	with SMTPS id 160216388740120.040533927554065;
 Thu, 8 Oct 2020 06:31:27 -0700 (PDT)
Received: from localhost ([::1]:53964 helo=lists1p.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.90_1)
	(envelope-from <qemu-devel-bounces+importer=patchew.org@nongnu.org>)
	id 1kQVZw-0000hO-Uk
	for importer@patchew.org; Thu, 08 Oct 2020 09:03:28 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:45376)
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <richard.henderson@linaro.org>)
 id 1kQVTw-0003ho-HQ
 for qemu-devel@nongnu.org; Thu, 08 Oct 2020 08:57:16 -0400
Received: from mail-ot1-x333.google.com ([2607:f8b0:4864:20::333]:46152)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.90_1) (envelope-from <richard.henderson@linaro.org>)
 id 1kQVTu-0001yl-Op
 for qemu-devel@nongnu.org; Thu, 08 Oct 2020 08:57:16 -0400
Received: by mail-ot1-x333.google.com with SMTP id m11so5322305otk.13
 for <qemu-devel@nongnu.org>; Thu, 08 Oct 2020 05:57:14 -0700 (PDT)
Received: from localhost.localdomain (168.189-204-159.bestelclientes.com.mx.
 [189.204.159.168])
 by smtp.gmail.com with ESMTPSA id w64sm4701933oig.31.2020.10.08.05.57.11
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 08 Oct 2020 05:57:12 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google;
 h=from:to:cc:subject:date:message-id:in-reply-to:references
 :mime-version:content-transfer-encoding;
 bh=afbVfXCyOnplvKb9IQqsRxrxK8WhYnUUFrCjNMF3AZ4=;
 b=G28/ASjTcFEZQLjo/pgajDu2EJPJdsbMWr9EC4tCC94EwD0ivxn3yQx077HJ7iNbav
 K6zzyTQX5sKCu59KHOlicP4Id5qsKQwHFJH0qYVUPsW9rNdJridA6D2LdRB8sNt2+Yex
 oy/vbA6FyWpzLx1DagBK9+yV6wmYzY4cxjzRLCGxkCFJzuBdVCjJmS3WC6/XD4XK/5xo
 6MCyCskVzjdureycwHDQX44h2LaY8RhRhxPIo5NO5u1lPAugbT1Ky63WVXLOGoS7edt4
 nLdicSy6NErneiIaHywjlhMTjjiOb61k1z0gil7qzaAwtq+mMlJzgVQ9xI1HdZ3VTCpM
 OI6Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references:mime-version:content-transfer-encoding;
 bh=afbVfXCyOnplvKb9IQqsRxrxK8WhYnUUFrCjNMF3AZ4=;
 b=uT/QvfDNrNf8I+CyunLc/slTq5CArHoNs5JcyF3vl5sgq+Lms9aILNZxfZDxzVyK5k
 +Qi3so4Fz55Lg+cvxCaXaPw9M3cFQXotwRBFUA8NZscf0VNwH/KgoetCtsdUdnVYoyhI
 cCiTcUyiNk37LWaMm+uhrbwb6Bfbnf7bQrzQkGlAHuTab5N9e4MRcIk+Lat+Ke6gZQwl
 MW/X5ZFlO+wATaBDFAZ5eSwDhnGNsDrrMf13ANIcRWiUsGjiPd/KI+3D4qeD0qnig1Ge
 tD6HVckLXVCpkO1TtnGklxZ2AsMamiBNU8coU5ZKNXlIHjyvL/0K9ghgNHIU3dz1m+u7
 PYig==
X-Gm-Message-State: AOAM530xgnrlQm8VBFOFoXwEsYdHKiAi16OglbpMcEZxlyioiIybbWmZ
 QAdeQHfmYbCNhsbmgJx6NFD7oofXbmiT+pZL
X-Google-Smtp-Source: 
 ABdhPJywMVs+ZYNf31vHQ7PppXcwCp0hwMJOfhSaUYdgEhiCtHfCNWtOcv2jEcXhwlTSVlfx6wBSOw==
X-Received: by 2002:a9d:5e11:: with SMTP id d17mr4838365oti.333.1602161833346;
 Thu, 08 Oct 2020 05:57:13 -0700 (PDT)
From: Richard Henderson <richard.henderson@linaro.org>
To: qemu-devel@nongnu.org
Subject: [PULL 06/11] tcg: Remove TCGOpDef.used
Date: Thu,  8 Oct 2020 07:56:54 -0500
Message-Id: <20201008125659.49857-7-richard.henderson@linaro.org>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20201008125659.49857-1-richard.henderson@linaro.org>
References: <20201008125659.49857-1-richard.henderson@linaro.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
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::333;
 envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x333.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: <qemu-devel.nongnu.org>
List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>
List-Archive: <https://lists.nongnu.org/archive/html/qemu-devel>
List-Post: <mailto:qemu-devel@nongnu.org>
List-Help: <mailto:qemu-devel-request@nongnu.org?subject=help>
List-Subscribe: <https://lists.nongnu.org/mailman/listinfo/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=subscribe>
Cc: peter.maydell@linaro.org,
 =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <f4bug@amsat.org>
Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org
Sender: "Qemu-devel" <qemu-devel-bounces+importer=patchew.org@nongnu.org>
X-ZohoMail-DKIM: pass (identity @linaro.org)

The last user of this field disappeared in f69d277ece4.

Reviewed-by: Philippe Mathieu-Daud=C3=A9 <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 include/tcg/tcg.h | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h
index e8629b58c8..8804a8c4a2 100644
--- a/include/tcg/tcg.h
+++ b/include/tcg/tcg.h
@@ -1015,9 +1015,6 @@ typedef struct TCGOpDef {
     uint8_t nb_oargs, nb_iargs, nb_cargs, nb_args;
     uint8_t flags;
     TCGArgConstraint *args_ct;
-#if defined(CONFIG_DEBUG_TCG)
-    int used;
-#endif
 } TCGOpDef;
=20
 extern TCGOpDef tcg_op_defs[];
--=20
2.25.1


From nobody Tue May  6 19:42:59 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=1602162561; cv=none;
	d=zohomail.com; s=zohoarc;
	b=oExSQ65aVqxHgIUzqKv0RDbWXTiCfokWaWqi+7EhrFgQb6VkZXnC4cLdNpzLfAyDMBMpjCDPIgh/V/J33OBGHjco9Pq1R05f/uu2RD8g0zk2zkpH/7Zzn0vtkXmdcJgzJfXn1kkYPAAEnGz82fyYhzcjMkRBOi7CseRqfBq0kGs=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com;
 s=zohoarc;
	t=1602162561;
 h=Content-Transfer-Encoding:Cc: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=gnZVZh1VIOx2Bn7nb5JDBu+SrUOXUk1VIW8AryTGMI0=;
	b=WXWFyzJdZeJlyFPkR3nSJVcfkY4/bytdlqca2tRsJOhrKkzqmy0abIjU7cXB8TZc7AlYFqeswkCBiwI+fbJ0paM48jR0TpO+uHUWBA5qjIL7LalXrwf/ntuuqNH1FD7EgUj8hoPtn3vCae6sxlhV0JykZ5PcW3cRqPjXzeYlU0E=
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=<richard.henderson@linaro.org> (p=none dis=none)
 header.from=<richard.henderson@linaro.org>
Return-Path: <qemu-devel-bounces+importer=patchew.org@nongnu.org>
Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by
 mx.zohomail.com
	with SMTPS id 1602162561602817.8029027285406;
 Thu, 8 Oct 2020 06:09:21 -0700 (PDT)
Received: from localhost ([::1]:33712 helo=lists1p.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.90_1)
	(envelope-from <qemu-devel-bounces+importer=patchew.org@nongnu.org>)
	id 1kQVca-0004BT-JO
	for importer@patchew.org; Thu, 08 Oct 2020 09:06:12 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:45396)
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <richard.henderson@linaro.org>)
 id 1kQVTx-0003l9-OL
 for qemu-devel@nongnu.org; Thu, 08 Oct 2020 08:57:17 -0400
Received: from mail-oi1-x22f.google.com ([2607:f8b0:4864:20::22f]:37746)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.90_1) (envelope-from <richard.henderson@linaro.org>)
 id 1kQVTw-0001z1-7g
 for qemu-devel@nongnu.org; Thu, 08 Oct 2020 08:57:17 -0400
Received: by mail-oi1-x22f.google.com with SMTP id t77so6184513oie.4
 for <qemu-devel@nongnu.org>; Thu, 08 Oct 2020 05:57:15 -0700 (PDT)
Received: from localhost.localdomain (168.189-204-159.bestelclientes.com.mx.
 [189.204.159.168])
 by smtp.gmail.com with ESMTPSA id w64sm4701933oig.31.2020.10.08.05.57.13
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 08 Oct 2020 05:57:14 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google;
 h=from:to:cc:subject:date:message-id:in-reply-to:references
 :mime-version:content-transfer-encoding;
 bh=gnZVZh1VIOx2Bn7nb5JDBu+SrUOXUk1VIW8AryTGMI0=;
 b=ru8Vj5otdLG3SQmnBAPtF4jbZcc4YjSLViq82IGnqsbnwg9HJmmyqZzRCLBhpBgxRL
 ecakmSCSiMpl8h0QBaGw+jb69toESr4GWNFlxWIANssC6QiBuUV/yo/LOKv7mJgKV8mD
 P5bjoVO6yAEIpr9qdK+nqZSl6c2rttgN/kJBd3ijw8diYz1y0IIuCROYVw/0ddp34D/f
 H7ejZqZGT+7ZUX1wYEVgiYqffFGDq77PsvD8BuBQTDWifGfP/JZIqXi0jVP2gFSFOcBX
 tVx+vEUe1qshaOx35J94NAt5esIhOa8JkIOdhsAtERpxYwp9+cZARKz72oRmPLMqNAlX
 WKag==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references:mime-version:content-transfer-encoding;
 bh=gnZVZh1VIOx2Bn7nb5JDBu+SrUOXUk1VIW8AryTGMI0=;
 b=fZmkRgvTwURGovlsJXvvyreHGEONLMUkAt5jw8I+ivWBLc70/xr1Bf5ho5XmLRrIyn
 Fev1q6gV6Kdms5FTEQMLLiCGyYGapokEH13GxtLq7Y126gLDY41nURbja6KwhRlIDDe2
 GunFyNhR6d5JcEQpeAr2ALJxcK2umRwy9XFzYJcb763Z+xAVZcc+qjs3b5CHleM+UYa6
 twqP26Z/oagrcQCdMp4k05tJeVUe+pHEjEeI5E5qp9Ucwu8+qKSRzSj9Sm8zxZ5rnpir
 ETe8zJNxvS7WyZdBiI4gmgXNFQlw/b/VCHm+pgvyZzyRbiVLAiwpEt3YvYzIA5yBE5wZ
 y4/g==
X-Gm-Message-State: AOAM533w+Y9wHpKq6wVmRoi7ezOtKSi8IzO/xxvsbO4iVNFm/A86l35a
 4xZ9vcepvypCaCuTk6UPlyBCQjYtM3YZPegt
X-Google-Smtp-Source: 
 ABdhPJxZ8J48d3lzNMKzVe7imxMS6hBZtO2MM+YBF7sXAeHMvRc5eor4dGh0ck2mXILV4YzdYS/HKg==
X-Received: by 2002:aca:5143:: with SMTP id f64mr4653748oib.161.1602161834780;
 Thu, 08 Oct 2020 05:57:14 -0700 (PDT)
From: Richard Henderson <richard.henderson@linaro.org>
To: qemu-devel@nongnu.org
Subject: [PULL 07/11] tcg/i386: Fix dupi for avx2 32-bit hosts
Date: Thu,  8 Oct 2020 07:56:55 -0500
Message-Id: <20201008125659.49857-8-richard.henderson@linaro.org>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20201008125659.49857-1-richard.henderson@linaro.org>
References: <20201008125659.49857-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::22f;
 envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x22f.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=unavailable autolearn_force=no
X-Spam_action: no action
X-BeenThere: qemu-devel@nongnu.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: <qemu-devel.nongnu.org>
List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>
List-Archive: <https://lists.nongnu.org/archive/html/qemu-devel>
List-Post: <mailto:qemu-devel@nongnu.org>
List-Help: <mailto:qemu-devel-request@nongnu.org?subject=help>
List-Subscribe: <https://lists.nongnu.org/mailman/listinfo/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=subscribe>
Cc: peter.maydell@linaro.org, qemu-stable@nongnu.org
Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org
Sender: "Qemu-devel" <qemu-devel-bounces+importer=patchew.org@nongnu.org>
X-ZohoMail-DKIM: pass (identity @linaro.org)
Content-Type: text/plain; charset="utf-8"

The previous change wrongly stated that 32-bit avx2 should have
used VPBROADCASTW.  But that's a 16-bit broadcast and we want a
32-bit broadcast.

Fixes: 7b60ef3264e
Cc: qemu-stable@nongnu.org
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 tcg/i386/tcg-target.c.inc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tcg/i386/tcg-target.c.inc b/tcg/i386/tcg-target.c.inc
index 2f696074ab..d8797ed398 100644
--- a/tcg/i386/tcg-target.c.inc
+++ b/tcg/i386/tcg-target.c.inc
@@ -958,7 +958,7 @@ static void tcg_out_dupi_vec(TCGContext *s, TCGType typ=
e,
         new_pool_label(s, arg, R_386_PC32, s->code_ptr - 4, -4);
     } else {
         if (have_avx2) {
-            tcg_out_vex_modrm_pool(s, OPC_VPBROADCASTW + vex_l, ret);
+            tcg_out_vex_modrm_pool(s, OPC_VPBROADCASTD + vex_l, ret);
         } else {
             tcg_out_vex_modrm_pool(s, OPC_VBROADCASTSS, ret);
         }
--=20
2.25.1


From nobody Tue May  6 19:42:59 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=1602163883; cv=none;
	d=zohomail.com; s=zohoarc;
	b=E9WY19gR3DBtJ3fLTDTPDg6qh4yyIyZcooqHx8xYfE60+UA8BeDxdYUV1HEEownpAPtx8afLiYFlYHeDTdnMluW8JfYGDe9Qal8c8qwuPlQXJeq2ZSm18NrQhzKdK6xdJCNaiNwpE//7kS2bPrR3N9vASRvc+1lx9S2wiWwNpz4=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com;
 s=zohoarc;
	t=1602163883;
 h=Content-Transfer-Encoding:Cc: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=iyDgOefakgRBrjZznHAuamMZUpzKL16pwL2bnPHHK48=;
	b=lfPpCilDL35zTNg5KJ/GlWZCOhX+vj6vqm93noEz1hwJkVdC5fmW1SiIQkH2WOxl4gnIJd59+XN//OPuyR+JKBPLTupLPSduhWdnn6kuaB+CjGNehelVJ1DNCVu26w+WTeXGqpxw7wL5DO5VriPEds1p7sXDCwjcWOUVP1gV5wg=
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=<richard.henderson@linaro.org> (p=none dis=none)
 header.from=<richard.henderson@linaro.org>
Return-Path: <qemu-devel-bounces+importer=patchew.org@nongnu.org>
Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by
 mx.zohomail.com
	with SMTPS id 1602163883961369.2278521684424;
 Thu, 8 Oct 2020 06:31:23 -0700 (PDT)
Received: from localhost ([::1]:55074 helo=lists1p.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.90_1)
	(envelope-from <qemu-devel-bounces+importer=patchew.org@nongnu.org>)
	id 1kQVaK-0001C6-Um
	for importer@patchew.org; Thu, 08 Oct 2020 09:03:52 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:45432)
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <richard.henderson@linaro.org>)
 id 1kQVTz-0003oR-A4
 for qemu-devel@nongnu.org; Thu, 08 Oct 2020 08:57:19 -0400
Received: from mail-oi1-x244.google.com ([2607:f8b0:4864:20::244]:38567)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.90_1) (envelope-from <richard.henderson@linaro.org>)
 id 1kQVTx-0001zH-M1
 for qemu-devel@nongnu.org; Thu, 08 Oct 2020 08:57:18 -0400
Received: by mail-oi1-x244.google.com with SMTP id 26so6169955ois.5
 for <qemu-devel@nongnu.org>; Thu, 08 Oct 2020 05:57:17 -0700 (PDT)
Received: from localhost.localdomain (168.189-204-159.bestelclientes.com.mx.
 [189.204.159.168])
 by smtp.gmail.com with ESMTPSA id w64sm4701933oig.31.2020.10.08.05.57.15
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 08 Oct 2020 05:57:15 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google;
 h=from:to:cc:subject:date:message-id:in-reply-to:references
 :mime-version:content-transfer-encoding;
 bh=iyDgOefakgRBrjZznHAuamMZUpzKL16pwL2bnPHHK48=;
 b=A5mO9wtfs/osS0/64tyJ0M2N0oIvR06pB+X7+t8AFVp4fAqam2/wK2HdMpADmiyM9T
 A97VoElYKntSmGxEtUS+qpohYUVUPd4YvvSCuoKtysLsElJssYWiZ13yN3dzL4FNb0SL
 TSi3Rhz+LIIdIlxvd9ew7qTTopHdcfUOeWlo6Uh7AipK8cCTorUJoIwTp5MZcws/rF2C
 Tc33V2fxBEvWXD5eHHwyf6Fb1VUKGqX6b/4FfxnupR/b7KFb/27WUrqoLSUU987+ETZb
 jbbqxRChZjgMT6Drb4vxxYCpQtX5hZ4HhLgcUYzp1+7TvoYeGI6LeOA20OWHemAIQqT8
 57zg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references:mime-version:content-transfer-encoding;
 bh=iyDgOefakgRBrjZznHAuamMZUpzKL16pwL2bnPHHK48=;
 b=YyQVGtdENT1D7yoAHECLokIM5rnxySZOxjGvap6tJboasfk5I4GAuyjdPlucrtJ2gf
 VEOI1TEXwHxtErSihS6Zf02P5LLTvZFkCDOuUuGaMqZvGqXSlddKJmAsUAXmpMpqWhe3
 ySAGLN53/fZ5F3HqLaulq08kZcR5xRnd/MNFTphtbWDcqfkd0PZfhVrrt1NV/O+8K56Q
 JyA10a+yCW7mlH7Uy5sNUTCHiMMNexYKIrKj/g7jncDJ1sP+T+hXvb6vRv/6I0HcEDKW
 6TN5C6EAz9AVOvddGlM1TQ4/j2UnHSr309NHPSDjB+6+81KHy89W4KOpTI3llIlCyMVn
 l4dA==
X-Gm-Message-State: AOAM530VGv/vWImrfn37EEo0rzuvTKBasAmRPe4sVj0JGHLeK3eFNeHp
 8zrHN7zWIsZ0XpyOUZSM6nL0OUlMo/60CDvk
X-Google-Smtp-Source: 
 ABdhPJzxc6u4wNoKhuZRKznByAsRs9I9zo5M5wZFEYf3CBazDXLSW6FWiXHtdW1Fd9cL2DTC7FWCzg==
X-Received: by 2002:aca:ef03:: with SMTP id n3mr4956311oih.67.1602161836191;
 Thu, 08 Oct 2020 05:57:16 -0700 (PDT)
From: Richard Henderson <richard.henderson@linaro.org>
To: qemu-devel@nongnu.org
Subject: [PULL 08/11] tcg: Fix generation of dupi_vec for 32-bit host
Date: Thu,  8 Oct 2020 07:56:56 -0500
Message-Id: <20201008125659.49857-9-richard.henderson@linaro.org>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20201008125659.49857-1-richard.henderson@linaro.org>
References: <20201008125659.49857-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::244;
 envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x244.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=unavailable autolearn_force=no
X-Spam_action: no action
X-BeenThere: qemu-devel@nongnu.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: <qemu-devel.nongnu.org>
List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>
List-Archive: <https://lists.nongnu.org/archive/html/qemu-devel>
List-Post: <mailto:qemu-devel@nongnu.org>
List-Help: <mailto:qemu-devel-request@nongnu.org?subject=help>
List-Subscribe: <https://lists.nongnu.org/mailman/listinfo/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=subscribe>
Cc: peter.maydell@linaro.org, qemu-stable@nongnu.org
Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org
Sender: "Qemu-devel" <qemu-devel-bounces+importer=patchew.org@nongnu.org>
X-ZohoMail-DKIM: pass (identity @linaro.org)
Content-Type: text/plain; charset="utf-8"

The definition of INDEX_op_dupi_vec is that it operates on
units of tcg_target_ulong -- in this case 32 bits.  It does
not work to use this for a uint64_t value that happens to be
small enough to fit in tcg_target_ulong.

Fixes: d2fd745fe8b
Fixes: db432672dc5
Cc: qemu-stable@nongnu.org
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 tcg/tcg-op-vec.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/tcg/tcg-op-vec.c b/tcg/tcg-op-vec.c
index ed6fb55fe1..cdbf11c573 100644
--- a/tcg/tcg-op-vec.c
+++ b/tcg/tcg-op-vec.c
@@ -252,10 +252,10 @@ TCGv_vec tcg_const_ones_vec_matching(TCGv_vec m)
=20
 void tcg_gen_dup64i_vec(TCGv_vec r, uint64_t a)
 {
-    if (TCG_TARGET_REG_BITS =3D=3D 32 && a =3D=3D deposit64(a, 32, 32, a))=
 {
-        do_dupi_vec(r, MO_32, a);
-    } else if (TCG_TARGET_REG_BITS =3D=3D 64 || a =3D=3D (uint64_t)(int32_=
t)a) {
+    if (TCG_TARGET_REG_BITS =3D=3D 64) {
         do_dupi_vec(r, MO_64, a);
+    } else if (a =3D=3D dup_const(MO_32, a)) {
+        do_dupi_vec(r, MO_32, a);
     } else {
         TCGv_i64 c =3D tcg_const_i64(a);
         tcg_gen_dup_i64_vec(MO_64, r, c);
@@ -280,7 +280,11 @@ void tcg_gen_dup8i_vec(TCGv_vec r, uint32_t a)
=20
 void tcg_gen_dupi_vec(unsigned vece, TCGv_vec r, uint64_t a)
 {
-    do_dupi_vec(r, MO_REG, dup_const(vece, a));
+    if (vece =3D=3D MO_64) {
+        tcg_gen_dup64i_vec(r, a);
+    } else {
+        do_dupi_vec(r, MO_REG, dup_const(vece, a));
+    }
 }
=20
 void tcg_gen_dup_i64_vec(unsigned vece, TCGv_vec r, TCGv_i64 a)
--=20
2.25.1


From nobody Tue May  6 19:42:59 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=1602162522; cv=none;
	d=zohomail.com; s=zohoarc;
	b=gbqA96W1ZfvNbxJ29zLyw+xsW9ZXhTh0TnIEiiZ69/k1Ck/TZHqPSPhSY2H3Hb1ODPewj0jXzzdoa3AwfRZn4gVn6bOf3CEE4KRNZ0hgczEd60oY1fui/oi29Tld6ODEIknxcoitUU5+Pgs6fehiLJUMiA66Dmn/X4IuyuV8KZI=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com;
 s=zohoarc;
	t=1602162522;
 h=Content-Transfer-Encoding:Cc: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=WANLQRCpycKiqrfSXuwWnjHW6iUlbU2o8NExmAhiBGo=;
	b=HdL51DuernjS6LYCaS1o98j8bXCQLHJK9nL00k+bPd8tXReTijf+xlceShzPnAH5vgAnqpfwWqmLex/krTVc+kW8fHhWTTmi/kB/D9AUohb/BsdDRj/HcYjtXSfnjPvO0dmLdBrcdwFRPF7l21P3e2TVE/V6/+3Nihumcbe72Sg=
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=<richard.henderson@linaro.org> (p=none dis=none)
 header.from=<richard.henderson@linaro.org>
Return-Path: <qemu-devel-bounces+importer=patchew.org@nongnu.org>
Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by
 mx.zohomail.com
	with SMTPS id 1602162522110457.3855265263136;
 Thu, 8 Oct 2020 06:08:42 -0700 (PDT)
Received: from localhost ([::1]:42330 helo=lists1p.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.90_1)
	(envelope-from <qemu-devel-bounces+importer=patchew.org@nongnu.org>)
	id 1kQVey-0007kE-OK
	for importer@patchew.org; Thu, 08 Oct 2020 09:08:40 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:45450)
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <richard.henderson@linaro.org>)
 id 1kQVU1-0003sC-1g
 for qemu-devel@nongnu.org; Thu, 08 Oct 2020 08:57:21 -0400
Received: from mail-oi1-x243.google.com ([2607:f8b0:4864:20::243]:33945)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.90_1) (envelope-from <richard.henderson@linaro.org>)
 id 1kQVTz-0001zb-BX
 for qemu-devel@nongnu.org; Thu, 08 Oct 2020 08:57:20 -0400
Received: by mail-oi1-x243.google.com with SMTP id n2so6207918oij.1
 for <qemu-devel@nongnu.org>; Thu, 08 Oct 2020 05:57:18 -0700 (PDT)
Received: from localhost.localdomain (168.189-204-159.bestelclientes.com.mx.
 [189.204.159.168])
 by smtp.gmail.com with ESMTPSA id w64sm4701933oig.31.2020.10.08.05.57.16
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 08 Oct 2020 05:57:17 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google;
 h=from:to:cc:subject:date:message-id:in-reply-to:references
 :mime-version:content-transfer-encoding;
 bh=WANLQRCpycKiqrfSXuwWnjHW6iUlbU2o8NExmAhiBGo=;
 b=QXF5TV0BxmDTyIbxpCbgR2bu7kOgo49+AdaYR4dQ6Ll7eLyjcWRMWncxYC0vCahXw6
 KL1PV/e1IAmCFF59wjidHoSKT99d5VfONgQjJDAWmxwvpbiOiOw/68Nj82Pf1gpDALcc
 FtiCvK6ARNDZhiS8nVv2ifdsWql13zbAV4kg9woy4rVXZR4vSz3uARhPScKM8bO9li04
 y0PIDbnfcauk0I4nb+tY0J6xErDCkOlMGLOPeqobJQdBSbgdeW7WHPF40mnLYjZ6o7aA
 woxIZK7yEjyuRYH5kA30gejs9wqqFIoMZH5kF+LcJDvfemw77qC5bTNAQz+JZG9GhuQ3
 1oWw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references:mime-version:content-transfer-encoding;
 bh=WANLQRCpycKiqrfSXuwWnjHW6iUlbU2o8NExmAhiBGo=;
 b=tCw5D1bvuBmFhdmSJWIxISqT4bAtysYBckzSqNKALwaKpcG4zYCZLH0Jam+M7lIL4O
 H74DSNM8zS5pEDz77d2dZnr+Q8tSsalH7m9JK1P6XabhLTrq9vDRgtBwn7OY2qrjoPHr
 Adq/gGJhvM/72LL8wkZoxVELf5DXFSEb+gMvyrK2tzhwniZ/Qs43Nkzz+Z+7roUrj1Bi
 ryo/L0i0i5VOohQi5jnWbpknQjCp1Gy6hgJU5MxfcbNy9OL/lACIMm/+1oQUABSJ43cx
 8fvXP2zQuGRui0EIKAekL6SyAXh8+7LnLRz15AMCz271Tnx3Jk1JplKnxv5YNZTGbVh+
 ocTg==
X-Gm-Message-State: AOAM533rWl7jN85MBa8agsjlne52yCI4/xIEXbtKp+yfThyPojELeQ07
 fYMbXouWNfF4MJyiP5Stc3ivpg5Sx5rxmqqT
X-Google-Smtp-Source: 
 ABdhPJzMNz47BsNq2eUTd7xppwUyA5V82k4zPp6DD0k1Se9smXfXLm6UBqtjL3U6MtNXHHKTutaLVg==
X-Received: by 2002:aca:5058:: with SMTP id e85mr3872845oib.79.1602161837812;
 Thu, 08 Oct 2020 05:57:17 -0700 (PDT)
From: Richard Henderson <richard.henderson@linaro.org>
To: qemu-devel@nongnu.org
Subject: [PULL 09/11] tcg/optimize: Fold dup2_vec
Date: Thu,  8 Oct 2020 07:56:57 -0500
Message-Id: <20201008125659.49857-10-richard.henderson@linaro.org>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20201008125659.49857-1-richard.henderson@linaro.org>
References: <20201008125659.49857-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::243;
 envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x243.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: <qemu-devel.nongnu.org>
List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>
List-Archive: <https://lists.nongnu.org/archive/html/qemu-devel>
List-Post: <mailto:qemu-devel@nongnu.org>
List-Help: <mailto:qemu-devel-request@nongnu.org?subject=help>
List-Subscribe: <https://lists.nongnu.org/mailman/listinfo/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=subscribe>
Cc: peter.maydell@linaro.org
Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org
Sender: "Qemu-devel" <qemu-devel-bounces+importer=patchew.org@nongnu.org>
X-ZohoMail-DKIM: pass (identity @linaro.org)
Content-Type: text/plain; charset="utf-8"

When the two arguments are identical, this can be reduced to
dup_vec or to mov_vec from a tcg_constant_vec.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 tcg/optimize.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/tcg/optimize.c b/tcg/optimize.c
index 53aa8e5329..220f4601d5 100644
--- a/tcg/optimize.c
+++ b/tcg/optimize.c
@@ -1109,6 +1109,21 @@ void tcg_optimize(TCGContext *s)
             }
             goto do_default;
=20
+        case INDEX_op_dup2_vec:
+            assert(TCG_TARGET_REG_BITS =3D=3D 32);
+            if (arg_is_const(op->args[1]) && arg_is_const(op->args[2])) {
+                tmp =3D arg_info(op->args[1])->val;
+                if (tmp =3D=3D arg_info(op->args[2])->val) {
+                    tcg_opt_gen_movi(s, op, op->args[0], tmp);
+                    break;
+                }
+            } else if (args_are_copies(op->args[1], op->args[2])) {
+                op->opc =3D INDEX_op_dup_vec;
+                TCGOP_VECE(op) =3D MO_32;
+                nb_iargs =3D 1;
+            }
+            goto do_default;
+
         CASE_OP_32_64(not):
         CASE_OP_32_64(neg):
         CASE_OP_32_64(ext8s):
--=20
2.25.1


From nobody Tue May  6 19:42:59 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=1602163904; cv=none;
	d=zohomail.com; s=zohoarc;
	b=cE8m7Dj+s3JqH9GDMPhAxEzJ7cMNArb9VB08cd59jdqIe2HOFAsbKejMS2i1Oi/ostUz7XI3/Ic+1mkET5u5UmuHkBqr4f1aYTaVBsE3Bp8IoJ9i1fo7CW7D119v2bQeMhPM8d9NHxWBoP4kcHkjYT3pPEIJ9AvyJ9enF+nAG0I=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com;
 s=zohoarc;
	t=1602163904;
 h=Content-Type:Content-Transfer-Encoding:Cc: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=3WLaue+ohvo+ZmGquck7e37eq47w4KHNDVCyGwhwpsE=;
	b=NmMTcFNn77MCDjsK2oa94s6JzlKMJMv3jPQBP7eS8lA02h2zEO3xw1VPmjaDluDaEmxEO5zWYzlBT/D8bmE9Covp2HKaH/rRgC86z7JH2DH+PpP3oXkGr+nUXdRHymmjuvQYRfuTkPvOEe8lQfvJVZWYPW1VWhS7USlnXt698RY=
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=<richard.henderson@linaro.org> (p=none dis=none)
 header.from=<richard.henderson@linaro.org>
Return-Path: <qemu-devel-bounces+importer=patchew.org@nongnu.org>
Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by
 mx.zohomail.com
	with SMTPS id 1602163904242107.67822033820971;
 Thu, 8 Oct 2020 06:31:44 -0700 (PDT)
Received: from localhost ([::1]:34162 helo=lists1p.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.90_1)
	(envelope-from <qemu-devel-bounces+importer=patchew.org@nongnu.org>)
	id 1kQVce-0004Ma-O5
	for importer@patchew.org; Thu, 08 Oct 2020 09:06:16 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:45482)
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <richard.henderson@linaro.org>)
 id 1kQVU4-0003ui-4f
 for qemu-devel@nongnu.org; Thu, 08 Oct 2020 08:57:26 -0400
Received: from mail-ot1-x333.google.com ([2607:f8b0:4864:20::333]:41590)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.90_1) (envelope-from <richard.henderson@linaro.org>)
 id 1kQVU1-0001zt-2t
 for qemu-devel@nongnu.org; Thu, 08 Oct 2020 08:57:23 -0400
Received: by mail-ot1-x333.google.com with SMTP id q21so5351496ota.8
 for <qemu-devel@nongnu.org>; Thu, 08 Oct 2020 05:57:20 -0700 (PDT)
Received: from localhost.localdomain (168.189-204-159.bestelclientes.com.mx.
 [189.204.159.168])
 by smtp.gmail.com with ESMTPSA id w64sm4701933oig.31.2020.10.08.05.57.17
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 08 Oct 2020 05:57:18 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google;
 h=from:to:cc:subject:date:message-id:in-reply-to:references
 :mime-version:content-transfer-encoding;
 bh=3WLaue+ohvo+ZmGquck7e37eq47w4KHNDVCyGwhwpsE=;
 b=asyC2R8OX0WPqNzMwC/sBb/N/5pYUvJ8+JIAbbXPEDRS8VSjJ8FCJSi6jg8lQK1I6o
 cBrXkvEddLkwcN8fpiSB9FKzZEXCG1Ph/AG6fiMvC622n5pLNf/Mo1qBB9kwPEH6pm98
 5scTeT63oMpC3Hl0TSttwrxbu/2jqzYNJ8GYqdHwNdd7ww48HzZRGMtIrCDgapeHRQgB
 wYPUofTy5mg+chVr1fMJGVLHfdTIHclOpcUFE6TfgvErGQDHy67yxDKwSXiilhu2olin
 BQLBJBkQsLStjvyb7g1Fp5HrruyMLtTEKZmWxchKKvXphgyruGE0huxU8JZS0/KyBTMX
 IWoQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references:mime-version:content-transfer-encoding;
 bh=3WLaue+ohvo+ZmGquck7e37eq47w4KHNDVCyGwhwpsE=;
 b=WuHBB887vMxu1AbP3UJegi/RHIQCqN2qJATsOWgAJFsVEENlMGiIG7M+Dz15WMk4vz
 ZhiGFpAOiezgPyLsW+I1Qn1AfOAjpQAm5uEZ11DGJyRJRJvmavqCNGGe6ZevURHWhSS7
 diKVpD0wfhHXJbYGyjC+t6Q4qqPzRWRurSZyR59Wu86vC956OyfghUYatgDruOLOkmz4
 6+E0NwC9QxPMsdHzQZW5rDPzn6kq9ENtvgR2pqL52damuAmmsswOhykzzjIW3OzsmN0j
 SfpxZfGBWepu2mG9doXMFKT3d4wQHqD0Wcv+SFOO80VKU32F5USvIrBgEzZjm/r8A7gj
 Wozw==
X-Gm-Message-State: AOAM530nDENCWP+8+8HoBWf7cHu7kmiNNDfD1ufw9o4JI/kcd/3ilZnU
 lABpHbGLbKkDBVkzum3VRx9PWQL7ECLlDuMe
X-Google-Smtp-Source: 
 ABdhPJwJtBPj6YzcbiiL4mZ1F1FzwrkRkddMiycQ+oQwv2ZEc22TLwTVBVPeyIyjUljKJ9X5PMjieg==
X-Received: by 2002:a9d:6488:: with SMTP id g8mr4789878otl.211.1602161839641;
 Thu, 08 Oct 2020 05:57:19 -0700 (PDT)
From: Richard Henderson <richard.henderson@linaro.org>
To: qemu-devel@nongnu.org
Subject: [PULL 10/11] tcg: Remove TCG_TARGET_HAS_cmp_vec
Date: Thu,  8 Oct 2020 07:56:58 -0500
Message-Id: <20201008125659.49857-11-richard.henderson@linaro.org>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20201008125659.49857-1-richard.henderson@linaro.org>
References: <20201008125659.49857-1-richard.henderson@linaro.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
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::333;
 envelope-from=richard.henderson@linaro.org; helo=mail-ot1-x333.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: <qemu-devel.nongnu.org>
List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>
List-Archive: <https://lists.nongnu.org/archive/html/qemu-devel>
List-Post: <mailto:qemu-devel@nongnu.org>
List-Help: <mailto:qemu-devel-request@nongnu.org?subject=help>
List-Subscribe: <https://lists.nongnu.org/mailman/listinfo/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=subscribe>
Cc: peter.maydell@linaro.org,
 =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <f4bug@amsat.org>
Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org
Sender: "Qemu-devel" <qemu-devel-bounces+importer=patchew.org@nongnu.org>
X-ZohoMail-DKIM: pass (identity @linaro.org)

The cmp_vec opcode is mandatory; this symbol is unused.

Reviewed-by: Philippe Mathieu-Daud=C3=A9 <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 tcg/aarch64/tcg-target.h | 1 -
 tcg/i386/tcg-target.h    | 1 -
 tcg/ppc/tcg-target.h     | 1 -
 3 files changed, 3 deletions(-)

diff --git a/tcg/aarch64/tcg-target.h b/tcg/aarch64/tcg-target.h
index 9bc2a5ecbe..663dd0b95e 100644
--- a/tcg/aarch64/tcg-target.h
+++ b/tcg/aarch64/tcg-target.h
@@ -139,7 +139,6 @@ typedef enum {
 #define TCG_TARGET_HAS_shi_vec          1
 #define TCG_TARGET_HAS_shs_vec          0
 #define TCG_TARGET_HAS_shv_vec          1
-#define TCG_TARGET_HAS_cmp_vec          1
 #define TCG_TARGET_HAS_mul_vec          1
 #define TCG_TARGET_HAS_sat_vec          1
 #define TCG_TARGET_HAS_minmax_vec       1
diff --git a/tcg/i386/tcg-target.h b/tcg/i386/tcg-target.h
index d2baf796b0..abd4ac7fc0 100644
--- a/tcg/i386/tcg-target.h
+++ b/tcg/i386/tcg-target.h
@@ -189,7 +189,6 @@ extern bool have_avx2;
 #define TCG_TARGET_HAS_shi_vec          1
 #define TCG_TARGET_HAS_shs_vec          1
 #define TCG_TARGET_HAS_shv_vec          have_avx2
-#define TCG_TARGET_HAS_cmp_vec          1
 #define TCG_TARGET_HAS_mul_vec          1
 #define TCG_TARGET_HAS_sat_vec          1
 #define TCG_TARGET_HAS_minmax_vec       1
diff --git a/tcg/ppc/tcg-target.h b/tcg/ppc/tcg-target.h
index aee38157a2..be10363956 100644
--- a/tcg/ppc/tcg-target.h
+++ b/tcg/ppc/tcg-target.h
@@ -169,7 +169,6 @@ extern bool have_vsx;
 #define TCG_TARGET_HAS_shi_vec          0
 #define TCG_TARGET_HAS_shs_vec          0
 #define TCG_TARGET_HAS_shv_vec          1
-#define TCG_TARGET_HAS_cmp_vec          1
 #define TCG_TARGET_HAS_mul_vec          1
 #define TCG_TARGET_HAS_sat_vec          1
 #define TCG_TARGET_HAS_minmax_vec       1
--=20
2.25.1


From nobody Tue May  6 19:42:59 2025
Delivered-To: importer@patchew.org
Authentication-Results: mx.zohomail.com;
	dkim=fail;
	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=fail(p=none dis=none)  header.from=linaro.org
ARC-Seal: i=1; a=rsa-sha256; t=1602162651; cv=none;
	d=zohomail.com; s=zohoarc;
	b=mOcQ9DmBCgg7VBbujUbRUbxFZ8enWR52GKXYuZmkJaas/B6enH7Tr9A1oLAKPctuJGc4/s+tH3GFfR7KcQompVQeVbHkGrvxPufXhki5FAOetfxVPenCGOCY3ancoyJq0ppn2HrjryZ86Qp1SyxgFUXvVzzVZuXPznmpIJ4Sk9Q=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com;
 s=zohoarc;
	t=1602162651;
 h=Content-Transfer-Encoding:Cc: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=UI+D9Y2q+l7wpNPIYlQftKzl9o1sUbD+xWKlt5UhcEY=;
	b=eczIHwvNs2SJYKpKjIcrOjZdsqwzjcoKVcQGmf42IVT0tdRVRmxm9t4BjxjXH/6sTZfTlTsCPGlqIUD6W1XUbmN3+IJ2HB3B/8QF/2zd4xmUOKeFiuzNrm1mdfMquV0NvWS1k9o+p3oSkysJOYfC9nGjLAgrW7jTphuNu8aPmnQ=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=fail;
	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=fail header.from=<richard.henderson@linaro.org> (p=none dis=none)
 header.from=<richard.henderson@linaro.org>
Return-Path: <qemu-devel-bounces+importer=patchew.org@nongnu.org>
Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by
 mx.zohomail.com
	with SMTPS id 1602162651018832.5839800238531;
 Thu, 8 Oct 2020 06:10:51 -0700 (PDT)
Received: from localhost ([::1]:49506 helo=lists1p.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.90_1)
	(envelope-from <qemu-devel-bounces+importer=patchew.org@nongnu.org>)
	id 1kQVh3-0002Tp-LU
	for importer@patchew.org; Thu, 08 Oct 2020 09:10:49 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:45492)
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <richard.henderson@linaro.org>)
 id 1kQVU5-0003us-V1
 for qemu-devel@nongnu.org; Thu, 08 Oct 2020 08:57:28 -0400
Received: from mail-oo1-xc34.google.com ([2607:f8b0:4864:20::c34]:42606)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.90_1) (envelope-from <richard.henderson@linaro.org>)
 id 1kQVU3-000205-Qk
 for qemu-devel@nongnu.org; Thu, 08 Oct 2020 08:57:25 -0400
Received: by mail-oo1-xc34.google.com with SMTP id l18so1432728ooa.9
 for <qemu-devel@nongnu.org>; Thu, 08 Oct 2020 05:57:22 -0700 (PDT)
Received: from localhost.localdomain (168.189-204-159.bestelclientes.com.mx.
 [189.204.159.168])
 by smtp.gmail.com with ESMTPSA id w64sm4701933oig.31.2020.10.08.05.57.19
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 08 Oct 2020 05:57:20 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google;
 h=from:to:cc:subject:date:message-id:in-reply-to:references
 :mime-version:content-transfer-encoding;
 bh=UI+D9Y2q+l7wpNPIYlQftKzl9o1sUbD+xWKlt5UhcEY=;
 b=Ecgs47trmO9AC1abcvx4fDdhcGgeygFWEBSLEaSla4Z7IW37M7Md5KhHY4n8Ggppj1
 quHIOftV5QRvg0/OulAWrg/Ioxm/9obYD8lnszj/3xknzLX4b7rVmUy6D88WdFem8RsO
 91PNkyUU0wokFr2J3spBhLkVgyEJAzhQYODDj9jwL6zDxbQfax63JBu8cMGbIUK8PhT1
 61QAAKeaom7FXRSq6qMASTkP4BSGSgzecqVMhJgNY/FCIdsqd+tvkpbHF6uUjgh5xMgH
 jWNlfKg6T2H1zhMRjRAI9vaQcSkCDO6KLLgo8LymvHqk7J8NSfPNwUBRntVRS+Z6TQ02
 aJVw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references:mime-version:content-transfer-encoding;
 bh=UI+D9Y2q+l7wpNPIYlQftKzl9o1sUbD+xWKlt5UhcEY=;
 b=WHcy2RpQiQ7PM0xbB6DZSJPb2NAKUVQUz+Mqf7MhoB/rRJtVmqPzl/NJB3mecz3e7b
 s7dKwHhNJ6qFcrYY32FsVvH3VMNNgtY3m3GmnrhoftkA0QKqLdyoESjwIj6a5znmBnyz
 5gbp8p5+RoujsuFDCWlZ6IvryASY1WNo3GryWagPRf9EA6E9JGb8BFTyoSOixO4sDSWf
 Y1rgL6gACAoVNikZ5b6PH4wLwFB4sdU/hMbn/7tam0LvPpwOBZKi7Fb6rU5oFB2kS0vm
 RincUh5HCwyTI5FAEqcxVI/nGZfRZPQW6073HMPSTiUQPz551NSNgnfWhVl8Y1EV2jBE
 KfkQ==
X-Gm-Message-State: AOAM530vvg+LxEAVEf6BVPzLq3FHKDEAIIZ3nYVFbUymQF5c8vEurIBf
 dthpnQLH4Pyrc3ChX8MvL65mSgJyLLvgNX6+
X-Google-Smtp-Source: 
 ABdhPJxDEnX+dgbgcizZshxT//Q4LdBPvXD1pdqjbma1+jIZrPuvXVsDRv/4qrkhS93x4QkntwDc1A==
X-Received: by 2002:a4a:e1bc:: with SMTP id 28mr277379ooy.53.1602161841204;
 Thu, 08 Oct 2020 05:57:21 -0700 (PDT)
From: Richard Henderson <richard.henderson@linaro.org>
To: qemu-devel@nongnu.org
Subject: [PULL 11/11] accel/tcg: Fix computing of is_write for MIPS
Date: Thu,  8 Oct 2020 07:56:59 -0500
Message-Id: <20201008125659.49857-12-richard.henderson@linaro.org>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20201008125659.49857-1-richard.henderson@linaro.org>
References: <20201008125659.49857-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::c34;
 envelope-from=richard.henderson@linaro.org; helo=mail-oo1-xc34.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: <qemu-devel.nongnu.org>
List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>
List-Archive: <https://lists.nongnu.org/archive/html/qemu-devel>
List-Post: <mailto:qemu-devel@nongnu.org>
List-Help: <mailto:qemu-devel-request@nongnu.org?subject=help>
List-Subscribe: <https://lists.nongnu.org/mailman/listinfo/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=subscribe>
Cc: peter.maydell@linaro.org, Xu Zou <iwatchnima@gmail.com>,
 Kele Huang <kele.hwang@gmail.com>
Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org
Sender: "Qemu-devel" <qemu-devel-bounces+importer=patchew.org@nongnu.org>
X-ZohoMail-DKIM: fail (Header signature does not verify)
Content-Type: text/plain; charset="utf-8"

From: Kele Huang <kele.hwang@gmail.com>

Detect all MIPS store instructions in cpu_signal_handler for all available
MIPS versions, and set is_write if encountering such store instructions.

This fixed the error while dealing with self-modified code for MIPS.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Kele Huang <kele.hwang@gmail.com>
Signed-off-by: Xu Zou <iwatchnima@gmail.com>
Message-Id: <20201002081420.10814-1-kele.hwang@gmail.com>
[rth: Use uintptr_t for pc to fix n32 build error.]
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 accel/tcg/user-exec.c | 43 +++++++++++++++++++++++++++++++++++++++----
 1 file changed, 39 insertions(+), 4 deletions(-)

diff --git a/accel/tcg/user-exec.c b/accel/tcg/user-exec.c
index 5c96819ded..4ebe25461a 100644
--- a/accel/tcg/user-exec.c
+++ b/accel/tcg/user-exec.c
@@ -702,16 +702,51 @@ int cpu_signal_handler(int host_signum, void *pinfo,
=20
 #elif defined(__mips__)
=20
+#if defined(__misp16) || defined(__mips_micromips)
+#error "Unsupported encoding"
+#endif
+
 int cpu_signal_handler(int host_signum, void *pinfo,
                        void *puc)
 {
     siginfo_t *info =3D pinfo;
     ucontext_t *uc =3D puc;
-    greg_t pc =3D uc->uc_mcontext.pc;
-    int is_write;
+    uintptr_t pc =3D uc->uc_mcontext.pc;
+    uint32_t insn =3D *(uint32_t *)pc;
+    int is_write =3D 0;
+
+    /* Detect all store instructions at program counter. */
+    switch((insn >> 26) & 077) {
+    case 050: /* SB */
+    case 051: /* SH */
+    case 052: /* SWL */
+    case 053: /* SW */
+    case 054: /* SDL */
+    case 055: /* SDR */
+    case 056: /* SWR */
+    case 070: /* SC */
+    case 071: /* SWC1 */
+    case 074: /* SCD */
+    case 075: /* SDC1 */
+    case 077: /* SD */
+#if !defined(__mips_isa_rev) || __mips_isa_rev < 6
+    case 072: /* SWC2 */
+    case 076: /* SDC2 */
+#endif
+        is_write =3D 1;
+        break;
+    case 023: /* COP1X */
+        /* Required in all versions of MIPS64 since
+           MIPS64r1 and subsequent versions of MIPS32r2. */
+        switch (insn & 077) {
+        case 010: /* SWXC1 */
+        case 011: /* SDXC1 */
+        case 015: /* SUXC1 */
+            is_write =3D 1;
+        }
+        break;
+    }
=20
-    /* XXX: compute is_write */
-    is_write =3D 0;
     return handle_cpu_signal(pc, info, is_write, &uc->uc_sigmask);
 }
=20
--=20
2.25.1